Send VOP requests
Learn how to send VOP requests using Mambu Payments (formerly Numeral)
Send a Verification of Payee (VOP) request to check whether a payee's name matches their account details before initiating a payment.
How it works
- You send a VOP request to Mambu Payments with the payee's name (or organisation identifier) and IBAN.
- Mambu Payments looks up the responding PSP in the EPC Directory Service.
- Mambu Payments forwards the request to the responding PSP.
- The responding PSP compares the payee details and returns a matching result.
- Mambu Payments returns the result in the API response and sends an event to your webhook.
sequenceDiagram
participant You as Requesting PSP
participant MP as Mambu Payments
participant PSP as Responding PSP
You->>MP: POST /payee_verification_requests
activate MP
Note over MP: Look up responding PSP
MP->>PSP: Forward request
activate PSP
PSP->>MP: Return matching result
deactivate PSP
MP->>MP: Update request status
MP->>MP: Create event
MP->>You: Return response
MP-->>You: Send event to webhook
deactivate MP
Send a request
Submit a POST request to /payee_verification_requests with the payee's identification and account number.
Verify by name and IBAN (natural or legal persons):
POST /payee_verification_requests
{
"scheme": "vop",
"payee_identification_type": "name",
"payee_identification": "Jean Dupont",
"payee_account_number": "FR5012739000308682265435N36"
}Verify by organisation identifier and IBAN (legal persons only):
POST /payee_verification_requests
{
"scheme": "vop",
"payee_identification_type": "eu_vat",
"payee_identification": "FR56355877394",
"payee_account_number": "FR5012739000308682265435N36"
}Handle the response
The response includes a matching_result field with one of four values. Handle each result in your integration.
match
matchThe payee's name matches the account records. Proceed with the payment.
{
"object": "payee_verification_request",
"id": "c52abc4b-9e88-4c19-8972-cfe428341ef2",
"status": "completed",
"direction": "outgoing",
"scheme": "vop",
"request": {
"payee_type": null,
"payee_identification_type": "name",
"payee_identification": "Jean Dupont",
"payee_account": "FR5012739000308682265435N36",
"additional_information": null,
"requesting_agent_bank_code": "BANKFRPPXXX",
"responding_agent_bank_code": "BANKITPPXXX"
},
"matching_result": "match",
"payee_suggested_name": null,
"matching_details": null,
"scheme_data": {
"scheme_request_id": "c3d79e5a-2058-4301-8b36-353cb9eb0ca5",
"request_timestamp": "2025-01-26T13:51:10Z",
"response_timestamp": "2025-01-26T13:51:15Z"
},
"response_received_at": "2025-01-26T13:51:16Z",
"created_at": "2025-01-01T12:00:00Z"
}close_match
close_matchThe payee's name is similar but not identical. The payee_suggested_name field contains the name on file. Present the suggested name to the payer and let them decide whether to proceed.
{
"object": "payee_verification_request",
"id": "c39d1eff-c5ed-4197-8f24-28a68bd0eee6",
"status": "completed",
"direction": "outgoing",
"scheme": "vop",
"request": {
"payee_type": null,
"payee_identification_type": "name",
"payee_identification": "Jean Dupont",
"payee_account": "FR5012739000308682265435N36",
"additional_information": null,
"requesting_agent_bank_code": "BANKFRPPXXX",
"responding_agent_bank_code": "BANKITPPXXX"
},
"matching_result": "close_match",
"payee_suggested_name": "Jean Dupond",
"matching_details": null,
"scheme_data": {
"scheme_request_id": "c3d79e5a-2058-4301-8b36-353cb9eb0ca5",
"request_timestamp": "2025-01-26T13:51:10Z",
"response_timestamp": "2025-01-26T13:51:15Z"
},
"response_received_at": "2025-01-26T13:51:16Z",
"created_at": "2025-01-01T12:00:00Z"
}no_match
no_matchThe payee's name does not match. Warn the payer and consider blocking the payment.
{
"object": "payee_verification_request",
"id": "d6560dcb-e0c9-414d-bd65-6cf54a5338f5",
"status": "completed",
"direction": "outgoing",
"scheme": "vop",
"request": {
"payee_type": null,
"payee_identification_type": "name",
"payee_identification": "Jean Dupont",
"payee_account": "FR5012739000308682265435N36",
"additional_information": null,
"requesting_agent_bank_code": "BANKFRPPXXX",
"responding_agent_bank_code": "BANKITPPXXX"
},
"matching_result": "no_match",
"payee_suggested_name": null,
"matching_details": null,
"scheme_data": {
"scheme_request_id": "c3d79e5a-2058-4301-8b36-353cb9eb0ca5",
"request_timestamp": "2025-01-26T13:51:10Z",
"response_timestamp": "2025-01-26T13:51:15Z"
},
"response_received_at": "2025-01-26T13:51:16Z",
"created_at": "2025-01-01T12:00:00Z"
}impossible_to_match
impossible_to_matchThe responding PSP could not perform the comparison. This may indicate a temporary issue. Decide whether to proceed, retry, or block the payment based on your risk policy.
{
"object": "payee_verification_request",
"id": "8c209eda-a473-46df-b83c-b14238337bad",
"status": "completed",
"direction": "outgoing",
"scheme": "vop",
"request": {
"payee_type": null,
"payee_identification_type": "name",
"payee_identification": "Jean Dupont",
"payee_account": "FR5012739000308682265435N36",
"additional_information": null,
"requesting_agent_bank_code": "BANKFRPPXXX",
"responding_agent_bank_code": "BANKITPPXXX"
},
"matching_result": "impossible_to_match",
"payee_suggested_name": null,
"matching_details": null,
"scheme_data": {
"scheme_request_id": "c3d79e5a-2058-4301-8b36-353cb9eb0ca5",
"request_timestamp": "2025-01-26T13:51:10Z",
"response_timestamp": "2025-01-26T13:51:15Z"
},
"response_received_at": "2025-01-26T13:51:16Z",
"created_at": "2025-01-01T12:00:00Z"
}Test in sandbox
Simulate outgoing VOP requests using pre-defined test scenarios. The spreadsheet lists payee account numbers, identification types, and identifications that return specific matching results. Mambu Payments replies automatically with the corresponding pre-defined response.
Related
Updated 12 days ago
