Documentation API Verification of Payee
Authentification, l'endpoint de vérification, charges utiles de requête et de réponse, codes de correspondance du schéma SEPA et gestion des erreurs — tout ce dont un développeur a besoin pour intégrer le contrôle IBAN/nom, avec des exemples JSON et cURL prêts à copier.
{BASE_URL}/vop/v1/verify - Authentification
- Bearer token (OAuth 2.0)
- Format
- application/json
L'URL de base et les identifiants API sont fournis lors de l'onboarding — contactez-nous pour les obtenir.
L'API Verification of Payee est un unique endpoint REST authentifié : vous envoyez en POST un nom de bénéficiaire et un IBAN et recevez un résultat de correspondance standardisé en temps réel. Les exemples ci-dessous sont illustratifs ; votre URL de base et vos identifiants exacts sont fournis lors de l'onboarding.
Authentification
Chaque requête est authentifiée par un bearer token via HTTPS. Envoyez le token dans l'en-tête Authorization ; les tokens sont émis par environnement (sandbox et production).
Les mêmes identifiants débloquent aussi le tableau de bord RoxBusiness, où vous pouvez lancer des vérifications ponctuelles sans écrire de code.
Authorization: Bearer <YOUR_API_TOKEN>
Content-Type: application/json Requête
Envoyez en POST un corps JSON avec le nom du bénéficiaire et l'IBAN. Pour les personnes morales, vous pouvez aussi envoyer un identifiant d'organisation (p. ex. une Partita IVA / Codice Fiscale italienne) et un external_id optionnel pour le rapprochement.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Requis | Nom du bénéficiaire à vérifier, tel que saisi par le payeur. |
| iban | string | Requis | IBAN de destination (validé pour le format et la somme de contrôle avant l'appel au schéma). |
| account_type | enum | Optionnel | NATURAL_PERSON ou LEGAL_PERSON. Aide la banque répondante à comparer correctement. |
| organisation_id | string | Optionnel | Numéro de TVA / code fiscal pour les personnes morales (p. ex. Partita IVA). Vérifié face au titulaire enregistré. |
| external_id | string | Optionnel | Votre propre identifiant de référence, renvoyé dans la réponse pour le rapprochement. |
{
"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"
}' Réponse
Une réponse 200 renvoie le résultat normalisé, le code de correspondance du schéma SEPA, le BIC de la banque répondante et le temps de traitement. En cas de correspondance proche, le nom vérifié est renvoyé dans suggested_name.
Corps de la réponse
| Champ | Type | Description |
|---|---|---|
| verification_id | string | Identifiant unique de cette vérification, pour votre piste d'audit. |
| result | enum | MATCH, CLOSE_MATCH, NO_MATCH ou NOT_APPLICABLE. |
| scheme_code | string | Le code du schéma SEPA VoP : MTCH, CMTC, NMTC ou NOAP. |
| suggested_name | string | En cas de CLOSE_MATCH, le nom vérifié du titulaire à suggérer au payeur. |
| responding_bic | string | BIC de l'institution qui a répondu à la vérification. |
| processing_time_ms | integer | Temps pris par le PSP répondant, en millisecondes. |
| external_id | string | Votre identifiant de référence, renvoyé inchangé. |
{
"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"
} Codes de résultat de correspondance
Chaque réponse correspond à l'un des quatre codes du schéma SEPA VoP. Branchez-vous sur scheme_code pour que votre logique reste stable.
| Code | Résultat | Signification | Action recommandée |
|---|---|---|---|
| MTCH | MATCH | Le nom correspond au titulaire du compte. | Procédez en confiance. |
| CMTC | CLOSE_MATCH | Presque correct (p. ex. nom commercial vs raison sociale). | Affichez suggested_name ; demandez au payeur de confirmer. |
| NMTC | NO_MATCH | Le nom n'appartient pas à l'IBAN. | Arrêt ferme — avertissez et bloquez l'approbation automatique. |
| NOAP | NOT_APPLICABLE | La vérification n'a pas pu être effectuée. | Informez le payeur ; laissez-le décider. |
Gestion des erreurs
NO_MATCH est un résultat 200 valide, pas une erreur — ne le traitez jamais comme un échec de transport. Les vraies erreurs utilisent des codes de statut 4xx/5xx avec un code d'erreur lisible par machine et un request_id pour le support.
| HTTP | Code d'erreur | Quand cela arrive |
|---|---|---|
| 400 | invalid_iban | L'IBAN a échoué à la validation de format ou de somme de contrôle. |
| 400 | missing_field | Un champ requis (name ou iban) est absent. |
| 401 | unauthorized | Bearer token manquant ou invalide. |
| 429 | rate_limited | Trop de requêtes — appliquez un backoff et réessayez. |
| 503 | scheme_unavailable | Le schéma VoP / le PSP répondant est temporairement injoignable. |
{
"error": "invalid_iban",
"message": "The 'iban' field failed checksum validation.",
"request_id": "req_8a2b1f0c"
} Intégrez en quatre étapes
Une intégration REST standard qui s'insère dans votre flux de paiement existant.
- 1
Obtenez les identifiants
Faites l'onboarding et recevez votre bearer token et votre URL de base pour sandbox et production.
- 2
Appelez /verify
Envoyez en POST le nom du bénéficiaire et l'IBAN, avec un external_id et un organisation_id optionnels.
- 3
Lisez scheme_code
Branchez-vous sur MTCH / CMTC / NMTC / NOAP et stockez le verification_id.
- 4
Agissez dans votre UI
Affichez un signal clair au payeur, ou conditionnez une remise ou un mandat au résultat.
FAQ développeurs
Les premières questions des équipes d'intégration.
Un corps JSON avec name et iban (requis), plus account_type, organisation_id (TVA/code fiscal pour les personnes morales) et votre external_id optionnels. Voir l'exemple de requête ci-dessus.
NO_MATCH (code de schéma NMTC) est une réponse 200 valide, pas une erreur. Traitez-la comme un arrêt ferme : avertissez le payeur, bloquez l'approbation automatique et exigez une nouvelle vérification avant l'envoi.
Oui. Les tokens sont émis par environnement, vous pouvez donc intégrer et tester en sandbox avant de basculer l'URL de base en production.
Oui — envoyez organisation_id avec account_type LEGAL_PERSON. Cela aide quand le nom commercial diffère du nom enregistré.
Envoyez votre propre external_id dans la requête ; il est renvoyé inchangé, et chaque réponse porte aussi un verification_id unique.
Obtenez vos identifiants API
Faites l'onboarding au schéma SEPA VoP avec une intégration REST et passez en production avant votre échéance.