ClearBank

Verification of Payee

Verification of Payee

Verification of Payee (VoP) is a name and IBAN verification service that checks whether the payee name provided by the payer matches the account holder name at the receiving payment service provider (PSP).

VoP is designed to help users avoid making payments to the wrong person, thus reducing fraud and misdirected payments and enhancing payer confidence. VoP is a pre-authorisation check, meaning it must be completed before each payment is initiated.

The VoP service will query the account holder name at the receiving PSP in real-time and indicate whether the details match, and if so, whether there is a full or partial match.

For example, if the remitter intends to pay 'Maria Green', but the account belongs to 'John Taylor', our VoP endpoint will return NMTC - No match. The following table defines each of the VoP outcomes with examples:

CodeMeaningDefinitionProvided nameActual name
MTCHExact matchThe name provided by the payer matches the account holder’s name at the receiving bank.Maria GreenMaria Green
CMTCClose matchThe name is similar but not identical, or there’s a mismatch in account type (for example, personal vs business).ABC SolicitorsABC Solicitor Ltd
NMTCNo matchThe name provided does not match the account holder’s name.Maria GreenJohn Taylor
NOAPCan't match/Verification not possibleThe check cannot be completed due to missing or incompatible data.N/AN/A

A NOAP result may be received if:

  • The account is not reachable via VoP.
  • The account is held at a PSP not participating in the VoP scheme.
  • VoP check timed out due to slow or no response from receiving PSP (response SLA of 5 seconds)
  • Technical issues prevent the check.

The following message flow diagram shows the steps involved in using the Verification of Payee endpoint:


Verification of Payee message flow diagram showing the VoP POST /open-banking/vop/v1/payees/single endpoint being called and providing the intended payee's details. ClearBank then conduct the VoP check with the responding PSP and provide the result in the 200 response. The result is presented to the end user who can then decide whether to proceed with the payment depending on the result.

Valid VoP field combinations

Only the following field combinations are valid when submitting a VoP request. Note that IBAN is a required field so must be populated in every request in combination with either:

  • Name, or
  • Identification > OrganisationId > LEI, or
  • Identification > OrganisationId > anyBIC, or
  • Identification > OrganisationId > Others > IdentificationNumber and SchemeNameCode, or
  • Identification > OrganisationId > Others > IdentificationNumber and SchemeNameProprietary

Check payee account name

post/open-banking/vop/v1/payees/single

This endpoint is used to conduct a Verification of Payee check using the details of the intended payee against the account holder name at the receiving payment service provider (PSP).

Parameters

  • Authorization string, header, Required

    Your API Token, obtained from the ClearBank Portal.

  • DigitalSignature string, header, Required

    Signed hash of the body of the request. The hash is signed by your private key.

  • X-Request-Id string, header, Required

    A unique identifier for the request; valid for 24 hours, max length 83.

Request Payload (application/json)

  • party object, Required

    The details of the intended payee to be checked against the account at the receiving PSP. You need to include EITHER name OR identification as shown in the groups below.

  • partyAccount object, Required

    The account details of the intended payee to be checked against the account at the receiving PSP.

  • partyAgent object, Required

    The details of the receiving PSP who holds the account of the payee.

  • unstructuredRemittanceInformation array

    Additional information related to the payment to include unstructured details for the beneficiary, such as invoice numbers, references, or other contextual information. Only one entry will be used. Limited to 140 characters per entry.

    Maximum length
    140

request

{
"party": {
"name": "Mrs Mary L Green"
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicfi": "CLRBNL2AXXX"
}
},
"unstructuredRemittanceInformation": "Transfer Ref 1886495537461152"
}
Code copied

Response (application/json)

  • 200 OK
  • 400 Bad Request

OK

{
"partyNameMatch": "MTCH",
"partyIdMatch": "null",
"matchedName": "null"
}
Code copied

Bad Request

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

Examples of valid payloads

Party name:

{
"party": {
"name": "Mrs Mary L Green"
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicFi": "CLRBNL2AXXX"
}
}
}

LEI:

{
"party": {
"identification": {
"organisationId": {
"lei": "646700J3LMYRBDP9MA86"
}
}
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicFi": "CLRBNL2AXXX"
}
}
}

anyBIC:

{
"party": {
"identification": {
"organisationId": {
"AnyBIC": "ABNANL2AXXX"
}
}
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicFi": "CLRBNL2AXXX"
}
}
}

identificationNumber with schemeNameCode:

{
"party": {
"identification": {
"organisationId": {
"others": {
"identificationNumber": "DE89ZZZ44862148843541",
"schemeNameCode": "CUST",
"issuer": "string"
}
}
}
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicFi": "CLRBNL2AXXX"
}
}
}

identificationNumber with schemeNameProprietary:

{
"party": {
"identification": {
"organisationId": {
"others": {
"identificationNumber": "DE89ZZZ44862148843541",
"schemeNameProprietary": "Prtry",
"issuer": "string"
}
}
}
},
"partyAccount": {
"iban": "NL59ABNA8424598490"
},
"partyAgent": {
"financialInstitutionId": {
"bicFi": "CLRBNL2AXXX"
}
}
}

Simulate Verification of Payee responses

You can test your handling of the VoP outcomes in our simulation environment by populating the unstructuredRemittanceInformation field with the following:

Field valueResult
["--match--"]Simulates a match response
["--nomatch--"]Simulates a no match response
["--closematch--"]Simulates a close match response
["--notapplicable--"]Simulates a not applicable response