# ISO 8583

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
### 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)
| n$^{th}$ bit | 0 | 10 | 20 | 30 | 40 | 50 | 60 |
| n$^{th}$ bit | 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. |
ISO-Defined Data Elements :
| Data Element | Type | Usage |
| 1 | b 64 | Bit Map Extended |
| 2 | n ..19 | Primary account number (PAN) |
| 3 | n 6 | Processing code |
| 4 | n 12 | Amount, transaction |
| 5 | n 12 | Amount, Settlement |
| 6 | n 12 | Amount, cardholder billing |
| 7 | n 10 | Transmission date & time |
| 8 | n 8 | Amount, Cardholder billing fee |
| 9 | n 8 | Conversion rate, Settlement |
| 10 | n 8 | Conversion rate, cardholder billing |
| 11 | n 6 | Systems trace audit number |
| 12 | n 6 | Time, Local transaction |
| 13 | n 4 | Date, Local transaction (MMdd) |
| 14 | n 4 | Date, Expiration |
| 15 | n 4 | Date, Settlement |
| 16 | n 4 | Date, conversion |
| 17 | n 4 | Date, capture |
| 18 | n 4 | Merchant type |
| 19 | n 3 | Acquiring institution country code |
| 20 | n 3 | PAN Extended, country code |
| 21 | n 3 | Forwarding institution. country code |
| 22 | n 3 | Point of service entry mode |
| 23 | n 3 | Application PAN number |
| 24 | n 3 | Function code(ISO 8583:1993)/Network International identifier (?) |
| 25 | n 2 | Point of service condition code |
| 26 | n 2 | Point of service capture code |
| 27 | n 1 | Authorizing identification response length |
| 28 | n 8 | Amount, transaction fee |
| 29 | n 8 | Amount. settlement fee |
| 30 | n 8 | Amount, transaction processing fee |
| 31 | n 8 | Amount, settlement processing fee |
| 32 | n ..11 | Acquiring institution identification code |
| 33 | n ..11 | Forwarding institution identification code |
| 34 | n ..28 | Primary account number, extended |
| 35 | z ..37 | Track 2 data |
| 36 | z ..104 | Track 3 data |
| 37 | an 12 | Retrieval reference number |
| 38 | an 6 | Authorization identification response |
| 39 | an 2 | Response code |
| 40 | an 3 | Service restriction code |
| 41 | ans 8 | Card acceptor terminal identification |
| 42 | ans 15 | Card acceptor identification code |
| 43 | ans 40 | Card acceptor name/location |
| 44 | an ..25 | Additional response data |
| 45 | an ..76 | Track 1 Data |
| 46 | an ...999 | Additional data - ISO |
| 47 | an ...999 | Additional data - National |
| 48 | an ...999 | Additional data - Private |
| 49 | a 3 | Currency code, transaction |
| 50 | an 3 | Currency code, settlement |
| 51 | a 3 | Currency code, cardholder billing |
| 52 | b 16 | Personal Identification number data |
| 53 | n 18 | Security related control information |
| 54 | an ..120 | Additional amounts |
| 55 | ans ...999 | Reserved ISO |
| 56 | ans ...999 | Reserved ISO |
| 57 | ans ...999 | Reserved National |
| 58 | ans ...999 | Reserved National |
| 59 | ans ...999 | Reserved for national use |
| 60 | an ..7 | Advice/reason code (private reserved) |
| 61 | ans ...999 | Reserved Private |
| 62 | ans ...999 | Reserved Private |
| 63 | ans ...999 | Reserved Private |
| 64 | b 16 | Message authentication code (MAC) |
| 65 | b 16 | Bit map, tertiary |
| 66 | n 1 | Settlement code |
| 67 | n 2 | Extended payment code |
| 68 | n 3 | Receiving institution country code |
| 69 | n 3 | Settlement institution county code |
| 70 | n 3 | Network management Information code |
| 71 | n 4 | Message number |
| 72 | ans ...999 | Data record (ISO 8583:1993)/n 4 Message number, last(?) |
| 73 | n 6 | Date, Action |
| 74 | n 10 | Credits, number |
| 75 | n 10 | Credits, reversal number |
| 76 | n 10 | Debits, number |
| 77 | n 10 | Debits, reversal number |
| 78 | n 10 | Transfer number |
| 79 | n 10 | Transfer, reversal number |
| 80 | n 10 | Inquiries number |
| 81 | n 10 | Authorizations, number |
| 82 | n 12 | Credits, processing fee amount |
| 83 | n 12 | Credits, transaction fee amount |
| 84 | n 12 | Debits, processing fee amount |
| 85 | n 12 | Debits, transaction fee amount |
| 86 | n 15 | Credits, amount |
| 87 | n 15 | Credits, reversal amount |
| 88 | n 15 | Debits, amount |
| 89 | n 15 | Debits, reversal amount |
| 90 | n 42 | Original data elements |
| 91 | an 1 | File update code |
| 92 | n 2 | File security code |
| 93 | n 5 | Response indicator |
| 94 | an 7 | Service indicator |
| 95 | an 42 | Replacement amounts |
| 96 | an 8 | Message security code |
| 97 | n 16 | Amount, net settlement |
| 98 | ans 25 | Payee |
| 99 | n ..11 | Settlement institution identification code |
| 100 | n ..11 | Receiving institution identification code |
| 101 | ans 17 | File name |
| 102 | ans ..28 | Account identification 1 |
| 103 | ans ..28 | Account identification 2 |
| 104 | ans ..100 | Transaction description |
| 105 | ans ...999 | Reserved for ISO use |
| 106 | ans ...999 | Reserved for ISO use |
| 107 | ans ...999 | Reserved for ISO use |
| 108 | ans ...999 | Reserved for ISO use |
| 109 | ans ...999 | Reserved for ISO use |
| 110 | ans ...999 | Reserved for ISO use |
| 111 | ans ...999 | Reserved for ISO use |
| 112 | ans ...999 | Reserved for national use |
| 113 | n ..11 | Authorizing agent institution id code |
| 114 | ans ...999 | Reserved for national use |
| 115 | ans ...999 | Reserved for national use |
| 116 | ans ...999 | Reserved for national use |
| 117 | ans ...999 | Reserved for national use |
| 118 | ans ...999 | Reserved for national use |
| 119 | ans ...999 | Reserved for national use |
| 120 | ans ...999 | Reserved for private use |
| 121 | ans ...999 | Reserved for private use |
| 122 | ans ...999 | Reserved for private use |
| 123 | ans ...999 | Reserved for private use |
| 124 | ans ..255 | Info Text |
| 125 | ans ..50 | Network management information |
| 126 | ans ..6 | Issuer trace id |
| 127 | ans ...999 | Reserved for private use |
| 128 | b 16 | Message Authentication code |

### Ejemplos

| Definición de Campo | Significado |
| n6 | Campo de largo fijo con 6 dígitos |
| n.6 | Campo LVAR numérico con hasta 6 dígito de largo |
| a..11 | Campo LLVAR alfanumérico con hasta 11 caracteres de largo |
| b...999 | Campo LLLVAR binario de hasta 999 bytes de largo |