Verification of Payee API
Introduction
Verification of Payee (VoP) Single API allows you to verify a payee account within the Eurozone by providing a payee IBAN account number and payee name to verify the name against the name of the account holder in the receiving bank. This information can help you in deciding if the payment will reach the correct recipient and is safe to process.
Use Cases and Features
Payee verification: Perform a real-time check of payee when creating an account transfer to a payee within the Eurozone to verify that the correct creditor account is used.
Creditor onboarding: When adding to or updating creditor information in your creditors’ list, perform a verification of the creditor account to ensure, that the account is owned by your creditor.
Features
- Real-time verification of account holders in banks across the Eurozone.
- Request ID may be used in fraud investigations towards sending and receiving banks.
Markets
The API is offered in a pilot version to customers operating in the Finnish or Irish market.
Getting started
Authentication
To access a resource, the client must first request a Client Credentials Grant token by calling the token endpoint specified in the OpenId configuration (token_endpoint). The request should be an x-www-form-urlencoded POST with the following parameters:
- grant_type - client_credentials.
- scope - should include a scope the client has access to; for the Verification of Payee API, it MUST contain the "accounts" keyword.
- client_id - the ID received after onboarding.
Example Request:
curl --location --request POST 'https://example.com/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=1233456' \
--data-urlencode 'scope=accounts'
Example Response:
{
"token_type":"Bearer",
"access_token":"A****",
"metadata":"m:",
"expires_in":3600,
"consented_on":1588933990,
"scope":"accounts"
}
Using the Access Token:
The access_token received is valid for 1 hour and must be included in the request header on all subsequent API requests:
Authorization: Bearer <access_token>
Implementation Details
Environment Description
As described in the External API Platform onboarding guidelines, the Verification of Payee API will be available in two environments:
Sandbox: This environment will be used for initial integration tests and will provide mocked data.
Production: This environment will provide access to real data.
Sandbox URLs
Token Endpoint: https://sandbox-api.danskebank.com/sandbox-corporate/api/dk/business/oauth2/token
Verification of Payee Endpoint: https://sandbox-api.danskebank.com/sandbox-corporate/api/verificationofpayee
Production URLs
Token Endpoint: https://api.danskebank.com/corporate/api/dk/business/oauth2/token
Verification of Payee Endpoint: https://api.danskebank.com/corporate/api/verificationofpayee
Headers
| Header | Description |
|---|---|
| Authorization | Bearer <access_token> |
| accept | application/json |
| Content-Type | application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| Iban | string | Yes | The IBAN of the payee to verify. |
| Name | string | Yes | The name of the payee to verify. |
Request Example
curl --location --request POST '/VerificationOfPayee' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
-d '{
"iban": "FI123456789",
"name": "John Smith"
}'
Response Body
| Field | Type | Required | Description |
|---|---|---|---|
| matchedName | string | No | The payee's name. Only returned in case of CLOSE MATCH. |
| additionalInfo | AdditionalInfo | No | Optional additional information. |
| partyNameMatch | Code | Yes | The result code indication degree of name match. |
| payeeBic | string | Yes | BIC of the payee. |
| requestId | string | Yes | Unique identifier for Verification of Payee request. |
AdditionalInfo
| Value | Description |
|---|---|
| NAME_TOO_SHORT | Personal names need at least a first name and a last name |
| NAME_TOO_LONG | name cannot be longer than 140 characters |
| BANK_NOT_FOUND | The payee's bank is not supporting Verification of Payee |
| OPTED_OUT | The payee opted out |
| NOT_FOUND | The payee's bank could not find the specified IBAN |
| BIC_NOT_FOUND | The IBAN doesn't belong to any BIC - most likely because the IBAN doesn't exist |
| ACCOUNT_INVALID | The provided IBAN is invalid |
Code
| Value | Description |
|---|---|
| MTCH | MATCH - The provided name matches the name of the account holder. |
| CMTC | CLOSE MATCH - The provided name almost matches the name of the account holder. |
| NMTC | NO MATCH - The provided name does not match the name of the account holder. |
| NOAP | NOT APPLICABLE - The Verification of Payee check could not be executed. |
Success Response
HTTP Status: 200 OK
{
"matchedName": "John Doe",
"additionalInfo": null,
"partyNameMatch": "MTCH",
"accountType": "UNKNOWN",
"payeeBic": "ABAHDJ2A",
"requestId": "abc123-def456"
}
Error Responses
| HTTP Status | Description |
|---|---|
400 | Bad Request |
401 | Unauthorized |
500 | Internal Server Error |
504 | Gateway Timeout |
| Field | Type | Description |
|---|---|---|
| title | string | A short, human-readable summary of the problem type. |
| statusCode | number | HTTP status code. |
| details | string | A human-readable explanation specific to this occurrence of the problem. |
Response Body
{
"title": "Bad Request",
"statusCode": 400,
"detail": "The provided IBAN is invalid"
}
Architectural constraints
- State
- Active
Technical constraints
- Static URL
- /premium-apis/verification-of-payee-api
- Environment(s)
- PROD, SANDBOX
Is this helpful?