Developer 6 min di lettura

Codici di risposta ed errore dell'API Verification of Payee, spiegati

I team di integrazione raramente faticano a chiamare un endpoint di Verification of Payee — faticano a interpretare ciò che torna. Ecco come leggere ogni codice di schema e, soprattutto, come distinguere un esito da un errore.

A cura di Verification of Payee EU · powered by RoxPay

In breve

  • I quattro codici di schema sono MTCH (corrispondenza), CMTC (parziale), NMTC (nessuna) e NOAP (non applicabile).
  • NO_MATCH è un esito valido, non un errore di trasporto — ramifica su di esso, non sollevare eccezioni.
  • Gli errori veri (IBAN non valido, autenticazione, rate limit) usano HTTP 4xx/5xx con un codice leggibile da macchina.

Il bug di integrazione più comune con la Verification of Payee è trattare un NO_MATCH come una richiesta fallita. Non lo è. Una verifica andata a buon fine che afferma «questo nome non appartiene a questo IBAN» è comunque una risposta 200 con dati utili. Confondere le due cose porta a ignorare i segnali di frode o a mostrare agli utenti errori allarmanti.

I quattro codici di schema

Ogni risposta di Verification of Payee corrisponde a uno dei quattro codici standardizzati dello schema SEPA. Ramifica sul codice, non sul testo libero:

  • MTCH — MATCH: il nome corrisponde al titolare. Procedi.
  • CMTC — CLOSE_MATCH: quasi esatto (manca un secondo nome, nome commerciale vs ragione sociale). Mostra il nome verificato suggerito e chiedi conferma.
  • NMTC — NO_MATCH: il nome non appartiene all'IBAN. Avvisa chiaramente e blocca l'approvazione automatica.
  • NOAP — NOT_APPLICABLE: la verifica non è stata completata (es. banca rispondente irraggiungibile). Lascia decidere l'utente con cautela extra.

Esito vs errore

Se lo stato HTTP è 200 hai un esito di verifica — leggi scheme_code. Se è 4xx/5xx hai un errore — leggi il codice di errore. Non mappare mai NO_MATCH sul tuo percorso di errore.

Gestire bene il CLOSE_MATCH

Il CLOSE_MATCH è dove si vince o si perde la UX. La risposta può riportare il nome verificato del titolare; mostralo come suggerimento («Intendevi…?») così chi paga conferma o corregge invece di abbandonare il pagamento. Trattare CMTC come un fallimento netto frustra gli utenti legittimi.

Codici di errore veri

Distinti dagli esiti di schema, i problemi a livello di trasporto restituiscono errori HTTP standard — ad esempio invalid_iban (400), unauthorized (401), rate_limited (429) e scheme_unavailable (503). Ognuno riporta un request id per la tracciabilità del supporto. Passa un id esterno stabile a ogni chiamata così i retry restano idempotenti e i log si riconciliano.

FAQ

Domande frequenti

Significa che il nome è quasi esatto — manca un secondo nome, o c'è un nome commerciale diverso dalla ragione sociale. La risposta può includere il nome verificato in suggested_name, così puoi chiedere conferma a chi paga invece di rifiutare il pagamento.

NO_MATCH (NMTC) non è un errore — è un esito 200 valido. Trattalo come uno stop deciso nella UI o nella distinta: avvisa l'utente, blocca l'approvazione automatica e richiedi un ricontrollo prima dell'invio.

Gli errori veri usano codici di stato HTTP 4xx/5xx con un codice di errore leggibile da macchina (es. invalid_iban, unauthorized, rate_limited). Una «nessuna corrispondenza» è una risposta 200 il cui scheme_code è NMTC.

Integra la VoP nel tuo prodotto

Ottieni le credenziali e il riferimento API completo, con accesso sandbox per testare ogni percorso di codice.