Las tarjetas de prueba Visa y Mastercard no se distinguen por su aspecto, sino por un prefijo y una longitud que cada red publica. Cuando se monta un conjunto de datos de prueba para un formulario de pago, la tentación es generar diez números cualesquiera y darlos por buenos. Eso funciona hasta que la página necesita reconocer la marca, hasta que aparece un número de quince dígitos o hasta que una validación basada en el prefijo rechaza justo el caso que querías cubrir. Elegir el rango con criterio cuesta cinco minutos y ahorra bastantes sorpresas.
Por qué cada marca tiene su propio bloque
Las redes comparten la misma estructura —prefijo, dígitos de cuenta y dígito de control— pero cada una decide cuántos dígitos usa, qué prefijos asigna y cómo llama a su código de seguridad. Un formulario probado solo con la marca más habitual suele fallar en cuanto aparece una tarjeta de American Express o de Diners Club.
Esa variedad no es un capricho. Los prefijos son un recurso finito que se reparte entre entidades emisoras de todo el mundo, y las longitudes se fijaron en momentos distintos de la historia de cada red. Un validador correcto no intenta homogeneizar lo que la industria nunca homogeneizó.
Conviene recordar además qué significa el prefijo: identifica un rango asignado, no a una persona ni a una cuenta. No debería usarse para afirmar qué banco ha emitido una tarjeta concreta, y cualquier herramienta que prometa esa identificación está extrapolando.
Los rangos que cada marca publica
Estos son los bloques publicados por las redes y con los que se construyen los prefijos de prueba. Son datos abiertos, no secretos, y sirven para que un formulario reconozca la marca correcta.
| Marca | Prefijos publicados |
|---|---|
| Visa | 4 |
| Mastercard | 51 a 55, y 2221 a 2720 |
| American Express | 34 y 37 |
| Discover | 6011, 65, 644 a 649, y 622126 a 622925 |
| JCB | 3528 a 3589 |
| Diners Club | 300 a 305, 36, y 38 a 39 |
| UnionPay | 62 |
| Maestro | 50, y 56 a 69 |
Dos detalles de la tabla explican errores reales. El primero es que Mastercard tiene dos bloques bien separados: el histórico, de dos dígitos, y el que se añadió mucho después, de cuatro. Un validador que solo mire el primer dígito aceptará por error números de otras marcas, y otro que solo reconozca el bloque antiguo rechazará tarjetas emitidas en el nuevo. El segundo es la aparente vecindad entre Discover y UnionPay alrededor del 62: son rangos contiguos asignados con cuidado, y la única forma de distinguirlos es respetar los límites exactos.
La longitud no aparece en la tabla a propósito. Las marcas han ido variando sus longitudes con los años, la norma internacional admite hasta diecinueve dígitos y la única cifra que conviene fijar en el código es el mínimo y el máximo globales.
¿Por qué American Express rompe los formularios?
American Express es la excepción que descoloca a casi cualquier formulario mal probado, y por eso merece un apartado propio. Sus números tienen quince dígitos, no dieciséis, y se agrupan de otra manera al mostrarlos. Su código de seguridad tiene cuatro dígitos y va impreso en el anverso, encima del número, en lugar de en el reverso junto a la firma.
Para un formulario eso significa tres cosas. El campo del código debe aceptar cuatro dígitos en cuanto se detecta la marca. El agrupado visual no puede ser un espacio fijo cada cuatro caracteres. Y el validador no puede exigir dieciséis dígitos como condición de entrada.
Es un caso tan rentable de probar que merece su propio dato de prueba. Si tu conjunto no incluye ninguna marca de quince dígitos, es muy probable que el formulario tenga un defecto esperando al primer cliente que pague con ella.
Discover, JCB, Diners, UnionPay y Maestro
El resto de las marcas se comporta de forma parecida entre sí, con matices que conviene conocer. Discover comparte el bloque del seis con UnionPay y añade un rango de seis dígitos, una muestra de lo largos que pueden llegar a ser los prefijos modernos. JCB ocupa un tramo continuo dentro del bloque del tres, el mismo en el que conviven American Express y Diners Club. Diners Club reparte sus prefijos en tres bloques distintos, uno de ellos de tres dígitos.
Maestro es la más extensa de la lista, porque abarca desde el 50 hasta el 69 en varios tramos. Esa amplitud hace que sea mala idea deducir la marca mirando solo el primer dígito: dentro del cinco convive con Mastercard, y dentro del seis con Discover y UnionPay. La detección fiable se hace con la tabla completa o delegando en la pasarela, que mantiene sus propias listas actualizadas.
¿Cómo se elige un rango para los datos de prueba?
Con la tabla delante, la decisión se reduce a tres preguntas:
- ¿Qué quieres comprobar? Si es la detección de marca y el logotipo correcto, usa un prefijo de cada familia presente en tu mercado. Si es la tolerancia a lo desconocido, usa un prefijo que no pertenezca a ninguna marca y confirma que el formulario no se bloquea.
- ¿Cuántos casos necesitas de verdad? Un representante por marca suele bastar. Los conjuntos enormes se vuelven difíciles de mantener y nadie recuerda por qué estaba cada número.
- ¿Estás probando el formato o el cobro? Para el formato sirve cualquier número con la estructura correcta y el prefijo adecuado. Para el cobro hace falta el catálogo de la pasarela, y ese cambia con el tiempo.
Sea cual sea el rango elegido, el resultado son datos con estructura válida y nunca emitidos: pasan la validación del formulario y no pertenecen a ninguna cuenta. Puedes generarlos en bloque con el generador de tarjetas de prueba eligiendo la marca, o completar un número parcial cuando ya conoces el principio.
Para quien programa
La detección de marca es una tabla que envejece, y tratarla como si fuera fija es la fuente habitual de fallos. Estas precauciones ayudan a que no se convierta en deuda técnica.
- Prefijos, no primeros dígitos. Compara siempre contra la lista completa. Un solo dígito no distingue entre Mastercard y Maestro, ni entre Discover y UnionPay.
- Tabla en un único módulo. Si los prefijos están copiados en tres archivos, la próxima actualización llegará a uno solo.
- Longitudes por marca, con un rango por defecto. Define la longitud esperada de cada marca, pero deja una vía para los números que no encajen en ninguna.
- Matriz de pruebas por marca. Un caso por familia, con sus longitudes y su longitud de código de seguridad, y una prueba aparte para el prefijo desconocido.
- Sin afirmaciones sobre el emisor. La detección sirve para elegir un logotipo y para ajustar el formulario; no para decir al usuario quién le ha emitido la tarjeta.
- Datos sintéticos. Los números de la matriz deben ser estructuras correctas que nadie haya emitido, para que puedan vivir en un repositorio sin riesgo.
Ese último punto es el que más se descuida en proyectos con prisa, y también el que más caro sale cuando el repositorio se comparte fuera del equipo.
Siguientes pasos
Si tu objetivo es cubrir rechazos y autenticación reforzada, el siguiente artículo es el de tarjetas de prueba de la pasarela. Para entender por qué cada bloque tiene la longitud que tiene, lee el artículo sobre el formato del número de tarjeta, y para probar el campo que va al lado del número, el de qué es el CVV. Si lo que necesitas es el conjunto completo de casos de extremo a extremo, la lista de comprobación del formulario de pago los ordena de principio a fin.