ISO 8583 Parser
Free · Explainer · ~8 min read · Updated 2026-08-25

ISO 8583 vs ISO 20022: What Actually Changed for Cards

These two get compared as if one is replacing the other. They are not the same kind of thing: ISO 8583 is a message format for card transactions, and ISO 20022 is a method for defining message formats, plus the dictionary those definitions draw from. The cross-border cutover that finished in November 2025 was real, and it did not touch the acquirer-to-issuer authorization path that most card work lives in.
On this page: Same kind of standard? · What a field looks like · Did it replace 8583 for cards? · What did move · Where each one fails

Are ISO 8583 and ISO 20022 the same kind of standard?

No, and the comparison goes wrong at that first step. ISO 8583 defines one message format: an MTI, one or two bitmaps, and up to 128 numbered data elements, used for card-originated transactions. You can hold the whole spec in your head.

ISO 20022 does not define a message. It defines a data dictionary and a modelling method, held in a central repository, from which many separate message sets are derived. Those sets are what you actually implement, and they are named by family: pacs for interbank payments, pain for customer-to-bank instructions, camt for cash reporting, and for cards, caaa, cain and catm.

So "migrating from ISO 8583 to ISO 20022" is not one change. It is a different message set per link, and each link migrates or does not migrate on its own schedule.

ISO 8583 is not one thing either, and the split runs inside a single scheme. The first digit of the MTI names the edition, and Mastercard's own specifications use both: authorization messages are the 1987 form, which is why they start with 00100, 0200 — while clearing messages are the 1993 form and start with 1, such as 1240. Same scheme, same transaction, two editions of the standard, and the field dictionaries differ between them. That crosswalk is in authorization versus clearing.

What does one field look like in each?

ISO 8583 identifies a field by its position. The bitmap says which of the 128 elements are present, and the parser walks them in order. Nothing in the message says what a field means — you need the spec, and often the scheme's own variant of it, which is why two implementations of "the same" standard rarely interoperate without a mapping document.

ISO 20022 identifies a field by its name, in XML, nested in a structure. The message carries its own labels, so a reader who has never seen the spec can still tell what a value is meant to be.

The same thingISO 8583ISO 20022 (card families)
Card numberDE2<PAN> inside the card data block
Amount and currencyDE4 plus DE49, as separate elementsone amount element carrying the currency as an attribute
Response codeDE39a response block with a result and a reason
Entry modeDE22named attributes on the card-reading structure
Message typeMTI, four digitsthe message identifier itself, for example caaa.002

The size difference follows from that. A compact authorization in ISO 8583 is a few hundred bytes. The same content in XML with its element names is several times that. On a link that carries thousands of authorizations a second, that ratio is a design constraint rather than a detail.

Did ISO 20022 replace ISO 8583 for card authorization?

Not on the acquirer-to-issuer path, which is where most card engineering happens. Visa, Mastercard and UnionPay authorization links run their own ISO 8583 dialects, and they still do.

ISO 20022 does have card message families, and they are in production somewhere:

Those identifiers are not ours to define — the full catalogue of ISO 20022 message definitions is published by the registration authority at iso20022.org, and the card families are listed there alongside the payment ones. If a claim on this page about a message identifier matters to you, that is where to check it.

The nexo standards, used mainly in Europe, are built on these. So a European acceptor-to-acquirer link may well be ISO 20022 while the acquirer-to-issuer hop behind it is still ISO 8583. Both statements about the same transaction are true at once, which is where a lot of the confusion in this comparison comes from.

What did actually move?

High-value and cross-border payments, not cards. On 22 November 2025 the coexistence period for cross-border payments over Swift ended, and the MT families used for that traffic stopped meeting CBPR+ requirements:

WasIsCarries
MT103pacs.008customer credit transfer
MT202 / MT205pacs.009financial institution transfer
MT940 / MT941 / MT942camt.053 / camt.052 / camt.054cash reporting

There is a further date already set. From 14 November 2026, CBPR+ messages carrying a fully unstructured postal address are rejected, with no contingency path. If your institution touches wires at all, that one has a deadline attached to it in a way the card side does not.

Where does each one fail?

Both formats have failure modes that show up in production rather than in the spec, and they are not the same failures.

Which of your links does this touch?

That depends on which links you own, and the answer is different for each. The facts that decide it:

Nothing here says which of those you should care about. It says where each standard is in force, so you can check your own diagram against it.

→ Parse an ISO 8583 message

Read next