Ir al contenido
FINORA Academy
SistemaFINORA Emisión (CMS)

FINORA Emisión (CMS) · Conceptos

BIN, rangos y numeración

PilotoImplementado

El BIN es el prefijo que la red le asigna al emisor; dentro de él, el emisor define rangos de números; y en cada rango, un modo de numeración decide quién pone cada número de tarjeta, con la garantía de que ningún número se repite.

La norma ISO/IEC 7812-1 define cómo se arma el número de una tarjeta (el PAN). Tomemos uno ficticio de 16 dígitos del BIN de práctica 99070100:

ParteDígitos del ejemploQué es
MII (primer dígito)9El sector del emisor. El 9 es de asignación nacional; por eso los BIN de práctica empiezan por 9
BIN o IIN (identificador del emisor)99070100Los 8 primeros dígitos, incluido el MII: dicen quién emitió la tarjeta
Número de cuenta individual0012345Lo que el emisor numera dentro de su BIN
Dígito de controlel últimoSe calcula con el algoritmo de Luhn: detecta un dígito mal escrito o dos dígitos cambiados de lugar
  • BIN e IIN son lo mismo: el primero es el nombre de siempre en la banca (Bank Identification Number); el segundo, el de la norma (Issuer Identification Number).
  • Un número de tarjeta tiene como máximo 19 dígitos; el más común es de 16.

La revisión de 2017 de la ISO/IEC 7812-1 llevó el IIN de 6 a 8 dígitos, porque los de 6 se estaban agotando. Desde 2022 hay redes internacionales que solo asignan BIN de 8. Tres consecuencias prácticas:

  1. El número de tarjeta no se alarga: sigue siendo de 16 dígitos. Lo que crece es el prefijo, así que queda menos espacio para numerar dentro de cada BIN.
  2. Un BIN de 6 equivale a 100 BIN de 8: el 990701 contiene del 99070100 al 99070199.
  3. Nadie debería reconocer la tarjeta mirando solo 6 dígitos: la regla es trabajar con el BIN completo y con el rango, nunca con un recorte de 6. La validación de rangos del CMS ya lo hace; el autorizador y algunos registros de tarjeta todavía guardan o comparan 6 dígitos y están en camino de corregirse (ver Cómo lo usa el autorizador).

Un BIN no se usa entero de una sola vez. Se parte en rangos de cuenta: tramos contiguos de números, cada uno con su propósito, su estado y su modo de numeración. Los productos emiten sus tarjetas desde esos rangos.

flowchart LR
  R[Red o esquema] -->|asigna| B["BIN 99070100<br/>8 dígitos"]
  B --> A["Rango DEB-CLASICA<br/>primera mitad del BIN<br/>Activo · propia aleatoria"]
  B --> Q["Rango QA-INTERNO<br/>100 números al final<br/>En prueba · propia secuencial"]
  A --> P1[Débito de práctica]
  A --> P3[Débito de práctica · empresas]
  Q --> P2[Débito de práctica · pruebas]
  P1 --> T[Tarjetas]
  P2 --> T
  P3 --> T
  • Un BIN puede tener varios rangos: físico y virtual, uno por programa o convenio, uno de pruebas.
  • Un número pertenece a un solo rango: dos rangos nunca se solapan, ni siquiera entre BIN distintos. El CMS lo comprueba al guardar y la base de datos lo impide como última defensa.
  • Un rango puede quedar reservado a un producto; si no, lo usan todos los productos de su BIN.
  • El programa es una etiqueta libre del rango para segmentar (un convenio, un cliente corporativo, pruebas).
stateDiagram-v2
  [*] --> Reservado
  Reservado --> EnPrueba
  Reservado --> Activo
  Reservado --> Retirado
  EnPrueba --> Activo
  EnPrueba --> Congelado
  EnPrueba --> Retirado
  Activo --> Congelado
  Activo --> Agotado
  Activo --> EnRetiro
  Congelado --> Activo
  Congelado --> EnRetiro
  Agotado --> Congelado
  Agotado --> EnRetiro
  EnRetiro --> Retirado
  Retirado --> [*]
  EnPrueba: En prueba
  EnRetiro: En retiro
Estado¿Emite tarjetas nuevas?¿Autoriza compras?Para qué
ReservadoNoNoEl rango existe, pero aún no se usa
En pruebaSolo de pruebaSíPruebas internas o de certificación
ActivoSíSíProducción
CongeladoNoSíPausa la emisión sin afectar las tarjetas vivas
AgotadoNoSíLlegó al umbral de parada: el CMS lo marca solo
En retiroNoSíSe deja de emitir y las tarjetas viven hasta vencer
RetiradoNoNoEl autorizador rechaza con código 14, «tarjeta inválida»

El CMS aplica el ciclo de vida en cualquier guardado. Con números ya emitidos, los extremos de un rango no se pueden cambiar y el rango no se borra: se retira.

