Documentación API Verification of Payee
Autenticación, el endpoint de verificación, payloads de solicitud y respuesta, códigos de coincidencia del esquema SEPA y gestión de errores — todo lo que un desarrollador necesita para integrar el control IBAN/nombre, con ejemplos JSON y cURL listos para copiar.
{BASE_URL}/vop/v1/verify - Autenticación
- Bearer token (OAuth 2.0)
- Formato
- application/json
La URL base y las credenciales API se proporcionan en el onboarding — contáctenos para obtenerlas.
La API Verification of Payee es un único endpoint REST autenticado: envía por POST un nombre de beneficiario y un IBAN y recibe un resultado de coincidencia estandarizado en tiempo real. Los ejemplos siguientes son ilustrativos; su URL base y sus credenciales exactas se emiten durante el onboarding.
Autenticación
Cada solicitud se autentica con un bearer token sobre HTTPS. Envíe el token en la cabecera Authorization; los tokens se emiten por entorno (sandbox y producción).
Las mismas credenciales también desbloquean el panel RoxBusiness, donde puede ejecutar verificaciones puntuales sin escribir código.
Authorization: Bearer <YOUR_API_TOKEN>
Content-Type: application/json Solicitud
Envíe por POST un cuerpo JSON con el nombre del beneficiario y el IBAN. Para personas jurídicas también puede enviar un identificador de organización (p. ej. una Partita IVA / Codice Fiscale italianos) y un external_id opcional para la conciliación.
Cuerpo de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| name | string | Requerido | Nombre del beneficiario a verificar, tal como lo introdujo el pagador. |
| iban | string | Requerido | IBAN de destino (validado para formato y checksum antes de la llamada al esquema). |
| account_type | enum | Opcional | NATURAL_PERSON o LEGAL_PERSON. Ayuda al banco respondedor a comparar correctamente. |
| organisation_id | string | Opcional | Número de IVA / código fiscal para personas jurídicas (p. ej. Partita IVA). Verificado frente al titular registrado. |
| external_id | string | Opcional | Su propio id de referencia, devuelto en la respuesta para la conciliación. |
{
"name": "ACME Trading S.r.l.",
"iban": "IT60X0542811101000000123456",
"account_type": "LEGAL_PERSON",
"organisation_id": "IT01524770524",
"external_id": "invoice-2025-00842"
} curl -X POST "$BASE_URL/vop/v1/verify" \
-H "Authorization: Bearer $ROXPAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "ACME Trading S.r.l.",
"iban": "IT60X0542811101000000123456",
"account_type": "LEGAL_PERSON",
"organisation_id": "IT01524770524",
"external_id": "invoice-2025-00842"
}' Respuesta
Una respuesta 200 devuelve el resultado normalizado, el código de coincidencia del esquema SEPA, el BIC del banco respondedor y el tiempo de procesamiento. En una coincidencia parcial, el nombre verificado se devuelve en suggested_name.
Cuerpo de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
| verification_id | string | Id único de esta verificación, para su pista de auditoría. |
| result | enum | MATCH, CLOSE_MATCH, NO_MATCH o NOT_APPLICABLE. |
| scheme_code | string | El código del esquema SEPA VoP: MTCH, CMTC, NMTC o NOAP. |
| suggested_name | string | En CLOSE_MATCH, el nombre verificado del titular a sugerir al pagador. |
| responding_bic | string | BIC de la entidad que respondió a la verificación. |
| processing_time_ms | integer | Tiempo que tardó el PSP respondedor, en milisegundos. |
| external_id | string | Su id de referencia, devuelto sin cambios. |
{
"verification_id": "vop_3f9a1c2e7b",
"result": "CLOSE_MATCH",
"scheme_code": "CMTC",
"suggested_name": "ACME Trading SRL",
"responding_bic": "BCITITMMXXX",
"processing_time_ms": 412,
"external_id": "invoice-2025-00842"
} Códigos de resultado de coincidencia
Cada respuesta corresponde a uno de los cuatro códigos del esquema SEPA VoP. Ramifique sobre scheme_code para que su lógica se mantenga estable.
| Código | Resultado | Significado | Acción recomendada |
|---|---|---|---|
| MTCH | MATCH | El nombre coincide con el titular de la cuenta. | Proceda con confianza. |
| CMTC | CLOSE_MATCH | Casi correcto (p. ej. nombre comercial vs razón social). | Muestre suggested_name; pida al pagador que confirme. |
| NMTC | NO_MATCH | El nombre no pertenece al IBAN. | Parada firme — avise y bloquee la aprobación automática. |
| NOAP | NOT_APPLICABLE | La verificación no pudo completarse. | Informe al pagador; deje que decida. |
Gestión de errores
NO_MATCH es un resultado 200 válido, no un error — nunca lo trate como un fallo de transporte. Los errores reales usan códigos de estado 4xx/5xx con un código de error legible por máquina y un request_id para soporte.
| HTTP | Código de error | Cuándo ocurre |
|---|---|---|
| 400 | invalid_iban | El IBAN falló la validación de formato o checksum. |
| 400 | missing_field | Falta un campo requerido (name o iban). |
| 401 | unauthorized | Bearer token ausente o inválido. |
| 429 | rate_limited | Demasiadas solicitudes — aplique backoff y reintente. |
| 503 | scheme_unavailable | El esquema VoP / el PSP respondedor está temporalmente inaccesible. |
{
"error": "invalid_iban",
"message": "The 'iban' field failed checksum validation.",
"request_id": "req_8a2b1f0c"
} Integre en cuatro pasos
Una integración REST estándar que encaja en su flujo de pago existente.
- 1
Obtenga credenciales
Haga el onboarding y reciba su bearer token y URL base para sandbox y producción.
- 2
Llame a /verify
Envíe por POST el nombre del beneficiario y el IBAN, con un external_id y organisation_id opcionales.
- 3
Lea scheme_code
Ramifique sobre MTCH / CMTC / NMTC / NOAP y guarde el verification_id.
- 4
Actúe en su UI
Muestre una señal clara al pagador, o condicione una remesa o un mandato al resultado.
FAQ para desarrolladores
Las primeras preguntas de los equipos de integración.
Un cuerpo JSON con name e iban (requeridos), más account_type, organisation_id (IVA/código fiscal para personas jurídicas) y su external_id opcionales. Vea el ejemplo de solicitud anterior.
NO_MATCH (código de esquema NMTC) es una respuesta 200 válida, no un error. Trátela como una parada firme: avise al pagador, bloquee la aprobación automática y exija una nueva comprobación antes de enviar.
Sí. Los tokens se emiten por entorno, así que puede integrar y probar en sandbox antes de cambiar la URL base a producción.
Sí — envíe organisation_id con account_type LEGAL_PERSON. Ayuda cuando el nombre comercial difiere del nombre registrado.
Envíe su propio external_id en la solicitud; se devuelve sin cambios, y cada respuesta lleva también un verification_id único.
Obtenga sus credenciales API
Haga el onboarding al esquema SEPA VoP con una integración REST y entre en producción antes de su plazo.