ISO 20022 explained for people who have to operate it
Published 19 August 2026
9 min read
iso 20022
ISO 20022 is described as a messaging standard, which is true and unhelpful. Operationally it is a change in what a payment message is allowed to say about itself, and that change is what decides whether your reconciliation matches automatically or lands in a queue.
What ISO 20022 actually is
ISO 20022 is a standard for building financial messages. It defines a shared data dictionary, a modelling method and an XML syntax, and market infrastructures then publish usage guidelines that say which of those fields are mandatory in their world. That last part matters more than the standard itself: the same message type looks different under CBPR+ than under a domestic scheme, because the usage guideline constrains it differently.
The practical contrast is with SWIFT MT, where a payment carried a limited set of tagged fields and a narrative field that people used for everything the tags could not express. Anyone who has parsed field 86 to find an invoice number knows the cost of that design.
This console matches the first rows a side. It left out
statement
and
ledger
.
Nothing in the rows left out is counted below.
To run a full file,
.
8 exact ·
1 under tolerance ·
24 rows
Break
Amount
Difference and suggested action
Classification
BRK-001
Aged 0d
$219,105.40
2026-09-03 · both sides
REF//FX/SPOT/7741 · INTERBANK FX DESK
Amount differs by 164.80 USD (0.075%)
Re-price the ledger leg on the correspondent rate source for the value date and post 164.80 USD to FX variance.
FX RATE SOURCE
→ Treasury Ops
BRK-002
Aged 4d
$187,650.00
2026-08-30 · ledger
PAY/90012/R · KESTREL LOGISTICS
Posted in the ledger, not on the statement
Trace the posting to its instruction, repair the reference and re-present it, or reverse it if the payment was returned.
MISSING REFERENCE
→ Payments Ops
BRK-003
Aged 0d
$123,760.00
2026-09-03 · both sides
REF//TRF/554121 · HALCYON TRADING
Statement 61,880.00 vs ledger 123,760.00 (50% short)
Split the ledger posting and match the settled leg; leave the residual 61,880.00 USD open against the same reference.
PARTIAL SETTLEMENT
→ Payments Ops
BRK-004
Aged 0d
$3,410.00
2026-09-03 · statement
REF//CHG/Q3FEES · CORRESPONDENT CHARGES
On the statement, nothing in the ledger
Post 3,410.00 USD to the charges account for the period and add it to the standing accrual so it stops surfacing as a break.
FEE NOT ACCRUED
→ Finance
·
·
Audit note:
→
Everything matched under these tolerances.
Tighten the date or amount tolerance to see the breaks it was absorbing.
Correspondent statement
camt.053 · NOSTRO USD
Value date
Reference
Amount
Counterparty
2026-09-02
REF//NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
REF//INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
REF//TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
REF//FX/SPOT/7741
218,940.60
INTERBANK FX DESK
2026-09-01
REF//SEPA/33421
74,220.00
LINDQVIST AS
2026-09-03
REF//CHG/Q3FEES
3,410.00
CORRESPONDENT CHARGES
2026-09-03
REF//TRF/554121
61,880.00
HALCYON TRADING
2026-09-02
REF//PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-02
REF//INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
REF//TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
REF//PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
REF//INV/88260
132,640.75
ORION TEXTILES
Internal nostro ledger
Core banking export
Value date
Reference
Amount
Counterparty
2026-09-02
NONREF/2026090301
1,284,500.00
ACME MANUFACTURING
2026-09-02
INV/88231
96,400.00
NORDVEST SHIPPING
2026-09-03
TRF/554120
452,180.25
HALCYON TRADING
2026-09-03
FX/SPOT/7741
219,105.40
INTERBANK FX DESK
2026-08-31
SEPA/33421
74,220.00
LINDQVIST AS
2026-09-02
PAY/90012
187,650.00
KESTREL LOGISTICS
2026-09-03
TRF/554121
123,760.00
HALCYON TRADING
2026-08-30
PAY/90012/R
187,650.00
KESTREL LOGISTICS
2026-09-02
INV/88245
242,015.00
BRIGHTLINE FOODS
2026-09-03
TRF/554133
18,905.50
MERIDIAN PARTS
2026-09-01
PAY/90044
505,300.00
VANTAGE ENERGY
2026-09-03
INV/88260
132,640.75
ORION TEXTILES
Matched pairs are tinted on both sides. Breaks carry the brass left rule and appear in the worklist.
Sample data only. Matching runs in your browser; classification is written by the model when you press Run.Matching done in your browser. Writing classifications…Classifications written by the model on this run. Decision support, not a compliance determination.The classification model was unavailable, so the built-in rule classifier wrote these. Same matching, same numbers.This console classifies up to 12 runs a minute and this run went over, so the built-in rule classifier wrote these. Same matching, same numbers. Wait a minute for the model, or
.
The model wrote the first 8 classifications.
The rule classifier wrote the rest ().
Message identifiers look opaque and are not. The first four letters are the business area, the four digits are the message, and the two pairs after that are variant and version.
Family
Meaning
Examples you will meet
pain
Payment initiation, customer to bank
pain.001 credit transfer initiation, pain.002 status report
For reconciliation, three of these carry the weight: pacs.008 is the instruction between banks, camt.053 is the end of day statement, and camt.054 is the intraday notification. Everything else is context around those three, and reading them natively is what ISO 20022 reconciliation automation means in practice.
The three changes that matter operationally
1. Structured parties
Debtor and creditor are structured objects with name, postal address components and identification, rather than four lines of free text. This is the field that drives repair rates: a name and address jammed into one line is a repair waiting to happen when it crosses a border or hits a screening system that expects components.
2. Structured remittance information
Remittance data can carry referenced document types, numbers, amounts and dates as fields. That is what lets a corporate customer's invoice reference arrive intact and lets your matching engine treat it as a key instead of hunting for it inside a string.
3. An end to end identifier that survives
The end to end id is set by the originator and is intended to travel the whole chain unchanged. When it does, matching an instruction to a statement entry is an exact key match. When an intermediary drops or rewrites it, you are back to matching on amount, date and party, which is where tolerance rules and manual investigation begin.
MT: parse the narrative, guess which token is the reference, match on amount and date, tolerate the rest.
MX: match on the end to end id as an exact key, use the structured invoice reference to confirm, and treat a mismatch as a real exception.
The difference is not elegance. It is how many items a human has to look at.
Where the value leaks away
01Flattening on ingestion. A downstream system reads the XML and writes a flat record with a concatenated narrative, because that is what it always read. All the structure paid for is gone at the first hop inside your own bank.
02Truncation on a leg. One intermediary on an MT leg during coexistence, and fields are lost for everyone downstream. Structure only survives if every hop preserves it.
03Unused fields. Purpose codes, category purpose and structured remittance arrive populated and nothing in the process uses them, so routing and classification stay manual.
04Local overrides. A usage guideline permits something the sending bank fills differently, and the receiving process treats the variation as a data quality problem rather than configuring for it.
The coexistence hangover
SWIFT ran MT and MX in parallel for cross border payments from March 2023, and the coexistence window for those categories closed in November 2025. That does not mean MT disappeared from your operation. Domestic schemes, older correspondents, internal interfaces and archived data all keep MT alive for years, and a bank that built its reconciliation to read only MX will find gaps exactly where the reconciliation matters most. Read both. Reconcile across both. Treat the format as an attribute of the source, not as a project phase.
A short checklist for operations teams
Can your reconciliation read camt.053 as XML, or does something flatten it first?
Does the end to end id survive from instruction to statement in your own systems?
Are repairs measured by which field caused them?
Is structured remittance used by matching, or only stored?
Can you still read MT for the correspondents and schemes that still send it?
What a pacs.008 actually contains
A credit transfer between banks is not a long message, and reading one once removes most of the mystery. There is a group header with a message identifier, a creation timestamp, the number of transactions and the settlement method. Then, per transaction, a payment identification block carrying the instruction id, the end to end id and the transaction id, an interbank settlement amount with its currency and value date, a charge bearer code, the agents in the chain, the debtor and creditor as structured parties with their accounts, and remittance information that may be unstructured text or a structured object.
Three of those decide whether your reconciliation is automatic. The end to end id is the key that should survive from instruction to statement. The interbank settlement amount and date are what a tolerance is measured against. The charge bearer code tells you in advance whether the amount that arrives will be the amount that was sent, which is the difference between a fee break you predicted and a fee break you investigated.
Element
What it is for
What goes wrong
EndToEndId
The originator reference intended to travel unchanged
Rewritten or replaced by an intermediary, so the exact match is lost
TxId
The sending bank reference for the transaction
Reused across a replayed batch, which looks like a duplicate
IntrBkSttlmAmt and Dt
The settled amount and value date
Deducted charges make the arriving amount smaller than the instructed one
ChrgBr
Who pays the charges: debtor, creditor or shared
Ignored on ingestion, so fee differences arrive as surprises
RmtInf
Invoice or contract references
Sent as free text when a structured block was available
Dbtr and Cdtr
Structured party name, address, identification
Flattened into one line, which is where repairs come from
Swipe the table sideways to read every column.
Field names follow the ISO 20022 message definitions. Check the usage guideline for your corridor for what is mandatory in your case.
Reading a camt.053 without becoming a parser expert
A statement message has a shape that mirrors what a statement is. At the top there is a statement identifier, the account, the reporting period and opening and closing balances. Underneath there are entries, and an entry is one line on the account: an amount, a credit or debit indicator, a booking date, a value date and a status of booked or pending. Inside each entry there are entry details, and inside those, transaction details that carry the references, the parties and any charges.
That nesting is the part that catches people out. A single entry can contain several transactions, which is what a batched posting looks like. If your ingestion reads only the entry level, a batch of forty payments arrives as one amount and forty of your ledger items have nothing to match against. Reading down to the transaction level is not an optimisation, it is the difference between a reconciliation that works and one that generates its own break population.
A quick test on your own data: take one camt.053 with a batched entry and count how many items your reconciliation sees. If the answer is one, the ingestion is reading the summary and not the detail.
Repair rate is the number that justifies the work
A repair is a payment that stops because a field is missing, malformed or ambiguous, and a person fixes it before it can continue. Repairs are expensive in the obvious way, and expensive in a second way that rarely gets counted: a repaired payment usually arrives with a rewritten reference, which means it also becomes a reconciliation break on the far side.
Structured data reduces repairs when it is used. A creditor name and address arriving as components does not need a human to decide where the street ends and the city begins. A purpose code arriving populated lets routing happen without reading a narrative. The measurement that makes this actionable is simple and almost never done: record which field caused each repair, and count by field for a month. The list is always shorter than expected, and it is usually dominated by two or three causes that are cheap to fix once identified.
The traps are inside your own bank
Most of the disappointment with ISO 20022 comes from internal architecture rather than from correspondents. The message arrives correct at the gateway and then travels through systems that were built when a payment was a flat record.
01The canonical internal format. Many banks translate everything to one internal representation on arrival. If that representation predates ISO 20022, it is the ceiling on every downstream benefit, no matter what the network delivers.
02The archive question. Investigations reach back months. If the structured original is discarded after translation, the investigation works from the flattened copy and the structure was never really there.
03The reconciliation feed. Reconciliation is often fed from a downstream system rather than from the message, which means it sees the flattened version even when everything upstream was correct.
04Reference rewriting. Internal systems that generate their own references and overwrite the originator identifier destroy the exact match that the standard was supposed to provide.
What good looks like, concretely
The reconciliation reads the statement message itself, down to transaction level, rather than a flattened extract of it.
The end to end id is carried unchanged through your own systems and is present on both sides of the match.
Charge bearer is used to predict fee differences instead of discovering them.
Repairs are counted by causing field, and the top causes have named owners.
MT parsing is still supported for the sources that still send it, without anybody calling that a failure.
A vocabulary note that saves arguments
People use MX and ISO 20022 interchangeably, and it is worth being precise once. ISO 20022 is the standard. MX is the SWIFT term for messages built from it, as opposed to MT for the older FIN messages. CBPR+ is a usage guideline that constrains ISO 20022 for cross border payments and reporting between banks. A domestic scheme has its own guideline. So a message can be valid ISO 20022 and still be wrong for your corridor, which is why a reconciliation should hold rules per source rather than one global assumption.
If the answer to the first question is no, everything below it is theoretical. That is the practical starting point, and it is why ISO 20022 payment automation and payment reconciliation are usually the same project.
Get started
Put your first reconciliation on rails
Create an account, and we will email you how onboarding works and what a first source connection looks like. The Reconciliation Break Resolver is open to try right now, on sample data, without an account.
Creating an account with the button above needs no card; paid plans are paid on our payment processor's secure page. Sample data only in the demo. BankAutomation is operations software, not a regulated service.