--- title: "Verify counterparty name" description: "Learn how to verify the counterparty name registered to a third-party bank account for outgoing transfers." url: "https://docs.adyen.com/payouts/payout-service/pay-out-to-bank-accounts/verify-counterparty" source_url: "https://docs.adyen.com/payouts/payout-service/pay-out-to-bank-accounts/verify-counterparty.md" canonical: "https://docs.adyen.com/payouts/payout-service/pay-out-to-bank-accounts/verify-counterparty" last_modified: "2026-05-24T12:54:31+02:00" language: "en" --- # Verify counterparty name Learn how to verify the counterparty name registered to a third-party bank account for outgoing transfers. [View source](/payouts/payout-service/pay-out-to-bank-accounts/verify-counterparty.md) Adyen's verification of counterparty name service allows enterprise bank account holders to check the intended recipient before making a payment to domestic bank accounts registered in the EU or UK regions. The service performs verification lookups with account name-checking services operated by the following regulators: * European Payment Council * UK Payment System Regulator These services were designed to help reduce misdirected payments and provide greater assurance that payments are being sent, and collected from, the intended account holder for EU/UK domestic payments. ## Requirements Before you begin, take into account the following requirements and preparations. | Requirement | Description | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Integration type** | Adyen [enterprise payouts](/payouts/payout-service) | | **[API credential roles](/development-resources/api-credentials/roles/)** | To [verify a counterparty name](#verify-a-counterparty-name), make sure that your Balance Platform API key has the following role(s)- **CounterpartyNameVerification Webservice Initiate** | | **Setup steps** | Before you begin:- Reach out to our [Support Team](https://ca-test.adyen.com/ca/ca/contactUs/support.shtml?form=other) to enable the API credential role for your API key. | ## How it works At a high level, your user does the following within your client interface: 1. The enterprise bank account holder logs in to their account on your platform. 2. You provide an interface for the enterprise bank account holder to verify a counterparty when providing transfer instructions.\ OR\ You provide an interface for the enterprise bank account holder to add a counterparty to an address book of known parties to which they want to make future transfers. 3. The user enters information for a transfer request to one of the following. * A bank account located in the EU region: * IBAN account number * name on the account * A bank account located in the UK: * bank account number * sort code * type of bank account (personal or business) * name on the account 4. Your platform makes a call to the `POST /verifyCounterpartyName` endpoint. Adyen makes a check with the counterparty's bank to determine if there is a name match, and responds with a `response` value:\ Some `response` examples: * **nameMatch** * **nameMatchNotSupported** * **noNameMatch** * **partialNameMatch** If the `response` is a partial name match, Adyen returns the name on the account in the response. To safeguard against name-guessing, for all other `response` values, Adyen does not return a name in the response. 5. Based on the `response`, you present some options to your user, and prompt them to confirm if they want to continue, or to cancel, the transfer.\ If there is a name match, your client could also prompt the enterprise bank account holder to add that name to their address book of parties to make future transfers. 6. If the user confirms they want to continue with the transfer, make the transfer request using the `POST /transfers` endpoint. ## Verify a counterparty name Select the location of the bank account information you want to verify from the following tabs: ### Tab: Checking EU-based accounts To verify the name of a counterparty for a transfer to a domestic EU bank account, make a `POST /verifyCounterpartyName` request, providing the following parameters: | Parameter name | Required | Type | Description | | ----------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `counterparty.bankAccount.accountHolder.fullName` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The full name of the entity that owns the bank account. | | `counterparty.bankAccount.accountIdentification` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | object | An object containing information about the account holder's bank account you want to verify. | | `counterparty.bankAccount.accountIdentification.iban` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The IBAN in the following format, without separators or whitespace: **^\[A-Z]{2}\[0-9]{2}\[A-Z0-9]{1,30}$** Maximum character count: 34 characters | | `counterparty.bankAccount.accountIdentification.type` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | String | Possible values: **iban** | | `reference` | | string | Your reference to identify the party or counterparty involved with the transfer. For example, your client's counterparty ID. | | `balanceAccountId` | | string | The unique identifier of the source balance account. Adyen does not verify this value. | **Verify a counterparty for a transfer request to an account registered in the EU** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/verifyCounterpartyName \ -H 'content-type: application/json' \ -H 'x-api-key: ADYEN_API_KEY' \ -X POST \ -d '{ "counterparty": { "bankAccount": { "accountHolder": { "fullName": "Alexander Jeffries" }, "accountIdentification": { "type": "iban", "iban": "DE87123456781234567890" } } }, "balanceAccountId": "BA0000000000000001", "reference": "account-check-7T67G5428398G" }' ``` ### Tab: Checking UK-based accounts To verify the name of a counterparty for a transfer to a domestic UK bank account, make a `POST /verifyCounterpartyName` request, providing the following parameters: | Parameter name | Required | Type | Description | | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------- | | `counterparty.bankAccount.accountHolder.fullName` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The full name of the entity that owns the bank account. | | `counterparty.bankAccount.accountIdentification` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | object | An object containing information about the account holder's bank account you want to verify. | | `counterparty.bankAccount.accountIdentification.accountNumber` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The eight-digit bank account number, without separators or whitespace. | | `counterparty.bankAccount.accountIdentification.sortCode` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The six-digit sort code, without separators or whitespace. | | `counterparty.bankAccount.accountIdentification.type` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | Possible values: **ukLocal** | | `counterparty.bankAccount.accountIdentification.accountType` | ![-white\_check\_mark-](/user/data/smileys/emoji/white_check_mark.png "-white_check_mark-") | string | The type of bank account. Possible values:- **personal** - **business** | | `reference` | | string | Your reference to identify the party or counterparty involved with the transfer. For example, your client's counterparty ID. | | `balanceAccountId` | | string | The unique identifier of the source balance account. Adyen does not verify this value. | **Verify a counterparty for a transfer request to an account registered in the UK** ```bash curl https://balanceplatform-api-test.adyen.com/bcl/v2/verifyCounterpartyName \ -H 'content-type: application/json' \ -H 'x-api-key: ADYEN_API_KEY' \ -X POST \ -d '{ "counterparty": { "bankAccount": { "accountHolder": { "fullName": "Alexander Jeffries" }, "accountIdentification": { "type": "ukLocal", "accountNumber": "12345678", "sortCode": "011000", "accountType": "personal" } } }, "balanceAccountId": "BA0000000000000001", "reference": "account-check-7T67G5428398G" }' ``` The response contains the results of the counterparty name verification lookup. This example shows a verification result where the counterparty name matched the name on the bank account. ```json { "creationDate": "2025-09-05T14:28:17.521224712+02:00[Europe/Amsterdam]", "id": "CV8239-83092-749823-47078", "reference": "account-check-7T67G5428398G", "balanceAccountId": "BA0000000000000001", "counterpartyVerification": { "response": "nameMatch", "responseDescription": "Correct name match" } } ``` This example response shows a verification result where the counterparty name partially matched the name on the bank account. ```json { "creationDate": "2025-09-05T14:28:17.521224712+02:00[Europe/Amsterdam]", "id": "CV8239-83092-749823-47078", "reference": "account-check-7T67G5428398G", "balanceAccountId": "BA0000000000000001", "counterpartyVerification": { "name": "Alexander Jeffriesy", "response": "partialNameMatch", "responseDescription": "Partial name match" } } ``` Depending on the HTTP status code of the response message, it is helpful to build some logic to handle any errors that a request or the system may return. A successful response contains the following parameters: | Parameter name | type | description | | ---------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `creationDate` | string | The creation date of the verification request. Example: **2025-09-05T14:28:17.521224712+02:00\[Europe/Amsterdam]** | | `id` | string | The ID of the counterparty name verification request. | | `reference` | string | Your unique reference to identify the party or counterparty involved with the verification request. For example, your system's unique ID assigned to the party or counterparty. | | `balanceAccountId` | string | The unique identifier of the balance account requesting verification of a counterparty name for a transfer. | | `counterpartyVerification` | object | The object containing the results of the counterparty name verification lookup. | | `counterpartyVerification.name` | string | The name of the entity that owns the bank account. The name is only returned when the response is **partialNameMatch** (EU or UK), **partialNameMatchBusiness** (UK only), or **partialNameMatchPersonal** (UK only). | | `counterpartyVerification.response` | enum | The response returned by the counterparty name verification lookup. Possible values in the EU region:- **nameMatch** - **nameMatchNotSupported** - **noNameMatch** - **partialNameMatch**Possible values in the UK:- **accountNotFound** - **accountSwitched** - **accountVerificationNotSupported** - **financialInstitutionNotFound** - **nameMatch** - **nameMatchBusiness** - **nameMatchNotSupported** - **nameMatchOptOut** - **nameMatchPersonal** - **noNameMatch** - **partialNameMatch** - **partialNameMatchBusiness** - **partialNameMatchPersonal** | | `counterpartyVerification.responseDescription` | string | A human-readable description mapped to the value of the `response` parameter. Do not use this description to inform your client logic. | ## Guidance for developing your client interface When consuming the response to the counterparty name verification request, consider the following when presenting notes, warnings, and call-to-action links and/or buttons when developing your client interface. | response | responseDescription | Name returned? | Suggested messaging | Additional expectation | | ----------------------------------------------------------- | ------------------------------------------------------------------------ | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **accountNotFound** UK account checks only | Account not found | No | Account not found. | Warning message with the following options. **When adding name to a contact list:**- Cancel - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **accountSwitched** UK account checks only | Account switched | No | Account switched. | Warning message with the following options. **When adding name to a contact list:**- Cancel - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **accountVerificationNotSupported** UK accounts checks only | Incorrect bank code | No | Unable to check details. | Warning message with the following options. **When adding name to a contact list:**- Cancel - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **financialInstitutionNotFound** UK account checks only | Financial institution not found | No | Financial institution not found. | Warning message with the following options. **When adding name to a contact list:**- Cancel - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **nameMatch** EU or UK account checks | Correct name match | No | The account name is a match. | Check with the user before continuing, with the following options. **When adding name to a contact list:**- Add name**When making a payment request:**- Continue with payment | | **nameMatchBusiness** UK account checks only | Name match, but the account type is business instead of personal | No | Account name is a match, but the account type is business instead of personal. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **nameMatchNotSupported** EU or UK account checks | Name match not supported | No | Unable to confirm name. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **nameMatchOptOut** UK account checks only | Opted out from account name verification | No | Unable to check name. | Warning message with the following options. **When adding name to a contact list:**- Add name - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **nameMatchPersonal** UK account checks only | Name match, but the account type is personal instead of business | No | Account name is a match, but the account type is personal instead of business. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **noNameMatch** EU or UK account checks | No name match | No | The name you gave us is not the same as the name held on the account. | Warning message with the following options. **When adding name to a contact list:**- Edit details - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **partialNameMatch** EU or UK account checks | Partial name match | Yes | The name you gave us is not the same as the name held on the account. It's a close match, the name is *returned name*. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **partialNameMatchBusiness** UK account checks only | Partial name match, but the account type is business instead of personal | Yes | The name you gave us is not the same as the name held on the account. It's a close match, the name is *returned name*. Additionally, the account type is business instead of personal. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment | | **partialNameMatchPersonal** UK account checks only | Partial name match, but the account type is personal instead of business | Yes | The name you gave us is not the same as the name held on the account. It's a close match, the name is *returned name*. Additionally, the account type is personal instead of business. | Warning message with the following options. **When adding name to a contact list:**- Add name - Edit details - Cancel**When making a payment request:**- Cancel payment - Edit payment details - Continue with payment \