La capacidad de un rango es la cantidad de números válidos que caben en él. Como el último dígito es el de control, de cada 10 números consecutivos solo uno es válido: un rango de 100 números tiene capacidad 10, y la primera mitad de un BIN de 8 dígitos (50 millones de números) tiene capacidad 5 millones.

La ocupación es la parte de esa capacidad ya usada o reservada. Dos umbrales la vigilan:

UmbralPor defectoQué pasa
Aviso60 %El diálogo de nuevo lote avisa: hay que planificar un rango nuevo
Parada75 %El CMS no numera más en el rango y lo pasa a Agotado. Un pedido que lo superaría se rechaza sin reservar nada

¿Por qué parar al 75 % y no al 100 %? Porque un espacio casi lleno facilita adivinar números válidos y deja sin margen a la emisión. En el ejemplo de las guías, el rango de pruebas de capacidad 10 queda al 70 % después de un lote de 7 tarjetas: pasó el aviso y está a un paso de la parada.

El modo se configura en el rango. Un lote usa el modo de su rango, salvo que el rango permita cambiarlo.

Propia aleatoriaPropia secuencialPor tercero
Quién pone el númeroEl CMSEl CMSLa personalizadora
CómoUna permutación con llave del espacio del rangoEn orden crecienteCon su propio sistema
A favorImprevisible sin la llave; sin colisiones ni reintentos; usa todo el espacio; el lote queda listo al crearloSimple; fácil de seguir en pruebasEl emisor se apoya en la seguridad y el inventario del tercero
En contraLa llave es material crítico: quien la tenga puede deducir el orden de emisiónPredecible: conocida una tarjeta, se adivinan las siguientesDependes del tercero; el número viaja en un archivo y hay que validar cada respuesta
Úsalo paraProducción: es el modo recomendadoSolo rangos de prueba o internosCuando la personalizadora numera por contrato

La aleatoria no «tira dados» y comprueba si el número ya existe: usa FF1, un cifrado que conserva el formato definido por el NIST (SP 800-38G). FF1 toma el contador del rango (0, 1, 2…) y lo convierte, con una llave, en una posición del rango. Como es una permutación, dos contadores distintos siempre dan dos posiciones distintas: no hay colisiones que resolver y, sin la llave, el orden no se puede predecir. Cada rango tiene su propio orden.

Cuatro defensas, una detrás de otra:

  1. Los rangos no se solapan. Un número solo puede salir de un rango.
  2. La permutación no repite. En los modos propios, cada contador da un número distinto, y el contador solo avanza: un número anulado queda quemado y no se vuelve a usar.
  3. El registro de unicidad. Cada número emitido, venga del CMS, de un tercero o de una importación, se anota en un registro con una huella del número (un HMAC con llave propia, no el número). Si llega un número que ya tiene huella, se rechaza.
  4. La validación de la respuesta del tercero. Cada línea se comprueba: dígito de control, longitud, que caiga en un rango del BIN del producto, que la solicitud sea del lote y que el número no esté registrado. Lo que no pasa queda como error de esa línea; el lote queda PARCIAL o FALLIDO.

Todo esto ocurre dentro de una transacción: si algo falla al crear un lote propio, no quedan ni tarjetas, ni números reservados, ni archivo.

Cuando llega una compra, el autorizador tiene que saber de inmediato qué es esa tarjeta. Para eso el CMS publica una vista de solo lectura con una fila por rango: el BIN y su longitud, los extremos y la longitud del número, el propósito, el estado del rango y del BIN, el modo de numeración, la fuente de fondos, la marca, el país, las monedas, si es de uso solo nacional, los canales permitidos (chip, sin contacto, banda, virtual), el producto y el programa. La vista no expone llaves ni números de tarjeta.

sequenceDiagram
  participant C as Comercio
  participant A as Autorizador
  participant V as Vista de rangos del CMS
  C->>A: Compra con la tarjeta 990701•• •••• 1234
  A->>V: ¿En qué rango cae este número? (por rango, no por 6 dígitos)
  V-->>A: Rango DEB-CLASICA · Activo · débito · canales chip y sin contacto
  alt rango Retirado, Reservado o BIN cerrado
    A-->>C: Rechazo, código 14 (tarjeta inválida)
  else rango que autoriza
    A-->>C: Sigue con saldo, límites, PIN y demás reglas
  end
  • La búsqueda es por rango: el número se compara con los extremos de cada rango de su misma longitud. Como los rangos no se solapan, el resultado es único.
  • Emite y autoriza son cosas distintas: un rango Congelado o En retiro ya no emite, pero sus tarjetas siguen comprando hasta vencer.
  • Un rango Retirado o Reservado no autoriza: el rechazo es el código 14. Tráfico a un rango retirado es una señal de alerta: alguien puede estar probando números.