Confirmation of Payee/Payer API

Confirmation of Payee/Payer (CoP) is a UK-wide name‑checking service designed to reduce fraud and prevent misdirected payments. It validates whether the account name provided by a payer or payee matches the name held by the receiving bank or building society.

PayPoint integrates directly with Pay.UK to provide a modern CoP API supporting both:

  • Real‑time single CoP lookups

  • High‑volume batch lookup jobs

This enables clients to verify account details during onboarding, payment setup, or before initiating high‑value transactions.

What Confirmation of Payee Solves

Before CoP existed, clients would collect customer bank details (sort code, account number, and account name) and submit payments without any mechanism to confirm the name matched the account. This created significant risk of:

  • Accidental payments to incorrect recipients

  • Fraudulently misdirected payments

  • Unreliable customer-provided data during onboarding

CoP introduces a secure, industry‑wide verification layer to ensure the account name aligns with the account holder registered at the bank, dramatically reducing the risk of incorrect or fraudulent payments.

How Confirmation of Payee/Payer Works

CoP verifies the account holder’s name by querying the customer’s bank or building society. The responding institution makes the decision and returns a match result.

Useful CoP Behaviours

  • For personal accounts, the exact registered name must be provided.

  • For joint accounts, either name on the account may be supplied (order does not matter).

  • For business accounts, the registered company name or trading name must be provided.

  • Customers may opt out of CoP with their bank — in these cases, no positive/negative match will be returned.

All matching logic is performed by the customer’s own bank, not PayPoint.

CoP Process Flow

The typical CoP flow involves:

  1. Client submits account name + sort code + account number

  2. PayPoint routes the request to the responding bank

  3. Bank validates name and returns a match result

  4. Client decides whether to proceed, ask the user to correct the name, or block the transaction

CoP Process Flow

API Access & Documentation

The CoP API supports:

  • Singleton requests (real-time, synchronous)

  • Batch requests (asynchronous, polled results)

Full endpoint specifications are provided in the CoP API Documentation

BACK TO TOP   ⇧

FAQS

What are the difference between single and batch requests?

Singleton Requests

  • Fully synchronous

  • Typical response time: ~1 second (dependent on responding bank)

  • CoP scheme rules require a 3-second wait before retrying once

  • PayPoint timeout ≈ 7 seconds

  • Clients may set a shorter local timeout if desired

Batch Requests

  • Submitted as batch jobs

  • PayPoint serialises requests internally

  • Results are available once all individual checks complete

  • Client polls the batch results endpoint

  • Ideal for onboarding or nightly cleansing

What are the Rate limits?

Sandbox

The sandbox connects to the live CoP network, but is rate‑limited:

  • 10 requests per 60 seconds

  • 100 requests per day

Limits apply per x‑api‑key, shared across team members. Performance may be slower than production due to reduced scaling and cold‑start effects.

Production

  • 10 TPS per client for single requests

  • No submission limit for batch uploads

  • Batch processing runs at 20 TPS

  • Maximum batch file size: 2.7 MB (≈ 10,000 accounts)

How can we do automated testing?

The sandbox returns live CoP results, which may include personal data. For automated testing, PayPoint provides a complete set of canned responses using the dummy sort code 00‑00‑00. These are listed below at: Test Bank Account & Response

These simulate all possible CoP match outcomes without touching real customer data.

How does name matching work?

Name matching is controlled entirely by the responding bank. While scheme rules define minimum expectations, banks may handle edge cases differently.

Banks cannot return “No Match” when:

  • First name and surname are reversed

  • Family name matches and the provided first name is a common variant (e.g., William/Bill, Elizabeth/Liz)

  • First name contains a single spelling error

  • Family name contains a single spelling error

Banks cannot return a “Full Match” unless:

  • Family name is an exact match

  • First character of the first name is correct

Banks may occasionally exceed these rules and return Full Match for slight deviations — behaviour varies by institution.

BACK TO TOP   ⇧

Test Bank Account Details & Responses

A set of dummy accounts is available under sort code 00‑00‑00, covering the full spectrum of CoP response codes. Using any valid live sort code will query real bank accounts and return genuine responses.

BankAccount - Accountype -- ResponseCode --- ShortDescription | StatusDescription

  • Any - Personal Or Business -- MATC --- Full Match | The account name provided is a match.

  • 11111111 - Personal -- ANNM --- No Match Found | The account name provided is not the same as the name held on the Account.

  • 11111112 - Personal -- MBAM --- Partial Match | The account name provided is not the same as the name held on the Account. It's a close match.

  • 11111113 - Personal -- BANM --- Full Match - Business Account not Personal | The account name provided is a match but the account is a Business Account not a Personal one.

  • 11111113 - Business -- MATC --- Full Match

  • 11111114 - Business -- PANM --- Full Match - Personal Account not Business | The account name provided is a match but the account is a Personal Account not a Business one.

  • 11111114 - Personal -- MATC --- Full Match

  • 11111115 - Personal -- BAMM --- Partial Match - Business Account not Personal | This is a Business Account not a Personal one. The account name provided is not the same, it's a close match.

  • 11111115 - Business -- MATC --- Full Match

  • 11111116 - Business -- PAMM --- Partial Match - Personal Account not Business | This is a Personal Account not a Business one. The account name provided is not the same, it's a close match.

  • 11111116 - Personal -- MATC --- Full Match

  • 11111117 - Personal -- AC01 --- Account Number Not Found | The account details supplied do not exist. Please check details with recipient.

  • 11111118 - Personal -- IVCR --- Reference Not Found | The secondary reference details supplied were not found. Please check details with recipient.

  • 11111119 - Personal -- ACNS --- Account Does Not Support CoP Check | Unable to check the name as the type of account is not supported for CoP checks.

  • 11111120 - Personal -- OPTO --- Match Unavailable - Customer Opted Out | Unable to check the name as the account holder has opted out of the CoP scheme.

  • 11111121 - Personal -- CASS --- Match Unavailable - Account Switched using CASS | The Account has been switched, please contact the recipient for updated Account details.

  • 11111122 - Personal -- SCNS --- Sort Code Not Found Unable to check the name. | The request has been routed to a responder who does not own the sort code. This would only normally happen due to an issue with the CoP directory, not anything in the request message. This is also the message we return if we cannot find the sort code in the directory to route the request to the right responder.

  • 11111123 - Personal -- SECMISS --- Secondary Reference Missing | The account details provided require a Secondary Reference value before name can be checked. Please check with recipient. ( Note: An empty string or no Secondary Reference needs to be provided, to get a 'Secondary Reference Missing' response.)

  • 11111123 - Personal -- MATC --- Full Match | Note: Any value needs to be provided as the secondary reference to get a Full Match

  • 11111124 - Personal -- FOURHUN --- 400 Error Occurred | Unable to check the name, try again later.

  • 11111125 - Personal -- HTTPERR --- HTTP Error occurred Unable to check the name, try again later.

  • Not for Testing - Personal -- TOOMANY --- Too Many Requests | Too Many Requests to Partner Banks - Please try again later

  • 11111127 - Personal -- NOROUTE --- Unable to find a Participant Bank | Unable to find a Participant Bank to handle this request