Validar formato, longitud y checksum de un IBAN
Un número internacional de cuenta bancaria puede parecer correcto aunque tenga una cantidad de caracteres equivocada o un dígito de control mal copiado.
Ejecutar — gratis
Este validador normaliza espacios y guiones habituales, identifica el código de país, comprueba la longitud oficial asignada a ese país y aplica la regla de checksum mod-97 de ISO 7064. Devuelve cada decisión por separado para que usted pueda revisar una cuenta o decidir mediante software si un registro de pago está listo para la siguiente fase.
Empiece con un IBAN completo y reconocible
Pegue o envíe el IBAN completo, incluidos el código de país de dos letras y los dos dígitos de control. Se admiten los espacios que agrupan caracteres para facilitar la lectura, así como los guiones, y el validador los elimina antes de examinar el valor. Las letras minúsculas se convierten a mayúsculas en el resultado normalizado. No se descarta silenciosamente ningún otro signo de puntuación, pues hacerlo podría ocultar un error al copiar y pegar. Un valor con estructura válida debe comenzar con dos letras seguidas de dos dígitos; todos los caracteres restantes deben ser letras o números. La respuesta incluye el IBAN normalizado para que una integración pueda guardar o comparar una representación coherente. También muestra el código de país y las longitudes real y esperada, en lugar de ofrecer una respuesta ambigua. Si el prefijo nacional no figura en el registro admitido, la solicitud genera un error de entrada. Esa distinción es importante: un esquema desconocido no puede evaluarse con fiabilidad y no debe tratarse como un simple fallo de checksum.
Comprenda las comprobaciones de longitud y mod-97
Los IBAN no comparten una única cantidad universal de caracteres. Cada país participante define una longitud fija, por lo que un IBAN alemán tiene un tamaño esperado distinto al de uno noruego o maltés. El validador consulta la longitud vinculada al código inicial y la compara con el valor normalizado. Después ejecuta el procedimiento definido para IBAN en ISO 7064: mueve los primeros cuatro caracteres al final, expande las letras a valores numéricos desde A igual a 10 hasta Z igual a 35 y evalúa la secuencia decimal resultante módulo 97. Un checksum válido deja un resto de uno. La implementación calcula el resto progresivamente, dígito a dígito, en vez de construir un entero enorme que podría superar el rango numérico seguro del lenguaje. La respuesta informa por separado de `length_valid` y `checksum_valid`, y establece `valid` únicamente si ambas comprobaciones son satisfactorias. Una longitud incorrecta impide aprobar el checksum, lo que mantiene una decisión prudente y fácil de interpretar en procesos automatizados.
Valide en el punto adecuado del proceso de pago
Ejecute esta comprobación cuando un IBAN entre en su sistema: al enviar un formulario, importar un CSV, registrar un beneficiario o realizar la revisión final antes de crear una orden de pago. Un resultado fallido demuestra un problema de formato, longitud o checksum, por lo que ayuda a detectar pronto errores frecuentes de transcripción. No demuestra que la cuenta bancaria exista, esté abierta, pertenezca al destinatario indicado o pueda recibir una transferencia concreta. Esas preguntas requieren servicios bancarios o de proveedores de pagos y pueden implicar controles de identidad regulados. Mantenga limitada la función del validador: rechace identificadores claramente mal formados, muestre qué controles fallaron y pida al usuario que confirme el número en una fuente fiable. El algoritmo es determinista y no usa red, valores aleatorios, reloj ni consultas externas durante la ejecución, de modo que las llamadas repetidas son reproducibles. Una solicitud API cuesta $0.002, mientras que la página puede ejecutar en el navegador la misma lógica pura de validación.
Qué puede hacer con ella
Validar un formulario de beneficiario
Detecte una longitud nacional o un dígito de control incorrectos antes de enviar el registro del beneficiario.
Revisar datos de pago importados
Normalice y valide campos IBAN de un lote, conservando los motivos exactos de cada rechazo.
Comprobar un número de cuenta
Revise un IBAN copiado manualmente antes de incorporarlo al proceso de aprobación de pagos.
Preguntas frecuentes
¿Cuánto cuesta una validación por API?
Cada solicitud cuesta $0.002. La herramienta del navegador puede ejecutar localmente la misma comprobación determinista.
¿Un resultado válido demuestra que la cuenta existe?
No. Solo confirma la longitud registrada para el país y el checksum; no contacta con un banco ni verifica la titularidad.
¿Se permiten espacios y guiones?
Sí. Se eliminan antes de validar y las letras minúsculas se normalizan a mayúsculas.
¿Por qué un código de país desconocido produce un error?
Sin una definición nacional reconocida no es posible establecer con fiabilidad la longitud obligatoria del IBAN.
¿Cómo se calcula el checksum de forma segura?
El valor alfanumérico reordenado se expande y reduce progresivamente módulo 97, sin usar enteros excesivamente grandes.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/iban-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"iban":"DE89 3704 0044 0532 0130 00"}'const res = await fetch("https://api.kit.forhosting.com/data/iban-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"iban": "DE89 3704 0044 0532 0130 00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/iban-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"iban": "DE89 3704 0044 0532 0130 00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/iban-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"iban":"DE89 3704 0044 0532 0130 00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"iban":"DE89 3704 0044 0532 0130 00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/iban-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"iban": "DE89 3704 0044 0532 0130 00"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.iban_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |