Elffuss CodeProyecto del día
Proyecto del día · 11 de septiembre de 2026

El validador de IBAN daba por malas cuentas buenas (y el algoritmo estaba bien)

Veinticuatro caracteres, una división entre 97 y un número que JavaScript redondea por detrás. Una utilidad de treinta líneas que solo se arregla con los datos que no puedes enseñar a nadie.

El IDE con IA local en el navegadorlocal · en el navegador

El formulario de alta de proveedores de una herramienta interna rechazaba IBAN de vez en cuando. Cuentas que el banco aceptaba sin rechistar, que el propio proveedor usaba todos los meses, y ahí salía el cartelito de IBAN inválido. No siempre: una de cada muchas. Ese «no siempre» es lo que convierte un bug de media hora en tres días de sospechar de todo.

El algoritmo era correcto

Validar un IBAN es sencillo de contar: mueves los cuatro primeros caracteres al final, cambias cada letra por un número (A vale 10, Z vale 35) y compruebas que el resto de dividir entre 97 es 1. Cualquiera lo implementa en diez líneas. El problema es que esa cadena de números acaba teniendo treinta y tantos dígitos, y ahí ya no hay entero seguro que valga: el número se convierte en una aproximación. No revienta. Devuelve un resto perfectamente plausible que resulta ser mentira.

Por eso fallaba «a veces». Fallaba cuando la cuenta concreta caía en la parte del rango donde la pérdida de precisión cambiaba el resultado.

Dónde ayudó la IA corriendo en local

Aquí está lo interesante. Si le pides a un modelo «un validador de IBAN», te escribe el del manual, con el ejemplo de siempre, y funciona. El ejemplo de siempre siempre funciona. Lo que rompía el nuestro estaba en nuestros datos.

Así que le pegué directamente las cuentas que fallaban, tal y como habían entrado: copiadas de un Excel, de un PDF del banco, de un correo. Con eso sobre la mesa propuso lo obvio en cuanto lo ves: dejar de convertir la cadena entera y hacer el módulo por bloques, arrastrando el resto de siete en siete. Treinta dígitos o trescientos, da igual.

Y de paso apareció el segundo bicho. La limpieza previa borraba espacios con la clase \s. Uno de los IBAN traía un espacio de ancho cero pegado del PDF, que no es un espacio para esa clase. Dos caracteres invisibles y una cuenta buena que nunca iba a pasar. La corrección fue cambiar de lista negra a lista blanca: te quedas solo con letras y dígitos y tiras todo lo demás. Añadimos también la longitud esperada por país, porque el módulo 97 por sí solo deja pasar basura una de cada noventa y siete veces.

Por qué importaba que no saliera de ahí

Para encontrar las dos cosas hacía falta pegar treinta IBAN reales de proveedores reales, con sus nombres al lado en la misma columna. Eso, en una caja de texto de un servicio ajeno, es una conversación con la parte legal que no apetece tener, y con razón.

Una utilidad de treinta líneas no se prueba con el ejemplo del manual. Se prueba con lo que ya tienes en producción, con la basura incluida.

El código, el prompt y los datos pegados se quedaron donde estaban. Y el validador dejó de opinar sobre cuentas que llevaban años funcionando.

Elffuss Code es un IDE que corre entero dentro del navegador, con el modelo sobre tu propia GPU: ábrelo, pega tus datos de verdad y arregla tu utilidad sin que un solo carácter salga de tu equipo.

Abrir Code →
nada de esto se sube a ningún sitio