---
updatedAt: 2026-04-27T10:26:51.000Z
agentTools:
  siteIndex: https://developers.pismo.io/llms.txt
  projectIndex: https://developers.pismo.io/pismo-docs/llms.txt
---

# Confirmation of payee [beta]

Verify a beneficiary's account name before making an FPS payment using the [Confirmation of Payee (CoP)](https://www.wearepay.uk/what-we-do/overlay-services/confirmation-of-payee/) 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](https://developers.pismo.io/events/docs/fps-cop-name-verification-submissions-1) event. The result is received in a [CoP name verification result received](https://developers.pismo.io/events/docs/fps-cop-name-verification-admissions-1) event.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Instant payments - Faster payments",
    "description": "Faster Payments (FPS) real-time payments system API",
    "contact": {
      "name": "API Support",
      "url": "https://developers.pismo.io/support/"
    },
    "license": {
      "name": "Copyright Pismo"
    },
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://sandbox.pismolabs.io/fps",
      "description": "Sandbox API server for testing."
    }
  ],
  "tags": [
    {
      "name": "Faster payments",
      "description": "Faster Payment Service (FPS) endpoints"
    }
  ],
  "components": {
    "parameters": {
      "authHeader": {
        "name": "Authorization",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "Account token—token encoded with a Pismo account ID. Tokens can expire quickly, which can result in a <b>401 Unauthorized</b> message.\n",
        "required": true
      },
      "idempotencyKeyHeader": {
        "name": "Idempotency-key",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "A UUID to ensure the operation remains idempotent, allowing for operation repetition without causing unintended effects or duplication. An idempotent operation is one that can be applied multiple times, yet the outcome remains the same. it ensures that network errors, retries, or failures can occur without introducing inconsistencies.\n",
        "required": true
      },
      "tenantHeader": {
        "name": "x-tenant",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "Organization ID",
        "required": true
      },
      "reqTrackingIdHeader": {
        "name": "x-cid",
        "in": "header",
        "schema": {
          "type": "string"
        },
        "description": "Request tracking identifier. If not provided, a random UUID will be generated.\n",
        "required": false
      }
    },
    "schemas": {
      "customer.DetailMessage": {
        "type": "object",
        "properties": {
          "external": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ExternalMessage"
            }
          },
          "parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.ParameterMessage"
            }
          },
          "payload": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/customer.PayloadMessage"
            }
          }
        }
      },
      "customer.Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "Error's code.",
            "example": "EPT0001"
          },
          "details": {
            "$ref": "#/components/schemas/customer.DetailMessage"
          },
          "message": {
            "type": "string",
            "description": "Error's message.",
            "example": "User not found"
          }
        }
      },
      "customer.ExternalMessage": {
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "string",
            "description": "Code",
            "example": "PBE315"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "customer.ParameterMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Field",
            "example": "Query parameter"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "customer.PayloadMessage": {
        "type": "object",
        "required": [
          "field",
          "message"
        ],
        "properties": {
          "field": {
            "type": "string",
            "description": "Field",
            "example": "Entity.field"
          },
          "message": {
            "type": "string",
            "description": "Message",
            "example": "Generic error"
          }
        }
      },
      "cop.AccountClassification": {
        "type": "string",
        "description": "Account classification type",
        "enum": [
          "personal",
          "business"
        ],
        "example": "personal"
      },
      "cop.AccountNumber": {
        "type": "string",
        "description": "BBAN account number (exactly 8 numeric characters)",
        "minLength": 8,
        "maxLength": 8,
        "pattern": "^[0-9]{8}$",
        "example": "12345678"
      },
      "cop.AccountNumberCode": {
        "type": "string",
        "description": "Account number format code.\n* `BBAN` - Basic Bank Account Number. Currently the only supported format.\n",
        "enum": [
          "BBAN"
        ],
        "example": "BBAN"
      },
      "cop.ActualName": {
        "type": "string",
        "description": "Actual name on the account. Returned for `close_match` or `no_match` results.",
        "example": "Mabel Syrup"
      },
      "cop.Answer": {
        "type": "string",
        "enum": [
          "match",
          "close_match",
          "no_match",
          "rejected"
        ],
        "description": "Verification result:\n* `match`—Name matches the account holder.\n* `close_match`—Close match\n* `no_match`—Does not match\n* `rejected`—Verification was rejected.\n",
        "example": "match"
      },
      "cop.BankID": {
        "type": "string",
        "description": "Bank identifier - sort code (exactly 6 numeric characters).",
        "minLength": 6,
        "maxLength": 6,
        "pattern": "^[0-9]{6}$",
        "example": "123456"
      },
      "cop.BankIdCode": {
        "type": "string",
        "description": "Bank identifier code type\n* `GBDSC`—Great Britain Domestic Sort Code. Currently the only supported format.\n",
        "enum": [
          "GBDSC"
        ],
        "example": "GBDSC"
      },
      "cop.COPVerificationRequest": {
        "type": "object",
        "required": [
          "id",
          "account_classification",
          "account_number",
          "account_number_code",
          "bank_id",
          "bank_id_code",
          "name"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/cop.ID"
          },
          "account_classification": {
            "$ref": "#/components/schemas/cop.AccountClassification"
          },
          "account_number": {
            "$ref": "#/components/schemas/cop.AccountNumber"
          },
          "account_number_code": {
            "$ref": "#/components/schemas/cop.AccountNumberCode"
          },
          "bank_id": {
            "$ref": "#/components/schemas/cop.BankID"
          },
          "bank_id_code": {
            "$ref": "#/components/schemas/cop.BankIdCode"
          },
          "name": {
            "$ref": "#/components/schemas/cop.Name"
          },
          "secondary_identification": {
            "$ref": "#/components/schemas/cop.SecondaryID"
          }
        }
      },
      "cop.COPVerificationResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/cop.Status"
          },
          "answer": {
            "$ref": "#/components/schemas/cop.Answer"
          },
          "actual_name": {
            "$ref": "#/components/schemas/cop.ActualName"
          },
          "name_in_request": {
            "$ref": "#/components/schemas/cop.NameInResponse"
          },
          "reason_code": {
            "$ref": "#/components/schemas/cop.ReasonCode"
          },
          "reason": {
            "$ref": "#/components/schemas/cop.Reason"
          },
          "sort_code_validation": {
            "type": "object",
            "description": "Sort code and account number validation result.",
            "properties": {
              "status": {
                "type": "string",
                "description": "Validation status.",
                "enum": [
                  "VALID",
                  "INVALID"
                ],
                "example": "VALID"
              },
              "bank_code": {
                "type": "string",
                "description": "Bank code identifier.",
                "example": "1234"
              },
              "bank_name": {
                "type": "string",
                "description": "Bank name.",
                "example": "NATIONAL WESTMINSTER BANK PLC"
              },
              "bank_office_title": {
                "type": "string",
                "description": "Bank branch office title.",
                "example": "LONDON OFFICE"
              },
              "fps_supported": {
                "type": "boolean",
                "description": "Does the bank support Faster Payments?",
                "example": true
              },
              "messages": {
                "type": "array",
                "description": "Validation error messages when status is `INVALID`.",
                "items": {
                  "type": "string"
                },
                "example": [
                  "Some message"
                ]
              }
            }
          }
        }
      },
      "cop.ID": {
        "type": "string",
        "description": "UUID identifier for this COP verification request.",
        "format": "uuid",
        "maxLength": 36,
        "example": "4942f12c-5430-4d1b-8b56-c7f1c8a9118d"
      },
      "cop.Name": {
        "type": "string",
        "maxLength": 135,
        "description": "Account name to verify\n",
        "example": "Doe Reetos"
      },
      "cop.NameInResponse": {
        "type": "array",
        "items": {
          "type": "string",
          "description": "Name(s) passed in the verification request"
        },
        "example": [
          "Tam Arind"
        ]
      },
      "cop.Reason": {
        "type": "string",
        "description": "Human-readable reason description",
        "example": "String is a close match to the account"
      },
      "cop.ReasonCode": {
        "type": "string",
        "description": "Reason code for the verification result. Known values include (non-exhaustive):<br>\n    * `AC01` - No account with the given account number<br>\n    * `ACNS` - Account does not support Confirmation of Payee<br>\n    * `ANNM` - String does not match the account name<br>\n    * `BAMM` - Close match to the account name. Account type is Business when Personal was indicated<br>\n    * `BANM` - Match to the account name, but account type is Business when Personal was indicated<br>\n    * `CASS` - Account has been switched to a different organisation<br>\n    * `IVCR` - Invalid secondary customer reference data<br>\n    * `MBAM` - Close match to the account name<br>\n    * `OPTO` - Account opted out of Confirmation of Payee<br>\n    * `PAMM` - Close match to the account name. Account type is Personal when Business was indicated<br>\n    * `PANM` - Match to the account name, but account type is Personal when Business was indicated<br>\n    * `SCNS` - Organisation doesn't own the passed sort code<br>\nexample: \"MBAM\"\n"
      },
      "cop.SecondaryID": {
        "type": "string",
        "description": "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.\n",
        "maxLength": 35,
        "example": "A1B2C3D"
      },
      "cop.Status": {
        "type": "string",
        "description": "COP request status\n  * `confirmed`—Verification request was delivered and a response received.\n  * `delivery_failed`—Verification request could not be delivered.\n",
        "enum": [
          "confirmed",
          "delivery_failed"
        ],
        "example": "confirmed"
      }
    }
  },
  "paths": {
    "/v1/payments/fps/cop": {
      "post": {
        "summary": "Confirmation of payee [beta]",
        "description": "Verify a beneficiary's account name before making an FPS payment using the [Confirmation of Payee (CoP)](https://www.wearepay.uk/what-we-do/overlay-services/confirmation-of-payee/) service.\n\nCoP 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.\n\nThis verification does not create an FPS payment transaction. The request is forwarded to the payment provider for real-time name verification.\n\nThis endpoint generates a [CoP name verification requested](https://developers.pismo.io/events/docs/fps-cop-name-verification-submissions-1) event. The result is received in a [CoP name verification result received](https://developers.pismo.io/events/docs/fps-cop-name-verification-admissions-1) event.\n",
        "operationId": "post-cop-verification",
        "tags": [
          "Faster payments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/authHeader"
          },
          {
            "$ref": "#/components/parameters/tenantHeader"
          },
          {
            "$ref": "#/components/parameters/idempotencyKeyHeader"
          },
          {
            "$ref": "#/components/parameters/reqTrackingIdHeader"
          }
        ],
        "requestBody": {
          "description": "COP verification request body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/cop.COPVerificationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "COP verification result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/cop.COPVerificationResponse"
                },
                "examples": {
                  "match": {
                    "summary": "Name matches the account holder",
                    "value": {
                      "status": "confirmed",
                      "answer": "match",
                      "name_in_request": [
                        "Penny Loafer"
                      ],
                      "sort_code_validation": {
                        "status": "VALID",
                        "bank_code": "1234",
                        "bank_name": "NATIONAL WESTMINSTER BANK PLC",
                        "bank_office_title": "LONDON OFFICE",
                        "fps_supported": true,
                        "messages": []
                      }
                    }
                  },
                  "close_match": {
                    "summary": "Name is a close match",
                    "value": {
                      "status": "confirmed",
                      "answer": "close_match",
                      "actual_name": "Al Mond",
                      "name_in_request": [
                        "Al Mnd"
                      ],
                      "reason_code": "MBAM",
                      "reason": "String is a close match to the account",
                      "sort_code_validation": {
                        "status": "VALID",
                        "bank_code": "1234",
                        "bank_name": "NATIONAL WESTMINSTER BANK PLC",
                        "bank_office_title": "LONDON OFFICE",
                        "fps_supported": true,
                        "messages": []
                      }
                    }
                  },
                  "no_match": {
                    "summary": "Name does not match",
                    "value": {
                      "status": "confirmed",
                      "answer": "no_match",
                      "actual_name": "Mac Adamia",
                      "name_in_request": [
                        "Al Mond"
                      ],
                      "reason_code": "ANNM",
                      "reason": "Account name does not match",
                      "sort_code_validation": {
                        "status": "INVALID",
                        "bank_code": "",
                        "bank_name": "",
                        "bank_office_title": "",
                        "fps_supported": false,
                        "messages": [
                          "MOD check failed"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0004": {
                    "summary": "Validation Error",
                    "value": {
                      "code": "EFPS0004",
                      "message": "Validation error"
                    }
                  },
                  "EFPS0016": {
                    "summary": "Unmarshal Error",
                    "value": {
                      "code": "EFPS0016",
                      "message": "Unmarshal error"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0002": {
                    "summary": "Missing Tenant Header",
                    "value": {
                      "code": "EFPS0002",
                      "message": "Missing required header: 'x-tenant'"
                    }
                  },
                  "EFPS0086": {
                    "summary": "Missing Idempotency Key",
                    "value": {
                      "code": "EFPS0086",
                      "message": "Missing required header: 'Idempotency-Key'"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0058": {
                    "summary": "Record Already Exists",
                    "value": {
                      "code": "EFPS0058",
                      "message": "Record already exists"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0015": {
                    "summary": "PSP Gateway API Rate Limit",
                    "value": {
                      "code": "EFPS0015",
                      "message": "PSPGateway API Rate Limit exceeded"
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0006": {
                    "summary": "HTTP Error",
                    "value": {
                      "code": "EFPS0006",
                      "message": "HTTP request error"
                    }
                  },
                  "EFPS0023": {
                    "summary": "Database Error",
                    "value": {
                      "code": "EFPS0023",
                      "message": "Transaction database error"
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Bad Gateway",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0014": {
                    "summary": "PSP Gateway API Bad Gateway",
                    "value": {
                      "code": "EFPS0014",
                      "message": "PSPGateway API Bad Gateway"
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/customer.Error"
                },
                "examples": {
                  "EFPS0012": {
                    "summary": "PSP Gateway API Timeout",
                    "value": {
                      "code": "EFPS0012",
                      "message": "PSPGateway API timeout error"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```