Verification of Payee (VoP) for SEPA EUR Payments
To comply with new regulations and improve payment safety, we’re adding a Verification of Payee (VoP) step.
The VoP verification determines whether a payment can proceed:
MATCH- the payee details match exactly. The verification is automatically accepted and the payment can proceed.CLOSE_MATCHorNO_MATCH- customer review is required before the payment can proceed.EXEMPT- the payee is exempt from the VoP requirement. No customer approval is required and the payment can proceed.
Scope
This feature is initially available only for SEPA EUR payments. We plan to extend this to other payment schemes later.
Please note that payments made via the EAGLE_NET scheme are not subject to the Verification of Payee (VoP) requirement.
Some payees may receive an EXEMPT verification status when the VoP requirement does not apply.
An EXEMPT verification is valid for payment assignment and does not require customer approval.
Verification Flow
Step 1 - Start verification
Create the Payee as you normally would. Then start the Verification of Payee check:
Endpoint: POST /payees/{payeeId}/verification
The response contains two separate pieces of information:
matchResult.matchLevel— the result of the Verification of Payee check.status— the current lifecycle status of the verification.
Example:
{
"id": "pvn_pjbyge1ljdn7d9z8ks",
"payeeId": "pye_p9mnzv0p8n6l1ya85b",
"assignedToId": null,
"status": "PENDING_CUSTOMER_REVIEW",
"type": "VERIFICATION_OF_PAYEE",
"matchResult": {
"matchLevel": "NO_MATCH",
"description": null,
"accountHolder": null
}
}Verification status vs. VoP result
The status and matchResult.matchLevel fields represent different things:
| Field | Meaning |
|---|---|
status | The current lifecycle state of the verification. It determines whether the verification can be used for payment. |
matchResult.matchLevel | The result of the VoP check. |
For example:
{
"status": "PENDING_CUSTOMER_REVIEW",
"matchResult": {
"matchLevel": "NO_MATCH"
}
}In this example, NO_MATCH is the result of the VoP check, while PENDING_CUSTOMER_REVIEW means that the customer must explicitly accept or reject the result before the payment can proceed.
Step 2 - Handle the verification result
The next action depends on the result of the VoP check.
MATCH
A MATCH result means that the payee details exactly match the account holder information returned by the payee's bank.
- The verification is automatically accepted and its status becomes
ACCEPTED. - No customer review is required.
- The
payeeVerificationIdcan be used directly to proceed with one payment.
CLOSE_MATCH or NO_MATCH
A CLOSE_MATCH or NO_MATCH result means that the payee details do not exactly match the information returned by the payee's bank.
-
The verification enters
PENDING_CUSTOMER_REVIEW. -
The customer must explicitly accept or reject the result using:
Endpoint:
POST /payees/verifications/{verificationId}/review
Accept:
{
"accepted": true
}Decline:
{
"accepted": false
}After the customer accepts the verification, its status becomes ACCEPTED and the payeeVerificationId can be used for one payment.
ImportantYou cannot use the payeeVerificationId while the verification is in
PENDING_CUSTOMER_REVIEW.
EXEMPT
An EXEMPT status means that the payee is exempt from the Verification of Payee requirement.
- No customer review or explicit acceptance is required.
- The payeeVerificationId can be used directly to proceed with one payment.
{
"id": "pvn_pjbyge1ljdn7d9z8kl",
"payeeId": "pye_p9mnzv0p8n6l1ya85o",
"assignedToId": null,
"status": "EXEMPT",
"type": "VERIFICATION_OF_PAYEE",
"matchResult": null
}
Payment eligibilityA payment can proceed only when the VoP verification status is
ACCEPTEDorEXEMPT.
MATCH→ automatically becomesACCEPTED→ payment can proceed.CLOSE_MATCH/NO_MATCH→PENDING_CUSTOMER_REVIEW→ customer must accept →ACCEPTED→ payment can proceed.EXEMPT→ no customer approval required → payment can proceed.
Step 3 - Send the payment
Once the verification is in an eligible status, attach the payeeVerificationId to your payout request.
A verification can be used for payment assignment only when its status is:
ACCEPTEDEXEMPTMATCHresults are automatically accepted and therefore result in anACCEPTEDverification.
For CLOSE_MATCH or NO_MATCH, the customer must first accept the verification and change its status to ACCEPTED.
Example:
{
"fromId": "fac_4dbv611zb251v3orMg",
"toId": "pye_eaxp4n74j5127l58vm",
"payeeVerificationId": "pvn_vkoep8y1d57rmnba1g",
"reference": "test payout SCT",
"amount": "6",
"paymentScheme": "SCT"
}Lifecycle & constraints
-
Single use. A
payeeVerificationIdauthorizes one payment. After successful use, its status becomesASSIGNEDand it cannot be reused. -
Statuses allowed for payment. A
payeeVerificationIdcan be used for payment assignment only when its verification status isACCEPTEDorEXEMPT. -
MATCH. A
MATCHresult is automatically accepted. No customer action is required. -
Customer review. A verification in
PENDING_CUSTOMER_REVIEWcannot be used for payment assignment. The customer must explicitly accept the verification first. -
EXEMPT. A verification in
EXEMPTstatus does not require customer approval and can be used directly for payment assignment. -
Expiry. Any verification in
PENDING_CUSTOMER_REVIEWorACCEPTEDthat is older than 10 minutes automatically transitions toEXPIRED. Start a new verification if it expires.
Verification statuses and payment eligibility
| Verification status | Typical VoP result | Customer action required | Payment can proceed |
|---|---|---|---|
ACCEPTED | MATCH or accepted CLOSE_MATCH / NO_MATCH | No | Yes |
EXEMPT | VoP exempt | No | Yes |
PENDING_CUSTOMER_REVIEW | CLOSE_MATCH / NO_MATCH | Yes | No |
ASSIGNED | Already used | No | No |
EXPIRED | Verification expired | Yes - start a new verification | No |
Interpreting VoP Verification Responses
The VoP check can return a result in matchResult.matchLevel. This result is separate from the verification status, which determines what action is required.
✅ MATCH
MATCHA MATCH result means that the payee details exactly match the account holder information returned by the payee's bank.
- The verification is automatically accepted and its status becomes
ACCEPTED. - No customer review is required and the payment can proceed.
⚠️ CLOSE_MATCH or NO_MATCH
CLOSE_MATCH or NO_MATCHA CLOSE_MATCH or NO_MATCH result means that the payee details do not exactly match the information returned by the payee's bank.
- The verification enters
PENDING_CUSTOMER_REVIEW. - The customer must explicitly accept or reject the result before the payment can proceed.
ℹ️ EXEMPT
EXEMPTAn EXEMPT verification means that the payee is exempt from the Verification of Payee requirement.
- No customer review or explicit acceptance is required.
- The payment can proceed directly using the
payeeVerificationId.
⚠️ Verification error
If the VoP verification itself cannot be completed, the API returns an error and no usable verification is created.
This can occur when, for example:
- the payee's bank is not available on the VoP network;
- the account is not available for verification;
- the account type is not supported.
In these cases, retry once the underlying issue has been resolved.
Updated 10 days ago
