ISO 8583, Estándar para Transacciones Financieras con Mensajes originados en una tarjeta - Especificaciones de los mensajes de intercambio es el estándar de la International Organization for Standardization para sistemas que intercambian transacciones electrónicas realizadas por poseedores de tarjetas de crédito.

Introducción Una transacción basada en una tarjeta usualmente sale desde un dispositivo de compra, tal como un POS o un cajero automático ATM, a través de una red (o redes) hacia un sistema del emisor de la tarjeta para obtener una autorización en función de la cuenta del titular de la tarjeta. La transacción contiene información que se obtiene de la tarjeta (ej. número de cuenta), la terminal (ej. nro. de comercio), la transacción (ej. importe) en conjunto con otra información que se puede generar o agregar dinámicamente por los sistemas intervinientes. El sistema emisor de la tarjeta podrá autorizar o rechazar la transacción, y genera un mensaje de respuesta que debe ser devuelto a la terminal en un tiempo breve.

ISO 8583 define un formato de mensaje y un flujo de comunicación para que diferentes sistemas puedan intercambiar estas transacciones. La mayoría de las operaciones realizadas en ATM usan ISO 8583 en algunos puntos de la cadena de comunicación, así como también las transacciones que realiza un cliente que usa una tarjeta para hacer un pago en un local. En particular, todas las redes de tarjetas basan sus transacciones en el standard ISO 8583.

Las transacciones incluyen compras, extracciones, depósitos, reintegros, reversos, consultas de saldo, pagos y transferencias entre cuentas. ISO 8583 también define mensajes entre sistemas para intercambios seguros de claves, conciliación de totales y otros propósitos administrativos.

Aunque el ISO 8583 define un standard común, no se usa normalmente en forma directa por sistemas o redes. En lugar de eso cada red adapta el standard para su propio uso con campos adaptados a sus necesidades particulares.

La ubicación de los cambios en diferentes versiones del standard varía, por ejemplo, los elementos que definen la moneda (currency elements) de las versiones 1987 y 1993 no se usan más en la versión 2003, lo que hace que la moneda sea un sub-elemento de cualquier elemento monto. LA ISO 8583:2003 todavía tiene que obtener aceptación.

Un mensaje ISO 8583 consta de las siguientes partes:

Message Type Indicator (MTI) - Indicador de Tipo de Mensaje Uno o más bitmaps, indicando qué elementos están presentes en el mensaje Data elements, los campos del mensaje

Message Type Indicator (MTI) - Indicador de Tipo de Mensaje Este es un campo numérico de 4 dígitos que clasifica la función de alto nivel del mensaje. Un MTI incluye la versión ISO 8583, la clase (Message Class), la función (Message Function) y el origen del mensaje (Message Origin), cada uno descrito brevemente en las secciones siguientes

ejemplo :

0110 0xxx ----> version of ISO 8583 (1987 version) x1xx ----> class of the Message (Authorization Message) xx1x ----> function of the Message (Request Response) xxx0 ----> who is began the communication (Acquirer)

ISO 8583 Version Posición 1 del MTI que especifica la versión del estándar ISO 8583 que se está usando en este mensaje

Posición Significado 0xxx ISO 8583-1:1987 version 1xxx ISO 8583-2:1993 version 2xxx ISO 8583-1:2003 version 9xxx Private usage

Message Class - Clase de Mensaje Posición 2 del MTI que especifica el propósito general del mensaje.

Posición Significado Uso x1xx Autorización Determina si existen fondos disponibles, obtiene una aprobación pero no se toma en cuenta para la conciliación, Dual Message System (DMS) system, espera el intercambio de archivos para imputar la cuenta x2xx Financiero Determina si existen fondos disponibles, obtiene una aprobación e imputa directamnente a la cuenta , Single Message System (SMS), no se intercambian archivos x3xx Manejo de Archivos Usado por hot-card, TMS y otros cambios x4xx Reverso Reversa la acción de una autorización previa x5xx Reconciliación Transmite información de cierre x6xx Administrativo Transmite información de falla en los mensajes x7xx cobro de tarifas x8xx gestión de red Usado para intercambio seguro de claves, logon, echo test y otras funciones de red x9xx Reservado por la ISO

