Verification of Payee (VoP) lets you verify that the name on a customer’s external account matches the actual account holder at the receiving bank before sending funds.
Supported account types
VoP is available for:
| Account type | Currency | Identifier |
|---|
| IBAN | EUR | iban |
| UK Sort Code + Account Number | GBP | gb |
How it works
- Create an external account with
account_owner_name set
- Call the verify endpoint to trigger a VoP check
- Poll the external account until the verification completes
- Read the
account_verification field on the external account response
Trigger a verification
The verify endpoint does not require an Idempotency-Key header. If a verification is already in progress for the external account, the request will return a 409 Conflict error.
curl --location --request POST 'https://api.bridge.xyz/v0/customers/<customer-id>/external_accounts/<external-account-id>/verify' \
--header 'Content-Type: application/json' \
--header 'Api-Key: <api-key>'
{
"account_type": "iban",
"account_verification": {
"iban": {
"match_level": "pending",
"reason_code": null,
"validated_account_owner_name": null
},
"requested_at": "2026-01-15T12:00:00.000Z",
"completed_at": null
}
}
Reading the result
Once the verification completes, the account_verification object on the external account will be populated with the result:
{
"id": "c8948ce6-26ac-4d37-a336-742f961a76f3",
"customer_id": "23c2d400-4c69-4c5a-b31a-88d035d7e8ae",
"currency": "eur",
"account_type": "iban",
"account_owner_name": "Ada Lovelace",
"account_verification": {
"iban": {
"match_level": "match",
"reason_code": null,
"validated_account_owner_name": "Ada Lovelace"
},
"requested_at": "2026-01-15T12:00:00.000Z",
"completed_at": "2026-01-15T12:00:03.421Z"
}
}
Match levels
| Match level | Description |
|---|
pending | Verification is still in progress. |
match | The account owner name matches the account holder at the receiving bank. |
close_match | The name is a close but not exact match (e.g. minor spelling differences). The validated_account_owner_name field will contain the name on file at the bank. |
no_match | The account owner name does not match the account holder. |
error | The verification could not be completed (e.g. the receiving bank does not support VoP). |
Response fields
The account_verification object contains:
| Field | Type | Description |
|---|
iban or gb | object | Verification result keyed by account type. |
iban.match_level / gb.match_level | string | One of pending, match, close_match, no_match, error. |
iban.reason_code / gb.reason_code | string | null | Additional context from the receiving bank when the result is not a full match. |
iban.validated_account_owner_name / gb.validated_account_owner_name | string | null | The name on file at the receiving bank (returned on close_match or no_match). |
requested_at | string (ISO 8601) | When the verification was requested. |
completed_at | string (ISO 8601) | null | When the verification completed. Null while pending. |
Prerequisites
- The external account must have
account_owner_name set.
- The external account must be of type
iban or gb.
- No other verification may already be in progress for that external account.
Error cases
| Status | Condition |
|---|
400 | Account type not supported for VoP, or account_owner_name is missing. |
409 | A verification is already in progress for this external account. |