Pocas cadenas de caracteres generan tantas dudas al copiarlas como el número de cuenta bancaria internacional. Tiene letras y cifras mezcladas, su longitud cambia de un país a otro y la mayoría de la gente que lo teclea a diario no sabe qué significa cada tramo. Entender la estructura del IBAN y la comprobación que lleva incorporada resuelve de golpe las dos preguntas prácticas: por qué a veces se rechaza un número que parece correcto y por qué otras veces se acepta uno que no corresponde a ninguna cuenta.
¿En qué segmentos se divide un IBAN?
La estructura del IBAN se describe en tres tramos que se leen siempre de izquierda a derecha, y el reparto es el mismo en todos los países que lo utilizan.
- El código de país, que ocupa las dos primeras posiciones y usa las letras habituales de identificación de territorios.
- Los dos dígitos de control, en las posiciones tercera y cuarta, calculados sobre el resto de la cadena.
- El BBAN, que es el número de cuenta propiamente dicho y ocupa todas las posiciones restantes.
El primer tramo permite saber de qué sistema nacional proviene la cuenta sin consultar ninguna base de datos, y el segundo permite detectar errores de copia antes de enviar nada. El tercero es el único que varía de verdad: su longitud y su composición interna las decide cada país, y por eso no existe una descripción única del BBAN que valga para todos.
Una consecuencia útil de ese reparto es que la longitud total del número también depende del país emisor. Cualquier software que compruebe cuentas internacionales tiene que tratar la longitud como un dato asociado al país, no como una constante del formato.
Código de país y los dos dígitos de control ISO
Los dos dígitos de control de las posiciones tercera y cuarta se calculan con una regla común a todos los países que adoptaron el formato. Esa regla es lo que hace posible comprobar un número extranjero sin conocer las particularidades del sistema bancario de origen.
El cálculo se apoya en la conversión previa de todas las letras a cifras mediante una correspondencia fija, y en una operación de módulo sobre el número resultante. La idea completa pertenece a la familia de algoritmos descrita en la guía sobre algoritmos de dígito verificador, que explica por qué el mismo esqueleto sirve para esquemas tan distintos.
Lo importante aquí es que la comprobación de esos dos dígitos no valida la cuenta, solo confirma que la cadena no se ha corrompido al copiarla. Es una red de seguridad frente a dedos rápidos y frente a lectores ópticos que confunden caracteres parecidos.
Por qué el BBAN incluye además un control nacional
Muchas cuentas llevan, dentro del BBAN, otro dígito de control calculado con las reglas del país emisor. Ese control adicional no duplica al anterior: cubre un tramo diferente y responde a las costumbres locales de composición del número de cuenta.
Este es el punto que más confunde al leer un resultado de comprobación. Encontrar dos controles en la misma cadena no es un error de diseño ni una redundancia inútil, y tampoco significa que uno de los dos sobre. Significa que hay dos capas de protección que fallan por motivos distintos y que informan de cosas distintas.
Por eso la herramienta de este sitio muestra los segmentos por separado: país, dígitos de control ISO, BBAN y control nacional. Ver cuál de ellos falla ahorra muchísimo tiempo cuando hay que localizar el origen de un rechazo.
Convertir letras en números: la idea detrás de mod-97
Antes de aplicar el módulo hay que convertir la cadena completa en una secuencia de cifras. Las letras se sustituyen por valores numéricos fijos y la cadena se reordena siguiendo una regla publicada, de manera que el resultado de la operación sea independiente del país emisor.
No hace falta reproducir aquí los pasos exactos para entender qué se gana con ellos. El módulo noventa y siete se eligió porque deja muy pocos residuos sin cubrir y porque reparte los posibles resultados de forma que los errores de transposición casi nunca pasan desapercibidos. Un módulo primo se comporta mejor en ese papel que uno compuesto, y esa es la razón de que aparezca también en otros esquemas de control.
El detalle práctico es que la verificación se puede ejecutar con aritmética modular sin construir el número gigantesco completo. Esa variante es la que usan las implementaciones serias, porque evita depender del tamaño máximo de los enteros del lenguaje de programación.
¿Por qué superar la comprobación no significa que la cuenta exista?
Porque la fórmula describe la forma del número, no el registro bancario. Cualquiera puede construir una cadena que cumpla las reglas del formato y que no esté asociada a ninguna cuenta abierta. La comprobación dice que la cadena está bien escrita; no dice que el banco la reconozca.
La distinción tiene consecuencias operativas evidentes. Antes de enviar una transferencia conviene comprobar la forma, porque un error de tecleo se detecta al instante y sin coste. Pero la confirmación de que la cuenta existe y admite abonos solo la puede dar la entidad financiera, y esa consulta es otra cosa: más lenta, sujeta a límites de uso y con posibilidad de fallar por causas ajenas al número.
Para quien programa: longitudes distintas y reparto por país
Al implementar esta comprobación aparecen unos cuantos puntos que conviene resolver bien desde el principio.
- Trata la longitud esperada como un dato del país emisor y no como una constante, porque el formato no la fija.
- Normaliza antes de comprobar: espacios, guiones y minúsculas desaparecen en el primer paso.
- Ejecuta la operación de módulo por tramos para no depender del tamaño de los enteros disponibles.
- Comprueba el control nacional cuando el país lo publique, y etiqueta ese resultado por separado.
- Distingue en los mensajes entre una cadena mal formada y una cuenta no confirmada, porque son problemas distintos.
Un caso interesante es el de los números que no llevan control en absoluto: algunos identificadores nacionales se limitan a tener forma prevista y no publican ninguna fórmula, como se explica en la guía sobre números sin dígito verificador.
Siguientes pasos
Toma un número de cuenta de ejemplo que hayas construido tú mismo y sepáralo en los tres tramos del formato: país, control y resto. Después, pasa la variante con un carácter cambiado por el validador de números y observa cómo el resultado cambia de válido a no válido.
Repite el ejercicio con una cadena de otro país y compara qué parte del número cambia de longitud. Es la forma más rápida de interiorizar que el tramo variable es el último y no el primero.
Nota sobre los ejemplos: los números de cuenta que aparecen en este artículo se inventaron solo para explicar la estructura del formato y no corresponden a ninguna entidad financiera ni a ninguna cuenta real; no deben usarse para intentar ninguna operación.