> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vouchmark.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bank Verification

> Confirm an operating bank account belongs to the company by resolving and name-matching it.

Bank verification confirms a company controls a real, named bank account. The owner supplies the account number and bank, Vouchmark resolves the account with the bank, and the resolved account name is matched against the company name. On a sufficient match the account is saved to the company and the score is recalculated.

This flow is handled by company management, not the verification endpoints.

## How it runs

<Steps>
  <Step title="List supported banks">
    Fetch the bank list (with codes) from `GET /v1/banks`. Use the `bank_code` from this list when connecting an account.
  </Step>

  <Step title="Connect an account">
    Submit the account number, bank code, and bank name to `POST /v1/connect-account/{companyId}`. The account is resolved with the bank and the resolved name is compared to the company name.
  </Step>

  <Step title="Score updates">
    On a sufficient name match the account is saved to the company and the Vouchmark Score is recalculated.
  </Step>
</Steps>

## List banks — `GET /v1/banks`

```bash theme={null}
curl https://api.vouchmark.com/v1/banks \
  -H "Authorization: Bearer $TOKEN"
```

```json Response theme={null}
{
  "message": "Successfully fetched bank list",
  "data": [
    { "name": "Guaranty Trust Bank", "code": "058" }
  ]
}
```

## Connect an account — `POST /v1/connect-account/{companyId}`

The body requires a 10-digit `account_number`, a `bank_code`, and a `bank_name`.

```bash theme={null}
curl -X POST https://api.vouchmark.com/v1/connect-account/cmp_aBcD... \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "account_number": "0123456789",
    "bank_code": "058",
    "bank_name": "Guaranty Trust Bank"
  }'
```

```json Verified theme={null}
{
  "message": "Successfully verified bank account for company cmp_aBcD...",
  "details": {
    "bankName": "TEKCIFY TECHNOLOGIES LTD",
    "companyName": "TEKCIFY TECHNOLOGIES LTD",
    "similarityScore": 1
  }
}
```

When the resolved account name doesn't match the company closely enough, the response is `400`:

```json Name mismatch theme={null}
{
  "message": "Bank account name does not match company name",
  "suggestions": [
    "Ensure the bank account is registered under the company name",
    "Verify that the account name matches your registered company name exactly",
    "Check for any spelling differences or abbreviations",
    "Contact your bank to update the account name if needed"
  ],
  "details": {
    "bankName": "JANE DOE",
    "companyName": "TEKCIFY TECHNOLOGIES LTD",
    "similarityScore": 0.1
  }
}
```

## Errors

| Status | Body                                                                                                     | When                                                     |
| ------ | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- |
| `404`  | `{ "message": "Company not found" }`                                                                     | The company is missing or not yours.                     |
| `400`  | `{ "message": "Could not resolve the bank account details provided", "suggestions": [...] }`             | The account could not be resolved with the bank.         |
| `400`  | `{ "message": "Bank account name does not match company name", "suggestions": [...], "details": {...} }` | The resolved name is too dissimilar to the company name. |
| `500`  | `{ "error": "An error occurred while verifying your bank account" }`                                     | Unexpected error.                                        |
