Generatore e Validatore IBAN - Dati Bancari di Test
Genera IBAN di test validi o convalida quelli esistenti istantaneamente. Supporta 10 paesi europei con validazione MOD 97. Perfetto per test di software finanziari e sviluppo.
Generatore e Validatore IBAN
Documentazione
Generatore e Validatore di IBAN
Cosa Fa Questo Strumento
Stai testando software finanziario senza dati di conti bancari reali? Avrai bisogno di formati IBAN validi che superino i controlli di validazione. Questo strumento genera IBAN casuali che seguono i formati specifici dei paesi e convalida quelli esistenti utilizzando lo standard ISO 13616.
Ecco il problema pratico che risolve: quando si sviluppano sistemi di pagamento o applicazioni bancarie, è necessario disporre di dati di test che non falliscano la validazione ma non rischino di esporre numeri di conto reali. Un errore comune che commettono gli sviluppatori è creare IBAN "fittizi" che non superano l'algoritmo di controllo MOD 97, causando il fallimento dei test per i motivi sbagliati.
Lo strumento gestisce due compiti principali:
- Generatore: Crea IBAN strutturalmente validi per qualsiasi paese supportato. Ogni numero generato supera gli stessi controlli di validazione che il sistema di produzione eseguirà.
- Validatore: Verifica la struttura IBAN, le cifre di controllo e la formattazione specifica del paese. Utile per eseguire il debug del motivo per cui un IBAN viene rifiutato.
Gli IBAN (International Bank Account Numbers) standardizzano il modo in cui le banche identificano i conti attraverso i confini. Ciascuno contiene un codice paese, due cifre di controllo calcolate tramite MOD 97 e un Basic Bank Account Number (BBAN) che varia a seconda del paese. Ciò che lo rende complicato è che la Germania utilizza 22 caratteri mentre la Francia ne necessita 27, e la struttura interna è completamente diversa.
Come Funzionano gli IBAN
Struttura e Formato IBAN
Gli IBAN possono essere lunghi fino a 34 caratteri alfanumerici, anche se la maggior parte dei paesi europei utilizza 22-27. Ogni IBAN si suddivide in tre parti:
- Codice Paese: Due lettere dallo standard ISO 3166-1 alpha-2 (DE per Germania, GB per Regno Unito)
- Cifre di Controllo: Due cifre calcolate che convalidano l'intero IBAN utilizzando MOD 97
- Numero di Conto Bancario di Base (BBAN): La parte specifica del paese che contiene:
- Identificativo bancario (talvolta chiamato numero di routing o codice bancario)
- Identificativo filiale (nel Regno Unito chiamato sort code)
- Numero di conto
- Talvolta cifre di controllo nazionali aggiuntive
Prendiamo un IBAN tedesco come esempio. Il modello DE2!n8!n10!n significa:
DE= codice paese2!n= due cifre di controllo numeriche8!n= codice bancario di otto cifre (Bankleitzahl)10!n= numero di conto di dieci cifre (Kontonummer)
Ciò che sorprende le persone è quanto questi formati varino tra i paesi:
| Paese | Lunghezza | Struttura | Esempio |
|---|---|---|---|
| Germania (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Regno Unito (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| Francia (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Spagna (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Italia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritmo di Convalida IBAN
La convalida IBAN si basa sull'algoritmo MOD 97 definito in ISO 7064. Ecco cosa accade effettivamente quando si convalida un IBAN:
- Spostare i primi quattro caratteri (codice paese e cifre di controllo) alla fine
- Sostituire ogni lettera con numeri: A=10, B=11, fino a Z=35
- Calcolare il modulo 97 della stringa di numeri risultante
- Gli IBAN validi producono sempre un resto esattamente di 1
Matematicamente:
Perché proprio MOD 97? Cattura quasi tutti gli errori comuni: errori di singola cifra, cifre invertite, persino la maggior parte degli errori di digitazione che coinvolgono caratteri simili. Nella pratica, ho scoperto che cattura circa il 99,9% degli errori di immissione accidentale, ed è per questo che è diventato lo standard internazionale.
Un dettaglio interessante: quando si generano gli IBAN, si calcolano le cifre di controllo partendo da "00", eseguendo l'algoritmo, quindi utilizzando 98 meno il resto. Questo garantisce che l'IBAN finale verrà convalidato correttamente.
Funzionalità dello Strumento
Generatore IBAN
Genera IBAN di test che superano la convalida senza utilizzare numeri di conto reali:
- Selezione del Paese: Supporta 10 principali paesi europei (Germania, Regno Unito, Francia, Spagna, Italia, Paesi Bassi, Svizzera, Austria, Belgio, Polonia)
- Conformità di Formato: Ogni IBAN generato corrisponde alla struttura ufficiale del paese e supera la convalida MOD 97
- Generazione con un Clic: Nessuna configurazione necessaria—basta selezionare un paese e generare
- Copia negli Appunti: Un singolo clic copia l'intero IBAN per incollarlo nei test
- Suddivisione Visiva: Visualizzazione con codifica a colori che mostra separatamente codice paese, cifre di controllo e dettagli bancari
Processo di generazione:
- Seleziona il modello di formato specifico del paese
- Riempie cifre/lettere casuali nella parte BBAN
- Calcola le cifre di controllo utilizzando MOD 97
- Assembla e convalida l'IBAN completo
Suggerimento pro: Quando si alimentano database di test, generare IBAN da più paesi per testare scenari transfrontalieri. I sistemi di pagamento reali spesso hanno casi limite specifici per paese.
Validatore IBAN
Verifica la struttura IBAN e individua problemi di formattazione prima che raggiungano la produzione:
- Verifica di Formato: Controlla i requisiti di lunghezza e struttura specifici per paese
- Convalida MOD 97: Esegue l'intero algoritmo di verifica delle cifre
- Suddivisione dei Componenti: Mostra esattamente come l'IBAN si divide in codice paese, cifre di controllo, codice banca e numero di conto
- Messaggi di Errore Specifici: Invece di messaggi generici di "non valido", vedrai esattamente cosa non va
- Formattazione Automatica: Gestisce IBAN con o senza spazi—la formattazione avviene automaticamente
I controlli di convalida vengono eseguiti nell'ordine:
- Riconoscimento del codice paese (è supportato?)
- Verifica della lunghezza (conteggio corretto dei caratteri per quel paese?)
- Convalida del tipo di carattere (numeri dove previsti, lettere dove consentite)
- Calcolo delle cifre di controllo MOD 97 (la matematica funziona?)
Scenario comune: Il tuo API riceve un IBAN dall'input utente con spaziatura incoerente. Usa il validatore per normalizzarlo prima dell'elaborazione—rimuove automaticamente gli spazi e ti mostra il formato corretto.
Guida Passo-Passo
Generazione di un IBAN
- Accedere alla Scheda del Generatore: Fare clic sulla scheda "Generatore" (selezionata per impostazione predefinita)
- Selezionare un Paese: Scegliere il paese desiderato dal menu a discesa
- Generare l'IBAN: Fare clic sul pulsante "Genera IBAN"
- Visualizzare il Risultato: L'IBAN generato apparirà di seguito con una suddivisione visiva dei suoi componenti
- Copiare negli Appunti: Fare clic sul pulsante "Copia negli appunti" per copiare l'IBAN per utilizzarlo altrove
Convalida di un IBAN
- Accedere alla Scheda di Convalida: Fare clic sulla scheda "Convalida"
- Inserire un IBAN: Digitare o incollare un IBAN nel campo di input
- Gli spazi e la formattazione verranno gestiti automaticamente
- Lo strumento accetta IBAN formattati (con spazi) e non formattati
- Visualizzare i Risultati di Convalida: Lo strumento convaliderà automaticamente l'IBAN durante la digitazione
- Controllare i Dettagli: Per gli IBAN validi, verrà visualizzata una suddivisione dei componenti
- Esaminare gli Eventuali Errori: Per gli IBAN non validi, verranno visualizzati messaggi di errore specifici per identificare il problema
Casi d'Uso e Applicazioni nel Mondo Reale
Sviluppo Software e Testing
Test API: Quando si costruiscono test di integrazione dei pagamenti, servono IBAN che superino la validazione senza attivare transazioni reali. Genera un batch di IBAN di test per la tua suite di test automatizzati, assicurando che la gestione degli errori funzioni correttamente per diversi formati nazionali.
Convalida Form: Stai testando un flusso di checkout? Usa il validatore per verificare che la convalida frontend corrisponda ai requisiti backend. Un problema frequente è accettare un formato IBAN che il processore di pagamento rifiuterà successivamente—intercettare questo durante lo sviluppo evita frustrazione al cliente.
Test di Casi Limite: La maggior parte degli sviluppatori testa con uno o due formati nazionali. Cosa succede quando un cliente svizzero con un IBAN di 21 caratteri usa il tuo sistema progettato intorno a IBAN tedeschi di 22 caratteri? Genera vari formati nazionali per sottoporre a stress test le lunghezze dei campi e la logica di convalida.
Test di Regressione: Dopo aver aggiornato la tua libreria di convalida IBAN, esegui gli IBAN di test generati sia sulla vecchia che sulla nuova versione. Eventuali discrepanze indicano modifiche che potrebbero compromettere l'ambiente di produzione.
Sviluppo di Applicazioni Finanziarie
Sistemi di Pagamento: Quando si costruisce una funzionalità di trasferimento bancario internazionale, si incontrano scenari in cui la struttura dell'IBAN determina il comportamento di routing. Gli IBAN dei Paesi Bassi (che includono lettere nel BBAN) espongono bug che gli IBAN tedeschi puramente numerici non evidenzierebbero.
Software Bancario: L'analisi degli IBAN per estrarre codici bancari e identificatori di filiale richiede una logica specifica per paese. Genera IBAN per ogni paese supportato per verificare che il tuo algoritmo di analisi identifichi correttamente questi componenti.
Verifica di Conformità: Le normative finanziarie spesso richiedono la convalida degli IBAN prima dell'elaborazione. Usa questo strumento per creare casi di test che dimostrino che il tuo sistema rifiuta cifre di controllo non valide e formati errati—essenziale per le tracce di audit.
Educazione e Documentazione
Formazione sugli Standard Bancari: Gli studenti che apprendono i sistemi di pagamento internazionali traggono beneficio dal vedere strutture IBAN reali. Genera esempi da più paesi per illustrare come funziona la standardizzazione tra diversi sistemi bancari.
Documentazione API: Invece di utilizzare IBAN potenzialmente reali nella documentazione tecnica, genera esempi puliti. Una documentazione con frasi come "Usa IBAN DE89370400440532013000 per i test" indica immediatamente agli sviluppatori che sono valori di test sicuri.
Operazioni sui Dati
Popolamento Database: Gli ambienti di sviluppo e staging necessitano di dati di test realistici. Genera IBAN diversi per popolare il database con profili cliente internazionali rappresentativi senza preoccupazioni sulla privacy.
Anonimizzazione Dati: Migrazione da produzione a staging? Sostituisci gli IBAN reali con quelli generati che mantengono la validità del formato per i test rimuovendo informazioni sensibili. Fondamentale per la conformità GDPR negli ambienti di sviluppo.
Alternative e Quando Utilizzarle
Strumenti diversi si adattano a esigenze diverse. Ecco un confronto onesto:
API Bancarie Commerciali (es. Stripe, Adyen)
Migliori per la convalida in produzione rispetto ai registri bancari reali. Questi servizi verificano se un IBAN corrisponde a un conto effettivamente attivo, non solo se il formato è corretto.
Utilizzare quando: È necessario verificare che un IBAN esista e possa ricevere pagamenti, non solo che sia strutturalmente valido.
Limitazioni: Costa denaro (tipicamente prezzi per chiamata API), richiede lavoro di integrazione e comunque servono IBAN di test per lo sviluppo - ed è qui che questo strumento entra in gioco.
Librerie di Linguaggi di Programmazione (ibantools, iban.js, python-stdnum)
Migliori per la convalida integrata nel codice dell'applicazione. Librerie come ibantools per JavaScript o python-stdnum per Python forniscono funzioni di convalida e generazione.
Utilizzare quando: Serve un accesso programmatico come parte della convalida di build o runtime.
Limitazioni: Richiede sforzo di sviluppo per l'integrazione e serve comunque un modo rapido per testare manualmente IBAN specifici durante il debug. Ecco perché uno strumento web è più veloce di script di test.
Registro IBAN SWIFT
Il registro IBAN ufficiale gestito da SWIFT elenca tutti i formati dei paesi e le regole di convalida. È la fonte autorevole.
Utilizzare quando: Si sta implementando il supporto IBAN da zero e servono le specifiche ufficiali.
Limitazioni: È documentazione, non uno strumento. Servirebbe comunque costruire o trovare qualcosa per generare e convalidare effettivamente gli IBAN in base a tali specifiche.
Validatori Bancari Ufficiali
Molte banche nazionali forniscono validatori specifici per paese (es. Bundesbank per IBAN tedeschi). Questi sono altamente accurati per il loro paese specifico.
Utilizzare quando: Si lavora solo con un paese e servono dettagli di convalida a livello bancario.
Limitazioni: Focus su un singolo paese. Se si costruiscono sistemi di pagamento internazionali, servirebbero validatori per ogni paese.
Quando Questo Strumento Ha Senso
Utilizzare questo strumento quando serve un test rapido, senza configurazione e senza integrazione API. È particolarmente utile durante lo sviluppo e il debug quando servono immediatamente dati di test validi o verificare perché un IBAN specifico non supera la convalida. Non sostituirà librerie di convalida di livello produzione nel codice, ma è più veloce di scrivere script di test temporanei.
Domande frequenti
Cos'è un IBAN e perché è importante?
IBAN sta per International Bank Account Number—un formato standardizzato creato dall'Organizzazione Internazionale per la Standardizzazione (ISO) per ridurre gli errori nei pagamenti transfrontalieri. Prima degli IBAN, ogni paese utilizzava il proprio formato di numero di conto, che portava a frequenti errori e trasferimenti falliti. Gli IBAN aggiungono codici paese e cifre di controllo per intercettare gli errori prima che il denaro si muova.
Quanto sono accurati gli IBAN generati?
Gli IBAN generati sono matematicamente corretti e superano l'algoritmo di convalida MOD 97 definito in ISO 13616. Seguono le strutture specifiche dei paesi. Tuttavia, sono creati casualmente e non corrispondono a conti bancari reali—ed è proprio questo il punto. Sono sicuri per i test proprio perché non colpiranno accidentalmente un conto reale.
Quali paesi supporta questo strumento?
Attualmente 10 paesi europei: Germania, Regno Unito, Francia, Spagna, Italia, Paesi Bassi, Svizzera, Austria, Belgio e Polonia. Questi coprono i formati IBAN più comuni che si incontrano nei sistemi di pagamento europei. Serve un altro paese? Il modulo di feedback è il modo migliore per richiedere aggiunte.
Posso usare gli IBAN generati per trasferimenti di denaro reali?
Assolutamente no. Questi sono solo IBAN di test. Superano la convalida del formato ma non sono collegati a conti bancari reali. Utilizzarli per transazioni effettive provocherà errori o rifiuti di pagamento. Sono destinati solo a sviluppo, test e scopi educativi.
Come funziona effettivamente la convalida IBAN?
Il validatore esegue quattro controlli in sequenza:
- Codice paese: È un codice a due lettere riconosciuto?
- Lunghezza: Corrisponde alla lunghezza richiesta per quel paese? (Germania = 22, UK = 22, Francia = 27, ecc.)
- Tipi di caratteri: Le lettere e i numeri sono nelle posizioni corrette in base al formato del paese?
- Controllo MOD 97: Il checksum matematico è uguale a 1 secondo ISO 7064?
Se un controllo fallisce, vedrai un messaggio di errore specifico che spiega cosa non va.
Gli spazi contano negli IBAN?
No, per la convalida. Gli IBAN sono tipicamente visualizzati con spazi (gruppi di quattro) per la leggibilità, ma gli spazi sono cosmetici. DE89 3704 0044 0532 0130 00 e DE89370400440532013000 sono identici ai fini della convalida. Lo strumento gestisce automaticamente entrambi i formati.
I miei dati vengono inviati a un server o memorizzati da qualche parte?
No. Tutto viene eseguito nel tuo browser utilizzando JavaScript. Nessun dato IBAN lascia la tua macchina, tocca un server o viene memorizzato da qualche parte. Puoi verificarlo aprendo gli strumenti di sviluppo del browser e osservando la scheda di rete—non vedrai richieste durante la generazione o la convalida degli IBAN.
Cosa succede se devo convalidare un IBAN di un paese non elencato?
Lo strumento attualmente supporta solo i 10 paesi nel menu a discesa. L'aggiunta di altri richiede l'implementazione delle regole di formato specifiche di ciascun paese. Se hai bisogno di convalida per paesi come Norvegia, Svezia o altri, faccelo sapere tramite il modulo di feedback—diamo priorità alle aggiunte in base alla domanda.
Perché un IBAN formattato correttamente potrebbe non superare la convalida?
Ragioni più comuni:
- Cifre di controllo errate: Anche una cifra errata non supera il test MOD 97
- Errori di battitura: Caratteri scambiati o cifre sbagliate ovunque nell'IBAN
- Lunghezza errata: Caratteri mancanti o aggiuntivi per quel paese
- Caratteri non validi: Lettere dove sono consentiti solo numeri, o viceversa
- Paese non supportato: Il codice paese esiste ma non è nel nostro elenco supportato
Il messaggio di errore ti dirà specificamente cosa non va.
Come posso segnalare bug o richiedere funzionalità?
Usa il modulo di feedback in fondo alla pagina. Le segnalazioni di bug specifiche con esempi di IBAN sono le più utili. Per le richieste di funzionalità, spiegare il caso d'uso aiuta a dare priorità a ciò che verrà sviluppato successivamente.
Qual è la differenza tra IBAN e codici SWIFT/BIC?
Gli IBAN identificano specifici conti bancari, mentre i codici SWIFT/BIC identificano banche o filiali bancarie. Pensaci in questo modo: il codice SWIFT ti dice quale banca, l'IBAN ti dice quale conto in quella banca. Per i trasferimenti internazionali, spesso hai bisogno di entrambi—il codice SWIFT instrada verso la banca corretta, quindi l'IBAN instrada al conto specifico.
Posso convalidare un IBAN senza conoscere il paese?
Sì, perché le prime due lettere di ogni IBAN sono il codice paese. Il validatore legge quei primi due caratteri per determinare quale formato di paese applicare. Ecco perché il rilevamento del paese avviene automaticamente quando incolli un IBAN—non serve selezionare manualmente il paese.
Esistono formati IBAN per paesi al di fuori dell'Europa?
Sì, ma in numero minore. Mentre l'IBAN è nato in Europa e ha la maggiore adozione lì, paesi come Arabia Saudita, UAE, Brasile e altri lo hanno adottato. Questo strumento si concentra attualmente sui formati europei poiché rappresentano la stragrande maggioranza delle transazioni transfrontaliere. Il Registro IBAN SWIFT mantiene l'elenco completo.
Come Leggere e Decodificare un IBAN
Hai mai guardato un IBAN come DE89370400440532013000 e ti sei chiesto cosa significhi ogni parte? Ecco come decodificare qualsiasi IBAN:
Passaggio 1: Codice Paese (Primi 2 caratteri)
DE= Germania- Indica quali regole di formato del paese si applicano
Passaggio 2: Cifre di Controllo (Successivi 2 caratteri)
89= checksum calcolato- Questi digit verificano che l'intero IBAN sia valido utilizzando MOD 97
Passaggio 3: Codice Banca (Varia per paese)
37040044negli IBAN tedeschi = identificativo bancario di 8 digit- Paesi diversi usano lunghezze diverse (il Regno Unito usa 4 caratteri)
Passaggio 4: Numero di Conto (Caratteri rimanenti)
0532013000= il numero di conto effettivo presso quella banca- Lunghezza e formato dipendono dal paese
Paesi diversi organizzano la parte BBAN in modo differente. Gli IBAN del Regno Unito includono un codice di 6 digit (identificativo filiale) tra il codice banca e il numero di conto. Gli IBAN francesi combinano codice banca, codice filiale e numero di conto con una chiave di controllo. Comprendere queste differenze è cruciale quando si analizzano gli IBAN a livello programmatico.
Errori Comuni di Convalida IBAN e Come Risolverli
Quando si implementa la convalida IBAN, si incontreranno ripetutamente questi problemi:
Errore "Cifre di Controllo Non Valide"
Causa: Il calcolo MOD 97 non è uguale a 1. Le cifre di controllo sono sbagliate o c'è un errore altrove nell'IBAN.
Soluzione: Eseguire nuovamente la convalida dopo aver corretto eventuali errori di battitura. Anche un singolo carattere errato in qualsiasi punto dell'IBAN causa un errore nelle cifre di controllo. Questo è progettato per rilevare errori di immissione dati.
Errore "Lunghezza Errata per il Paese"
Causa: L'IBAN ha troppi o troppo pochi caratteri per il suo codice paese.
Soluzione: Verificare che il codice paese corrisponda al paese previsto. Gli IBAN tedeschi hanno sempre 22 caratteri, quelli del Regno Unito sono 22, quelli francesi 27. Caratteri mancanti o in eccesso indicano un troncamento o dati errati.
Errore "Caratteri Non Validi"
Causa: Caratteri che non dovrebbero apparire in quella posizione, come lettere dove sono consentiti solo numeri.
Soluzione: Controllare il formato specifico del paese. Ad esempio, gli IBAN tedeschi sono completamente numerici dopo il codice paese e le cifre di controllo, mentre gli IBAN del Regno Unito includono 4 lettere per il codice banca.
Errore "Codice Paese Non Supportato"
Causa: Le prime due lettere non sono un codice paese riconosciuto o non sono supportate dal proprio validatore.
Soluzione: Verificare l'ortografia del codice paese. Errori comuni includono l'uso di UK invece di GB, o EN invece di codici paese. Questo strumento supporta 10 paesi europei; i validatori di produzione dovrebbero supportare tutti i paesi del registro SWIFT.
Formato vs Esistenza del Conto
Importante distinzione: la convalida conferma che un IBAN è strutturalmente corretto, non che il conto esista. Un IBAN può superare tutti i controlli di convalida ma non corrispondere a un conto bancario reale. Per sistemi di pagamento di produzione, sono necessarie ulteriori verifiche oltre alla convalida del formato.
Implementazione Tecnica per Sviluppatori
Se stai implementando il supporto IBAN nella tua applicazione, ecco esempi di codice collaudati in più linguaggi. Queste implementazioni gestiscono i casi limite che incontrerai in produzione:
Convalida IBAN
1function validateIban(iban) {
2 // Rimuove gli spazi e converte in maiuscolo
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Controlla il formato base
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Riorganizza e converte le lettere in numeri
11 const rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
12 const converted = rearranged.split('').map(char => {
13 if (/[A-Z]/.test(char)) {
14 return (char.charCodeAt(0) - 55).toString();
15 }
16 return char;
17 }).join('');
18
19 // Calcola mod 97
20 let remainder = 0;
21 for (let i = 0; i < converted.length; i++) {
22 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
23 }
24
25 return remainder === 1;
26}
27
28// Esempio di utilizzo
29console.log(validateIban('DE89 3704 0044 0532 0130 00')); // true
30console.log(validateIban('GB29 NWBK 6016 1331 9268 19')); // true
31console.log(validateIban('DE89 3704 0044 0532 0130 01')); // false (cifre di controllo non valide)
321def validate_iban(iban):
2 # Rimuove gli spazi e converte in maiuscolo
3 iban = iban.replace(' ', '').upper()
4
5 # Controllo formato base
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Sposta i primi 4 caratteri alla fine
10 rearranged = iban[4:] + iban[:4]
11
12 # Converte le lettere in numeri (A=10, B=11, ..., Z=35)
13 converted = ''
14 for char in rearranged:
15 if char.isalpha():
16 converted += str(ord(char) - 55)
17 else:
18 converted += char
19
20 # Verifica se mod 97 è uguale a 1
21 return int(converted) % 97 == 1
22
23# Esempio di utilizzo
24print(validate_iban('DE89 3704 0044 0532 0130 00')) # True
25print(validate_iban('GB29 NWBK 6016 1331 9268 19')) # True
26print(validate_iban('DE89 3704 0044 0532 0130 01')) # False (cifre di controllo non valide)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Rimuove gli spazi e converte in maiuscolo
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Controllo formato base
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Sposta i primi 4 caratteri alla fine
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Converte le lettere in numeri
15 StringBuilder converted = new StringBuilder();
16 for (char c : rearranged.toCharArray()) {
17 if (Character.isLetter(c)) {
18 converted.append(c - 'A' + 10);
19 } else {
20 converted.append(c);
21 }
22 }
23
24 // Calcola mod 97
25 BigInteger numeric = new BigInteger(converted.toString());
26 return numeric.mod(BigInteger.valueOf(97)).intValue() == 1;
27 }
28
29 public static void main(String[] args) {
30 System.out.println(validateIban("DE89 3704 0044 0532 0130 00")); // true
31 System.out.println(validateIban("GB29 NWBK 6016 1331 9268 19")); // true
32 System.out.println(validateIban("DE89 3704 0044 0532 0130 01")); // false
33 }
34}
35Generazione IBAN
1function generateIban(countryCode) {
2 const countryFormats = {
3 'DE': { length: 22, bbanPattern: '8n10n' },
4 'GB': { length: 22, bbanPattern: '4a6n8n' },
5 'FR': { length: 27, bbanPattern: '5n5n11c2n' }
6 // Aggiungi altri paesi se necessario
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Codice paese ${countryCode} non supportato`);
11 }
12
13 // Genera BBAN casuale in base al modello del paese
14 let bban = '';
15 const pattern = countryFormats[countryCode].bbanPattern;
16 let i = 0;
17
18 while (i < pattern.length) {
19 const count = parseInt(pattern.substring(i + 1), 10);
20 const type = pattern[i];
21
22 if (type === 'n') {
23 // Genera caratteri numerici
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Genera caratteri alfabetici
29 for (let j = 0; j < count; j++) {
30 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
31 }
32 } else if (type === 'c') {
33 // Genera caratteri alfanumerici
34 for (let j = 0; j < count; j++) {
35 const isLetter = Math.random() > 0.5;
36 if (isLetter) {
37 bban += String.fromCharCode(65 + Math.floor(Math.random() * 26));
38 } else {
39 bban += Math.floor(Math.random() * 10);
40 }
41 }
42 }
43
44 i += 2;
45 }
46
47 // Calcola cifre di controllo
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Crea IBAN iniziale con '00' come cifre di controllo
55 const initialIban = countryCode + '00' + bban;
56
57 // Riorganizza e converte le lettere in numeri
58 const rearranged = bban + countryCode + '00';
59 const converted = rearranged.split('').map(char => {
60 if (/[A-Z]/.test(char)) {
61 return (char.charCodeAt(0) - 55).toString();
62 }
63 return char;
64 }).join('');
65
66 // Calcola 98 meno mod 97
67 let remainder = 0;
68 for (let i = 0; i < converted.length; i++) {
69 remainder = (remainder * 10 + parseInt(converted[i], 10)) % 97;
70 }
71
72 const checkDigits = (98 - remainder).toString().padStart(2, '0');
73 return checkDigits;
74}
75
76// Esempio di utilizzo
77console.log(generateIban('DE')); // Genera un IBAN tedesco valido
78console.log(generateIban('GB')); // Genera un IBAN UK valido
791import random
2import string
3
4def generate_iban(country_code):
5 country_formats = {
6 'DE': {'length': 22, 'bban_format': '8n10n'},
7 'GB': {'length': 22, 'bban_format': '4a6n8n'},
8 'FR': {'length': 27, 'bban_format': '5n5n11c2n'}
9 # Aggiungi altri paesi se necessario
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Codice paese {country_code} non supportato")
14
15 # Genera BBAN casuale in base al formato del paese
16 bban = ''
17 format_str = country_formats[country_code]['bban_format']
18 i = 0
19
20 while i < len(format_str):
21 count = int(''.join(c for c in format_str[i+1:] if c.isdigit()))
22 type_char = format_str[i]
23
24 if type_char == 'n': # Numerico
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabetico
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumerico
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Calcola cifre di controllo
34 check_digits = calculate_check_digits(country_code, bban)
35
36 return country_code + check_digits + bban
37
38def calculate_check_digits(country_code, bban):
39 # Crea stringa per calcolo cifre di controllo
40 check_string = bban + country_code + '00'
41
42 # Converte lettere in numeri (A=10, B=11, ..., Z=35)
43 numeric = ''
44 for char in check_string:
45 if char.isalpha():
46 numeric += str(ord(char.upper()) - 55)
47 else:
48 numeric += char
49
50 # Calcola 98 meno mod 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Esempio di utilizzo
57print(generate_iban('DE')) # Genera un IBAN tedesco valido
58print(generate_iban('GB')) # Genera un IBAN UK valido
59Riferimenti e ulteriori letture
- ISO 13616-1:2007 - Specifica ufficiale della struttura IBAN
- Registro SWIFT IBAN - Fonte autorevole per i formati IBAN specifici per paese
- ISO 7064:2003 - Specifica dell'algoritmo di verifica del digit MOD 97
- Consiglio dei Pagamenti Europei - SEPA - Documentazione dell'Area Unica dei Pagamenti in Euro
- Banca Centrale Europea - Sistemi di Pagamento - Standard di integrazione bancaria europea
- Banca dei Regolamenti Internazionali - Sistemi di Pagamento - Standard internazionali dei sistemi di pagamento
Inizia a Testare gli IBAN
Hai bisogno di dati di test per il tuo sistema di pagamento? Genera un IBAN valido per qualsiasi paese supportato sopra, oppure incolla un IBAN esistente per verificare la sua struttura. Lo strumento funziona interamente nel tuo browser - nessuna registrazione, nessuna chiave API, nessun dato inviato ai server.
Suggerimento rapido: Genera IBAN da più paesi per testare casi limite. I sistemi di pagamento reali gestiscono formati diversi, e testare con il formato di un solo paese è una fonte comune di bug in produzione.