Start now →

What Is ISO 8583? The Message Standard Behind Card Payments

By Burak Kılıç · Published April 25, 2026 · 9 min read · Source: Fintech Tag
Payments
What Is ISO 8583? The Message Standard Behind Card Payments

What Is ISO 8583? The Message Standard Behind Card Payments

Burak KılıçBurak Kılıç7 min read·Just now

--

Behind every card payment is a message language built on MTIs, bitmaps, and data elements. That language is ISO 8583.

Press enter or click to view image in full size

From the outside, a card payment looks like a single action.

You tap your card.
You enter your PIN.
You see Approved.
The receipt prints.

But technically, that is not what is happening at all.

Behind that short moment at the terminal, highly structured messages are moving between different systems. ISO 8583 is one of the core standards that defines how those messages are structured and exchanged in card-based financial transaction systems. In ISO’s own catalogue, ISO 8583 is described as the standard for financial transaction card originated messages, covering message structure, format, and data elements for interchange between card acceptor and card issuer systems. ISO also makes clear that transport methods and settlement methods are outside the core scope of the standard. (ISO 8583:2023)

In simple terms, ISO 8583 defines how card transaction systems talk to each other.

That is why it sits so close to the core of many card flows, including ATM transactions, POS purchases, balance inquiries, reversals, and network management messages. In real production environments, though, most switches, processors, and networks do not use a completely pure out of the box version of ISO 8583. They usually implement their own profiles, field rules, and private extensions on top of it. (IR guide; ISO 8583:2023)

Why ISO 8583 matters

In payment systems, the challenge is not just sending data. The real challenge is sending data in a way that both sides interpret exactly the same way.

If one system says this is a purchase, the other side has to understand it as a purchase.
If one side says this is the amount, the other side has to parse the amount from the same field in the same format.
If one side sends a response code, the receiving side has to understand what that code means.

That is exactly the kind of discipline ISO 8583 is meant to provide. It gives participants a shared structure for message types, field presence, field formats, and transaction data representation. (ISO 8583:2023)

Understanding ISO 8583 is not just about learning a format. It is about understanding how card systems communicate.

The basic structure of an ISO 8583 message

At a high level, an ISO 8583 message can be understood in three major parts:

1. MTI(Message Type Indicator)
2. Bitmap
3. Data elements

That structure answers three different questions: what kind of message is this, which fields are present, and what values are actually being sent. This framing is consistent with technical explanations of ISO 8583 message parsing and interchange design. (IR guide)

1. MTI: the identity of the message

The MTI is a 4 digit field that tells you what kind of message you are looking at.

A commonly used interpretation is that the four digits encode the version, the message class, the function, and the origin. In practice, this means the MTI does not just label the message technically. It defines its business meaning as well. (IR guide)

Some common examples are:

0100 → Authorization request
0110 → Authorization response
0200 → Financial request
0210 → Financial response
0420 → Reversal advice
0430 → Reversal response
0800 → Network management request
0810 → Network management response

These message families are not just theory. They are also visible in real implementation documentation. Zone’s card-present integration documentation, for example, explicitly maps these MTIs to authorization, financial, reversal, and network management flows. (Zone message types)

This is why the difference between 0100 and 0200 matters. An authorization message and a financial message are not interchangeable. They belong to different parts of the transaction lifecycle.

2. Bitmap: which fields are present

After the MTI, one of the most important structures in the message is the bitmap.

The bitmap is a bit-level map that tells the receiving system which data elements are present in the message. You can think of it as a compact table of contents.

If bit 2 is set, field 2 is present.
If bit 3 is set, field 3 is present.
If bit 4 is set, field 4 is present.

This allows the parser to avoid blindly reading every possible field. Instead, it looks at the bitmap first and then parses only the fields that are actually present. That is a core part of how ISO 8583 messages stay compact and flexible at the same time. (IR guide)

In most common implementations, you will hear about:

Primary bitmap → fields 1 to 64
Secondary bitmap → fields 65 to 128

Implementation documentation also shows that specific network profiles can encode the bitmap in profile-specific ways. Zone, for example, documents ASCII hex bitmap handling in its own transport format. (Zone message types)

This design is powerful because not every card message contains the same fields. A purchase, a balance inquiry, a reversal, and a network sign-on message all carry different information.

3. Data elements: the actual transaction data

The bitmap only tells you which fields exist in the message.

The actual business data sits inside the data elements, usually called DEs or fields.

Some of the most common examples are:

DE2 → PAN
DE3 → Processing Code
DE4 → Transaction Amount
DE7 → Transmission Date and Time
DE11 → STAN
DE14 → Expiry Date
DE22 → POS Entry Mode
DE37 → Retrieval Reference Number
DE39 → Response Code
DE41 → Terminal ID
DE42 → Merchant ID
DE49 → Currency Code
etc..

