A data standard, not a file format
ISO 20022 is an international standard for financial messaging. It combines a modeling method with a dictionary in which every business concept has a single, reusable definition. The XML schemas published under the ISO 20022 name are generated from that dictionary, just like the ASN.1 and JSON representations. The standard governs the data model, and the file format is only one way of expressing it. A migration therefore changes the data model, and with it what an institution must know about its own counterparties. A project run as a simple parser swap leaves that part of the work out of scope.
ISO appointed Swift as registration authority, and Swift maintains the repository of published messages. Three bodies oversee that repository: the Registration Management Group rules on requests, the Standards Evaluation Groups review messages domain by domain, and a technical group keeps the dictionary consistent. Every new message starts with a Business Justification submitted to the RMG. A change takes effect only once each of these bodies has approved it in turn, which stretches the time between a request and publication. The same process protects live implementations, since no participant can change a message on its own.
Reading a message identifier
A message identifier breaks down into four parts, as pacs.008.001.08 shows. The four letters give the business area, the first three digits the message function, the next three the variant, and the last two the version. The variant is almost always 001, while the version keeps moving. Two banks that both say they support pacs.008 may therefore expect different message trees. The mismatch surfaces during testing when the interface agreement does not state which version each side uses.
| Prefix | Area | Who exchanges them | What it contains |
|---|---|---|---|
pain | Payments Initiation | Customer to bank | Submitting credit transfers or direct debits, status reports, mandate management (pain.009 to pain.012) |
pacs | Payments Clearing and Settlement | Between financial institutions | Customer credit transfers, interbank transfers, returns, settlement status |
camt | Cash Management | Bank to customer, and bank to bank | Statements, debit and credit advices, cancellation requests, investigation responses |
acmt | Account Management | Customer and bank | Account opening, maintenance, closure, and switching |
remt | Payments Remittance Advice | Companies, directly or through their bank | Remittance advice sent separately from the payment itself |
reda | Reference Data | Operator to participants | Participant directories, system reference data |
admi | Administration | System to participants | Technical acknowledgments, operational notices, system-level rejects |
auth | Authorities | Reporting entity to regulator | Regulatory reporting and transaction reporting |
caaa, catm, cain | Cards | Terminal, acquirer, issuer | In-store acceptance, terminal estate management, issuer-acquirer messaging |
seev, sese, semt | Securities | Securities value chain | Corporate actions, settlement and delivery, holdings |
.001.02 or .001.08 leaves the message tree undefined. The two trees look alike, but they are not interchangeable. The same precision applies to pacs.008 and pain.001. Before quoting any work, an integrator gets the version, the applicable usage guideline, and a set of real files. Otherwise it is sizing a job without knowing the target.Three families, three layers
The three most common prefixes sort payment messages by the part of the chain they travel on. pain covers the relationship between a company and its bank. pacs covers the interbank leg: what travels over Swift or through a real-time gross settlement (RTGS) system. camt covers reporting and exception handling. The sender and receiver change from one layer to the next: first a company talks to its bank, then banks deal with each other. A company never receives a pacs.008, and a bank does not accept a pain.001 into its RTGS. A specification that asks for a message outside its layer describes an exchange no participant can carry out.
| Message format | Direction | Role | Legacy MT equivalent |
|---|---|---|---|
pain.001 | Customer to bank | Submitting credit transfer orders | MT 101 in centralized treasury setups |
pain.002 | Bank to customer | Status report: accepted, or rejected with a reason code | No standard equivalent, often a proprietary file |
pain.008 | Customer to bank | Submitting direct debit orders | Domestic national formats |
pacs.008 | Bank to bank | Customer credit transfer, the message that carries the names of the originator and the beneficiary | MT 103 |
pacs.009 | Bank to bank | Bank's own-account transfer, and cover for a customer transfer | MT 202, MT 205 |
pacs.002 | Bank to bank | Payment status: accepted or rejected | Free-text MT 199 |
pacs.004 | Bank to bank | Return of funds with a reason code | Return MT 103, recognizable only by its narrative |
camt.056 | Bank to bank | Request to cancel or recall funds | MT 192, MT 292 |
camt.029 | Bank to bank | Response to a cancellation request | MT 196, MT 296 |
camt.052 | Bank to customer | Intraday statement | MT 942 |
camt.053 | Bank to customer | End-of-day statement | MT 940, MT 950 |
camt.054 | Bank to customer | Debit or credit advice, batch breakdown | MT 900, MT 910 |
Exception traffic covers the messages sent after a payment to cancel it, claim the funds back, or answer such a request. A recall used to travel as an MT 192, answered by an MT 196. The useful content of both messages sat in a free-text field that an operator had to read. The camt.056 and camt.029 pair carries a reason code, a reference to the original payment, and a machine-readable answer. Processing no longer waits for someone to read the message, so turnaround is faster. Recovery rates still depend on the receiving bank.
pain.001. Each bank publishes its own implementation guide, with its own mandatory fields, field lengths, and allowed codes. The CGI-MP group (Common Global Implementation – Market Practice), run by Swift, exists precisely to narrow those differences. A multibank corporate that requires CGI-MP compliance in its RFPs cuts the number of file variants it has to maintain. The requirement brings the guides closer together without unifying them. Each bank keeps its own.The migration timeline, system by system
The world's four largest high-value payment systems moved to ISO 20022 within three years. Each operator chose its own timing, method, and scope, and integrators working across several currencies absorbed all of those choices. A bank active in euros, US dollars, sterling, and Canadian dollars went through five separate go-lives between March 2023 and November 2025.
| System | Operator | Settlement asset | Changeover | Method |
|---|---|---|---|---|
| T2 (formerly TARGET2) | Eurosystem | EUR | March 20, 2023 | Big bang, with CLM split from RTGS |
| Lynx | Payments Canada | CAD | March 2023, coexistence ended November 2025 | Release 2 of a system launched in 2021 |
| CHAPS | Bank of England | GBP | June 19, 2023 | Messaging first, then the RT2 settlement core on April 28, 2025 |
| CHIPS | The Clearing House | USD | April 2024 | Big bang on the private net settlement system for US dollars |
| Fedwire Funds Service | Federal Reserve Banks | USD | July 14, 2025 | Big bang, proprietary FAIM format retired |
| Swift CBPR+ | Swift | All currencies | March 2023 to November 22, 2025 | 32 months of MT and ISO 20022 coexistence |
How structured data changes processing
A structured data element sits in its own field, and the standard fixes the field's name and allowed content. A value that used to be buried in a line of text gets a set place and a set format. A country becomes an ISO 3166-1 alpha-2 code, and a payment purpose becomes a code from a closed list. A paid invoice becomes an identified element, with its number, date, and amount. The receiving application reads these values directly, instead of extracting them from free text with regular expressions. The values also carry weight in an audit or a regulatory review. What the standard brings is this organization of content, whether the message is serialized as XML or in another format.
| Data | Where it lives | What it replaces | What it's used for downstream |
|---|---|---|---|
| Structured address | PstlAdr with StrtNm, PstCd, TwnNm, Ctry | Four free-text lines of 35 characters | Sanctions screening, compliance with FATF Recommendation 16 |
| Legal entity identifier | OrgId/LEI, 20 characters under ISO 17442 | The trading name, with its namesakes | Unambiguous counterparty identification, fewer false positives |
UETR | PmtId/UETR, a UUID assigned at origination | Manual matching of end-to-end references | Payment tracking across the whole correspondent chain |
| Payment purpose | Purp/Cd, ExternalPurpose1Code list | A plain-text comment, when there was one | Routing, pricing, balance of payments reporting |
| Category purpose | CtgyPurp, with values such as SALA or TAXS | Undocumented local conventions | Priority handling, exemptions, value-dating rules |
| Charges by agent | ChrgBr and ChrgsInf, agent by agent | A net amount, with no record of who deducted what | True cost transparency, grounds to dispute a deduction |
| Remittance reference | RmtInf/Strd, including an RF CdtrRefInf under ISO 11649 | 140 characters of free text | Automated cash application for receivables |
<CdtTrfTxInf>
<PmtId>
<InstrId>INST-4417</InstrId>
<EndToEndId>INV-2026-000871</EndToEndId>
<!-- UETR: assigned once, kept unchanged all the way to the beneficiary -->
<UETR>b2c3d4e5-6f70-4a81-9b2c-3d4e5f607182</UETR>
</PmtId>
<IntrBkSttlmAmt Ccy="USD">184500.00</IntrBkSttlmAmt>
<ChrgBr>SHAR</ChrgBr>
<Dbtr>
<Nm>NORDIC MARINE SUPPLY AS</Nm>
<PstlAdr>
<StrtNm>Strandgaten</StrtNm>
<BldgNb>18</BldgNb>
<PstCd>5013</PstCd>
<TwnNm>Bergen</TwnNm>
<!-- country as ISO 3166-1 alpha-2, never spelled out -->
<Ctry>NO</Ctry>
</PstlAdr>
<Id>
<OrgId>
<!-- LEI: 20 characters, ISO 17442 standard (sample value) -->
<LEI>969500XXXXXXXXXXXX42</LEI>
</OrgId>
</Id>
</Dbtr>
<!-- payment purpose: closed ExternalPurpose1Code list -->
<Purp><Cd>GDDS</Cd></Purp>
<RmtInf>
<Strd>
<RfrdDocInf>
<Tp><CdOrPrtry><Cd>CINV</Cd></CdOrPrtry></Tp>
<Nb>2026-000871</Nb>
</RfrdDocInf>
<RfrdDocAmt><DuePyblAmt Ccy="USD">184500.00</DuePyblAmt></RfrdDocAmt>
</Strd>
</RmtInf>
</CdtTrfTxInf>Sanctions screening compares the parties to a payment against lists of people and entities subject to restrictive measures. An engine reading four free-text lines had to guess where the street ended and the country began. It raised alerts on cities that happened to share a name, and missed others. A Ctry field and an LEI make the match exact, because every element checked against the lists is identified for what it is. Banks that measured their alert volumes before and after migration report fewer false positives. How much fewer depends entirely on the quality of their counterparty master data.
RmtInf/Strd block, by contrast, takes several entries, each with its own document type, number, date, and amount. A migration that keeps free-text remittance information puts the same content in a new message and changes nothing downstream.Coexistence with MT, and the weak link
The end of CBPR+ coexistence took categories 1, 2, and 9 out of Swift's cross-border scope: the MT 103, the MT 202, and interbank statements. The rest of the MT catalog is still in use. A bank that says it has migrated may mean that cross-border scope only, not all of its services. Its other flows then stay bilingual, sometimes for years, and an integration project that built its schedule on the announcement loses weeks redoing it.
- Category 3: treasury, foreign exchange, and derivatives. No retirement date has been announced.
- Category 4: documentary collections and cash letters.
- Category 5: securities markets, which migrate on their own timetable.
- Category 7: documentary credits and guarantees, the backbone of trade finance.
- Category 9 in bank-to-corporate: the MT 940 delivered to a treasurer as a file is not affected by the interbank cutoff, and no end date has been published.
A like-for-like migration puts a translation layer in front of an unchanged core banking system that still thinks in MT. An enhanced migration, by contrast, has the core banking system carry the structured data itself. A like-for-like message still validates against the schema, because its structured fields are either empty or filled by copying a line of text. The data the standard is meant to make usable then exists nowhere in the sending system. The promised gains in compliance and reconciliation never show up.
Like-for-like does answer a real constraint. It lets a bank meet a regulatory deadline on a tight budget and push the systems overhaul to later. The deferral shows as soon as requirements target the content of fields rather than their mere presence. The party address deadline, planned for November 2026 and postponed by Swift on August 27, 2026, is the first large-scale example, because meeting it means completing counterparty master data, not changing an XML schema.
Migration is not just a Western story
Dozens of central banks have rebuilt their RTGS on ISO 20022, often while moving to round-the-clock operation. These projects happened outside the Euro-Atlantic world, and several came before the big Western systems. The National Bank of Ukraine launched its SEP-4.0 generation on April 1, 2023, with ISO 20022 messaging and 24/7/365 operation, in the middle of a war.
| System | Country or region | Operator | Date | Distinctive feature |
|---|---|---|---|---|
| SEP-4.0 | Ukraine | National Bank of Ukraine | April 1, 2023 | 24/7/365 RTGS that also carries retail payments |
| QA-RTGS | Qatar | Qatar Central Bank | December 16, 2024 | Native ISO 20022, replacing QPS |
| EATS | Ethiopia | National Bank of Ethiopia | March 29, 2025 | RTGS open 10 hours a day, six days a week |
| SORBNET3 | Poland | Narodowy Bank Polski | September 8, 2025 | Replaces SORBNET2 and settles Elixir and Express Elixir |
| KATS | Papua New Guinea | Bank of Papua New Guinea | October 27, 2025 | RTGS and bulk clearing on a single platform |
| GPSS | Georgia | National Bank of Georgia | May 11, 2026 | Moved to a Montran platform that combines RTGS and securities depository |
| AFAQ | Gulf Cooperation Council | Gulf Payments Company | Live since 2020 | Regional RTGS in six Gulf currencies |
| Aani | United Arab Emirates | Al Etihad Payments | 2023 | Instant payment rail on ISO 20022, proxy addressing |
| NPP | Australia | NPP Australia | 2018 | Native ISO 20022, Osko overlay service, PayTo mandates |
| PayShap | South Africa | PayInc | 2023 | Native ISO 20022, ShapID addressing |
The same shift is visible in other markets. PRISM+ in Pakistan, PhilPaSS+ in the Philippines, BAHTNET in Thailand, NISS in Namibia, and RIPPS in Rwanda have all aligned their messaging with the standard. These programs paired a technical rebuild with longer operating hours. The Reserve Bank of India's RTGS has run around the clock since December 2020. These markets closed the gap between their old system and the standard in a single step, because they were replacing older, less tangled infrastructure.
pacs.008 and still be incompatible, because each publishes its own mandatory fields, allowed codes, field lengths, and reject rules. A domestic instant payment rail often requires proxy addressing that the standard does not cater for, so it goes into an identification field repurposed for the job. Every new market therefore means building a new connector, even though the message structure is shared.Usage guidelines, where the real work happens
A usage guideline narrows an ISO 20022 message for a given rail, setting its mandatory fields, allowed values, and reject rules. It comes from the network, the system operator, or the scheme owner. ISO publishes none. The XSD schema that ISO publishes is deliberately permissive by comparison. Almost everything in it is optional, because the same message has to handle a salary transfer in Brazil and a market settlement in London. A developer who codes against the schema alone produces messages that pass XML validation. The rail then rejects them, because it also enforces its own guideline.
| Guideline | Scope | Published by | What it constrains |
|---|---|---|---|
| CBPR+ | Cross-border payments and reporting on the Swift network | Working group led by Swift | Mandatory fields, party usage, character set, translation rules |
| HVPS+ | High-value systems, including T2, Fedwire, CHIPS, CHAPS, and Lynx | HVPS+ group of operators and banks | Aligning RTGS systems with one another, to avoid one dialect per system |
| CGI-MP | Corporate-to-bank, pain and camt messages | Industry group run by Swift | Multibank file submission, batch structure, status codes |
| EPC rulebooks | SEPA area: credit transfer, instant credit transfer, and direct debit | European Payments Council | Mandatory content, time limits, return reasons, address format |
| National guidelines | A specific domestic rail | Central bank or system operator | Local restrictions, thresholds, country-specific reason codes |
These guidelines stack up on a single payment. A corporate credit transfer starts out under CGI-MP, enters the interbank space under HVPS+ or the EPC rulebook, then crosses a border under CBPR+. Each layer adds its own requirements to those of the one before, so a field that was good enough at the first level falls short at the third. The reject then comes midway, hours after the payment was sent, from an institution further down the chain than the originator's bank.
The allowed character set shows how this layering works. The schema accepts very broad strings, and the real restriction sits in the usage guideline of whichever rail the payment takes, which differs from rail to rail. A beneficiary name with an umlaut goes through on a domestic rail, then gets rejected elsewhere or silently transliterated. Character checks belong in the sending system, where the exact name is still known, not in the transport layer, which can only reject or transliterate.
camt.053.001.02, while newer offerings deliver .001.08 and later, in line with CGI-MP recommendations. The trees are close but not identical. Parser acceptance testing therefore covers each version and each bank, using anonymized production files. A test set built by the software vendor contains only the cases the vendor thought of, and leaves each bank's quirks untested.What a file sender has to change
A company that sends payment files to its bank does not produce the interbank messages itself: the bank that receives the file does the conversion. The company's file format can therefore stay the same while the rail changes. That setup works as long as requirements concern the form of the messages. It stops working once requirements concern their content, because no translation layer can produce data the sender never had.
EndToEndId per order, stable and unique, carries through to the camt.053. An ISO 11649 structured RF creditor reference on outgoing invoices means incoming customer payments can be matched with no manual work.pain.002 is no longer a file you just archive. Its statuses and reason codes must feed accounts payable automatically. Otherwise, rejects come to light only when the beneficiary chases the payment.Purp and CtgyPurp values replace in-house codes rather than duplicating them. A misapplied SALA code changes how the receiving bank handles a payroll batch.| Item | Common practice today | Expected under ISO 20022 |
|---|---|---|
| Beneficiary address | Four free-text lines, city and country mixed together | Two-letter Ctry, TwnNm, PstCd, not repeated in a free-text line |
| Counterparty identification | Trading name, sometimes abbreviated | Legal name, plus an LEI or national identifier in OrgId |
| Payment reference | Free text, truncated at each hop | EndToEndId per order, UETR passed on by the banks |
| Remittance information for the beneficiary | 140 characters crammed with invoice numbers | RmtInf/Strd with one block per document paid |
| Payment purpose | Nothing, or a word in the narrative | Purp/Cd from the external code list, plus CtgyPurp for the type of batch |
| Status report | A receipt acknowledgment, read by a person | pain.002 processed by the software, with a status per order |
What the migration does not fix
How fast a payment moves depends on system operating hours, the number of correspondents it passes through, and the time spent in compliance checks. What it costs depends on competition in the corridor and the number of intermediaries taking a fee. A richer message format affects none of these factors. ISO 20022 makes them measurable without removing them.
- Cutoffs stack up. Each correspondent sets its own cutoff time, and the chain is only as fast as the link that closes earliest.
- Alerts still need human review. Structured data cuts false positives, but someone still has to review the cases that remain.
- FX is handled elsewhere. Currency conversion and its cost have nothing to do with messaging.
- Underbanked corridors stay closed. A better-formed message creates no correspondent relationship where none is left.
The next deadline is regulatory. The revised FATF Recommendation 16 sets new requirements for originator and beneficiary data, structured along ISO 20022 lines. Full implementation is expected by the end of 2030. FATF put its draft guidance out for public consultation in June 2026, and the comment period closed on August 21, 2026. An institution that migrated like-for-like will have to rework its counterparty master data before that deadline.