UK Confirmation of Payee (CoP) Regulations
This guide explains how to handle various UK Confirmation of Payee (CoP) mismatch errors returned by our APIs.
The goal is to ensure your application can:
- Detect when a CoP mismatch occurs
- Guide the end user with clear instructions
- Safely retry the request using the details returned in the error response.
Where CoP Checks Apply
CoP checks are automatically triggered for UK recipients across the following API flows:
-
Create Recipient API Runs a CoP check with the recipient’s bank when a new UK recipient is added.
-
Update Recipient API Re-validates details whenever an existing UK recipient is updated.
-
Create Payment API Performs a new CoP check if:
- More than 6 months have passed since the last check, or
- The payment_reference provided in recipient_details is new or differs from the one already stored for that recipient.
Note: CoP checks apply only to UK recipients. Other recipients are not affected by CoP; for EUR (SEPA) recipients, see the VoP guide.
Resolve a Confirmation of Payee Mismatch
Anytime we run a Confirmation of Payee check and a mismatch occurs, an error is returned. In most cases, you will be able to resolve the issue by asking the user for feedback - more details below.
Based on the type of error, will need to display the error to the user, ask them for the best course of action, and then repeat the initial request, now using the request_identifier and the event_id provided with the error payload, to complete the action.
Here is a sample error payload:
Details of each case are outlined below. Regardless of the case, once an action is selected by the user, the follow up request should look like the following:
New request body
The sections below outline the details of each type of mismatch and how to handle it.
Case 1: No match
Error code: ANNM
Sample response:
How to handle it:
You must display the error message to the user. The user has the option to continue anyway, or to update the details.
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
If the user updates the details, repeat the flow from the beginning
Case 2: Close match
Error code: MBAM
Sample response:
How to handle it:
You must display the suggestion to the user. The user has the option to accept the suggestion, or continue with the original details they provided:
If the user chooses to accept the suggestion, repeat the request as described above, with confirm_recipient.customer_action: "update"
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
Case 3: Recipient is a Business account
Error code: BANM
Sample response:
How to handle it:
You must inform the user that the name was matched, but the account is a Business account and not a Personal account. The user has the option to update the recipient type to Business, or continue with the original details they provided:
If the user chooses to update the recipient type, repeat the request as described above, with confirm_recipient.customer_action: "update"
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
Case 4: Recipient is a Personal account
Error code: PANM
Sample response:
How to handle it:
You must inform the user that the name was matched, but the account is a Personal account and not a Business account. The user has the option to update the recipient type to Personal, or continue with the original details they provided:
If the user chooses to update the recipient type, repeat the request as described above, with confirm_recipient.customer_action: "update"
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
Case 5: Recipient is a Business account, and account name is a close match
Error code: BAMM
Sample response:
How to handle it:
You must inform the user that the name was a close match, display the suggestion, and also that the account is a Business account and not a Personal account. The user has the option to update the recipient type to Business, and accept the name suggestion, or continue with the original details they provided:
If the user chooses to update the recipient name and type, repeat the request as described above, with confirm_recipient.customer_action: "update"
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
Case 6: Recipient is a Personal account, and account name is a close match
Error code: PAMM
Sample response:
How to handle it:
You must inform the user that the name was a close match, display the suggestion, and also that the account is a Personal account and not a Business account. The user has the option to update the recipient type to Personal, and accept the name suggestion, or continue with the original details they provided:
If the user chooses to update the recipient name and type, repeat the request as described above, with confirm_recipient.customer_action: "update"
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
Case 7: Incorrect account number
Error code: AC01
Sample response:
How to handle it:
You must inform the user that the account does not exist. The user has to update the details in order to proceed with payment.
Case 8: Invalid reference number
Error code: IVCR
Sample response:
How to handle it:
You must inform the user that the reference number is invalid. The user has the option to update the details, or continue with the original details they provided:
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
If the user updates the details, repeat the flow from the beginning
Case 9: Opted out of Confirmation of Payee
Error code: OPTO
Sample response:
How to handle it:
You must inform the user that the recipient has chosen not to use Confirmation of Payee checks. The user has the option to update the details, or continue with the original details they provided:
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
If the user updates the details, repeat the flow from the beginning
Case 10: Account has been switched
Error code: CASS
Sample response:
How to handle it:
You must inform the user that the recipient has switched accounts and these details are no longer valid. The user has to update the details in order to proceed with payment.
Case 11: Sort code not supported
Error code: SCNS
Sample response:
How to handle it:
The user should be informed that Confirmation of Payee could not be carried out because the recipient’s sort code doesn’t support this check.
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
If the user updates the details, repeat the flow from the beginning
Case 12: Account type not supported
Error code: ACNS
Sample response:
How to handle it:
The user should be informed that Confirmation of Payee isn’t supported by the recipient’s financial institution.
If the user chooses to continue anyway, repeat the request as described above, with confirm_recipient.customer_action: "override"
If the user updates the details, repeat the flow from the beginning