Números de tarjeta de prueba: para qué sirve realmente el algoritmo de Luhn y qué no puede decirte
Publicado el 5/8/2026 · 16 min de lectura · Herramientas para desarrolladores
Daniel Okonkwo — Desarrollador front-end y redactor de Tecnología en OneKitly
Rendimiento web · Formatos de archivo
Verificado con 4 fuentes
La fórmula de Luhn es un esquema de dígito de control para el que Hans Peter Luhn presentó una patente en enero de 1954, concedida en agosto de 1960 como US 2.950.048 con el título Computer for Verifying Numbers, y adoptada desde entonces como dígito de control del sistema de numeración de tarjetas normalizado en la ISO/IEC 7812-1. Funciona desde la derecha: duplica un dígito de cada dos, resta nueve a todo resultado mayor que nueve, suma todo, y un número válido da un total divisible entre diez. En 4242 4242 4242 4242 los ocho 4 pasan cada uno a 8 y los ocho 2 se quedan, lo que da 64 más 16, es decir 80: divisible entre diez, el número pasa. Ese es todo el algoritmo y toda la garantía. Agotar los casos muestra exactamente qué te compra: las 144 sustituciones de un dígito en ese número se detectan todas, y el intercambio de dos dígitos contiguos se detecta en 88 de los 90 casos posibles, siendo las dos excepciones 09 frente a 90. También se le escapan los errores gemelos 22 frente a 55, 33 frente a 66 y 44 frente a 77. Es una comprobación de tecleo, nada más. No es una medida de seguridad, no puede serlo, y un número que la pase no dice nada sobre si existe una cuenta, si tiene fondos o si se autorizaría: eso solo lo sabe el emisor, y solo cuando tu proveedor se lo pregunta durante la autorización. Ejecutar la salida de este generador confirma la mecánica: 120.000 números en seis marcas, todos válidos según Luhn, con longitudes correctas y códigos de seguridad del ancho correcto. Lo que eso te compra es poder ejercitar la validación del lado del cliente de tu formulario. Para probar de verdad una integración de pagos, usa los números que documenta tu proveedor: Stripe, Adyen y PayPal publican los suyos, diseñados para disparar códigos de rechazo concretos. Un número generado que empiece por 4242 no es el 4242 4242 4242 4242 de Stripe, y no te enseñará nada.
Luhn es una suma de verificación para cazar erratas, patentada en 1960, y ese es todo su trabajo. Un número que la pasa no te dice nada de ninguna cuenta. Para probar una integración de pagos necesitas los números publicados por tu proveedor, no uno generado.
El algoritmo, desarrollado para que puedas comprobarlo a mano
Empieza por el dígito más a la derecha, que es el dígito de control, y déjalo en paz. Ve hacia la izquierda y duplica uno de cada dos dígitos: el inmediatamente a la izquierda del de control, y luego uno sí y otro no. Siempre que duplicar dé más de nueve, réstale nueve, que es lo mismo que sumar las dos cifras del valor duplicado. Ahora suma todos los dígitos del número, duplicados o no. Si el total es divisible entre diez, el número pasa.
Toma 4242 4242 4242 4242, el número de prueba más publicado del mundo. Dieciséis dígitos, así que las posiciones a duplicar son la primera, la tercera, la quinta y así desde la izquierda: los ocho 4. Cada 4 duplicado da 8, que no pasa de nueve, así que no se resta nada. Los ocho 2 quedan intactos. La suma es ocho veces 8, que son 64, más ocho veces 2, que son 16, o sea 80. Ochenta entre diez son ocho sin resto, luego el número es válido. Un segundo ejemplo con dígitos variados, por si la repetición esconde el método: 4539 1488 0343 6467 da la serie 8, 5, 6, 9, 2, 4, 7, 8, 0, 3, 8, 3, 3, 4, 3, 7, que también suma 80.
Producir un número válido en vez de comprobar uno es la misma aritmética al revés. Toma los dígitos que quieras sin el último, calcula la suma como arriba tratando la posición que falta como el dígito de control, y el dígito de control es lo que lleva el total al siguiente múltiplo de diez. Para 424242424242424 la respuesta es 2. Para 37828224631000, un cuerpo Amex de catorce dígitos, es 5, y de ahí que 378282246310005 sea el número de prueba Amex publicado. Eso es todo lo que hace un generador.
Qué caza, agotando los casos
Lo que suele afirmarse de Luhn es que caza todos los errores de un dígito y casi todas las transposiciones de dígitos contiguos. Ambas mitades se pueden comprobar por agotamiento en vez de creerlas. Cambia un dígito de 4242 4242 4242 4242 por cada uno de los otros nueve valores, en cada una de las dieciséis posiciones: los 144 números resultantes fallan la comprobación. Esa parte es completa: cualquier dígito mal tecleado se caza, siempre.
La mitad de las transposiciones es casi completa y la excepción es precisa. Construye un número válido acabado en cada uno de los noventa pares ordenados de dígitos distintos, intercambia esos dos dígitos y vuelve a comprobar: ochenta y ocho de los noventa intercambios rompen la suma de verificación. Los dos que sobreviven son 09 convertido en 90 y 90 convertido en 09. La razón es aritmética y no misteriosa: duplicar 0 da 0 y duplicar 9 da 18, que se reduce a 9, así que esos dos dígitos aportan lo mismo en cualquier posición, e intercambiarlos no cambia nada. Hay un segundo punto ciego, menos citado, de la misma familia: los errores gemelos, cuando un par duplicado se teclea en lugar de otro par duplicado. Escribir 55 por 22, 66 por 33 o 77 por 44 deja el total intacto y pasa.
Frente a eso, fíjate en lo que la comprobación no intenta. No tiene secreto, ni clave, ni estado. Cualquiera calcula un número válido en un segundo, y el noventa por ciento de las cadenas de dieciséis dígitos que fallan la comprobación es lo único que excluye. Ese es el diseño correcto para lo que sirve: cazar a un cliente que tecleó mal un dígito de su propia tarjeta, antes de que gastes una ida y vuelta de red y una comisión en averiguarlo. Nunca pretendió establecer que una tarjeta existe, y no se le puede hacer.
El número, la cuenta y la autorización son tres cosas distintas
Un número de tarjeta tiene estructura. Los primeros dígitos son el identificador del emisor, que designa la red y la entidad y se asigna conforme a la ISO/IEC 7812-1; los dígitos siguientes son el identificador de cuenta que asignó el emisor; el último es el dígito de control. Estructura es todo lo que es. Saber que un número empieza por un prefijo de emisor válido y acaba en un dígito de control correcto te dice que la cadena está bien formada, igual que un código postal bien escrito no dice nada sobre si hay una casa allí.
Si hay una cuenta detrás del número, si está abierta, si tiene margen para el importe, si las reglas de riesgo del propio emisor van a permitir a este comercio ese día: nada de eso está en los dígitos. Lo responde una solicitud de autorización: tu proveedor envía los datos a la red, la red los enruta al emisor, y el emisor responde con una aprobación o un código de rechazo. Esa ida y vuelta es lo único que lo sabe. Es también lo único que puede rechazar por fondos insuficientes, por tarjeta declarada perdida o porque el código de seguridad no coincidió, que es exactamente el abanico de resultados que tu proceso de pago tiene que manejar bien.
Por eso los proveedores publican números de prueba en vez de decirte que generes los tuyos. Stripe documenta un número concreto por marca y un conjunto adicional que produce fallos con nombre, de modo que puedas escribir una prueba que afirme que tu página muestra el mensaje correcto cuando una tarjeta se rechaza por fondos insuficientes y no por un código de seguridad erróneo. Adyen publica su propia lista y dice sin rodeos que esos números solo funcionan con su plataforma de pruebas y no funcionan en otras. PayPal publica datos de tarjeta para su entorno de pruebas. Cada lista está atada al entorno de pruebas de un proveedor, y existe porque lo útil de probar no es si una cadena parece una tarjeta, sino si tu código maneja lo que vuelve.
Lo que este generador produce, contrastado con los rangos publicados
La mecánica es sólida. Veinte mil números por marca en seis marcas, 120 000 en total, y todos pasan la comprobación de Luhn: ni un solo fallo, repetido tras cada cambio en los rangos. Cada prefijo producido cae dentro de un rango que la red publica de verdad. Las longitudes siguen a la marca: dieciséis dígitos para Mastercard, Discover y JCB, quince para American Express, catorce para el rango Diners que usa, y Visa a dieciséis dígitos nueve de cada diez veces, con trece y diecinueve una de cada veinte cada uno, porque Visa emite los tres y un formulario que solo acepta dieciséis tiene un fallo que ningún dato de prueba uniforme te enseñará. Las anchuras del código de seguridad también son correctas: tres dígitos en todas partes salvo American Express, donde son cuatro.
Mastercard es el rango que merece entenderse, por cómo se sortea más que por lo que le falte. La red fue 51 a 55 durante décadas; desde 2017 emite también en la serie 2, un tramo que va de 222100 a 272099 y que los comercios tuvieron que aceptar desde mediados de 2017. Una lista plana de prefijos no puede expresar eso —son quinientos mil prefijos de seis dígitos—, así que cada rango se guarda como un intervalo numérico inclusivo y el prefijo se saca de dentro. Los dos rangos se sortean a partes iguales, mitad y mitad, y eso es una decisión de datos de prueba, no un retrato del mercado. Ponderada por tarjetas en circulación, la serie 2 sería un pequeño porcentaje, y con el ajuste por defecto de cinco tarjetas un desarrollador no vería nunca una: justo el defecto que había que evitar. Veinte mil Mastercard generadas se reparten 49,7 frente a 50,3 entre las dos. Si tu patrón de validación se escribió antes de 2017, o a partir de la salida de un generador en vez de los rangos publicados por la red, rechaza una tarjeta real de la serie 2 y te enteras cuando te lo dice un cliente.
Un prefijo personalizado ya no pisa la marca, porque la marca ya no se toma del selector en absoluto: se lee de los dígitos. Escribe 51 y obtienes una Mastercard diga lo que diga el selector de tipo. Escribe un solo 9, un primer dígito que la ISO/IEC 7812-1 reserva a la asignación nacional y que no pertenece a ninguna red, y la tarjeta vuelve etiquetada como BIN desconocido sobre una cara gris neutra, no disfrazada de Visa. Un prefijo corto solo reclama un rango cuando todos los números que podría producir caen dentro: 51 es una Mastercard, un 5 a secas no, porque 50 y 56 a 59 no lo son; así que un BIN a medio escribir se lee como desconocido, que es la respuesta honesta mientras el campo se está rellenando. La marca leída de los dígitos manda después en el resto de la tarjeta: la longitud y la anchura del código de seguridad siguen al prefijo y no al desplegable, de modo que un BIN de Amex escrito a mano da quince dígitos y un código de cuatro. El desplegable de prefijos ya hechos nunca tuvo este problema: elegir uno fija la marca en consecuencia.
Una cosa más sobre el desplegable de prefijos, que es la parte más útil de la herramienta y también la más fácil de malinterpretar. Los once prefijos que ofrece —4242, 4000, 5555, 5200, 3782, 6011, 3566, 3622, 4111, 5100 y 4032— son los primeros dígitos de los números que los proveedores publican como datos de prueba, no los de bancos reales, y la página lo dice. Pero un número generado que empieza por 4242 no es la tarjeta de prueba de Stripe. La tarjeta de prueba de Stripe es exactamente 4242 4242 4242 4242, una cadena concreta; el generador produce otro número, aleatorio, válido según Luhn, con los mismos cuatro primeros dígitos, y el entorno de pruebas de un proveedor reconoce el número documentado y no el prefijo. Un prefijo elegido fija además la longitud a la canónica de la marca: un 4242 vuelve siempre con dieciséis dígitos y nunca en las formas más raras de Visa de trece o diecinueve. Usa el desplegable para que tus datos parezcan verosímiles. Usa la documentación del proveedor para que funcionen.
| Marca | Lo que genera la herramienta | Lo que emite la red |
|---|---|---|
| Visa | Prefijo 4; 16 dígitos el 90 % de las veces, 13 y 19 al 5 % cada uno, código de 3 dígitos | Prefijo 4; 16 dígitos es la norma, también existen 13 y 19 |
| Mastercard | 51 a 55 y 222100 a 272099, sorteados mitad y mitad | 51 a 55 y la serie 2, 222100 a 272099, en vigor desde 2017 |
| American Express | 34 y 37, 15 dígitos, código de 4 | 34 y 37, 15 dígitos, código de 4: completo y correcto |
| Discover | 6011, 65, 644 a 649 y 622126 a 622925, ponderados 40/30/20/10 | 6011 y 65, más los tramos 644 a 649 y 622126 a 622925 |
| JCB | Cualquier prefijo de 3528 a 3589 | Todo el rango 3528 a 3589 |
| Diners Club | 36, 300 a 305, 38 y 39, siempre 14 dígitos | 36, 38 a 39 y el tramo 300 a 305; también circulan formas de 16 dígitos |
Preguntas frecuentes
- ¿Que un número pase la comprobación de Luhn significa que la tarjeta es real?
- No, ni de lejos. Luhn es una suma de verificación sin clave ni secreto: cualquiera calcula un número válido en menos de un segundo, y aproximadamente una cadena de dieciséis dígitos de cada diez pasa por azar. Lo que excluye son las nueve de cada diez que no pasan: un filtro de erratas y nada más. Si existe una cuenta detrás del número, si está abierta y si autorizaría un importe dado son preguntas que solo el emisor puede responder, mediante una solicitud de autorización encaminada por tu proveedor de pagos. Por eso la comprobación se hace en el navegador antes de enviar la solicitud, y no en su lugar.
- ¿Puedo usar un número generado para probar mi integración de pagos?
- Para la mitad del lado del cliente, sí: un número bien formado, con la longitud correcta y un dígito de control válido, es exactamente lo que necesitas para ver si tu formulario lo acepta, lo agrupa de cuatro en cuatro, muestra el icono de marca correcto y pide tres dígitos en vez de cuatro. Para todo lo que viene después, no. El entorno de pruebas de un proveedor reconoce los números concretos que publica, y un número aleatorio que comparta los cuatro primeros dígitos con uno de ellos no es uno de ellos. Stripe, Adyen y PayPal documentan cada uno una lista, y la parte útil de esas listas son los números que fallan a propósito —uno por fondos insuficientes, uno por tarjeta perdida, uno por código de seguridad que no coincide—, porque manejar bien un rechazo es la parte de un proceso de pago que de verdad se rompe.
- ¿Qué transposiciones se le escapan a Luhn?
- Exactamente un par contiguo: 09 tecleado como 90, y 90 tecleado como 09. Prueba los noventa pares ordenados de dígitos distintos y ochenta y ocho de los intercambios se cazan. La excepción sale de la aritmética: duplicar 0 da 0 y duplicar 9 da 18, que se reduce a 9, así que el par aporta 9 en cualquier orden. Hay un segundo punto ciego menos citado, de otra familia: los errores gemelos, cuando un par duplicado se teclea en lugar de otro par duplicado. Introducir 55 en lugar de 22, 66 en lugar de 33 o 77 en lugar de 44 deja la suma intacta y pasa. Son dos límites conocidos de un método diseñado en los años cincuenta para cazar un dígito copiado a mano, y ambos son ajenos a la seguridad, porque Luhn nunca fue un control de seguridad.
- ¿Por qué mi validación rechaza una Mastercard real que empieza por 2?
- Porque la regla se escribió contra el tramo antiguo. Mastercard fue 51 a 55 durante décadas, y muchísimos patrones de validación lo siguen diciendo. La red añadió la serie 2 en 2017, un tramo que va de 222100 a 272099, y los comercios tuvieron que aceptarla. Un patrón anterior hereda el hueco, y también lo hereda uno derivado de un generador que solo emitía 51 a 55, que es lo que hacía este. Ahora sortea los dos tramos por igual, así que su salida cubre ambos; pero escribe el patrón contra los rangos publicados por la red y no contra ningún generador, y trata la detección de marca por prefijo como mantenimiento y no como un trabajo de una vez, porque los rangos cambian.
- ¿Es legal generar números de tarjeta?
- Calcular un dígito de control es aritmética, y la aritmética por sí sola no es la cuestión. Lo que importa es para qué se usa el número. Construir un juego de pruebas para ejercitar un formulario es trabajo de software corriente; intentar obtener bienes o servicios con un número que nadie te ha emitido es fraude, en todas partes, con independencia de que satisfaga una suma de verificación. Aquí no hay término medio útil, porque un número generado no puede comprar nada de todos modos: no hay cuenta detrás y ningún emisor lo autorizará. El consejo práctico coincide con el técnico: usa los números de prueba publicados por tu proveedor, guárdalos en tu batería de pruebas, y no metas nunca un número de tarjeta real en un entorno de desarrollo, asunto sobre el que tu contrato con ese proveedor y la norma de seguridad de datos del sector tienen mucho que decir.
Artículos que podrían interesarte
Todas las guías →Herramientas relacionadas
Este artículo trata de probar un formulario de pago, y de nada más. Un número generado no es un medio de pago: no hay ninguna cuenta detrás, ningún emisor lo autorizará, e intentar usarlo para obtener bienes o servicios es fraude en todas las jurisdicciones donde se publica este sitio. Los números de tarjeta reales son datos regulados: la norma PCI DSS rige cómo se almacenan y se manejan, y tu contrato con tu proveedor dirá más. Nada de esto es asesoramiento jurídico, de seguridad ni de cumplimiento: usa los números de prueba que publica tu proveedor y pregúntale ante la duda.
Fuentes
- United States Patent and Trademark Office — US Patent 2,950,048, Computer for Verifying Numbers, Hans P. Luhn, filed 6 January 1954 and granted 23 August 1960 — describes the alternating substitution of doubled digits with an end-around carry and the appended check digit that makes the cross-addition come out to zero
- Stripe — Testing — Stripe's published test card numbers by brand (4242424242424242 for Visa, 5555555555554444 for Mastercard, 378282246310005 for American Express, 6011111111111117 for Discover, 3566002020360505 for JCB, 36227206271667 for a 14-digit Diners Club), plus the numbers that trigger specific declines such as insufficient funds, a lost card and an incorrect security code; Stripe's terms prohibit testing in live mode with real payment details
- Adyen — Test card numbers — Adyen's own list, including 4111 1111 1111 1111 and 4111 1111 4555 1142 for Visa and 5100 0600 0000 0002 for Mastercard, with the explicit statement that these test card numbers only work with Adyen's test platform and do not work on other platforms
- PayPal Developer — Card testing in the sandbox — the card details PayPal publishes for use against its sandbox environment, and the scenarios they are designed to reproduce
¿Has detectado un error en este artículo?