Cómo detectar un número de tarjeta de crédito falso
Detectar una tarjeta de crédito falsa es un trabajo por capas. Algunas comprobaciones se hacen al instante en el navegador, otras requieren consultar el BIN y solo el banco emisor puede confirmar que la cuenta existe de verdad. Esta guía recorre cada capa desde el punto de vista de un comercio y de un desarrollador.
Puntos clave
- Las comprobaciones de formato (prefijo, longitud, Luhn, vencimiento y longitud del CVV) detectan errores de tipeo y dígitos al azar al instante, pero cualquiera puede generar números que las superen.
- Una consulta de BIN muestra la red, el país del emisor y el tipo de tarjeta, lo que permite detectar incoherencias con la IP o el país de facturación del cliente.
- Solo una autorización o una verificación de cuenta por 0 demuestra que la cuenta existe; los resultados de CVV, AVS y 3-D Secure aportan pruebas sobre quién la usa.
- Una tarjeta real robada supera todas las comprobaciones de formato, así que las reglas de velocidad y las señales de comportamiento importan tanto como validar el número.
En esta página
- Qué significa “falso” en un checkout
- Capa 1: comprobaciones de formato instantáneas
- Lo que Luhn puede y no puede demostrar
- Capa 2: coherencia de la consulta de BIN
- Capa 3: deja que responda el emisor
- Señales de alarma en el checkout
- Tarjetas físicas en el mostrador
- Prueba tus controles sin tarjetas reales
- Cómo combinar las capas
- Preguntas frecuentes
Cuando un comercio habla de un número de tarjeta “falso”, suele referirse a cuatro cosas muy distintas. Cada una se detecta con una comprobación diferente, y tratarlas como un único problema es justo lo que lleva a rechazar a buenos clientes o a dejar pasar el fraude. Esta guía las separa y muestra qué señales puedes obtener en cada fase de un pago.
Qué significa “falso” en un checkout
| Tipo | Ejemplo | Lo detecta |
|---|---|---|
| Error al escribir un número real | Dos dígitos intercambiados al teclear | La comprobación de Luhn en el formulario |
| Dígitos al azar o inventados | Alguien teclea cualquier cosa | Las comprobaciones de prefijo, longitud y Luhn |
| Número generado con formato válido | La salida de un generador de tarjetas de prueba | La respuesta de autorización del emisor |
| Tarjeta real robada | Datos obtenidos en una filtración o por phishing | CVV, AVS, 3-D Secure, velocidad y señales de comportamiento |
Los dos primeros son errores honestos o basura de poco esfuerzo, y tu formulario debería detectarlos antes de que salga ninguna petición del navegador. Un número generado cumple por diseño todas las reglas de formato, así que solo el banco puede rechazarlo. El cuarto caso es el que cuesta dinero: el número es perfectamente real y la pregunta pasa a ser si quien lo escribe es el titular.
Capa 1: comprobaciones de formato instantáneas
La validación de formato es gratuita, rápida y privada. Se ejecuta en el navegador antes del envío y detecta la mayoría de los errores de tipeo. Úsala para dar mensajes útiles, no como veredicto de fraude.
Prefijo de la marca y longitud
Los primeros dígitos de una tarjeta, el número de identificación del emisor (IIN), identifican la red. Cada red tiene además un conjunto fijo de longitudes. Un número que empieza por 34 pero tiene 16 dígitos no es un número válido de American Express, sea lo que sea lo demás.
| Marca | Empieza por | Longitud | Código de seguridad |
|---|---|---|---|
| Visa | 4 | 13, 16 o 19 | 3 dígitos |
| Mastercard | 51–55, 2221–2720 | 16 | 3 dígitos |
| American Express | 34, 37 | 15 | 4 dígitos (anverso) |
| Discover | 6011, 644–649, 65 | 16–19 | 3 dígitos |
| JCB | 3528–3589 | 16–19 | 3 dígitos |
| Diners Club | 300–305, 36, 38–39 | 14–19 | 3 dígitos |
| UnionPay | 62 | 16–19 | 3 dígitos |
La lista completa, con Maestro y las reglas de agrupación, está en nuestra página de formato de números de tarjeta (en inglés). Mantén estas tablas en un único lugar de tu código: los rangos cambian (el rango 2 de Mastercard es una incorporación relativamente reciente) y una lista desactualizada rechaza a clientes reales.
Dígito de control Luhn
El último dígito de toda tarjeta de las grandes redes es un dígito de control calculado con el algoritmo de Luhn. Si el cliente se equivoca en un dígito, o intercambia la mayoría de las parejas de dígitos contiguos, la comprobación falla y puedes pedirle que revise el número antes de pulsar “Pagar”.
Fecha de vencimiento
Rechaza meses fuera de 01–12 y fechas pasadas. Una tarjeta suele ser válida hasta el último día del mes impreso, así que 10/26 sigue siendo válida el 31 de octubre de 2026. Limita también cuánto hacia el futuro aceptas: las tarjetas rara vez se emiten para más de unos pocos años, y un año como 2099 casi siempre es un error o un valor de prueba.
Longitud del código de seguridad
American Express usa un código de cuatro dígitos impreso en el anverso; las demás grandes marcas usan tres dígitos en el reverso. Valida la longitud según la marca detectada. No puedes comprobar si el código es correcto: solo el emisor puede, porque el valor se deriva de claves secretas (lo explicamos en nuestra guía sobre CVV, CVC y CID, en inglés).
Una comprobación compacta en el navegador tiene este aspecto. Devuelve un motivo que puedes mostrar al cliente, no una puntuación de fraude:
function luhnOk(num) {
let sum = 0, dbl = false;
for (let i = num.length - 1; i >= 0; i--) {
let d = num.charCodeAt(i) - 48;
if (dbl) { d *= 2; if (d > 9) d -= 9; }
sum += d; dbl = !dbl;
}
return sum % 10 === 0;
}
const BRANDS = [
{ name: 'amex', re: /^3[47]/, lengths: [15], cvc: 4 },
{ name: 'visa', re: /^4/, lengths: [13, 16, 19], cvc: 3 },
{ name: 'mastercard', re: /^(5[1-5]|222[1-9]|22[3-9]\d|2[3-6]\d\d|27[01]\d|2720)/, lengths: [16], cvc: 3 },
];
function checkCard(raw, cvc) {
const num = raw.replace(/[\s-]/g, '');
if (!/^\d{12,19}$/.test(num)) return 'El número debe tener entre 12 y 19 dígitos';
const brand = BRANDS.find(b => b.re.test(num));
if (!brand) return 'Tipo de tarjeta no aceptado';
if (!brand.lengths.includes(num.length)) return 'Longitud incorrecta para ' + brand.name;
if (!luhnOk(num)) return 'Revisa el número de la tarjeta';
if (!new RegExp('^\\d{' + brand.cvc + '}$').test(cvc)) return 'El código de seguridad debe tener ' + brand.cvc + ' dígitos';
return null; // bien formado: el emisor tiene la última palabra
}Tienes los patrones de todas las marcas, probados en tres lenguajes, en nuestra guía de regex para tarjetas de crédito. También puedes pegar cualquier número en el validador de tarjetas para ver cada comprobación paso a paso.
Lo que Luhn puede y no puede demostrar
La comprobación de Luhn es la parte peor entendida de la detección de tarjetas falsas. Es un código de detección de errores de los años cincuenta, no una medida de seguridad, y su aritmética es pública.
| Pregunta | ¿Puede responderla Luhn? |
|---|---|
| ¿El cliente se equivocó en un dígito? | Sí: cualquier error en un solo dígito cambia la suma |
| ¿Intercambió dos dígitos contiguos? | Casi siempre (la excepción es 09 ↔ 90) |
| ¿El número corresponde a una cuenta real? | No |
| ¿La tarjeta está activa, vigente y sin bloquear? | No |
| ¿Quien lo escribe es el titular? | No |
| ¿El número se generó en lugar de copiarse de una tarjeta? | No: una de cada diez cadenas al azar lo supera y los generadores siempre lo superan |
Así que un fallo de Luhn es un buen motivo para detenerse y pedir que se vuelva a escribir el número. Un acierto de Luhn no dice casi nada sobre el fraude.
Capa 2: coherencia de la consulta de BIN
Los primeros seis u ocho dígitos, el BIN, identifican el rango del emisor. Una consulta de BIN devuelve la red, el banco emisor, el país y a menudo si la tarjeta es de crédito, de débito o prepago. Esos datos no demuestran que una tarjeta sea real, pero permiten comprobar si la historia del pedido es coherente.
Señales que conviene comparar
- País del emisor frente a país de la IP y de facturación. Una tarjeta emitida en un país, una dirección de facturación en otro y una IP en un tercero merece una revisión, sobre todo en importes altos o productos digitales.
- Tarjetas prepago. Son un medio de pago legítimo, pero algunos negocios —suscripciones con prueba gratuita, alquileres, productos de alto riesgo— prefieren revisarlas o rechazarlas.
- BIN desconocidos o sin asignar. Un prefijo que ninguna base de datos de BIN conoce puede ser un rango nuevo, pero también puede delatar dígitos al azar.
- Marca que no coincide. Si los datos del BIN asignan el rango a otra red distinta de la que detectaron tus reglas de prefijo, revisa primero tu tabla de marcas: puede estar desactualizada.
Las incoherencias son señales, no veredictos
Viajeros, residentes en el extranjero, compradores transfronterizos y usuarios de VPN generan incoherencias honestas. Usa los datos del BIN para decidir cuánta verificación pedir —por ejemplo, activar 3-D Secure o una revisión manual— y no para rechazar sin más.
Capa 3: deja que responda el emisor
Todo lo anterior ocurre sin contactar con el banco. La única forma de saber si una cuenta existe, está abierta y pertenece a quien paga es preguntar al emisor a través de la red de tarjetas.
Autorización y verificación de cuenta
Una autorización normal pide al emisor que apruebe un importe concreto. Si quieres comprobar una tarjeta sin cobrarla —por ejemplo, al guardarla para pagos futuros—, la mayoría de las pasarelas ofrecen una verificación de cuenta: una autorización de importe cero (o muy pequeño) que devuelve aprobada o rechazada junto con el resultado de las comprobaciones de CVV y dirección. Un número generado se rechaza en este paso porque el emisor no tiene esa cuenta.
Resultados de CVV y AVS
Cuando envías el código de seguridad y la dirección de facturación, el emisor los compara con sus registros. Las pasarelas informan del resultado en campos normalizados. Stripe, por ejemplo, devuelve cvc_check, address_line1_check y address_postal_code_check en la tarjeta:
| Resultado | Significado | Acción habitual |
|---|---|---|
pass | El valor coincide con los registros del emisor | Continuar |
fail | El valor no coincide | Rechazar o pedir al cliente que lo corrija |
unavailable | El emisor no lo comprobó (frecuente en la verificación de dirección fuera de unos pocos países) | Valorarlo junto con otras señales |
unchecked | No se envió el dato o la comprobación aún no se ha hecho | Pedir el campo si tus reglas dependen de él |
La guía de Visa para comercios sobre ataques de enumeración recomienda exigir CVV2 y AVS en las operaciones sin tarjeta presente, porque juntos encarecen muchísimo adivinar datos. PCI DSS permite recoger el código de seguridad para la autorización, pero no guardarlo después.
3-D Secure
3-D Secure pide al emisor que autentique directamente al titular —con la app del banco, un código de un solo uso o biometría— y es obligatorio en muchos pagos en Europa por la autenticación reforzada de clientes (SCA). Es la señal más sólida de que quien paga controla la cuenta, y puede trasladar fuera del comercio la responsabilidad por los contracargos por fraude. Nuestra guía de pruebas de 3-D Secure (en inglés) explica cómo implementarlo y probarlo.
Señales de alarma en el checkout
Las tarjetas reales robadas superan las comprobaciones de formato y, a menudo, también las del emisor, así que las mejores señales de fraude tienen que ver con el comportamiento, no con el número. Vigila:
- Muchos números de tarjeta distintos desde un mismo dispositivo, IP, correo o cuenta en poco tiempo.
- Varios rechazos seguidos de un pago aprobado, sobre todo con tarjetas distintas o fechas de vencimiento ligeramente diferentes.
- Números de tarjeta de una misma sesión que comparten los primeros dígitos y solo cambian al final.
- Muchos pedidos o donativos muy pequeños, o tarjetas guardadas con importe cero, desde cuentas nuevas.
- Nombres y correos sin sentido, o la misma dirección de facturación usada con muchas tarjetas.
- Envíos urgentes a un reexpedidor o a una dirección que no coincide con los datos de facturación.
Patrones así suelen indicar un ataque automatizado más que una compra fraudulenta aislada. Nuestra guía sobre el fraude de prueba de tarjetas (en inglés) explica cómo detectarlo y frenarlo.
Tarjetas físicas en el mostrador
En los pagos presenciales, el chip hace la mayor parte del trabajo: un chip EMV genera un criptograma para cada operación que una banda magnética copiada no puede reproducir. Si el personal manipula tarjetas, las comprobaciones clásicas siguen sirviendo: los últimos cuatro dígitos del recibo coinciden con los de la tarjeta, la impresión y el holograma parecen correctos y la tarjeta no está alterada. Exige chip o contactless en lugar de deslizar la banda siempre que el terminal lo permita.
Prueba tus controles sin tarjetas reales
Nunca uses números de tarjetas reales para probar reglas antifraude. Usa números generados para la capa de formato y las tarjetas de prueba documentadas por tu pasarela para la capa del emisor. En el modo de prueba de Stripe, por ejemplo:
| Tarjeta de prueba de Stripe | Resultado simulado |
|---|---|
4000 0000 0000 0101 | Falla la comprobación del CVC (envía un CVC o la comprobación se omite) |
4000 0000 0000 0036 | Falla la comprobación del código postal |
4000 0000 0000 0028 | Falla la comprobación de la línea 1 de la dirección |
4100 0000 0000 0019 | Radar la bloquea siempre por riesgo máximo |
La lista completa de cada pasarela está en nuestra página de tarjetas de prueba de Stripe y en las de las demás pasarelas.
Cómo combinar las capas
- En el navegador: prefijo de la marca, longitud, Luhn, vencimiento y longitud del CVV, con mensajes de error claros y sin decisiones de fraude.
- Antes de autorizar: país y tipo de tarjeta del BIN comparados con la IP y la facturación; límites de velocidad por dispositivo, IP, correo y cuenta.
- En la autorización: exige CVV y código postal, lee los resultados y usa 3-D Secure cuando sea obligatorio o el riesgo sea alto.
- Después de autorizar: vigila la tasa de rechazos y las alertas tempranas de fraude, y reembolsa los pedidos sospechosos antes de que se conviertan en disputas.
Ninguna capa basta por sí sola. Las comprobaciones de formato frenan los errores de tipeo, las del emisor frenan los números inventados y las señales de comportamiento son las que detectan tarjetas reales en manos equivocadas.
Preguntas frecuentes
¿Se puede saber si un número de tarjeta es real con solo mirarlo?
No. Se puede saber si está bien formado: prefijo correcto para la marca, longitud correcta y dígito de control Luhn válido. Si hay una cuenta detrás solo lo sabe el banco emisor, que responde mediante una autorización.
¿Superar el algoritmo de Luhn significa que la tarjeta es válida?
No. Luhn solo demuestra que los dígitos son coherentes entre sí, lo que sirve para detectar errores al escribir. Aproximadamente una de cada diez cadenas de dígitos al azar lo supera por casualidad, y los generadores producen números que lo superan a propósito.
¿Cuál es la mejor forma de detectar una tarjeta falsa en una tienda online?
Combinar capas: validar el formato en el navegador, comparar el país y el tipo de tarjeta del BIN con el pedido, exigir el CVV y el código postal de facturación, usar 3-D Secure cuando esté disponible y vigilar patrones de velocidad, como muchas tarjetas desde un mismo dispositivo.
¿Una tarjeta de un país distinto al de la IP del cliente es falsa?
No necesariamente. Viajeros, residentes en el extranjero y usuarios de VPN generan incoherencias legítimas. Trátalo como una señal de riesgo más, por ejemplo pidiendo 3-D Secure o revisando el pedido a mano.
¿Una autorización por 0 verifica la tarjeta sin cobrar?
Sí. La mayoría de las pasarelas ofrecen una verificación de cuenta (una autorización de importe cero o muy pequeño) que pregunta al emisor si la cuenta es válida y puede devolver los resultados del CVV y de la dirección, sin capturar dinero.
Fuentes
Herramientas de esta guía
Guías relacionadas
Escrito para desarrolladores, equipos de QA y comercios. Los números generados son datos de prueba: no son tarjetas reales y no sirven para pagar.