IBAN - standard di comunicazione delle coordinate bancarie internazionali

Sommario

Introduzione

In questo articolo vengono presentati il nuovo standard di comunicazione delle coordinate bancarie internazionali, l'algoritmo di controllo delle coordinate corredato da alcuni esempi, una maschera per il controllo in linea e il programma in JavaScript che realizza l'algoritmo. È disponibile anche la versione del programma in PL/SQL di Oracle.

L'articolo è rivolto ai programmatori che devono adattare i sistemi informativi aziendali in modo che tali sistemi recepiscano questo nuovo standard. Sono graditi commenti e domande che è possibile inviare al seguente indirizzo e-mail: alexandre.rodichevski@chiappani.it.

In fondo a questa pagina si possono trovare le domande frequenti. Si ringraziano i signori Loris Muraro, Franco Brigiotti, Riccardo Ragusa e Gianni Gori per la discussione che ha permesso di creare la sezione delle domande e perfezionare l'algoritmo. Il signor Alain Dumont (Belgio) ha prodotto una pagina HTML con alcuni miglioramenti: IBAN viene introdotto in blocchi di 4 caratteri (formato di stampa); il controllo viene effettuato per una lista di paesi.

Che cos'è l'IBAN

L'IBAN (International Bank Account Number) è lo standard di comunicazione delle coordinate bancarie internazionali, proposto da ECBS (European Committee for Banking Standards). Questo standard permette, all'ordinante o alla banca del destinatario del bonifico, di verificare la correttezza del dato grazie alla presenza del numero di controllo. L'IBAN ha una lunghezza che dipende dalla nazione, con un massimo di 34 caratteri, non può contenere né spazi né caratteri speciali, come trattino o barra, è composto di numeri e di lettere maiuscole, secondo il seguente schema:

Descrizione Posizione Composizione Esempio
Sigla nazione 0 e 1 due lettere IT
Numero di controllo 2 e 3 due cifre 60
BBAN della nazione da 4 alla fine lettere e cifre Q0123412345000000753XYZ

Le coordinate bancarie italiane occupano 27 caratteri: sigla IT, due cifre di controllo e BBAN italiano.

L'IBAN considerato fino a questo punto aveva il formato elettronico o di base, così chiamato per distinguere da quello di stampa. Quest'ultima può contenere gli spazi per facilitare la lettura del dato, come nell'esempio: IT60 Q012 3412 3450 0000 0753 XYZ.

Secondo una risoluzione dell'European Payments Council, dall'1 gennaio 2007 le banche europee richiedono, per le operazioni di pagamento internazionali, l'indicazione dell'IBAN e del codice BIC (Bank Identifier Code) del beneficiario.

Algoritmo di controllo dell'IBAN

  1. L'IBAN deve essere una stringa costituita di almeno 5 caratteri.

  2. Deve contenere solo lettere maiuscole dell'alfabeto latino da A a Z e cifre da 0 a 9. Inoltre, le posizioni 0 e 1 possono essere occupate esclusivamente da una sigla valida ISO del paese, mentre le posizioni 2 e 3 da un numero.

  3. I primi quattro caratteri della stringa originale vengono scambiati con il resto.

  4. Ogni carattere è convertito in un codice da 0 a 35 secondo la seguente regola. La cifra è trasformata nel numero corrispondente, ad esempio 7 in 7. La lettera A si converte in 10, B in 11, ecc., Z si converte in 35. Dai numeri così ottenuti viene composta una nuova stringa numerica.

  5. La stringa numerica viene interpretata ora come un numero. Dividendolo per 97, si dovrebbe ottenere come resto 1. Per facilitare la divisione dei numeri eccessivamente lunghi, è possibile spezzare la stringa numerica in parti più piccole e calcolare il resto della divisione della prima parte per 97, poi comporre nuova stringa numerica dal resto della divisione e dal secondo pezzo e dividere questo numero per 97, etc.

Esempi di controllo dell'IBAN

Esempio 1

