El IBAN (International Bank Account Number) es el código internacional usado para identificar una cuenta bancaria. Es un código de 24 caracteres alfanumérico y sirve para cualquier entidad financiera que pertenezca a los países adheridos al sistema IBAN, por lo que puede ser interesante validar IBAN para saber que es correcto. Este formato lo dictamina el estándar EBS204, definido por el Comité Europeo de Estándares Bancarios.
En España se usa este sistema desde el 1 de febrero de 2014, cuando sustituyó al código cuenta cliente (CCC) que se usaba hasta entonces por el banco, habiendo un periodo de convivencia de ambos sistemas. El código está compuesto por los siguientes campos:
- El país, representado por 2 letras. En el caso de España, por ejemplo, éste sería ES.
- Dos dígitos de control, que sirven de validación para el resto del código, reduciendo la posibilidad de errores en la transcripción.
- Número de cuenta, donde se puede identificar la entidad y la oficina donde se abrió la cuenta.
Validar IBAN, función en JavaScript
Tras esta introducción para entender el formato del IBAN, solo queda exponer la función de validación de IBAN en JavaScript, para poder validar IBAN introducido en cualquier formulario web donde se precise. Esta función sólo lo valida, por lo que no sirve para calcular IBAN alguno. Es decir, solo para validar cuenta bancaria.
La función principal es fn_ValidateIBAN y llama a las otras dos funciones que se adjuntan. Como parámetro, se le pasa la cadena sobre la cual se desea comprobar IBAN. Tras comprobarlo, devuelve true si el IBAN es válido y false en caso contrario.
function fn_ValidateIBAN(IBAN) { //Se pasa a Mayusculas IBAN = IBAN.toUpperCase(); //Se quita los blancos de principio y final. IBAN = IBAN.trim(); IBAN = IBAN.replace(/\s/g, ""); //Y se quita los espacios en blanco dentro de la cadena var letra1,letra2,num1,num2; var isbanaux; var numeroSustitucion; //La longitud debe ser siempre de 24 caracteres if (IBAN.length != 24) { return false; } // Se coge las primeras dos letras y se pasan a números letra1 = IBAN.substring(0, 1); letra2 = IBAN.substring(1, 2); num1 = getnumIBAN(letra1); num2 = getnumIBAN(letra2); //Se sustituye las letras por números. isbanaux = String(num1) + String(num2) + IBAN.substring(2); // Se mueve los 6 primeros caracteres al final de la cadena. isbanaux = isbanaux.substring(6) + isbanaux.substring(0,6); //Se calcula el resto, llamando a la función modulo97, definida más abajo resto = modulo97(isbanaux); if (resto == 1){ return true; }else{ return false; } } function modulo97(iban) { var parts = Math.ceil(iban.length/7); var remainer = ""; for (var i = 1; i <= parts; i++) { remainer = String(parseFloat(remainer+iban.substr((i-1)*7, 7))%97); } return remainer; } function getnumIBAN(letra) { ls_letras = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; return ls_letras.search(letra) + 10; }
Para probarlo, se pueden encontrar por internet un generador de IBAN y así tener un juego de pruebas para nuestros desarrollos web.
¡Muchas gracias! Funciona perfectamente y además esta muy bien explicado. Osea que lo podemos entender los principiantes como yo.
¡Gracias a tí por el comentario! Me alegro que te haya sido de utilidad 🙂
Me sirvio de mucho !, la adapte para usarla con vue.js
Me alegro que te haya sido de utilidad
Saludos!
hola tienes algun repo como en github o algo parecido donde pueda ver esa adaptacion que creaste, estoy tratando de hacer algo parecido gracias …
Que ocurre si quieres validar un IBAN de otro pais, por ejemplo portugal
Hola aritz,
Cada país tiene su propio formato. Todos empiezan igual, con el código del país y 2 dígitos de control, pero el resto varía.
Puedes ver, por ejemplo, el formato de los países de la Unión Europea aquí:
https://es.wikipedia.org/wiki/International_Bank_Account_Number
Este ejemplo sólo sirve para España, pero puedes partir de este para cambiarlo y validar de los distintos países.
Saludos!
Hola Aritz,
Este algoritmo da por válido el siguiente IBAN: ES06 0030 1235 0903 0005 0273 (ES0600301235090300050273).
El resto es 1 pero el número de cuenta es incorrecto.
Desde esta página (https://es.ibancalculator.com/iban_validieren.html) el error que indican es el siguiente:
Número de cuenta 0300050273: Se produjo un fallo en la validación del la suma de comprobación (checksum) del número de cuenta.
Saludos.
– Daniel –
Hola Trellat !!!
tendrás algún ejemplo práctico de aplicación del código?
Muchas gracias por adelantado!!
Hola Daniel !!
Tendrás algún ejemplo práctico del uso de este código?
Mucgas gracias!!
Buenas tardes!
Lastima que necesite implementarlo en una formula dentro de hoja de calculo (de google). Aun así, muchas gracias.
El trim esta mal implementado, seria asi: IBAN = IBAN.trim();
dado que el trim pide ser llamado con un strim
Gracias Alberto, ya está corregido! 🙂
Hola,
Parece que se ha quedado declarada la variable numeroSustitucion y no se usa.
Muchas gracias por la función, simple y bien documentada.