# Validate an account name (CoP/VoP)

:::note
This feature is only available to businesses in the [supported regions](#supported-regions-and-services).

Additionally, to get access to CoP in the UK, eligible businesses must contact [Revolut API Support](mailto:api-requests@revolut.com).
:::

Use the Business API to validate an account name before adding a counterparty or making a payment.

## What is account name validation?

Account name validation is a feature that helps you prevent misdirected payments.
It checks if the name of your recipient (payee) matches the name registered with their bank account.

This type of check is often referred to as **Confirmation of Payee (CoP)** or **Verification of Payee (VoP)**, after the names of the regional services it relies on to perform this check.
We'll use "CoP" for short as the general term for these services.

You can perform this check at two key moments:

- Before [making a payment](/docs/guides/manage-accounts/transfers/bank-transfers) to a new or existing counterparty.
- When [adding a new counterparty](/docs/guides/manage-accounts/counterparties/create-a-counterparty).

You can make checks for both individual counterparties (personal accounts) and companies (business accounts), provided that their bank and account type support CoP.

:::warning
The CoP check is **not** a complete fraud-prevention tool, and it does **not** guarantee the person is who they claim to be.
It only confirms that the name and account details your provide match the bank's records.

Even if the counterparty's details match, you should still exercise due caution when transferring funds.
:::

## How CoP works

### Supported regions and services

The validation is performed using a single [endpoint](#make-a-validation-request).
The [required details](#required-details) depend on the region, currency and type of the recipient's account.
Based on the details that you provide, the endpoint routes to the correct underlying service.

| Region | Currency | Use case             | Available to businesses based in                                                                                                     | Underlying service                                              |
| ------ | -------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- |
| UK     | **GBP**  | local transfers      | **UK**                                                                                                                               | [CoP (UK)](#cop-uk)                                             |
| AU     | **AUD**  | local transfers      | **Australia**                                                                                                                        | [CoP (AU)](#cop-au)                                             |
| RO     | **RON**  | local transfers      | **Romania**                                                                                                                          | [SANB, also referred to as BNDS or CoP (RO)](#sanb-bnds-cop-ro) |
| EUR*   | **EUR**  | SEPA payments in EEA | Countries that are **members of both EEA and SEPA**, including their dependent or overseas territories; **Ukraine**; **Switzerland** | [VoP](#vop)                                                     |

*EEA ∩ SEPA, CH, and UA. For brevity, we'll refer to it as "EUR" or "Europe" in this guide.

:::details [Full list of countries and territories for EUR]

Countries that are members of both EEA and SEPA, including their dependent or overseas territories + Ukraine and Switzerland:

| Category                           | Parent      | Code | Country/Territory                |
| ---------------------------------- | ----------- | ---- | -------------------------------- |
| EEA & SEPA Countries               |             | AT   | Austria                          |
|                                    |             | BE   | Belgium                          |
|                                    |             | BG   | Bulgaria                         |
|                                    |             | HR   | Croatia                          |
|                                    |             | CY   | Cyprus                           |
|                                    |             | CZ   | Czechia                          |
|                                    |             | DK   | Denmark                          |
|                                    |             | EE   | Estonia                          |
|                                    |             | FI   | Finland                          |
|                                    |             | FR   | France                           |
|                                    |             | DE   | Germany                          |
|                                    |             | GR   | Greece                           |
|                                    |             | HU   | Hungary                          |
|                                    |             | IS   | Iceland                          |
|                                    |             | IE   | Ireland                          |
|                                    |             | IT   | Italy                            |
|                                    |             | LV   | Latvia                           |
|                                    |             | LI   | Liechtenstein                    |
|                                    |             | LT   | Lithuania                        |
|                                    |             | LU   | Luxembourg                       |
|                                    |             | MT   | Malta                            |
|                                    |             | NL   | Netherlands                      |
|                                    |             | NO   | Norway                           |
|                                    |             | PL   | Poland                           |
|                                    |             | PT   | Portugal                         |
|                                    |             | RO   | Romania                          |
|                                    |             | SK   | Slovakia                         |
|                                    |             | SI   | Slovenia                         |
|                                    |             | ES   | Spain                            |
|                                    |             | SE   | Sweden                           |
| Dependent and Overseas Territories | Denmark     | GL   | Greenland                        |
|                                    | Netherlands | AW   | Aruba                            |
|                                    |             | BQ   | Bonaire, Sint Eustatius and Saba |
|                                    |             | CW   | Curaçao                          |
|                                    | Finland     | AX   | Åland Islands                    |
|                                    | France      | GF   | French Guiana                    |
|                                    |             | GP   | Guadeloupe                       |
|                                    |             | MQ   | Martinique                       |
|                                    |             | YT   | Mayotte                          |
|                                    |             | RE   | Réunion                          |
|                                    |             | MF   | Saint Martin                     |
|                                    |             | TF   | French Southern Territories      |
|                                    |             | WF   | Wallis and Futuna                |
|                                    | Norway      | SJ   | Svalbard and Jan Mayen           |
| Other countries                    |             | CH   | Switzerland                      |
|                                    |             | UA   | Ukraine                          |

:::

Other currencies, regions, or combinations of those are not supported.

### Service limits

The number of checks is limited per business as follows:

- Per minute:
  - **Australia:** 10 validations
  - **Other supported regions:** 60 validations

- Per day:
  - **All supported regions:** 10000 validations

If you need to increase these limits, please contact our [API Support team](mailto:api-requests@revolut.com).

## Make a validation request

To validate an account's name with the Business API, make a request to the `/account-name-validation` endpoint.
This endpoint routes to the correct service based on the details you provide.

### Required details

When [making a validation request](#make-a-validation-request), depending on the region, currency and type of the recipient's account, you must provide the following details:

- ![$UK]

  - Account number
  - Sort code
  - Name of the recipient:
    - For individuals: First and last name
    - For businesses: The legal company name

  A sample payload might look like this:

  - ![$Personal account]

    ```json
    {
      "account_no": "12345678",
      "sort_code": "54-01-05",
      "individual_name": {
        "first_name": "John",
        "last_name": "Smith"
      }
    }
    ```

  - ![$Business account]

    ```json
    {
      "account_no": "12345678",
      "sort_code": "54-01-05",
      "company_name": "John Smith Co."
    }
    ```

- ![$AU]

  - Account number
  - BSB (Bank-State-Branch) code
  - Name of the recipient:
    - For individuals: First and last name
    - For businesses: The legal company name

  A sample payload might look like this:

  - ![$Personal account]

    ```json
    {
      "account_no": "486196918",
      "bsb": "159517",
      "individual_name": {
        "first_name": "Joseph",
        "last_name": "Bloggs"
      }
    }
    ```

  - ![$Business account]

    ```json
    {
      "account_no": "486196918",
      "bsb": "159517",
      "company_name": "Joseph Bloggs Pty Ltd"
    }
    ```

- ![$RO]

  - IBAN (International Bank Account Number)
  - Recipient's country
  - Recipient's currency
  - Name of the recipient:
    - For individuals: First and last name
    - For businesses: The legal company name

  Optionally, you can also include BIC (Business Identifier Code).
  A sample payload might look like this:

  - ![$Personal account]

    ```json
    {
      "iban": "RO1598536106002528374911",
      "bic": "RNCBROBU",
      "recipient_country": "RO",
      "recipient_currency": "RON",
      "individual_name": {
        "first_name": "Alexandru",
        "last_name": "Ionescu"
      }
    }
    ```

  - ![$Business account]

    ```json
    {
      "iban": "RO1598536106002528374911",
      "bic": "RNCBROBU",
      "recipient_country": "RO",
      "recipient_currency": "RON",
      "company_name": "Alexandru Ionescu SRL"
    }
    ```

  The sample payload includes the optional BIC.

- ![$EUR]

  - IBAN (International Bank Account Number)
  - Recipient's country
  - Recipient's currency
  - Name of the recipient:
    - For individuals: First and last name
    - For businesses: The legal company name

  Optionally, you can also include BIC (Business Identifier Code).
  A sample payload might look like this:

  - ![$Personal account]

    ```json
    {
      "iban": "LT479258808892168739",
      "bic": "HABALT22",
      "recipient_country": "LT",
      "recipient_currency": "EUR",
      "individual_name": {
        "first_name": "Petras",
        "last_name": "Petrauskas"
      }
    }
    ```

  - ![$Business account]

    ```json
    {
      "iban": "LT479258808892168739",
      "bic": "HABALT22",
      "recipient_country": "LT",
      "recipient_currency": "EUR",
      "company_name": "Petras Petrauskas UAB"
    }
    ```

  The sample payload includes the optional BIC.

### Validation results

:::note
The results returned in the response come from the underlying CoP systems, not from Revolut.
The Business API passes them on as received.

Because of this, the overview below should be treated as an approximation rather than complete documentation.
:::

The response depends on the underlying service.

- ![$UK]

  The API compares the name you provided with the account's records, and returns a status (result code) indicating the result of the check:

  - **Matched:** The name and account type match the provided details.
  - **Close match:** The name and/or account type are similar to the provided values:
    - The name is a match, but the account type is incorrect. For example, an individual recipient's name was provided under `company_name`. The **actual account type** is returned.
    - The name is similar to the provided values. Account type is correct. The **actual name** is returned.
    - The name is similar to the provided values, and the account type is incorrect. The **actual values** are returned.

    The actual values are returned.
  - **Not matched:** The name and account type don't match the provided values.
  - **Cannot be checked:** The check cannot be performed and retries won't help.
    For example, the recipient's bank doesn't support CoP.
  - **Temporarily unavailable:** The check cannot be performed right now.
    For example, the recipient's bank didn't respond to our request.
    You should retry the request later.

- ![$AU]

  The API compares the name you provided with the account's records, and returns a status (result code) indicating the result of the check.
  The match results differ depending on the recipient's account type:

  - **Matched:** The name matches the provided details.
    For personal accounts, it's also returned for **close matches**, in which case the **actual name** is returned.
  - **Close match** (business accounts): The recipient's name is similar to the provided value.
    The **actual name** is returned.
  - **Not matched:** The name doesn't match the provided value.
    - For individuals: The **name provided in the request** is returned.
    - For businesses: The **actual name** is returned.
  - **Cannot be checked:** The check cannot be performed and retries won't help.
    For example, the recipient's bank doesn't support CoP.
  - **Temporarily unavailable:** The check cannot be performed right now.
    For example, the recipient's bank didn't respond to our request.
    You should retry the request later.

  :::tip [Mismatched name type is corrected]
  The mismatched name type in the request is corrected in the response.
  This means that, for example, if an individual recipient's name was provided under `company_name`, in the response it is returned under `individual_name`.
  :::

- ![$RO]

  The API checks if an account exists for the provided IBAN.
  If a match is found, it returns:

  - **Matched:** The result code which means that an **account with the provided IBAN was found**.
  - A partial name of the account holder:
    - For individuals: First name and initial
    - For businesses: Part of the company's name

  Use this returned name to validate your recipient's details.

  :::warning [Name considerations]
  - The name you provide helps identify the request, but is not used for the actual check.
    The API simply returns the partial name associated with the IBAN for you to validate.
    Therefore, the **returned name may differ** from the one you provided.
  - **Mismatched name type is not corrected**.
    This means that the name type in the response is returned as it was provided in the request.
    For example, if an individual recipient's name was provided under `company_name`, in the response it's still returned under `company_name` (instead of `individual_name`).
  :::

  If for some reason the API cannot perform the check, it returns one of the following result codes:

  - **Cannot be checked:** The check cannot be performed and retries won't help.
    For example, the recipient's bank doesn't support CoP.
  - **Temporarily unavailable:** The check cannot be performed right now.
    For example, the recipient's bank didn't respond to our request.
    You should retry the request later.

- ![$EUR]

  The API compares the name you provided with the account's records, and returns a status (result code) indicating the result of the check:

  - **Matched:** The name matches the provided details.
  - **Close match:** The recipient's name is similar to the provided value.
    The **actual name** is returned.
  - **Not matched:** The name doesn't match the provided value.
    The **name provided in the request** is returned.
  - **Cannot be checked:** The check cannot be performed and retries won't help.
    For example, the recipient's bank doesn't support CoP.
  - **Temporarily unavailable:** The check cannot be performed right now.
    For example, the recipient's bank didn't respond to our request.
    You should retry the request later.

  :::warning [Mismatched name type is not corrected]
  The name type in the response is returned as it was provided in the request.
  For example, if an individual recipient's name was provided under `company_name`, in the response it's still returned under `company_name` (instead of `individual_name`).
  :::

For request and response models:

[See the API reference: Validate an account name (CoP/VoP)](/docs/api/business#validate-account-name)

### Sandbox

Keep in mind that the Sandbox cannot be used for actual validation.

:::warning [Sandbox behaviour]
The Sandbox environment provides validation **for testing purposes only**.

- **Incomplete or invalid requests** return production-like error responses.
- **Complete and valid requests** do **not** undergo real validation and will always return: `cannot_be_checked`.

This helps you verify request formatting and error handling without relying on real production logic.
:::

## Glossary

This section presents the external services that the account name validation relies on, depending on the region and currency.
It is meant as a brief overview, and should not be treated as formal or exhaustive definitions.

#### CoP (UK)

Confirmation of Payee (CoP) is an account name checking service in **the UK** that helps payers make sure local payments in **GBP** aren't sent to the wrong bank or building society account.

It checks the recipient's name against the account's sort code and number, and uses a "traffic light" system to indicate whether they're a match, close match, or no match.
It is only available to UK-based businesses, for accounts that support CoP.

#### CoP (AU)

:::note
The CoP in Australia is a separate service from the one in the UK.
While they serve a similar purpose and share the same name, they are not related.
:::

Confirmation of Payee (CoP) is an account name checking service in **Australia** that helps payers make sure local payments in **AUD** aren't sent to the wrong bank, building society, or credit union account.

It validates the recipient's name against the account number and BSB (Bank-State-Branch) code, and uses a "traffic light" system to indicate whether they're a match, close match, or no match.
It is only available to businesses based in Australia, for accounts that support CoP.

#### SANB, BNDS, CoP (RO)

Serviciul Afișare Nume Beneficiar (SANB), or Beneficiary Name Display Service (BNDS) in English, is an account name checking service in **Romania** that helps payers make sure local payments in **RON** aren't sent to the wrong bank account.
It is only available to businesses based in Romania, for accounts that support this service.

In response to provided name and IBAN, it returns a truncated version of the recipient's name – the first name and initial for personal accounts or part of the company's name for business accounts – for the payer to validate them.

In our API documentation, we'll refer to it as CoP (RO).

#### VoP

Verification of Payee (VoP) is an account name checking service in **Europe** that helps payers make sure that **EUR** payments in supported European countries aren't sent to the wrong payment account.

It checks the recipient's name against the account's IBAN, and uses a "traffic light" system to indicate whether they're a match, close match, or no match.