Prendiamo in esame la stringa IT60Q0123412345000000753XYZ. Si seguano i passi dell'algoritmo:

  1. È una stringa di 27 caratteri.

  2. Contiene solo lettere maiuscole e cifre. Le posizioni 0 e 1 sono occupate dalle lettere IT, mentre le posizioni 2 e 3 sono costituite dal numero 60.

  3. Scambiando i primi quattro caratteri con il resto, si ottiene Q0123412345000000753XYZIT60.

  4. Convertendo nella stringa numerica, a Q corrisponde 26, a 0 corrisponde 0, a 1 corrisponde 1, ecc. Il risultato finale è 260123412345000000753333435182960.

  5. Spezziamo la stringa numerica in cinque parti da almeno otto caratteri: 26012341, 23450000, 00753333, 43518296 e 0. Il resto della divisione di 26012341 per 97 è 45. Il resto della divisione di 4523450000 per 97 è 15. Il resto della divisione di 1500753333 per 97 è 82. Il resto della divisione di 8243518296 per 97 è 68. Il resto della divisione di 680 per 97 è 1.

Quindi il resto della divisione è 1. Questo codice IBAN è corretto.

Esempio 2

Analizziamo ora IT60 Q012 3412 3450 0000 0753 XYZ. Questa stringa contiene alcuni spazi (avendo il formato di stampa), quindi l'IBAN è errato.

Esempio 3

La stringa IT60Q012341234500000753/XYZ contiene un carattere speciale /, quindi l'IBAN è errato.

Esempio 4

Consideriamo la stringa IT63Q0123412345000000753XYZ. Questo esempio è identico al primo, ad eccezione del numero di controllo 63. La stringa numerica è 260123412345000000753333435182963. Il resto della divisione di questo numero per 97 è 4. Quindi l'IBAN è errato.

Programma per controllare l'IBAN

Qui di seguito si trovano una maschera di controllo e l'esempio del programma che realizza l'algoritmo di controllo delle coordinate bancarie internazionali.

Maschera per verificare l'esattezza di IBAN

Per verificare l'esattezza delle coordinate bancarie, inserite la stringa nel seguente campo e cliccate sul pulsante Verifica.

Domande più frequenti e risposte

  1. Come si fa a calcolare le due cifre di controllo dell'IBAN?

    Si forma un codice IBAN provvisorio composto di: sigla della nazione, due zeri, codice BBAN. Viene calcolato il resto della divisione come è descritto nell'algoritmo. Infine, gli zeri del codice di controllo vengono sostituiti con (98 - resto) mod 97. Ad esempio, se il resto è 0, il codice di controllo diventa 01, se il resto è 1, il codice rimane 00, se il resto è 2, il codice diventa 96.

    A mio avviso, è inutile calcolare il codice di controllo. Infatti, per controllare l'esattezza del IBAN è sufficiente l'operazione inversa. La formazione del codice IBAN invece è compito esclusivo degli istituti di credito, come è descritto nel sito di ECBS.

  2. Visto che il codice IBAN cambia la sua lunghezza a seconda della nazione, per l'algoritmo di controllo mi debbo comportare sempre allo stesso modo anche se il codice è per esempio svizzero?

    L'algoritmo di validazione dell'IBAN è uguale per tutte le nazioni. Tuttavia, è possibile rafforzarlo controllando anche la lunghezza che dipende dalla nazione: si veda l'esempio che ha prodotto il signor Alain Dumont (Belgio).

  3. Possono esistere due codici di controllo IBAN (ad esempio, 01 e 98) entrambi corretti?

    Possono esistere casi in cui due codici IBAN differenti solo nel codice di controllo siano entrambi corretti. Questo è dovuto al fatto che l'algoritmo di validazione mette il codice di controllo alla fine della stringa numerica. I numeri che finiscono con 00 o 97, 01 o 98, 02 o 99 hanno entrambi lo stesso resto dividendo per 97.

Risorse

  1. IBAN nel sito di European Committee for Banking Standards.
    http://www.ecbs.org/iban.htm