In questo articolo vengono presentati il nuovo standard di comunicazione delle coordinate bancarie nazionali in vigore dall’1/01/2003, l’algoritmo di controllo delle coordinate corredato da alcuni esempi 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 modificare 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: arodichevski@gmail.com.
In fondo a questa pagina si possono trovare le domande frequenti. Si ringraziano i signori Roberto Forcher e Armando Accettulli per la discussione che ha permesso creare la sezione delle domande. Ronni Desideri ha fornito la versione VBA per Access dell’algoritmo.
- Che cos’è il BBAN
- Algoritmo di controllo del BBAN
- Esempi di controllo del codice BBAN
- Domande più frequenti e risposte
Che cos’è il BBAN
Il BBAN (Basic Bank Account Number) è lo standard di comunicazione delle coordinate bancarie nazionali. Questo standard permette, all’ordinante o alla banca del destinatario del bonifico, di verificare la correttezza del dato grazie alla presenza del carattere di controllo. Per l’Italia la struttura delle coordinate bancarie è stata indicata dall’ABI (Associazione Bancaria Italiana). Il BBAN ha una lunghezza di 23 caratteri, non può contenere né spazi né caratteri speciali, come trattino o barra, è composto di numeri e di lettere maiuscole, secondo il seguente schema:
Campo | Descrizione | Posizione | Composizione | Esempio |
---|---|---|---|---|
CIN | carattere di controllo | 0 | una lettera | Q |
ABI | codice della banca destinataria | da 1 a 5 | cinque cifre | 01234 |
CAB | codice della filiale destinataria | da 6 a 10 | cinque cifre | 12345 |
Conto | numero del conto bancario | da 11 a 22 | dodici tra lettere e cifre | 000000753XYZ |
Il primo campo del BBAN è il carattere di controllo dell’esatta scrittura dei successivi 22 caratteri. Seguono i codici a cinque cifre ABI e CAB. Il numero del conto bancario è allineato a destra, ed è riempito di zeri a sinistra per occupare tutto lo spazio di dodici caratteri.
Nei sistemi applicativi attuali il BBAN può essere registrato nei campi CIN, ABI, CAB e nel campo del conto corrente.
Algoritmo di controllo del BBAN
- Il BBAN deve essere una stringa di 23 caratteri, con le posizioni numerate da 0 a 22.
- Deve contenere solo lettere maiuscole dell’alfabeto latino da
A
aZ
e cifre da0
a9
. Inoltre, la posizione 0 può essere occupata esclusivamente da una lettera, mentre le posizioni da 1 a 10 esclusivamente da cifre. - Ogni carattere è convertito in un codice da 0 a 25 secondo la seguente regola. La cifra è trasformata nel numero corrispondente, ad esempio
7
in 7. La letteraA
si converte in 0,B
in 1, ecc.,Z
si converte in 25. - Viene calcolata la somma di controllo per le posizioni da 1 a 22, in modo diverso per i posti pari e quelli dispari. Ogni posizione pari contribuisce alla somma con il proprio codice calcolato nel punto precedente dell’algoritmo. Ogni posizione dispari contribuisce con una funzione del proprio codice, descritta nella seguente tabella:
Codice Contributo 0 1 1 0 2 5 3 7 4 9 5 13 6 15 7 17 8 19 9 21 10 2 11 4 12 18 13 20 14 11 15 3 16 6 17 8 18 12 19 14 20 16 21 10 22 22 23 25 24 24 25 23 - Dividendo la somma di controllo per 26, si ottiene il resto che deve coincidere con il codice del carattere nella posizione 0.
Esempi di controllo del codice BBAN
Esempio 1
Prendiamo in esame la stringa Q0123412345000000753XYZ
. Si seguano i passi dell’algoritmo nella seguente tabella:
Posizione | Carattere | Codice | Contributo | |
---|---|---|---|---|
0 | Q | 16 | ||
1 | dispari | 0 | 0 | 1 |
2 | pari | 1 | 1 | 1 |
3 | dispari | 2 | 2 | 5 |
4 | pari | 3 | 3 | 3 |
5 | dispari | 4 | 4 | 9 |
6 | pari | 1 | 1 | 1 |
7 | dispari | 2 | 2 | 5 |
8 | pari | 3 | 3 | 3 |
9 | dispari | 4 | 4 | 9 |
10 | pari | 5 | 5 | 5 |
11 | dispari | 0 | 0 | 1 |
12 | pari | 0 | 0 | 0 |
13 | dispari | 0 | 0 | 1 |
14 | pari | 0 | 0 | 0 |
15 | dispari | 0 | 0 | 1 |
16 | pari | 0 | 0 | 0 |
17 | dispari | 7 | 7 | 17 |
18 | pari | 5 | 5 | 5 |
19 | dispari | 3 | 3 | 7 |
20 | pari | X | 23 | 23 |
21 | dispari | Y | 24 | 24 |
22 | pari | Z | 25 | 25 |
La stringa è composta di 23 caratteri, contiene solo lettere maiuscole Q
, X
, Y
, Z
e cifre. Al CIN Q
corrisponde il codice 16 coincidente con il resto della divisione della somma di controllo 146 per 26. Quindi questo codice BBAN è corretto.
Esempio 2
Analizziamo ora Q 01234 12345 000000753XYZ
. La lunghezza è di 26 caratteri, quindi è errata. Inoltre, questa stringa contiene alcuni spazi.
Esempio 3
La stringa Q012341234500000753/XYZ
contiene un carattere speciale /
, quindi è errata.
Esempio 4
Consideriamo la stringa B0123412345000000753XYZ
. Questo esempio è identico al primo, ad eccezione del CIN B
. A questo carattere corrisponde il codice 1 che non coincide con il resto della divisione della somma di controllo per 26. Quindi il codice di controllo è errato.
Domande più frequenti e risposte
Ci servirebbe sapere l’algoritmo per il calcolo del CIN bancario, avendo a disposizione CAB, ABI e numero del conto corrente (12 caratteri).
Seguendo i passi 3, 4 e 5 dell’algoritmo si ricava il codice di controllo (un numero da 0 a 25) dalle posizioni 1-22 del BBAN (cioè dalla stringa di ABI, CAB e numero del conto concatenati). È sufficiente convertire questo codice in CIN (lettera da A a Z). Nel primo esempio viene ottenuto il codice 16 al quale corrisponde il CIN Q.
Non ritengo molto utile ricavare CIN da ABI, CAB e conto dalle coordinate bancarie del vecchio formato (si veda la domanda più avanti).
Quando diventa obbligatorio l’utilizzo dello standard BBAN?
In Italia lo standard BBAN è in vigore dall’1/01/2003. Dal 16/06/2003 è diventato obbligatorio l’uso del numero del conto solo alfanumerico, di lunghezza 12 e riempito da sinistra con gli zeri. A breve termine sarà obbligatorio l’uso del CIN (carattere di controllo). Da quel momento si potrà dire che lo standard BBAN è obbligatorio.
Nel nostro database abbiamo le coordinate bancarie dei clienti nel vecchio formato: quasi tutte senza CIN e il numero del conto corrente contiene barre ed altri simboli speciali. Come possiamo convertire automaticamente le coordinate bancarie dal vecchio formato nel BBAN?
In nessun modo. Bisogna richiedere ai clienti le coordinate bancarie nel nuovo formato. È l’Istituto di credito che ha la competenza di fornire le nuove coordinate. Alcune banche infatti non si limitano ad eliminare le barre e trattini dal numero del conto riempendolo con gli zeri a sinistra, ma sostituiscono qualche cifra.
Esiste un esempio di un numero di conto corrente per il quale, dalla nostra applicazione, dal suo programma e da vari siti internet bancari, il CIN di verifica risulta essere L, mentre la banca destinataria del versamento, nonché il titolare del conto e la nostra banca che effettua il versamento affermano che il codice è I.
Non è la prima volta che mi vengono segnalate anomalie di questo tipo. Ho notato che il BBAN e il rispettivo IBAN formalmente errati diventano corretti sostituendo un carattere (non necessariamente nel CIN) con uno che gli somiglia come scrittura, ad esempio 8 con B. Anche nel vostro esempio, secondo me, esiste una confusione tra l (L minuscolo di Livorno) e I (I maiuscolo di Imola). Secondo me in alcune banche il codice BBAN viene prodotto o copiato a mano.
Un commento su “BBAN italiano – standard di comunicazione delle coordinate bancarie”