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_MATCH or NO_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:

FieldMeaning
statusThe current lifecycle state of the verification. It determines whether the verification can be used for payment.
matchResult.matchLevelThe 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 payeeVerificationId can 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.

❗️

Important

You 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 eligibility

A payment can proceed only when the VoP verification status is ACCEPTED or EXEMPT.

  • MATCH → automatically becomes ACCEPTED → payment can proceed.
  • CLOSE_MATCH / NO_MATCHPENDING_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:

  • ACCEPTED
  • EXEMPT
  • MATCH results are automatically accepted and therefore result in an ACCEPTED verification.

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 payeeVerificationId authorizes one payment. After successful use, its status becomes ASSIGNED and it cannot be reused.

  • Statuses allowed for payment. A payeeVerificationId can be used for payment assignment only when its verification status is ACCEPTED or EXEMPT.

  • MATCH. A MATCH result is automatically accepted. No customer action is required.

  • Customer review. A verification in PENDING_CUSTOMER_REVIEW cannot be used for payment assignment. The customer must explicitly accept the verification first.

  • EXEMPT. A verification in EXEMPT status does not require customer approval and can be used directly for payment assignment.

  • Expiry. Any verification in PENDING_CUSTOMER_REVIEW or ACCEPTED that is older than 10 minutes automatically transitions to EXPIRED. Start a new verification if it expires.

Verification statuses and payment eligibility

Verification statusTypical VoP resultCustomer action requiredPayment can proceed
ACCEPTEDMATCH or accepted CLOSE_MATCH / NO_MATCHNoYes
EXEMPTVoP exemptNoYes
PENDING_CUSTOMER_REVIEWCLOSE_MATCH / NO_MATCHYesNo
ASSIGNEDAlready usedNoNo
EXPIREDVerification expiredYes - start a new verificationNo

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

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 and the payment can proceed.

⚠️ 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 before the payment can proceed.

ℹ️ EXEMPT

An 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.



Did this page help you?