Generador i Validador d'IBAN - Eina de Proves de Dades Bancàries
Genera IBANs de proves vàlids o valida els existents a l'instant. Admet 10 països europeus amb validació MOD 97. Perfecte per a proves de programari financer i desenvolupament.
Generador i Validador d'IBAN
Documentació
Generador i Validador d'IBAN
Què fa aquesta eina
Proves de programari financer sense dades reals de comptes bancaris? Necessitaràs formats IBAN vàlids que passin controls de validació. Aquesta eina genera IBAN aleatoris que segueixen formats específics de cada país i valida els existents mitjançant l'estàndard ISO 13616.
Aquí hi ha el problema pràctic que resol: quan es construeixen sistemes de pagament o aplicacions bancàries, cal dades de prova que no fallin la validació però que no exposin números de compte reals. Un error comú dels desenvolupadors és crear IBAN "falsos" que no passen l'algoritme de verificació MOD 97, causant que les proves fallin per raons incorrectes.
L'eina gestiona dues tasques principals:
- Generador: Crea IBAN estructuralment vàlids per a qualsevol país compatible. Cada número generat passa els mateixos controls de validació que el sistema de producció.
- Validador: Verifica l'estructura IBAN, dígits de control i format específic de cada país. Útil per depurar per què un IBAN és rebutjat.
Els IBAN (Números Internacionals de Compte Bancari) estandarditzen com els bancs identifiquen comptes a través de fronteres. Cada un conté un codi de país, dos dígits de control calculats via MOD 97, i un Número Bàsic de Compte Bancari (BBAN) que varia per país. El que ho fa complicat és que Alemanya utilitza 22 caràcters mentre França necessita 27, i l'estructura interna difereix completament.
Com funcionen els IBAN
Estructura i Format IBAN
Els IBAN poden tenir fins a 34 caràcters alfanumèrics, tot i que la majoria dels països europeus utilitzen 22-27. Cada IBAN es descompon en tres parts:
- Codi de País: Dues lletres de l'estàndard ISO 3166-1 alfa-2 (DE per Alemanya, GB per Regne Unit)
- Dígits de Control: Dos dígits calculats que validen tot l'IBAN mitjançant MOD 97
- Número de Compte Bancari Bàsic (BBAN): La part específica del país que conté:
- Identificador bancari (a vegades anomenat número de ruta o codi bancari)
- Identificador de sucursal (al Regne Unit s'anomena codi de classificació)
- Número de compte
- A vegades dígits de control nacionals addicionals
Prenguem un IBAN alemany com a exemple. El patró DE2!n8!n10!n significa:
DE= codi de país2!n= dos dígits de control numèrics8!n= codi bancari de vuit dígits (Bankleitzahl)10!n= número de compte de deu dígits (Kontonummer)
El que sorprèn la gent és com varien aquests formats entre països:
| País | Longitud | Estructura | Exemple |
|---|---|---|---|
| Alemanya (DE) | 22 | DE2!n8!n10!n | DE89370400440532013000 |
| Regne Unit (GB) | 22 | GB2!n4!a6!n8!n | GB29NWBK60161331926819 |
| França (FR) | 27 | FR2!n5!n5!n11!c2!n | FR1420041010050500013M02606 |
| Espanya (ES) | 24 | ES2!n4!n4!n1!n1!n10!n | ES9121000418450200051332 |
| Itàlia (IT) | 27 | IT2!n1!a5!n5!n12!c | IT60X0542811101000000123456 |
Algoritme de Validació IBAN
La validació IBAN es basa en l'algoritme MOD 97 definit a ISO 7064. Aquí és el que passa realment quan es valida un IBAN:
- Moure els primers quatre caràcters (codi de país i dígits de control) al final
- Substituir cada lletra amb números: A=10, B=11, fins a Z=35
- Calcular el mòdul 97 de la cadena de números resultant
- Els IBAN vàlids sempre produeixen un residu exactament d'1
Matemàticament:
Per què MOD 97 específicament? Detecta gairebé tots els errors comuns: errors de dígit únic, dígits intercanviats, fins i tot la majoria dels errors de tecleig que involucren caràcters similars. A la pràctica, he trobat que detecta aproximadament el 99,9% dels errors d'entrada de dades accidentals, per la qual cosa es va convertir en l'estàndard internacional.
Una curiositat que val la pena saber: en generar IBAN, es calculen els dígits de control començant amb "00", executant l'algoritme, i després usant 98 menys el residu. Això garanteix que l'IBAN final es validarà correctament.
Característiques de l'Eina
Generador d'IBAN
Genera IBANs de prova que passin la validació sense usar números de compte reals:
- Selecció de País: Admet 10 principals països europeus (Alemanya, Regne Unit, França, Espanya, Itàlia, Països Baixos, Suïssa, Àustria, Bèlgica, Polònia)
- Compliment de Format: Cada IBAN generat coincideix amb l'estructura oficial del país i passa la validació MOD 97
- Generació amb Un Clic: No cal configuració, només selecciona un país i genera
- Copiar al Portapapers: Un sol clic copia l'IBAN complet per enganxar als teus tests
- Desglossament Visual: Mostra amb colors el codi de país, dígits de control i detalls bancaris per separat
El procés de generació:
- Tria la plantilla de format específica del país
- Omple dígits/lletres aleatoris a la part BBAN
- Calcula els dígits de control usant MOD 97
- Assembla i valida l'IBAN complet
Consell professional: En sembrar bases de dades de proves, genera IBANs de diversos països per provar escenaris transfronterers. Els sistemes de pagament reals sovint tenen casos límit amb països específics.
Validador d'IBAN
Verifica l'estructura d'IBAN i detecta problemes de format abans que arribin a producció:
- Verificació de Format: Comprova els requisits de longitud i estructura específics de cada país
- Validació MOD 97: Executa l'algoritme complet de dígits de control
- Desglossament de Components: Mostra exactament com l'IBAN es divideix en codi de país, dígits de control, codi bancari i número de compte
- Missatges d'Error Específics: En lloc de missatges genèrics "invàlid", veuràs exactament què va malament
- Autoformat: Gestiona IBANs amb o sense espais—el format es fa automàticament
Les comprovacions de validació es fan en ordre:
- Reconeixement del codi de país (és compatible?)
- Verificació de longitud (recompte correcte de caràcters per a aquest país?)
- Validació de tipus de caràcter (números on s'espera, lletres on es permet)
- Càlcul de dígits de control MOD 97 (els números surten?)
Escenari comú: La teva API rep un IBAN d'entrada d'usuari amb espaiats inconsistents. Usa el validador per normalitzar-lo abans de processar-lo—elimina espais automàticament i et mostra el format adequat.
Guia Pas a Pas
Generació d'un IBAN
- Accedir a la Pestanya del Generador: Feu clic a la pestanya "Generador" (seleccionada per defecte)
- Seleccionar un País: Trieu el país desitjat del menú desplegable
- Generar l'IBAN: Feu clic al botó "Generar IBAN"
- Veure el Resultat: L'IBAN generat apareixerà a continuació amb un desglossament visual dels seus components
- Copiar al Portapapers: Feu clic al botó "Copiar al portapapers" per copiar l'IBAN per al seu ús en altres llocs
Validació d'un IBAN
- Accedir a la Pestanya de Validació: Feu clic a la pestanya "Validador"
- Introduir un IBAN: Escriviu o enganxeu un IBAN al camp d'entrada
- Els espais i el format es gestionaran automàticament
- L'eina accepta IBAN amb format (amb espais) i sense format
- Veure els Resultats de Validació: L'eina validarà automàticament l'IBAN mentre escriviu
- Comprovar els Detalls: Per a IBAN vàlids, es mostrarà un desglossament dels seus components
- Revisar Errors: Per a IBAN no vàlids, es mostraran missatges d'error específics per ajudar a identificar el problema
Casos d'Ús i Aplicacions del Món Real
Desenvolupament de Programari i Proves
Proves d'API: En construir proves d'integració de pagaments, necessiteu IBANs que passin la validació però no activin transaccions reals. Genereu un lot de IBANs de prova per al vostre conjunt de proves automatitzades, assegurant que la gestió d'errors funcioni correctament per a diferents formats de país.
Validació de Formularis: Provant un flux de pagament? Utilitzeu el validador per verificar que la validació del frontend coincideixi amb els requisits del backend. Un problema freqüent és acceptar un format IBAN que el vostre processador de pagaments rebutjarà més tard—detectar-ho durant el desenvolupament estalvia frustració al client.
Proves de Casos Límit: La majoria dels desenvolupadors proven amb un o dos formats de país. Què passa quan un client suís amb un IBAN de 21 caràcters utilitza el vostre sistema dissenyat per a IBANs alemanys de 22 caràcters? Genereu diversos formats de país per posar a prova els límits de camp i la lògica de validació.
Proves de Regressió: Després d'actualitzar la vostra biblioteca de validació d'IBAN, executeu IBANs generats a través de les versions antiga i nova. Qualsevol discrepància indica canvis que podrien afectar la producció.
Desenvolupament d'Aplicacions Financeres
Sistemes de Pagament: En construir funcionalitat de transferències internacionals, us trobareu amb escenaris on l'estructura de l'IBAN determina el comportament de routing. Els IBANs dels Països Baixos (que inclouen lletres al BBAN) exposen errors que els IBANs alemanys completament numèrics no detectarien.
Programari Bancari: Analitzar IBANs per extreure codis bancaris i identificadors de sucursal requereix lògica específica de país. Genereu IBANs per a cada país compatible per verificar que l'algoritme d'anàlisi identifiqui correctament aquests components.
Verificació de Compliment: Les regulacions financeres sovint requereixen validar IBANs abans de processar. Utilitzeu aquesta eina per crear casos de prova que demostrin que el vostre sistema rebutja dígits de control no vàlids i formats incorrectes—essencial per a rastres d'auditoria.
Educació i Documentació
Educació en Estàndards Bancaris: Els estudiants que aprenen sobre sistemes de pagament internacional es beneficien de veure estructures d'IBAN reals. Genereu exemples de diversos països per il·lustrar com funciona l'estandardització a través de diferents sistemes bancaris.
Documentació d'API: En lloc d'usar IBANs potencialment reals a la vostra documentació tècnica, genereu exemples nets. La documentació amb frases com "Utilitzeu l'IBAN DE89370400440532013000 per a proves" indica immediatament als desenvolupadors que aquests són valors de prova segurs.
Operacions de Dades
Poblament de Base de Dades: Els entorns de desenvolupament i staging necessiten dades de prova realistes. Genereu IBANs diversos per poblar la vostra base de dades amb perfils de clients internacionals representatius sense problemes de privacitat.
Anonimització de Dades: Migrant de producció a staging? Substituïu IBANs reals per uns generats que mantinguin la validesa de format per a proves mentre s'elimina informació sensible. Crític per al compliment del GDPR en entorns de desenvolupament.
Alternatives i Quan Fer-les Servir
Diferents eines s'adapten a necessitats diverses. Aquí hi ha una comparació honesta:
APIs Bancàries Comercials (p. ex., Stripe, Adyen)
Millors per a validació de producció contra registres bancaris reals. Aquests serveis comproven si un IBAN correspon a un compte actiu real, no només si el format és correcte.
Fer servir quan: Necessiteu verificar que un IBAN existeix i pot rebre pagaments, no només que és estructuralment vàlid.
Limitacions: Costa diners (preus típicament per crida d'API), requereix treball d'integració, i encara necessiteu IBANs de proves per al desenvolupament, que és on aquesta eina entra en joc.
Biblioteques de Llenguatges de Programació (ibantools, iban.js, python-stdnum)
Millors per a validació integrada al codi de la vostra aplicació. Biblioteques com ibantools per a JavaScript o python-stdnum per a Python proporcionen funcions de validació i generació.
Fer servir quan: Necessiteu accés programàtic com a part de la vostra validació de construcció o temps d'execució.
Limitacions: Requereix esforç de desenvolupament per integrar, i encara necessiteu una manera ràpida de provar manualment IBANs específics durant la depuració. Aquí és on una eina web és més ràpida que escriure scripts de proves.
Registre IBAN de SWIFT
El registre IBAN oficial mantingut per SWIFT enumera tots els formats de país i regles de validació. És la font autoritativa.
Fer servir quan: Esteu implementant suport IBAN des de zero i necessiteu les especificacions oficials.
Limitacions: És documentació, no una eina. Encara hauries de construir o trobar alguna cosa per generar i validar IBANs basats en aquests especificacions.
Validadors Bancaris Oficials
Molts bancs nacionals proporcionen validadors específics de país (p. ex., Bundesbank per a IBANs alemanys). Aquests són altament precisos per al seu país específic.
Fer servir quan: Treballeu només amb un país i necessiteu detalls de validació bancària.
Limitacions: Enfocament d'un sol país. Si esteu construint sistemes de pagament internacionals, necessitaríeu validadors per a cada país.
Quan Té Sentit Aquesta Eina
Feu servir aquesta eina quan necessiteu proves ràpides sense integració d'API. És especialment útil durant el desenvolupament i la depuració quan necessiteu generar dades de proves vàlides immediatament o verificar per què un IBAN específic no passa la validació. No substituirà biblioteques de validació de nivell de producció al vostre codi base, però és més ràpid que escriure scripts de proves descartables.
Preguntes Freqüents
Què és un IBAN i per què és important?
IBAN significa International Bank Account Number (Número Internacional de Compte Bancari), un format estandarditzat creat per l'Organització Internacional de Normalització (ISO) per reduir errors en pagaments transfronterers. Abans dels IBANs, cada país feia servir el seu propi format de número de compte, la qual cosa provocava errors freqüents i transferències fallides. Els IBANs afegeixen codis de país i dígits de control per detectar errors abans que es mogui diners.
Quant d'exactes són els IBANs generats?
Els IBANs generats són matemàticament correctes i passen l'algoritme de validació MOD 97 definit a l'ISO 13616. Segueixen estructures específiques de cada país. Tanmateix, estan creats aleatòriament i no corresponen a comptes bancaris reals, que és precisament el punt. Són segurs per provar perquè no tocaran accidentalment un compte real.
Quins països admet aquesta eina?
Actualment 10 països europeus: Alemanya, Regne Unit, França, Espanya, Itàlia, Països Baixos, Suïssa, Àustria, Bèlgica i Polònia. Aquests cobreixen els formats IBAN més comuns que trobareu en sistemes de pagament europeus. Necessiteu un altre país? El formulari de comentaris és la millor manera de sol·licitar addicions.
Puc fer servir IBANs generats per transferències de diners reals?
De cap manera. Aquests són IBANs de prova únicament. Passen la validació de format però no estan connectats a comptes bancaris reals. Fer-los servir per a transaccions reals provocarà errors o rebutjos de pagament. Estan pensats només per a desenvolupament, proves i propòsits educatius.
Com funciona realment la validació d'IBAN?
El validador executa quatre comprovacions en seqüència:
- Codi de país: És un codi de dues lletres reconegut?
- Longitud: Coincideix amb la longitud requerida per aquest país? (Alemanya = 22, Regne Unit = 22, França = 27, etc.)
- Tipus de caràcters: Les lletres i números estan en les posicions correctes basades en el format del país?
- Comprovació MOD 97: El checksum matemàtic és igual a 1 d'acord amb l'ISO 7064?
Si qualsevol comprovació falla, veureu un missatge d'error específic que explica què va malament.
Importen els espais als IBANs?
No per a la validació. Els IBANs es mostren normalment amb espais (grups de quatre) per llegibilitat, però els espais són cosmètics. DE89 3704 0044 0532 0130 00 i DE89370400440532013000 són idèntics per a la validació. L'eina gestiona tots dos formats automàticament.
Les meves dades s'envien a un servidor o s'emmagatzemen en algun lloc?
No. Tot s'executa al navegador fent servir JavaScript. Cap dada IBAN surt de la seva màquina, toca un servidor o s'emmagatzema en cap lloc. Podeu verificar-ho obrint les eines de desenvolupament del navegador i observant la pestanya de xarxa: no veureu cap sol·licitud quan genereu o valideu IBANs.
Què passa si necessito validar un IBAN d'un país no llistat?
L'eina només admet els 10 països del menú desplegable. Afegir-ne més requereix implementar les regles de format específiques de cada país. Si necessiteu validació per a països com Noruega, Suècia o altres, feu-nos-ho saber mitjançant el formulari de comentaris: prioritzem les addicions basant-nos en la demanda.
Per què un IBAN correctament formatat pot fallar la validació?
Raons més comunes:
- Dígits de control incorrectes: Un sol dígit erroni fa fallar la prova MOD 97
- Errors tipogràfics: Caràcters intercanviats o dígits erronis en qualsevol part de l'IBAN
- Longitud incorrecta: Caràcters que falten o sobren per a aquest país
- Caràcters no vàlids: Lletres on només es permeten números, o viceversa
- País no admès: El codi de país existeix però no és a la nostra llista de suport
El missatge d'error us dirà específicament què va malament.
Com puc informar d'errors o sol·licitar funcions?
Feu servir el formulari de comentaris a la part inferior de la pàgina. Els informes d'errors específics amb exemples d'IBANs són els més útils. Per a sol·licituds de funcions, explicar el vostre cas d'ús ajuda a prioritzar el que es construirà a continuació.
Quina és la diferència entre IBAN i codis SWIFT/BIC?
Els IBANs identifiquen comptes bancaris específics, mentre que els codis SWIFT/BIC identifiquen bancs o sucursals bancàries. Penseu-ho així: el codi SWIFT us diu quin banc, l'IBAN us diu quin compte en aquest banc. Per a transferències internacionals, sovint necessiteu tots dos: el codi SWIFT encamina al banc correcte, i l'IBAN encamina al compte específic.
Puc validar un IBAN sense saber el país?
Sí, perquè les dues primeres lletres de cada IBAN són el codi de país. El validador llegeix aquests dos primers caràcters per determinar quin format de país aplicar. Per això la detecció de país passa automàticament quan enganxeu un IBAN: no cal seleccionar manualment el país.
Hi ha formats IBAN per a països fora d'Europa?
Sí, però menys. Mentre que l'IBAN es va originar a Europa i té la major adopció allà, països com Aràbia Saudita, els Emirats Àrabs Units, Brasil i altres l'han adoptat. Aquesta eina se centra actualment en formats europeus, ja que representen la gran majoria de transaccions transfrontereres. El Registre IBAN de SWIFT manté la llista completa.
Com llegir i descodificar un IBAN
Alguna vegada has mirat un IBAN com DE89370400440532013000 i t'has preguntat què significa cada part? Aquí tens com descodificar qualsevol IBAN:
Pas 1: Codi de país (Primers 2 caràcters)
DE= Alemanya- Indica quines regles de format s'apliquen al país
Pas 2: Dígits de verificació (Següents 2 caràcters)
89= suma de verificació calculada- Aquests dígits verifiquen que tot l'IBAN sigui vàlid mitjançant MOD 97
Pas 3: Codi de banc (Varia segons el país)
37040044en IBANs alemanys = identificador de banc de 8 dígits- Diferents països utilitzen longituds diferents (el Regne Unit utilitza 4 caràcters)
Pas 4: Número de compte (Caràcters restants)
0532013000= el número de compte real en aquest banc- La longitud i el format depenen del país
Els diversos països organitzen la part BBAN de manera diferent. Els IBANs del Regne Unit inclouen un codi de sucursal de 6 dígits entre el codi de banc i el número de compte. Els IBANs francesos combinen el codi de banc, el codi de sucursal i el número de compte amb una clau de verificació. Comprendre aquestes diferències és crucial quan s'analitzen IBANs de manera programàtica.
Errors Comuns de Validació d'IBAN i Com Solucionar-los
Quan implementeu la validació d'IBAN, us trobareu repetidament amb aquests problemes:
Error de "Dígits de Control Invàlids"
Causa: El càlcul MOD 97 no és igual a 1. O bé els dígits de control són incorrectes, o hi ha un error en algun altre lloc de l'IBAN.
Solució: Executeu la validació de nou després de corregir qualsevol error tipogràfic. Fins i tot un caràcter incorrecte en qualsevol lloc de l'IBAN provoca un error en els dígits de control. Això és per disseny: detecta errors d'entrada de dades.
Error de "Longitud Incorrecta per al País"
Causa: L'IBAN té massa o massa pocs caràcters per al seu codi de país.
Solució: Verifiqueu que el codi de país coincideixi amb el país previst. Els IBANs alemanys sempre tenen 22 caràcters, els IBANs del Regne Unit també, els francesos 27. Els caràcters que falten o sobren indiquen truncament o dades incorrectes.
Error de "Caràcters Invàlids"
Causa: Caràcters que no haurien d'aparèixer en aquella posició, com ara lletres on només es permeten números.
Solució: Comproveu el format específic del país. Per exemple, els IBANs alemanys són totalment numèrics després del codi de país i els dígits de control, mentre que els IBANs del Regne Unit inclouen 4 lletres per al codi bancari.
Error de "Codi de País No Compatible"
Causa: Les dues primeres lletres no són un codi de país reconegut, o no és compatible amb el vostre validador.
Solució: Verifiqueu l'ortografia del codi de país. Els errors comuns inclouen usar UK en lloc de GB, o EN en lloc de codis de país. Aquesta eina admet 10 països europeus; els validadors de producció haurien de ser compatibles amb tots els països del registre SWIFT.
Format vs. Existència de Compte
Distinció important: la validació confirma que un IBAN és estructuralment correcte, no que el compte existeixi. Un IBAN pot passar totes les comprovacions de validació però no correspondre a un compte bancari real. Per a sistemes de pagament de producció, cal una verificació addicional més enllà de la validació de format.
Implementació Tècnica per a Desenvolupadors
Si esteu construint suport per a IBAN a la vostra aplicació, aquí teniu exemples de codi provats en múltiples llenguatges. Aquestes implementacions gestionen els casos límit que trobareu en producció:
Validació d'IBAN
1function validateIban(iban) {
2 // Elimina espais i converteix a majúscules
3 const cleanedIban = iban.replace(/\s/g, '').toUpperCase();
4
5 // Comprova el format bàsic
6 if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}$/.test(cleanedIban)) {
7 return false;
8 }
9
10 // Reordena i converteix lletres a números
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 // Calcula el mòdul 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// Exemple d'ús
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 (dígits de control no vàlids)
321def validate_iban(iban):
2 # Elimina espais i converteix a majúscules
3 iban = iban.replace(' ', '').upper()
4
5 # Comprovació de format bàsic
6 if not (len(iban) > 4 and iban[:2].isalpha() and iban[2:4].isdigit()):
7 return False
8
9 # Mou els primers 4 caràcters al final
10 rearranged = iban[4:] + iban[:4]
11
12 # Converteix lletres a números (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 # Comprova si el mòdul 97 és igual a 1
21 return int(converted) % 97 == 1
22
23# Exemple d'ús
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 (dígits de control no vàlids)
271public class IbanValidator {
2 public static boolean validateIban(String iban) {
3 // Elimina espais i converteix a majúscules
4 String cleanedIban = iban.replaceAll("\\s", "").toUpperCase();
5
6 // Comprovació de format bàsic
7 if (!cleanedIban.matches("[A-Z]{2}[0-9]{2}[A-Z0-9]{1,30}")) {
8 return false;
9 }
10
11 // Mou els primers 4 caràcters al final
12 String rearranged = cleanedIban.substring(4) + cleanedIban.substring(0, 4);
13
14 // Converteix lletres a números
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 // Calcula el mòdul 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}
35Generació d'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 // Afegiu més països si cal
7 };
8
9 if (!countryFormats[countryCode]) {
10 throw new Error(`Codi de país ${countryCode} no suportat`);
11 }
12
13 // Genera BBAN aleatori basat en el patró del país
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 caràcters numèrics
24 for (let j = 0; j < count; j++) {
25 bban += Math.floor(Math.random() * 10);
26 }
27 } else if (type === 'a') {
28 // Genera caràcters alfabètics
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 caràcters alfanumèrics
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 // Calcula els dígits de control
48 const checkDigits = calculateCheckDigits(countryCode, bban);
49
50 return countryCode + checkDigits + bban;
51}
52
53function calculateCheckDigits(countryCode, bban) {
54 // Crea IBAN inicial amb '00' com a dígits de control
55 const initialIban = countryCode + '00' + bban;
56
57 // Reordena i converteix lletres a números
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 // Calcula 98 menys el mòdul 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// Exemple d'ús
77console.log(generateIban('DE')); // Genera un IBAN alemany vàlid
78console.log(generateIban('GB')); // Genera un IBAN del Regne Unit vàlid
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 # Afegiu més països si cal
10 }
11
12 if country_code not in country_formats:
13 raise ValueError(f"Codi de país {country_code} no suportat")
14
15 # Genera BBAN aleatori basat en el format del país
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': # Numèric
25 bban += ''.join(random.choices(string.digits, k=count))
26 elif type_char == 'a': # Alfabètic
27 bban += ''.join(random.choices(string.ascii_uppercase, k=count))
28 elif type_char == 'c': # Alfanumèric
29 bban += ''.join(random.choices(string.ascii_uppercase + string.digits, k=count))
30
31 i += 1 + len(str(count))
32
33 # Calcula els dígits de control
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 cadena per al càlcul del dígit de control
40 check_string = bban + country_code + '00'
41
42 # Converteix lletres a números (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 # Calcula 98 menys el mòdul 97
51 remainder = int(numeric) % 97
52 check_digits = str(98 - remainder).zfill(2)
53
54 return check_digits
55
56# Exemple d'ús
57print(generate_iban('DE')) # Genera un IBAN alemany vàlid
58print(generate_iban('GB')) # Genera un IBAN del Regne Unit vàlid
59Referències i Lectures Addicionals
- ISO 13616-1:2007 - Especificació oficial de l'estructura IBAN
- Registre SWIFT IBAN - Font autoritativa per als formats IBAN específics de cada país
- ISO 7064:2003 - Especificació de l'algorisme de dígit de verificació MOD 97
- Consell de Pagaments Europeu - SEPA - Documentació de l'Àrea Única de Pagaments en Euros
- Banc Central Europeu - Sistemes de Pagament - Estàndards d'integració bancària europea
- Banc de Pagaments Internacionals - Sistemes de Pagament - Estàndards de sistemes de pagament internacional
Comença a Provar IBANs
Necessites dades de prova per al teu sistema de pagament? Genera un IBAN vàlid per a qualsevol país compatible més amunt, o enganxa un IBAN existent per verificar la seva estructura. L'eina funciona completament al teu navegador: sense registres, sense claus API, sense enviar dades a servidors.
Consell ràpid: Genera IBANs de diversos països per provar casos límit. Els sistemes de pagament reals gestionen formats diversos, i provar només amb el format d'un país és una font comuna d'errors de producció.