What ISO 8583 is
ISO 8583 is the international standard that defines the message format used by card-based payment systems. Published by ISO/TC 68 (financial services), it describes how terminals, acquirers, payment networks and issuers exchange authorizations, financial transactions, reversals, file updates, reconciliation and network management between each other. Virtually every card rail — including VISA, Mastercard, American Express, JCB, Discover, UPI as well as most domestic schemes — relies on an ISO 8583 dialect.
The spec does not mandate a transport (it is commonly carried over TCP, X.25 in legacy deployments, or HTTP tunnels) and does not impose a single character encoding. A single byte sequence can therefore be interpreted differently depending on the scheme profile (VISA BASE I / BASE II, Mastercard IPM / MIP) and the acquirer configuration.
Versions of the standard
- ISO 8583:1987
- The original release. Defines the MTI, primary and secondary bitmaps and 128 data elements. This is by far the most deployed version on production payment rails — most VISA and Mastercard traffic is still 1987-compatible.
- ISO 8583:1993
- Restructures some data elements, adds clarifications around file actions (class 3xx) and network management (class 8xx), and tightens the semantics of the repeat indicators. Many schemes adopted cherry-picked 1993 features while keeping the 1987 skeleton.
- ISO 8583:2003
- A structural modernization, notably widening several fields and updating cryptographic references. Rarely used end-to-end in card payments: the industry largely froze on 1987/1993-compatible profiles.
Message anatomy
Every ISO 8583 frame is a concatenation of the following blocks, in this order:
- Optional header — scheme- or carrier-specific (for example, VISA’s BASE I header, or an ISO network-management prefix). Not part of the ISO standard itself.
- MTI — four digits identifying the message. See MTI.
- Primary bitmap — 64 bits (8 bytes binary, or 16 hex characters when encoded as ASCII hex) indicating which of data elements 1 through 64 are present.
- Secondary bitmap — present when bit 1 of the primary bitmap is set; covers data elements 65 through 128.
- Data elements — concatenated in ascending order of their field number. Fixed-length fields consume exactly their declared length; variable-length fields (LLVAR, LLLVAR) start with a 2- or 3-digit length indicator.
Common encodings on the wire include pure binary, BCD (two digits per byte), ASCII and EBCDIC. A single message can mix encodings: for instance, the MTI may be BCD while the PAN (field 2) is ASCII digits.
Message Type Indicator (MTI)
The MTI is a four-digit code sitting at the very start of the ISO 8583 payload (after any carrier header). Each digit encodes one facet of the message.
Position 1 — ISO version
| Value | Meaning |
|---|---|
0 | ISO 8583:1987 (the most deployed version in production) |
1 | ISO 8583:1993 |
2 | ISO 8583:2003 |
3–7 | Reserved by ISO |
8 | Reserved for national use |
9 | Reserved for private use |
Position 2 — Message class
| Value | Meaning |
|---|---|
1xx | Authorization |
2xx | Financial |
3xx | File actions |
4xx | Reversal / chargeback |
5xx | Reconciliation |
6xx | Administrative |
7xx | Fee collection |
8xx | Network management (sign-on, sign-off, echo, key exchange) |
9xx | Reserved by ISO |
Position 3 — Message function
| Value | Meaning |
|---|---|
0 | Request |
1 | Request response |
2 | Advice |
3 | Advice response |
4 | Notification |
5 | Notification acknowledgement |
6 | Instruction |
7 | Instruction acknowledgement |
Position 4 — Transaction origin
| Value | Meaning |
|---|---|
0 | Acquirer |
1 | Acquirer repeat |
2 | Issuer |
3 | Issuer repeat |
4 | Other |
5 | Other repeat |
Common MTI values
| MTI | Name | Description |
|---|---|---|
0100 | Authorization request | Cardholder-initiated request to authorize a transaction (e.g. card-present purchase). |
0110 | Authorization response | Issuer reply to an authorization request, carrying the response code in field 39. |
0120 | Authorization advice | Acquirer informs the issuer of an authorization decision it already took (e.g. stand‑in). |
0130 | Authorization advice response | Issuer acknowledgement of an advice. |
0200 | Financial transaction request | Request combining authorization and posting in a single message (e.g. ATM withdrawal, completed purchase). |
0210 | Financial transaction response | Issuer reply to a 0200. |
0220 | Financial transaction advice | Advice that a financial transaction has occurred. |
0230 | Financial transaction advice response | Issuer acknowledgement of the 0220. |
0400 | Reversal request | Acquirer requests cancellation of a previously approved authorization (e.g. timeout, partial reversal). |
0410 | Reversal response | Issuer acknowledgement of the reversal. |
0420 | Reversal advice | Acquirer advises the issuer of an already-performed reversal. |
0430 | Reversal advice response | Issuer acknowledgement of a 0420. |
0800 | Network management request | Administrative message: sign-on, sign-off, key exchange, echo test. |
0810 | Network management response | Reply to a 0800, carrying the network management information code in field 70. |
0820 | Network management advice | Unsolicited network event (e.g. cutover notification). |
0830 | Network management advice response | Acknowledgement of a 0820. |
Bitmaps
A bitmap is a fixed-width binary map that declares which data elements are present in the message. The primary bitmap is 64 bits wide and covers fields 1 to 64: each bit set to 1 means the corresponding field is present, each bit set to 0 means it is absent.
Bit 1 of the primary bitmap is special: when set, it signals that a secondary bitmap — another 64 bits — follows immediately and covers fields 65 to 128. That is why the Bitmap itself is declared as data element 1 in the field table below.
Example. A primary bitmap of 7234054128C08000 (hex) decodes as binary 0111 0010 0011 0100 0000 0101 0100 0001 0010 1000 1100 0000 1000 0000 0000 0000, which means the following fields are present: 2, 3, 4, 7, 11, 12, 14, 22, 24, 26, 32, 35, 37, 41, 42, 49. Bit 1 is 0, so no secondary bitmap follows.
The ISO standard also defines a tertiary bitmap carried in field 65 when even finer field ranges are needed, but it is extremely rare on card rails.
Data elements (fields 1–128)
The base ISO 8583 field catalog. Individual schemes and acquirers can — and do — override lengths, tighten formats or attach private meaning to the reserved fields (48, 62, 63, 120–127). Always consult the scheme-specific specification before relying on a wire definition in production.
| # | Name | Format | Length | Notes |
|---|---|---|---|---|
1 | Bitmap | b | 64 | Secondary bitmap indicator. Present when bit 1 of the primary bitmap is set. |
2 | Primary account number (PAN) | n | LLVAR ..19 | |
3 | Processing code | n | 6 | |
4 | Amount, transaction | n | 12 | |
5 | Amount, settlement | n | 12 | |
6 | Amount, cardholder billing | n | 12 | |
7 | Transmission date & time | n | 10 | MMDDhhmmss, UTC. |
8 | Amount, cardholder billing fee | n | 8 | |
9 | Conversion rate, settlement | n | 8 | |
10 | Conversion rate, cardholder billing | n | 8 | |
11 | System trace audit number (STAN) | n | 6 | |
12 | Time, local transaction | n | 6 | hhmmss. |
13 | Date, local transaction | n | 4 | MMDD. |
14 | Date, expiration | n | 4 | YYMM. |
15 | Date, settlement | n | 4 | |
16 | Date, conversion | n | 4 | |
17 | Date, capture | n | 4 | |
18 | Merchant type / merchant category code (MCC) | n | 4 | |
19 | Acquiring institution country code | n | 3 | |
20 | PAN extended country code | n | 3 | |
21 | Forwarding institution country code | n | 3 | |
22 | Point-of-service entry mode | n | 3 | |
23 | Card sequence number (PAN sequence) | n | 3 | |
24 | Network international identifier (NII) / function code | n | 3 | |
25 | Point-of-service condition code | n | 2 | |
26 | Point-of-service capture code | n | 2 | |
27 | Authorizing identification response length | n | 1 | |
28 | Amount, transaction fee | x+n | 9 | Signed, 'C' (credit) or 'D' (debit) + 8 digits. |
29 | Amount, settlement fee | x+n | 9 | |
30 | Amount, transaction processing fee | x+n | 9 | |
31 | Amount, settlement processing fee | x+n | 9 | |
32 | Acquiring institution identification code | n | LLVAR ..11 | |
33 | Forwarding institution identification code | n | LLVAR ..11 | |
34 | Primary account number, extended | ns | LLVAR ..28 | |
35 | Track 2 data | z | LLVAR ..37 | |
36 | Track 3 data | n | LLLVAR ..104 | |
37 | Retrieval reference number | an | 12 | |
38 | Authorization identification response | an | 6 | |
39 | Response code | an | 2 | |
40 | Service restriction code | an | 3 | |
41 | Card acceptor terminal identification | ans | 8 | |
42 | Card acceptor identification code | ans | 15 | |
43 | Card acceptor name/location | ans | 40 | Name 1–23, city 24–36, country 37–38 (ISO‑3166‑1 alpha‑2). |
44 | Additional response data | an | LLVAR ..25 | |
45 | Track 1 data | an | LLVAR ..76 | |
46 | Additional data — ISO | an | LLLVAR ..999 | |
47 | Additional data — national | an | LLLVAR ..999 | |
48 | Additional data — private | an | LLLVAR ..999 | |
49 | Currency code, transaction | a/n | 3 | ISO‑4217 numeric. |
50 | Currency code, settlement | a/n | 3 | |
51 | Currency code, cardholder billing | a/n | 3 | |
52 | PIN data | b | 64 | |
53 | Security-related control information | n | 16 | |
54 | Additional amounts | an | LLLVAR ..120 | |
55 | ICC data — EMV TLV (reserved for ISO) | b | LLLVAR ..999 | EMV tags (chip transactions). |
56 | Reserved for ISO | n | LLLVAR ..999 | |
57 | Reserved for national use | ans | LLLVAR ..999 | |
58 | Reserved for national use | ans | LLLVAR ..999 | |
59 | Reserved for national use | ans | LLLVAR ..999 | |
60 | Reserved for national (advice reason, POS data, etc.) | ans | LLLVAR ..999 | |
61 | Reserved for national (POS data) | ans | LLLVAR ..999 | |
62 | Reserved for private use | ans | LLLVAR ..999 | |
63 | Reserved for private use | ans | LLLVAR ..999 | |
64 | Message authentication code (MAC) | b | 64 | |
65 | Extended bitmap indicator (tertiary bitmap) | b | 1 | Rarely used; present when bit 65 of the secondary bitmap is set. |
66 | Settlement code | n | 1 | |
67 | Extended payment code | n | 2 | |
68 | Receiving institution country code | n | 3 | |
69 | Settlement institution country code | n | 3 | |
70 | Network management information code | n | 3 | |
71 | Message number | n | 4 | |
72 | Message number, last | n | 4 | |
73 | Date, action | n | 6 | YYMMDD. |
74 | Credits, number | n | 10 | |
75 | Credits, reversal number | n | 10 | |
76 | Debits, number | n | 10 | |
77 | Debits, reversal number | n | 10 | |
78 | Transfer number | n | 10 | |
79 | Transfer, reversal number | n | 10 | |
80 | Inquiries number | n | 10 | |
81 | Authorizations, number | n | 10 | |
82 | Credits, processing fee amount | n | 12 | |
83 | Credits, transaction fee amount | n | 12 | |
84 | Debits, processing fee amount | n | 12 | |
85 | Debits, transaction fee amount | n | 12 | |
86 | Credits, amount | n | 16 | |
87 | Credits, reversal amount | n | 16 | |
88 | Debits, amount | n | 16 | |
89 | Debits, reversal amount | n | 16 | |
90 | Original data elements | n | 42 | |
91 | File update code | an | 1 | |
92 | File security code | n | 2 | |
93 | Response indicator | n | 5 | |
94 | Service indicator | an | 7 | |
95 | Replacement amounts | an | 42 | |
96 | Message security code | b | 64 | |
97 | Amount, net settlement | x+n | 17 | |
98 | Payee | ans | 25 | |
99 | Settlement institution identification code | n | LLVAR ..11 | |
100 | Receiving institution identification code | n | LLVAR ..11 | |
101 | File name | ans | LLVAR ..17 | |
102 | Account identification 1 | ans | LLVAR ..28 | |
103 | Account identification 2 | ans | LLVAR ..28 | |
104 | Transaction description | ans | LLLVAR ..100 | |
105 | Reserved for ISO use | ans | LLLVAR ..999 | |
106 | Reserved for ISO use | ans | LLLVAR ..999 | |
107 | Reserved for ISO use | ans | LLLVAR ..999 | |
108 | Reserved for ISO use | ans | LLLVAR ..999 | |
109 | Reserved for ISO use | ans | LLLVAR ..999 | |
110 | Reserved for ISO use | ans | LLLVAR ..999 | |
111 | Reserved for ISO use | ans | LLLVAR ..999 | |
112 | Reserved for national use | ans | LLLVAR ..999 | |
113 | Reserved for national use | ans | LLLVAR ..999 | |
114 | Reserved for national use | ans | LLLVAR ..999 | |
115 | Reserved for national use | ans | LLLVAR ..999 | |
116 | Reserved for national use | ans | LLLVAR ..999 | |
117 | Reserved for national use | ans | LLLVAR ..999 | |
118 | Reserved for national use | ans | LLLVAR ..999 | |
119 | Reserved for national use | ans | LLLVAR ..999 | |
120 | Reserved for private use | ans | LLLVAR ..999 | |
121 | Reserved for private use | ans | LLLVAR ..999 | |
122 | Reserved for private use | ans | LLLVAR ..999 | |
123 | Reserved for private use | ans | LLLVAR ..999 | |
124 | Reserved for private use | ans | LLLVAR ..999 | |
125 | Reserved for private use | ans | LLLVAR ..999 | |
126 | Reserved for private use | ans | LLLVAR ..999 | |
127 | Reserved for private use | ans | LLLVAR ..999 | |
128 | Message authentication code (MAC) | b | 64 |
Format abbreviations
| Code | Meaning |
|---|---|
a | Alphabetic characters (A–Z, a–z). |
n | Numeric digits (0–9). Often BCD‑encoded on the wire. |
s | Special characters (punctuation, separators). |
an | Alphanumeric (letters + digits). |
as | Alphabetic + special. |
ns | Numeric + special. |
ans | Alphanumeric + special — the most permissive text format. |
b | Binary data. Lengths are expressed in bits. |
z | Magnetic stripe track data (with field separator 0xD for Track 2). |
x+n | Signed amount: one character 'C' (credit) or 'D' (debit) followed by n digits. |
LLVAR | Variable length. The first 2 digits hold the length of the remaining value (e.g. 'LLVAR ..19' → up to 19 bytes). |
LLLVAR | Variable length with a 3‑digit length prefix (up to 999 bytes of value). |
VISA vs Mastercard specifics
Both VISA and Mastercard inherit the ISO 8583 skeleton but layer their own semantics on top of it.
- VISA runs the BASE I (authorization) and BASE II (clearing) profiles over VIP. Private fields — especially 48, 62 and 63 — carry VISA-proprietary subfields. Lengths for certain fields are tightened (for example field 22 — POS entry mode — and field 44 — additional response data).
- Mastercard uses the IPM (Integrated Product Message) format for clearing and MIP for the network transport layer. Mastercard makes heavy use of PDS (Private Data Subelements) packed inside fields 48, 124 and 127, each with its own tag/length/value encoding.
Because the two schemes disagree on the format of several private and national fields, the same raw bytes can decode cleanly under one profile and break alignment under the other. That is exactly what ISOParser highlights: paste your message into the parser and compare the VISA and Mastercard interpretations side by side.
References
- Wikipedia — ISO 8583 (general overview, field catalog).
- ISO catalogue — ISO 8583-1:2003 (official, paid).