v1

latestOpenAPI 3.1.0Copyright Pismo2026-07-247702,7523.1 MB
Faster payments

Confirmation of payee [beta]

Verify a beneficiary's account name before making an FPS payment using the Confirmation of Payee (CoP) service.

CoP allows payers to check that the name they have for the intended recipient matches the actual name on the recipient's account, reducing the risk of fraud and misdirected payments.

This verification does not create an FPS payment transaction. The request is forwarded to the payment provider for real-time name verification.

This endpoint generates a CoP name verification requested event. The result is received in a CoP name verification result received event.

post/v1/payments/fps/cop

Headers

Authorizationstring required

Account token - token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a <b>401 Unauthorized</b> message

x-tenantstring required

Organization identifier.

Idempotency-keystring required

A UUID (without hyphens) to ensure the operation remains idempotent, allowing for operation repetition without causing unintended effects or duplication. Identifies the transaction on future events.

x-cidstring

Request tracking identifier. If not provided, a random UUID is generated.

Request body

idstring uuid required

UUID identifier for this COP verification request.

account_classification'personal' | 'business' required

Account classification type

account_numberstring required

BBAN account number (exactly 8 numeric characters)

account_number_code'BBAN' required

Account number format code.

  • BBAN - Basic Bank Account Number. Currently the only supported format.
bank_idstring required

Bank identifier - sort code (exactly 6 numeric characters).

bank_id_code'GBDSC' required

Bank identifier code type

  • GBDSC—Great Britain Domestic Sort Code. Currently the only supported format.
namestring required

Account name to verify

secondary_identificationstring

Secondary reference to identify the account, such as a roll number for building society accounts. A building society roll number is a unique alphanumeric identifier—often 10-12 digits or a mix of letters and numbers—used to identify specific savings or mortgage accounts.

Example request

{
  "id": "4942f12c-5430-4d1b-8b56-c7f1c8a9118d",
  "account_classification": "personal",
  "account_number": "12345678",
  "account_number_code": "BBAN",
  "bank_id": "123456",
  "bank_id_code": "GBDSC",
  "name": "Doe Reetos",
  "secondary_identification": "A1B2C3D"
}

Response

COP verification result

status'confirmed' | 'delivery_failed'

COP request status

  • confirmed—Verification request was delivered and a response received.
  • delivery_failed—Verification request could not be delivered.
answer'match' | 'close_match' | 'no_match' | 'rejected'

Verification result:

  • match—Name matches the account holder.
  • close_match—Close match
  • no_match—Does not match
  • rejected—Verification was rejected.
actual_namestring

Actual name on the account. Returned for close_match or no_match results.

name_in_requeststring[]
reason_codestring

Reason code for the verification result. Known values include (non-exhaustive):<br> * AC01 - No account with the given account number<br> * ACNS - Account does not support Confirmation of Payee<br> * ANNM - String does not match the account name<br> * BAMM - Close match to the account name. Account type is Business when Personal was indicated<br> * BANM - Match to the account name, but account type is Business when Personal was indicated<br> * CASS - Account has been switched to a different organisation<br> * IVCR - Invalid secondary customer reference data<br> * MBAM - Close match to the account name<br> * OPTO - Account opted out of Confirmation of Payee<br> * PAMM - Close match to the account name. Account type is Personal when Business was indicated<br> * PANM - Match to the account name, but account type is Personal when Business was indicated<br> * SCNS - Organisation doesn't own the passed sort code<br> example: "MBAM"

reasonstring

Human-readable reason description

Example response

{
  "status": "confirmed",
  "answer": "match",
  "actual_name": "Mabel Syrup",
  "name_in_request": [
    "Tam Arind"
  ],
  "reason": "String is a close match to the account"
}