Account Holder Verification

Introduction

The Account Holder Verification (AHV) endpoint allows for the verification of an account holder's identity — either the payer or the payee — before initiating a payment.

This helps reduce fraud and prevents payments from being misdirected, ensuring that funds are either sent to the correct recipient or debited from the correct payer account before processing.

AHV supports two verification types depending on the payment method:

  • Confirmation of Payee (CoP): used for GBP payments via Faster Payments — to verify the payee, ensuring money is sent to the correct recipient.
  • Verification of Payee (VoP): used for EUR payments via SEPA
    • for SEPA Credit Transfer (SCT) to verify the payee,
    • for SEPA Direct Debit (SDD) to verify the payer,
      ensuring that funds are either sent to or collected from the correct account.

How it works

When an AHV request is submitted, the provided details are validated with the payment scheme and return a verification result via the Webhook service, via the AccountHolderVerification event type. The result will indicate whether the provided details generate a Match, a Close Match, No Match, or anError.

Each request is acknowledged with a unique ID, and the verification result can also be retrieved by polling the GET endpoint with the provided GUID.

The response also includes a reason code that provides further details on the verification result.

Request Rules

When making a request, the following rules apply:

  • Either individualName or companyName must be provided — not both.
  • Either bban (for CoP) or iban (for VoP) must be provided — not both.

Reason Codes

The reason codes in the response payload provide additional context on the verification result, indicating the level of match or any issues identified during the verification process.

Reason CodeCode DescriptionDetailed DescriptionAccount Name Passed Back
ANNMAccount Name does Not MatchThe CoP Responder has performed the matching and confirms it is not a matchNo
MBAMThere may be a match on the Account NameThe CoP Responder has performed the matching and it is a close matchYes
BANMBusiness account, name matchesThe CoP Requester indicated that the Payer intends to pay a personal account, but the actual account is a business account and the name matchesNo
PANMPersonal account, name matchesThe CoP Requester indicated that the Payer intends to pay a business account, but the actual account is a personal account and the name matchesNo
BAMMBusiness account, name may be a matchThe CoP Requester indicated that the Payer intends to pay a personal account, but the actual account is a business account and the name is a close matchYes
PAMMPersonal account, name may be a matchThe CoP Requester indicated that the Payer intends to pay a business account, but the actual account is a personal account and the name is a close matchYes
AC01Incorrect Account NumberAccount does not exist in the CoP Responder's booksNo
IVCRInvalid Customer ReferenceThe CoP Responder was unable to locate the customer account based on the secondary reference data contained within the SecondaryIdentification fieldNo
ACNSAccount type Not Supported for CoPAccount not supported for CoP by the CoP ResponderNo
OPTOOpted out of CoP SchemePayee has been opted out of the CoP service by the CoP ResponderNo
CASSAccount has been switchedThe Payee's account has been switched using the Current Account Switch Service (CASS)No
SCNSSort code not supported at endpointThe CoP Responder has incorrectly received a CoP request for a sort code that does not belong to themNo
Error400 Bad requestRequest has malformed, missing or non-compliant JSON body or URL parametersNo
Error401 UnauthorisedAuthorization header missing or invalid tokenNo
Error403 ForbiddenToken has incorrect scope, or a security policy was violated, used when a CoP Requester tries to access a resource that it does not have permission to access.No
Error404 Not FoundCoP API is not supported by the Payee ASPSPNo
Error405 Method not allowedThe CoP Requester tried to access the resource with a method that is not supportedNo
Error406 Not acceptableThe request contained an accept header that requested a content-type other than application/JSON and a character set other than UTF-8No
Error429 Too Many RequestsThe CoP Responder should include a Retry-After header in the response indicating how long the CoP Requester must wait before retrying the operationNo
Error500 Internal server errorSomething went wrong on the API gateway or micro-serviceNo
Error503 Service UnavailableThe CoP Responder’s service is down for maintenance. The CoP Responder should include a Retry-After header in the response indicating how long the CoP Requester must wait before retrying the operationNo