Message Function - Función del Mensaje Posición 3 del MTI que especifica la función del mensaje que define como se procesará el mensaje dentro del sistema. Los requerimientos (requests) son mensajes end-to-end (ej. desde comprador hasta autorizador ida y vuelta con timeouts y reversos de ser necesarios), mientras que los avisos (advises) son mensajes point-to-point (ej. desde la terminal al comprador, del comprador a la red, de la red al emisor, con transmisión garantizada para cada punto pero no necesariamente inmediata).

Posición Significado xx0x Petición (Request) xx1x Respuesta a la Petición (Request Response) xx2x Aviso (Advice) xx3x Respuesta al Aviso (Advice Response) xx4x Notificación xx8x Confirmación de respuesta (Response acknowledgment) xx9x No Confirmación (Negative acknowledgment)

Message Origin - Origen del Mensaje Posición 4 del MTI que define la ubicación de la fuente del mensaje dentro de la cadena de pago.

Posición Significado xxx0 Comprador xxx1 Comprador Repetición xxx2 Emisor xxx3 Emisor Repetición xxx4 Otros xxx5 Otros Repetición

Ejemplos Teniendo en mente las cuatro posiciones descritas anteriormente, un MTI describirá completamente qué es lo que un mensaje deberá hacer y cómo será transmitido a través de la red. Desafortunadamente, no todas las implementaciones del ISO 8583 interpretan el significado de un MTI de la misma manera. Como sea, algunos pocos MTI's son estándar:

MTI Significado Uso 0100 Requerimiento de autorización Requerimiento desde un terminal POS para autorizar una compra de un tarjetahabiente 0120 Aviso de Autorización Cuando el POS está roto y Ud. debe firmar un voucher 0121 Aviso de Autorización Repetición Si el aviso se vence por timeout 0200 Requerimiento Financiero del Comprador Requerimiento de fondos, usualmente de un ATM 0210 Respuesta al Requerimiento Financiero del Comprador Respuesta del mensaje de requerimiento de fondos (aprobada o denegada) 0220 Aviso Financiero del Comprador e.g. Checkout de un hotel 0221 Aviso Financiero del Comprador Repetición Si el aviso se vence por timeout 0230 Respuesta al Aviso Financiero del Comprador Respuesta al mensaje 0220 0400 Requerimiento de Reverso del Comprador Reversa una transacción 0420 Aviso de Reverso del Comprador Aviso de que se realizó un reverso 0421 Aviso de Reverso del Comprador Repetición Si el reverso se vence por timeout 0430 Respuesta del Aviso de Reverso del Comprador Respuesta al aviso 0420 del Aviso de Reverso 0800 Requerimiento de Manejo de Red Echo test, logon, log off etc 0820 Aviso de Manejo de Red Keychange

Bitmaps - Mapas de Bits Dentro del ISO 8583, un mapa de bit es un campo o subcampo dentro de un mensaje que indica que otros elementos (campos o subcampos) se encuentran en el mensaje.

Un mensaje contendrá al menos un mapa de bits, llamado el Mapa de Bits Primario que indica que campos (Data Elements) del 1 al 64 están presentes. Puede existir un mapa de bits secundario, generalmente como elemento 1 que indica que campos del 65 al 128 están presentes. De igual forma, un tercer bitmap puede usarse para indicar la presencia o ausencia de los campos del 129 al 192, aunque esos campos casi nunca se usan.

El mapa de bits se puede transmitir como un dato binario de 8 bytes, o como un campo de 16 caracteres hexadecimales 0-9, A-F en el set de caracteres ASCII o EBCDIC.

