Référence API

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.

POST {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.

En-têtes HTTP
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.
Corps de la requête
{
  "name": "ACME Trading S.r.l.",
  "iban": "IT60X0542811101000000123456",
  "account_type": "LEGAL_PERSON",
  "organisation_id": "IT01524770524",
  "external_id": "invoice-2025-00842"
}
cURL
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é.
200 OK
{
  "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.
400 Bad Request
{
  "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. 1

    Obtenez les identifiants

    Faites l'onboarding et recevez votre bearer token et votre URL de base pour sandbox et production.

  2. 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. 3

    Lisez scheme_code

    Branchez-vous sur MTCH / CMTC / NMTC / NOAP et stockez le verification_id.

  4. 4

    Agissez dans votre UI

    Affichez un signal clair au payeur, ou conditionnez une remise ou un mandat au résultat.

Référence API

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.