ClearBank

Confirmation Of Payee (CoP)

Overview

Confirmation of Payee (CoP) gives you greater assurance that you are sending payments to the intended beneficiary. It not only helps in preventing accidental, misdirected payments but also reduces the risk associated with Authorised Push Payment (APP) fraud. CoP is a scheme agnostic, peer-to-peer messaging service between accredited participants and sits completely outside of the payment journey. A CoP check can be made prior to setting up a payee or making a payment.

ClearBank is a CoP participant and will provide this account name checking service to customers who have onboarded onto our CoP service and use ClearBank sort codes linked to our bank code.

Confirmation of Payee Aggregator Service

For customers who do not have sort codes linked to our bank code, or who use both their own bank code and ClearBank's bank code, the Confirmation of Payee Aggregator Service allows you to leverage your existing ClearBank integration to indirectly participate in the Confirmation of Payee service. This service allows:

  • All of your accounts held at ClearBank to be CoP addressable
  • For you to accept CoP name check requests on any account

CoP addressability allows other institutions to send inbound CoP name checks to ClearBank. ClearBank will return a response. You can also send an outbound name check request through ClearBank to return information on an account held at another institution.

CoP respond (inbound)

If you have chosen to use the ClearBank CoP service, you must PATCH all of your accounts using the below endpoints. New accounts must also be patched to access CoP because account creation and account patching are two separate actions.

For your real and virtual accounts to be CoP-enabled, you will need to use the following PATCH endpoints to update your accounts:

You need to provide:

  • The name of the legal owner of the account
  • Nature of funds held in the account: Personal or Business
  • Operating nature of the account: Single or Joint

This enables us to respond to a CoP request from an external participant by completing a fuzzy matching check on the account in question.

For a real or virtual account to be opted out from using this service, you can use the following PUT endpoints:

Further information about opting out from using our CoP service along with your responsibilities can be found in our Confirmation of Payee (CoP) Operating Guide. This document can be found in the Reference Documents section in the Knowledge Centre.

Opt out from the CoP service (real account)

put/v1/Cop/opt/accounts/{accountId}

This endpoint is used to update an account to either opt out from using our Confirmation of Payee (CoP) service or remain opted in.

Parameters

  • accountId string, path, Required

    The unique identifier for the account. This can be retrieved from GET/v2/Accounts.

Request Payload (application/json)

  • optOut boolean, Required

    Set to false by default. To opt out, set the value of this property to true.

  • optOutReason string

    Reason for opting out from using our CoP service. Mandatory only when the value for optOut is set to true.

    Maximum length
    200

request

{
"optOut": true,
"optOutReason": "string"
}
Code copied

Response (application/json)

  • 204 No Content
  • 400 Bad Request
  • 404 Not Found
  • 500 Server Error

Bad Request

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Not Found

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Opt out from the CoP service (virtual account)

put/v1/Cop/opt/accounts/{accountId}/virtual/{virtualAccountId}

This endpoint is used to update a virtual account to either opt out from using our Confirmation of Payee (CoP) service or remain opted in.

Parameters

  • accountId string, path, Required

    The unique identifier for the account. This can be retrieved from GET/v2/Accounts.

  • virtualAccountId string, path, Required

    The unique identifier for the virtual account. This can be retrieved from GET /v2/Accounts/{accountId}/Virtual.

Request Payload (application/json)

  • optOut boolean, Required

    Set to false by default. To opt out, set the value of this property to true.

  • optOutReason string

    Reason for opting out from using our CoP service. Mandatory only when the value for optOut is set to true.

    Maximum length
    200

request

{
"optOut": true,
"optOutReason": "string"
}
Code copied

Response (application/json)

  • 204 No Content
  • 400 Bad Request
  • 404 Not Found
  • 500 Server Error

Bad Request

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

Not Found

{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}
Code copied

CoP request (outbound)

Sending a CoP request to an external participant requires us to pass the request to the participant so that they can complete a fuzzy matching check on the account in question. To be able to send a CoP request (outbound) to an external participant, you will need to use the following POST endpoint so that the exact name registered with the payee’s account can be confirmed:

Once confirmed, we pass the result of the matching check back to you which you can then expose to your customer. Pay.UK have provided a messaging standard for you to follow. Further information about the messaging standard along with your responsibilities can be found in our Confirmation of Payee (CoP) Operating Guide. This document can be found in the Reference Documents section in the Knowledge Centre.

CoP requests that require secondary reference data (SRD)

CoP checks are typically carried out on accounts that are addressable by sort code and account number, but can also be done for accounts that are addressable through secondary reference data (SRD). SRD-level checks are performed against the underlying account that is identified by the SRD rather than the name held against the sort code and account number. If an account requires SRD and it is not provided, the CoP check cannot be carried out.

To check whether SRD will be required, use:

If the CoP Check requires SRD, then it must be entered in the SecondaryIdentification field in the CoP request to enable the CoP responder to identify the account.