Un campo está presente cuando el bit correspondiente está en true, ej. el byte 42x en binario es '0100 0010' lo que significa que los campos 2 y 7 están presentes en este mensaje.

Ejemplos

Bitmap Define la presencia de 4210001102C04804 Campos 2, 7, 12, 28, 32, 39, 41, 42, 50, 53, 62 7234054128C28805 Campos 2, 3, 4, 7, 11, 12, 14, 22, 24, 26, 32, 35, 37, 41, 42, 47, 49, 53, 62, 64 ,100 (Bitmap secundario requerido para mostrar la presencia del campo - 100) 8000000000000001 Campos 1, 64 0000000000000003(Bitmap secundario) Campos 127, 128 Explicación del Bitmap (8 bytes, Bitmap Primario = 64 Bit) campo 4210001102C04804 BYTE1 : 0100 0010 = 42x (contando de izquierda, el segundo y el séptimo bit son 1, indicando que los campos 2 y 7 están presentes) BYTE2 : 0001 0000 = 10x (campo 12 está presente) BYTE3 : 0000 0000 = 00x (no hay campos presentes) BYTE4 : 0001 0001 = 11x (campos 28 y 32 están presentes) BYTE5 : 0000 0010 = 02x (campo 39 está presente) BYTE6 : 1100 0000 = C0x (campos 41 y 42 están presentes) BYTE7 : 0100 1000 = 48x (campos 50 y 53 están presentes) BYTE8 : 0000 0100 = 04x (campo 62 esta presente)

nth bit 0 10 20 30 40 50 60 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234 Bitmap 0100001000 0100000000 0000000100 0100000010 1100000001 0010000000 0100

Campos presentes en un mensaje de longitud variable: 2-7-12-28-32-39-41-42-50-53-62

Data Elements - Campos de datos Los Data Elements son los campos individuales que llevan la información sustancial acerca de la transacción. Hay 128 campos definidos en el estándar ISO8583:1987, y 192 en posteriores releases. La revisión de 1993 agregó nuevas definiciones y eliminó algunas, sin embargo dejó el formato del mensaje sin cambios.

Mientras que cada Data Element tiene un significado y formato específico, el estándar también incluye algunos campos de propósito general y algunos especiales para sistemas o países, los cuales varían sustancialmente en su forma y uso de una implementación a otra.

Cada campo se describe en un formato estándar que define el contenido permitido del campo (numérico, binario, etc.) y el largo del campo (variable o fijo), de acuerdo a la siguiente tabla:

Abreviatura Significado a Alfabético, incluyendo los espacios n Solo valores numéricos s Solo caracteres especiales an Alfanumérico as Solo caracteres alfanuméricos y especiales ns Solo caracteres numéricos y especiales ans Caracteres Alfabéticos, numéricos y especiales b Información binaria z Tracks 2 y 3 code set como se define en la ISO 4909 y en ISO 7813.

Además, cada campo puede tener largo fijo o variable. Si es variable, el largo del campo será precedido por un indicador de largo.

Tipo Significado Fixed Largo Fijo LLVAR o (..xx) Donde xx < 100, significa que los dos primeros dígitos indican el largo del campo LLLVAR o (...xxx) Donde xxx < 1000, significa que los tres primeros dígitos indican el largo del campo Un campo LLVAR o LLLVAR puede ser comprimido o ASCII dependiendo del formato del mensaje que puede ser ASCII o Comprimido. Por ejemplo un campo LLVAR puede tener 1 o 2 bytes, si está comprimido el hexa '23x significa que hay 23 elementos, si es ASCII, bytes '32x, '31x significa que hay 21 elementos. Un elemento depende del tipo de dato, si es numérico este estará comprimido, ej. largo 87 se representará por un byte '87x, si es ASCII serán dos bytes '38x y '37x. Los campos LLLVAR usan 2 o 3 bytes (dependiendo del tipo de mensaje) con un '0' adelante si es comprimido.