Verification of Payee

Verification of Payee (VoP) is a fraud-prevention feature that verifies payee bank details for electronic payments, ensuring payments are sent to the correct recipient.

A prerequisite for VoP is that you have integrated with the NelloPay flow. To implement this integration, please refer to our payment documentation.

How it works

The validation process begins when a checkout request is created. The API response returned to the merchant includes the payee verification status along with the checkout request fields. There are four possible API responses:

  1. Verified payee details matched
  2. Close match of payee details
  3. Mismatch of payee details
  4. Transaction blocked

Responses two and three are only available if you have an agreement that includes a grace period of 30 days for mismatches and 90 days for close matches.

Verified payee details matched

A successful checkout response is returned when payee details are verified.

Response 200

{
  "redirectUrl": "https://checkout.neonomics.io/api/v1/checkoutrequests/JkuOIJ/app",
  "id": "0a15025d-824a-19c6-8182-7d5ab472002f",
	"payeeVerification": {
        "status": "VALID"
    }
}

Close match of payee details

A successful checkout response is returned with the payeeVerification object indicating a close match status.

Response 200

{
  "redirectUrl": "https://checkout.neonomics.io/api/v1/checkoutrequests/JkuOIJ/app",
  "id": "0a15025d-824a-19c6-8182-7d5ab472002f",
	"payeeVerification": {
        "status": "INVALID",
        "reasons": [
            {
                "code": "CREDITOR_NAME_NEAR_MATCH",
                "message": "Creditor account is valid for receiving funds, name nearly matches the creditor name."
            }
        ]
    }
}

Mismatch of payee details

A successful checkout response is returned with the payeeVerification object showing an INVALID status and a reason with the code CREDITOR_NAME_MISMATCH.

Response 200

{
  "redirectUrl": "https://checkout.neonomics.io/api/v1/checkoutrequests/JkuOIJ/app",
  "id": "0a15025d-824a-19c6-8182-7d5ab472002f",
	"payeeVerification": {
        "status": "INVALID",
        "reasons": [
            {
                "code": "CREDITOR_NAME_MISMATCH",
                "message": "Creditor account is not valid for receiving funds with given creditor name."
            }
        ]
    }
}

Transaction blocked

An unsuccessful checkout request response is returned when the transaction cannot proceed.

Response 400

{
    "id": "fe878207-5082-4589-893c-90b5d7215efa",
    "timestamp": "2025-11-17T12:24:56.609+00:00",
    "status": 400,
    "type": "VALIDATION",
    "message": "Payee verification failed with the following reasons: Creditor account is not valid for receiving funds with given creditor name."
}

How to handle each status

StatusCodeAction
VALID-🟩 No action needed. Proceed as normal—the payee details are correct.
INVALIDCREDITOR_NAME_NEAR_MATCH🟧 Action needed. The creditor's details are nearly correct but must be updated within 90 days.
INVALIDCREDITOR_NAME_MISMATCH🟥 Urgent action required. The creditor details do not match and must be corrected within 30 days.

By implementing Verification of Payee correctly, you can significantly reduce payment fraud and ensure your customers' transactions reach their intended recipients securely. 🏦