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 those customers who use ClearBank sort codes linked to our bank code.

Confirmation of Payee as a Service

Confirmation of Payee as a Service (CoPaaS) is an extension of the technical capability of ClearBank’s own participation in Confirmation of Payee (CoP), whereby clients must become direct participants with Pay.UK to use CoP and then integrate with ClearBank’s technical service to have access to CoP request and/or CoP response functionality. For this service, ClearBank will solely be the Technical Service Provider (TSP) and this service is only available to clients operating under their own bank code.

If you are using CoPaaS, you will need to use the CoPaaS onboarding endpoints to complete your onboarding. You can then use the CoP respond and request endpoints in the usual way.

CoP respond (inbound)

Responding to a CoP request from an external participant requires us to complete a fuzzy matching check on the account in question. To do so successfully, we need the following account information:

  • 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

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

If you have chosen to use the ClearBank CoP service, all your real and virtual accounts will be opted in by default, at the time of account creation.

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.

You must provide a reason why you are opting an account out from using this service. However, you do not need to provide a reason to opt an account back 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.

You must provide a reason why you are opting a virtual account out from using this service. However, you do not need to provide a reason to opt an account back 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

      CoPaaS onboarding

      As part of your onboarding journey for CoPaaS, you will need to:

      • Use the Get CSR file endpoint to get the Certificate Signing Request (CSR) .csr file. The softwareStatementID and certificateType inputs are required. The {softwareStatementId} URL parameter is the unique ID of a CoP software statement on your Open Banking Directory entry.
      • Use the Create a new certificate endpoint to upload an X.509 certificate in a PEM .pem format. This is the signed PEM you can download from the Open Banking Directory after uploading the certificate signing request returned from the Get CSR file endpoint. Line breaks must be removed from the PEM before submission to ClearBank.

      Once you have completed the onboarding set up, you can use the CoP respond and CoP request endpoints in the usual way.

      Get CSR file

      get/v1/softwarestatements/{softwareStatementId}/csr/{certificatetype}

      This endpoint is used to GET the CSR for your certificates. You can save the response in a .csr file, ensuring line breaks are retained.

      Parameters

      • softwareStatementId string, path, Required

        SoftwareStatementId

      • certificateType string, path, Required

        Certificate type. Set to 'Transport' or 'Signing' to indicate which certificate type you are requesting the CSR for.

      Response (application/json)

      • 200 Success
      • 400 Institution is not set up for CoP.

      Create a new certificate

      post/v1/softwarestatements/{softwareStatementId}/pem

      This endpoint is used to upload your PEM file containing your certificate to ClearBank. Ensure line breaks are removed.

      Parameters

      • softwareStatementId string, path, Required

        SoftwareStatementId

      Request Payload (application/json)

      • pem string

        Pem from OpenBanking

      • kid string

        Kid from OpenBanking

      • certificateType string

        Signing / Transport Certificate

      request

      {
      "pem": "string",
      "kid": "string",
      "certificateType": "string"
      }
      Code copied

      Response (application/json)

      • 200 Success
      • 400 Institution is not setup for CoP.
      • 500 Certificate onboarding failed. Please retry, or if it fails consistently contact ClearBank with the Software Statement Id and Kid.