Supporting SRD-validated CoP checks is mandatory, however the integration that is required to support the SRD Validate endpoint, which is called ahead of the CoP check being sent is optional. Although not mandatory, this will inform your customers as to whether they need the secondary data ahead of sending the CoP check, making for a more streamlined and informed journey.

Owner name formatting requirements

The OwnerName field is used to identify the owner of the account. The name must be provided in a structured or unstructured comma-delimited format. Both formats consist of three parts separated by commas. For simplicity, we recommend using the unstructured format for all CoP name verification requests.

  • The unstructured format is valid for personal, business, and joint accounts. The full owner name string is populated in the third part.
  • The structured format is only valid for personal accounts. The salutation, forename(s), and surname are separated by commas.

For reference, the following table gives examples of how the owner name should be formatted for different types of accounts:

FormatAccount typeExample
UnstructuredPersonal,,Mr John Smith
,,Mr John Andrew Smith
,,Mr John A Smith
UnstructuredBusiness,,ClearBank Ltd
UnstructuredJoint,,John Smith and Jane MacDonald
,,Mr and Mrs J Smith
StructuredPersonalMr, John, Smith
Mr, John Andrew, Smith
Mr, John A, Smith

Check payee account name

post/open-banking/outbound/v1/name-verification

This endpoint is used to confirm the exact name registered with the payee’s account.

Parameters

    Request Payload (application/json)

    • SchemeName string, Required

      Indicates the sort code and account number associated with the payee’s account. The value should always be SortCodeAccountNumber.

      Minimum length
      1
    • LegalOwnerType string, Required

      Nature of funds held in the account. Valid options are Personal or Business.

      Minimum length
      1
    • Identification string, Required

      Payee's sort code and account number, used by an Account Servicing Payment Service Provider (ASPSP) to identify the account. In case the account number contains less than 8 digits, it can be padded with preceding zeros to make the length up to 8. The format should always be SortCodeAccountNumber (e.g., “04040412345678”).

      Minimum length
      1
    • OwnerName string, Required

      OwnerName identifies the owner of the account. This must be in a structured or unstructured comma-delimited format. Both formats consist of three parts separated by commas. We recommend using the unstructured format for all CoP name verification requests. The unstructured format is valid for personal, business, and joint accounts. The full owner name string is populated in the third part (“ClearBank Ltd” would be “,,ClearBank Ltd”). The structured format is only valid for personal accounts. The three parts of the owner's name are comma-delimited (“Mr John Smith” would be “Mr, John, Smith”).

      Minimum length
      1
      Maximum length
      140
    • SecondaryIdentification string

      Payment reference information as provided by the payer. If provided, this information may be used by the payee’s ASPSP to identify the account.

      Minimum length
      0
      Maximum length
      140
    • EndToEndIdentification string

      A unique value which can be used to identify the CoP request and then used in any subsequent payment initiations to link them to this CoP request.

      Minimum length
      0
      Maximum length
      140

    request

    {
    "SchemeName": "string",
    "LegalOwnerType": "string",
    "Identification": "string",
    "OwnerName": "string",
    "SecondaryIdentification": "string",
    "EndToEndIdentification": "string"
    }
    Code copied

    Response (application/json)

    • 200 Success
    • 400 Bad Request
    • 403 Forbidden
    • 422 CoP participant not found
    • 424 Call to CoP participant resulted in an error

    Success

    {
    "Data": {
    "VerificationReport": {
    "Matched": true,
    "Name": "string",
    "ReasonCode": "string",
    "ReasonCodeDescription": "string",
    "MatchedBank": "string",
    "ResponseWithinSla": true,
    "LegalOwnerType": "string",
    "ResponderRegistrationId": "string"
    }
    }
    }
    Code copied

    Bad Request

    {
    "Error": {
    "Reason": "string",
    "ParticipantName": "string"
    }
    }
    Code copied

    Check whether a sort code/account number requires SRD

    post/open-banking/outbound/v1/srd/validate

    This endpoint is used to confirm whether a given sort code/account number combination requires Secondary Reference Data (SRD) with Confirmation of Payee (CoP) requests.

    Parameters

      Request Payload (application/json)

      • SchemeName string, Required

        Indicates the sort code and account number associated with the payee’s account. The value should always be SortCodeAccountNumber.

        Minimum length
        1
      • Identification string, Required

        Payee's sort code and account number, used by an Account Servicing Payment Service Provider (ASPSP) to identify the account. In case the account number contains less than 8-digits, it can be padded with preceding zeros to make the length up to 8. The format should always be SortCodeAccountNumber (e.g., “04040412345678”).

        Minimum length
        1

      request

      {
      "SchemeName": "string",
      "Identification": "string"
      }
      Code copied

      Response (application/json)

      • 200 Success
      • 400 Bad Request
      • 403 Forbidden

      Success

      {
      "Data": {
      "Required": true,
      "BankName": "string",
      "Identification": "string"
      }
      }
      Code copied

      Bad Request

      {
      "Error": {
      "Reason": "string",
      "ParticipantName": "string"
      }
      }
      Code copied