Elige la entidad
El código de cuatro dígitos es el real. Útil si tu aplicación deduce el banco a partir de la cuenta, que es lo habitual en los formularios de domiciliación.
Código Cuenta Cliente de veinte dígitos con sus dos dígitos de control calculados por separado, y el IBAN español que sale de él. Con entidades reales, válidos o deliberadamente rotos.
100 % privado. No hay servidor: los datos se generan en tu navegador y no se envían ni se guardan en ninguna parte.
Cómo funciona
El código de cuatro dígitos es el real. Útil si tu aplicación deduce el banco a partir de la cuenta, que es lo habitual en los formularios de domiciliación.
El IBAN para SEPA y formularios modernos, el CCC de veinte dígitos para sistemas antiguos, o los dos a la vez para comprobar que tu sistema los reconoce como la misma cuenta.
El CSV trae el IBAN, el CCC, la entidad con su código, la oficina, los dos dígitos de control y el número de cuenta por separado.
El Código Cuenta Cliente español se reparte así: 4 dígitos de entidad, 4 de oficina, 2 de control y 10 de cuenta. Y aquí está el malentendido que rompe la mayoría de las implementaciones caseras: esos dos dígitos de control no son un número de dos cifras. Son dos controles independientes, y cada uno valida un trozo distinto.
La consecuencia práctica es útil: si te equivocas al teclear la oficina, salta el primero; si te equivocas en la cuenta, salta el segundo. Un sistema que los trate como un solo número de dos cifras puede dar por buena una cuenta con la oficina cambiada.
Los dos controles usan los mismos pesos sobre diez dígitos. Para el primero, la entidad y la oficina suman ocho cifras, así que se rellenan con dos ceros por delante:
const PESOS = [1, 2, 4, 8, 5, 10, 9, 7, 3, 6];
function dc(diez) {
const suma = [...diez].reduce((a, c, i) => a + Number(c) * PESOS[i], 0);
const r = 11 - suma % 11;
return r === 11 ? 0 : (r === 10 ? 1 : r); // ← los dos casos especiales
}
dc("00" + "2100" + "0418") // 4
dc("0200051332") // 5
// control = "45" → CCC 2100 0418 45 0200051332
Los dos casos especiales de la última línea son la otra fuente de errores: cuando el resto da
10 el dígito es 1, y cuando da 11 es 0. Si aplicas
11 − resto sin más, te salen dígitos de dos cifras y el algoritmo revienta en
una de cada once cuentas aproximadamente. Es la frecuencia justa para que pase las pruebas
superficiales y falle en producción.
Esto no siempre se sabe, y simplifica mucho el trabajo: el IBAN español contiene el
CCC entero. Solo le añade delante ES y dos dígitos de control del
módulo 97 calculados sobre el conjunto.
CCC 2100 0418 45 0200051332
IBAN ES91 2100 0418 4502 0005 1332
^^^^ └── el CCC, tal cual, sin cambiar nada
Por eso los dos van siempre juntos y esta herramienta te da los dos a la vez. Y por eso una comprobación cruzada muy buena para tu sistema es esta: si le das el IBAN y el CCC de la misma cuenta, debe reconocerlos como la misma y no crear un duplicado.
Los tres ejemplos con los que hemos verificado el generador son IBAN publicados — ES9121000418450200051332 entre ellos —, y la comprobación fue en los dos sentidos: los dígitos de control del CCC coinciden con los impresos, y el IBAN reconstruido a partir del CCC sale idéntico al original.
| Qué identifica | Ejemplo | |
|---|---|---|
| IBAN | La cuenta, de forma única en el mundo | ES91 2100 0418 4502 0005 1332 |
| CCC | La misma cuenta, en el formato español anterior | 2100 0418 45 0200051332 |
| BIC o SWIFT | El banco, no la cuenta | CAIXESBBXXX |
Esta herramienta no genera BIC, y es deliberado: el BIC es un código asignado a entidades que existen, y no tiene ningún sentido inventarlo. Dentro de la zona SEPA basta el IBAN.
es91 2100… es lo que llega en un correo.0049 pierde el cero si alguien lo mete en un entero. Es una cadena, siempre.Estas cuentas pasan los dos dígitos de control y el módulo 97 del IBAN, que es lo que comprueba cualquier formulario, pero no corresponden a ninguna cuenta abierta en ninguna entidad. Una orden SEPA contra ellas será rechazada. No sirven para cobrar ni para pagar: están para probar tu software.
Preguntas frecuentes
No. Pasan los dos dígitos de control y el módulo 97 del IBAN, que es lo que comprueba un formulario, pero no corresponden a ninguna cuenta abierta en ninguna entidad. Una orden SEPA contra ellas sería rechazada.
Porque cada uno valida un trozo distinto: el primero la entidad y la oficina, el segundo los diez dígitos de la cuenta. No son un número de dos cifras, son dos controles independientes calculados por separado.
El IBAN contiene el CCC entero, sin cambiar nada, y le añade delante ES y dos dígitos de control del módulo 97. Son la misma cuenta escrita de dos formas, y tu sistema debería reconocerlas como una sola.
Son los dos casos especiales del algoritmo: si el resto de 11 menos la suma da 10, el dígito es 1; si da 11, es 0. Aplicar la resta sin más produce dígitos de dos cifras y falla en aproximadamente una de cada once cuentas.
No, a propósito. El BIC identifica a un banco que existe, y no tiene sentido inventar uno. Dentro de la zona SEPA basta con el IBAN.
Sigue probando