¿Qué es el algoritmo de Luhn?
El algoritmo de Luhn, también conocido como módulo 10, es una fórmula matemática creada por el científico Hans Peter Luhn en 1954 para IBM. Se usa para validar números de identificación como tarjetas de crédito, débito, números de cuenta y códigos IMEI.
Este validador no verifica si la tarjeta existe ni si tiene fondos. Simplemente confirma que el número cumple con las reglas matemáticas del algoritmo, lo que ayuda a detectar errores de tipeo antes de procesar un pago. Es la primera línea de defensa en formularios de comercio electrónico.
Las principales redes de tarjetas (Visa, MasterCard, American Express, Discover) usan Luhn como estándar. El algoritmo detecta casi todos los errores de transcripción de un solo dígito y la mayoría de transposiciones de dígitos adyacentes.
Cómo funciona el algoritmo paso a paso
El cálculo del checksum de Luhn sigue estos pasos:
- 1. Partir del último dígito hacia la izquierda (el check digit).
- 2. Duplicar cada segundo dígito (empezando por el penúltimo). Si el resultado es mayor a 9, restar 9.
- 3. Sumar todos los dígitos (los duplicados y los no modificados).
- 4. Si la suma módulo 10 es 0, el número es válido.
Ejemplo con 4111 1111 1111 1111:
- Partimos de derecha a izquierda:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 - Duplicamos alternados:
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 8 - Reducimos mayores a 9:
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 8 - Suma: 1+2+1+2+1+2+1+2+1+2+1+2+1+2+1+8 = 30
- 30 % 10 = 0 → Válido
Cuándo y por qué validar tarjetas
Validar números de tarjeta antes de enviarlos al procesador de pagos ahorra tiempo, dinero y mejora la experiencia del usuario. Los casos más comunes:
- Formularios de checkout: Detectar typos en tiempo real mientras el usuario escribe.
- Migración de datos: Limpiar bases de datos de tarjetas mal registradas.
- Testing de integraciones de pago: Usar números válidos de prueba (como 4111 1111 1111 1111) que pasan Luhn pero no cargan dinero real.
- Prevención de fraude básica: Rechazar números obviamente inválidos antes de intentar cargos.
Los pasarelas de pago como Stripe, MercadoPago y PayPal realizan esta validación internamente, pero hacer el chequeo del lado del cliente reduce llamadas API innecesarias y da feedback inmediato. Es especialmente útil en apps móviles y SPAs donde la latencia importa.
Limitaciones y errores comunes
El algoritmo de Luhn no verifica:
- Si la tarjeta existe realmente en el sistema bancario.
- Si está activa, vencida o bloqueada.
- Si tiene fondos suficientes.
- Si el CVV o fecha de vencimiento son correctos.
Errores frecuentes al implementar validación:
- Rechazar espacios o guiones: Los usuarios escriben
4111-1111-1111-1111. Deberías limpiar el input antes de validar. - No identificar la marca: Visa empieza con 4, MasterCard con 51-55 o 2221-2720, AmEx con 34 o 37. Conocer el prefijo mejora UX (mostrar el logo correcto).
- Confundir validez con autenticidad: Un número válido según Luhn puede ser inventado. Solo una transacción real confirma que es una tarjeta activa.
Para pruebas, usa números de test oficiales de cada red en lugar de generar aleatorios.