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 |
API credential roles | To verify a counterparty name, make sure that your Balance Platform API key has the following role(s)
|
Setup steps | Before you begin:
|
How it works
At a high level, your user does the following within your client interface:
-
The enterprise bank account holder logs in to their account on your platform.
-
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. -
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
- A bank account located in the EU region:
-
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 aresponse
value:
Someresponse
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 otherresponse
values, Adyen does not return a name in the response. -
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. -
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:
|
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:
|
accountSwitched UK account checks only |
Account switched | No | Account switched. | Warning message with the following options. When adding name to a contact list:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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 | ![]() |
|
accountSwitched | ![]() |
|
accountVerificationNotSupported | ![]() |
|
financialInstitutionNotFound | ![]() |
|
nameMatch | ![]() |
![]() |
nameMatchBusiness | ![]() |
|
nameMatchNotSupported | ![]() |
![]() |
nameMatchOptOut | ![]() |
|
nameMatchPersonal | ![]() |
|
noNameMatch | ![]() |
![]() |
partialNameMatch | ![]() |
![]() |
partialNameMatchBusiness | ![]() |
|
partialNameMatchPersonal | ![]() |
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."
}
}