Skip to main content

Confirmation of Payee reason codes

When a Confirmation of Payee (CoP) check runs on a GBP outgoing wire transferWire Transfer A transaction that moves funds between accounts. An incoming wire transfer moves funds from a third-party bank account to a Weavr managed account, while an outgoing wire transfer moves funds from a Weavr managed account to a third-party bank account. Wire transfers require the managed account to have an assigned IBAN (for EUR) or sort code and account number (for GBP). (OWTOWT Outgoing Wire Transfer - a transaction that moves funds from a Weavr managed account to a bank account held at a third-party financial institution. OWTs require the managed account to have an assigned IBAN and the user to complete Strong Customer Authentication.), the response includes a validationOutcomes array describing the result. A reason code is a short identifier in validationOutcomes[].categoryResult.reasonCode that explains why the check returned a CLOSE_MATCH or NO_MATCH. No reason code is returned when the match is EXACT_MATCH.

Use the reason code to drive your app's response — for example, prompt the end user to accept the registered name on a close match, ask them to correct the account number on AC01, or block the payment when the account doesn't exist.

The full response payload, including validationOutcomes, is documented in the API reference for Create an Outgoing Wire Transfer. The reason code values come from the underlying CoP scheme operated by Pay.UK.

Reason codes

The table below lists every possible reason code, the match value it appears alongside, and whether the registered name is returned in categoryResult.accountName so you can display it to the end user.

Reason codematchaccountName returnedDescription
noneEXACT_MATCHNoThe submitted name and account type match the responder's records.
ANNMNO_MATCHNoThe CoP responder confirms that the account name does not match.
MBAMCLOSE_MATCHYesThe submitted name closely matches the registered name. The registered name is returned in accountName so the end user can accept it and re-run.
BANMCLOSE_MATCHNoThe name matches, but the submitted account type was PERSONAL while the actual account is BUSINESS.
PANMCLOSE_MATCHNoThe name matches, but the submitted account type was BUSINESS while the actual account is PERSONAL.
BAMMCLOSE_MATCHYesA close-matching account exists but as BUSINESS, while the submitted type was PERSONAL. The registered name is returned in accountName.
PAMMCLOSE_MATCHYesA close-matching account exists but as PERSONAL, while the submitted type was BUSINESS. The registered name is returned in accountName.
AC01NO_MATCHNoThe account does not exist at the responder. The submitted accountNumber is likely incorrect.
IVCRNO_MATCHNoThe responder could not locate an account from the secondaryReference field.
ACNSNO_MATCHNoThe destination account type is not supported for CoP by the responder.
OPTONO_MATCHNoThe account holder has opted out of the CoP scheme.
CASSNO_MATCHNoThe account has been switched using the UK Current Account Switch Service.
SCNSNO_MATCHNoThe submitted sortCode is not supported at the responder's endpoint.
End-user messaging

Reason codes are not intended to be shown verbatim to end users. For recommended phrasing for each outcome, see the Confirmation of Payee guide for embedders.