Technical guides describe ISO 8583 data elements as the mechanism for carrying transaction-specific values such as amounts, timestamps, institution identifiers, and card-related data. They also note that field usage varies by implementation profile. (IR guide)

One of the most important things to understand here is that ISO 8583 is not self-describing in the way a JSON payload is.

The message does not literally say “processingCode” or “terminalId” in clear text. Both sides must already know that field 3 means Processing Code, field 11 means STAN, field 39 means Response Code, and so on. That is why an ISO 8583 message is never interpreted correctly without the corresponding field specification or profile document. (IR guide)

Fixed-length and variable-length fields

This is one of the first things that makes ISO 8583 feel technical.

Not every field is encoded in the same way.

Some fields are fixed length.
Some fields are variable length.

IR’s guide explains that each data element has a defined content type and length rule, and variable fields are typically preceded by a length indicator. This is where terms like LLVAR and LLLVAR come from. (IR guide)

A simplified way to think about it is this:

n 6 means exactly 6 numeric digits
LLVAR means the field starts with a length indicator, then the value
LLLVAR means the same idea, but with a longer length prefix

This matters because fields like PAN are naturally variable in length, while others are tightly fixed. Once you start parsing messages at the byte level, a single mistake in a variable-length field can shift the interpretation of every field that follows.

That is why ISO 8583 parsing is often a low-level discipline, not just a business mapping exercise. (IR guide)

Is ISO 8583 a protocol or a message standard?

In everyday conversation, many people call it a protocol.

Technically, it is more accurate to call it an interchange message standard.

ISO itself is clear on this point. The standard defines message structure, format, and data elements, but not the transport mechanism used to carry those messages across the network. (ISO 8583:2023)

That distinction matters in real projects because two different questions often get mixed together:

How do I parse an ISO 8583 message?
How does this specific network carry that message on the wire?

Those are not the same question.

For example, Zone documents a transport format where the ISO 8583 application data is sent over TCP/IP with a 2 byte binary length header in front of the payload. That transport framing belongs to the network profile, not to the core standard itself. (Zone message types)

A few fields that matter a lot in practice

Some fields appear again and again in real transaction flows.

DE3, Processing Code, is one of the most important because it helps define the transaction type and processing semantics. (IR guide)

DE4, Transaction Amount, carries the amount associated with the transaction and is one of the most fundamental financial data points in the message. (IR guide)

DE11, STAN, or System Trace Audit Number, is critical for technical tracing and request response correlation. (IR guide)

DE39, Response Code, is where approval or decline semantics are typically surfaced. (IR guide)

DE41 and DE42 identify the terminal and merchant. These become especially important in POS operations, routing, support, and analysis. (IR guide)

The most common MTI families

When learning ISO 8583, it is more useful to understand the main message families than to just memorize codes.

0100 / 0110 → Authorization request / response
0200 / 0210 → Financial request / response
0420 / 0430 → Reversal advice / response
0800 / 0810 → Network management request / response

These families show up both in general technical explanations and in real-world implementation documents. One important takeaway is that ISO 8583 is not only about customer purchase traffic. It also covers technical control traffic such as network management messaging. (IR guide; Zone message types)

How an ISO 8583 message is usually read

If you are reading a raw message, the manual parsing flow usually looks something like this:

1. Separate the transport header or framing
2. Read the MTI
3. Parse the primary bitmap
4. Check whether a secondary bitmap is present
5. Parse the indicated fields in order
6. Read fixed fields by their defined length
7. Read variable fields using their length indicators
8. Translate the parsed values into business meaning

This step-by-step parsing logic is exactly why ISO 8583 debugging can become difficult. If one length indicator is read wrong or one field is mis-encoded, the entire rest of the message may be parsed incorrectly.

Final thought

To understand ISO 8583 is to understand the hidden layer of card payments.

It teaches you that a payment is not really one event.
It is a chain of messages.
Each message has a type.
Each type has a meaning.
Each field has a position, a format, and a purpose.
And a small parsing mistake can become a very real financial problem.

That is why the real technical depth of card payments often begins exactly where the customer experience seems to end.

ISO 8583 is the language of that hidden layer.

Looking for a crypto payment gateway?

NexaPay lets merchants accept card payments and receive crypto. No KYC required. Instant settlement via Visa, Mastercard, Apple Pay, and Google Pay.

Learn More →
This article was originally published on Fintech Tag and is republished here under RSS syndication for informational purposes. All rights and intellectual property remain with the original author. If you are the author and wish to have this article removed, please contact us at [email protected].

NexaPay — Accept Card Payments, Receive Crypto

No KYC · Instant Settlement · Visa, Mastercard, Apple Pay, Google Pay

Get Started →