Account icon

Verify counterparty name

Learn how to verify the counterparty name registered to a third-party bank account for outgoing transfers.

Adyen's verification of counterparty name service allows business 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 business accounts
API credential roles To 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 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 business account holder logs in to their account on your platform.

  2. You provide an interface for the business account holder to verify a counterparty when providing transfer instructions.
    OR
    You provide an interface for the business 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 business 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:

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.

{
  "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.

{
  "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
  • </ul

Testing your client interface

You can test your client application against the verification of counterparty service on Adyen's test environment. To test your client, specify the expected response value as the reference value in your API requests. The response models the parameters each response type would return when verifying a counterparty.

With these responses, you can test the various customer-facing interactions you have developed your client application to handle for each response type.

When testing in Adyen's test environment, you must specify one of the possible response values as a reference parameter value in your requests. Any request that does not specify one of the expected response values results with a nameMatch reponse, and a 200 - Success HTTP status code.

Testing for partial name match responses

Any request where you supply a partial name match response value (such as partialNameMatch (EU or UK), partialNameMatchBusiness (UK only), or partialNameMatchPersonal (UK only)) for the reference parameter, responds with that value within the response field, along with its corresponding responseDescription value, and all other expected fields.

To mimic this situation where the name wasn't a complete match, the test response also returns the name parameter with a "y" appended to its value. For example, a search for Alexander Jeffries returns Alexander Jeffriesy.

Example - Testing partial name matched

Testing for all other match responses

For all other test calls, any request where you supply a response value for the reference parameter responds with that value within the response field, along with its corresponding responseDescription value, and all other expected fields.

As is also expected with these responses, no name parameter or value is passed back in the response.

Entering any of the following in the request as the value for the reference parameter results in the expected JSON response for that request:

Response For UK accounts For EU accounts
accountNotFound -white_check_mark-
accountSwitched -white_check_mark-
accountVerificationNotSupported -white_check_mark-
financialInstitutionNotFound -white_check_mark-
nameMatch -white_check_mark- -white_check_mark-
nameMatchBusiness -white_check_mark-
nameMatchNotSupported -white_check_mark- -white_check_mark-
nameMatchOptOut -white_check_mark-
nameMatchPersonal -white_check_mark-
noNameMatch -white_check_mark- -white_check_mark-
partialNameMatch -white_check_mark- -white_check_mark-
partialNameMatchBusiness -white_check_mark-
partialNameMatchPersonal -white_check_mark-

Example - Testing name matched

The following request allows you to test the functionality of your client for instances where the response value is nameMatch.

Example - UK verifications only - Testing name matched, but bank account was personal

The following request allows you to test the functionality of your client for instances where the response value is nameMatchPersonal.

The response contains the results of the counterparty name verification lookup. This example shows a verification result where the counterparty name matched, but the type of bank account was personal instead of business.

{
  "creationDate": "2025-09-05T14:28:17.521224712+02:00[Europe/Amsterdam]",
  "id": "CV8239-83092-749823-47078",
  "reference": "nameMatch",
  "balanceAccountId": "BA0000000000000001",
  "counterpartyVerification": {
    "response": "nameMatchPersonal",
    "responseDescription": "Name matches, but the account type is personal instead of business."
  }
}

Next steps