ISO 20022 for Payment Engineers
Cross-border payments on Swift, the big RTGS systems and SEPA now speak ISO 20022. This guide covers what the standard actually is, how an MT103 maps to a pacs.008 field by field, which message does what in a payment's life, where each rail stands on the migration, and the structured-address change that is still coming.
What ISO 20022 is (and is not)
ISO 20022 is a methodology and a catalogue: a shared data dictionary (business components such as Debtor, Creditor Agent or Interbank Settlement Amount) from which message definitions are built and published as XML schemas. It is not a single format — the same pacs.008 is used by Swift, Fedwire, CHAPS, TARGET and SEPA, each with its own rules on top.
- Message identifiers read
pacs.008.001.08: business area (pacs = payments clearing and settlement), message number, variant and version. Systems pin a version; a pacs.008.001.08 and .001.10 are different schemas. - MX vs MT — "MX" is Swift's name for ISO 20022 messages on its network; "MT" are the legacy FIN messages (MT103, MT202, MT940) they replace.
- Usage guidelines narrow the schema per community: CBPR+ for cross-border on Swift, HVPS+ for high-value RTGS systems, the EPC implementation guidelines for SEPA, plus national guidelines. Valid against the XSD is not enough — a message must also meet its guideline.
- The Business Application Header (head.001) travels with each message and carries sender, receiver, message type and business service — the part routing and duplicate checks key off.
MT103 vs pacs.008, field by field
The customer credit transfer shows what changes. Every MT103 field has a home in pacs.008, but most pacs.008 elements are richer than the field they replace — which is why mapping MX back to MT for a legacy system loses data.
| MT103 | pacs.008 element | What changes |
|---|---|---|
| Block 3 :121: | PmtId/UETR | Same UUID v4; mandatory in CBPR+ and kept on every hop. |
| :20: Sender’s Reference | PmtId/InstrId | Point-to-point reference; the customer’s EndToEndId is a separate element MT had no slot for. |
| :23B: Bank Operation Code | PmtTpInf | Payment type information — service level, local instrument, category purpose. |
| :32A: Date, Currency, Amount | IntrBkSttlmDt + IntrBkSttlmAmt | Split into two elements; amount with the currency as an attribute. |
| :33B: Instructed Amount | InstdAmt | Same meaning; required alongside an exchange rate when currencies differ. |
| :36: Exchange Rate | XchgRate | Unchanged meaning. |
| :50K: Ordering Customer | Dbtr + DbtrAcct | Name up to 140 characters, structured address, LEI and other identifiers instead of four 35-character lines. |
| :52A: Ordering Institution | DbtrAgt | BIC plus optional clearing-system member ID and LEI. |
| :56A: / :57A: Intermediary / Account With Institution | IntrmyAgt1 / CdtrAgt | Up to three intermediary agents. |
| :59: Beneficiary Customer | Cdtr + CdtrAcct | As for the debtor; IBAN or other account ID in its own element. |
| :70: Remittance Information | RmtInf/Ustrd or RmtInf/Strd | 140 characters unstructured, or structured invoice references — 4×35 in MT. |
| :71A: Details of Charges (OUR / BEN / SHA) | ChrgBr (DEBT / CRED / SHAR) | Same three options, new codes. |
| — | UltmtDbtr / UltmtCdtr / Purp | No MT103 field: the party on whose behalf, the final beneficiary and the purpose code. |
Check a real message in the ISO 20022 Validator (pacs.008 CBPR+ example) and the legacy side in the SWIFT MT validator.
The messages you will meet
The same handful of messages covers most payment flows. Each links to its structure and key elements in the ISO 20022 reference.
| Message | Name | Area | Replaces |
|---|---|---|---|
| head.001 | Business Application Header (BAH) | Header | FIN Basic Header / Application Header (blocks 1–3) |
| pacs.008 | FI to FI Customer Credit Transfer | Clearing & Settlement (pacs) | MT 103 |
| pacs.009 | FI Credit Transfer | Clearing & Settlement (pacs) | MT 202, MT 202 COV |
| pacs.002 | FI to FI Payment Status Report | Clearing & Settlement (pacs) | MT 199 (by convention), ACK/NAK |
| pacs.004 | Payment Return | Clearing & Settlement (pacs) | MT 103 RETN, MT 202 RETN |
| pain.001 | Customer Credit Transfer Initiation | Payment Initiation (pain) | MT 101 |
| pain.002 | Customer Payment Status Report | Payment Initiation (pain) | — |
| pain.008 | Customer Direct Debit Initiation | Payment Initiation (pain) | — |
| camt.052 | Bank to Customer Account Report | Cash Management (camt) | MT 941, MT 942 |
| camt.053 | Bank to Customer Statement | Cash Management (camt) | MT 940, MT 950 |
| camt.054 | Bank to Customer Debit/Credit Notification | Cash Management (camt) | MT 900, MT 910 |
| camt.056 | FI to FI Payment Cancellation Request | Cash Management (camt) | MT 192, MT 292 |
| camt.029 | Resolution of Investigation | Cash Management (camt) | MT 196, MT 296 |
| camt.110 | Investigation Request | Cash Management (camt) | MT 195, MT 199 (investigations) |
| camt.111 | Investigation Response | Cash Management (camt) | MT 196, MT 199 (investigations) |
A payment's life in messages
- pain.001 — the corporate sends a credit transfer initiation to its bank (often a batch of payments).
- pain.002 — the bank reports acceptance or rejection of the file or individual payments.
- pacs.008 (with its BAH) — the debtor's bank sends the payment to the next bank, each hop carrying the same UETR; a pacs.009 moves bank-to-bank cover or liquidity.
- pacs.002 — a bank rejects (RJCT, with a reason code) or confirms the payment before settlement.
- pacs.004 — after settlement, a bank that cannot credit the beneficiary (closed account, AC04) returns the funds with a return reason.
- camt.054 / camt.053 — the account holders get a notification of each credit or debit and an end-of-day statement to reconcile against.
- Exceptions — camt.056 asks to recall a payment, camt.029 answers the investigation, and camt.110/111 carry exceptions and investigations on Swift.
Where each rail stands
Most large systems already run on ISO 20022: SEPA since its launch in 2008, TARGET since the T2 consolidation in March 2023, CHAPS since June 2023, CHIPS since April 2024, Fedwire since 14 July 2025, and Swift ended MT/MX coexistence for cross-border payments on 22 November 2025. What is still moving is the next step — the end of fully unstructured postal addresses:
| Rail | Milestone | Status |
|---|---|---|
| Swift (MT → MX coexistence) | End of MT/MX coexistence for CBPR+ payment messagesMore than 98% of payment instructions on the network are now sent as ISO 20022. | Live since 22 Nov 2025Swift |
| Swift CBPR+ (SR2026) | Fully unstructured postal addresses rejected — structured or hybrid only; plus the other SR2026 payments changesOn 27 Aug 2026 Swift accepted a community request for more time and deferred all SR2026 payments changes; it will consult and announce timing by December. Non-payments SR2026 items (e.g. T+1 support) are decoupled and go live in Q1 2027. | Deferred — new date by Dec 2026Swift notice |
| Fedwire Funds Service | Structured / hybrid postal address requirement and retirement of fully unstructured addressesThe November 2026 release was rescheduled to November 2027 on 27 Aug 2026; release scope is due in autumn 2026. Fedwire itself has run natively on ISO 20022 since 14 Jul 2025. | November 2027FRB Services |
| SEPA — EPC schemes (SCT, SCT Inst, SDD) | End-date of the unstructured address format in EPC scheme transactionsOn 9 Sep 2026 the EPC Payment Scheme Management Board delayed the 15 Nov 2026 end-date across all five EPC scheme rulebooks, following the Swift extension. Unstructured addresses stay accepted after 15 November; the PSMB reconvenes in October 2026 to set a new end-date. | Deferred — new date expected Oct 2026EPC notice |
| CHIPS | ISO 20022 native since April 2024; US-market address structuringCHIPS completed its ISO 20022 migration in April 2024. Its structured-address timing was aligned with Fedwire; confirm with The Clearing House now that Fedwire has moved to November 2027. | Follow The Clearing House guidance |
Last checked against the Swift, Federal Reserve and EPC notices on 2026-09-24. The same table, with calendar dates, is on the ISO 20022 reference and the events calendar.
Structured addresses
MT messages carried names and addresses as up to four free-text lines. ISO 20022 has separate elements for street, building number, post code, town and country, so sanctions screening and routing can read them without guessing. Three forms exist:
- Structured — only the dedicated elements, at least
TwnNmandCtry. - Hybrid —
TwnNmandCtryplus at most twoAdrLinefor the rest; accepted as the transition form. - Unstructured —
AdrLineonly. This is what Swift, Fedwire and the EPC are retiring; the dates are in the table above.
Unstructured<PstlAdr>
<AdrLine>Hauptstrasse 1</AdrLine>
<AdrLine>10115 Berlin</AdrLine>
</PstlAdr>Structured<PstlAdr>
<StrtNm>Hauptstrasse</StrtNm>
<BldgNb>1</BldgNb>
<PstCd>10115</PstCd>
<TwnNm>Berlin</TwnNm>
<Ctry>DE</Ctry>
</PstlAdr>The work is upstream: customer master data, onboarding forms and corporate ERP exports have to capture town and country separately before payment messages can. Test files today with the validator's post-migration option, which treats unstructured addresses as errors.
Engineering checklist
- Pin versions per counterparty and rail — and route on the BAH's
MsgDefIdr, not by sniffing the payload. - Validate in two layers — the XSD, then the usage guideline (CBPR+, HVPS+, EPC). Most rejects come from the second.
- Carry the UETR end to end — generate a UUID v4 once, keep it on every hop, status, return and statement entry; it is how gpi tracking and investigations find the payment.
- Don't truncate silently — when an internal system still speaks MT, store the full MX and flag what the mapping dropped (long names, structured remittance, ultimate parties, LEIs).
- Amounts and codes — currency minor units, 18 total digits, charge bearer codes (DEBT/CRED/SHAR) and external code lists (reason, purpose, status) are where hand-built messages break.
- Reconcile on camt — match camt.054 notifications and camt.053 statement entries back to EndToEndId and UETR, and handle pacs.004 returns as their own state, not as a failed payment.
Next steps
Related articles
Common questions
What is the difference between MT and MX messages?
MT messages are Swift's legacy FIN formats (MT103, MT202, MT940) built from tagged text fields. MX is Swift's name for ISO 20022 messages: XML documents from a shared data dictionary, such as pacs.008 for a customer credit transfer, with richer, structured data. Swift ended MT/MX coexistence for cross-border payments on 22 November 2025.
Which ISO 20022 message replaces the MT103?
pacs.008 (FI To FI Customer Credit Transfer), sent with a Business Application Header (head.001). The MT202 maps to pacs.009, MT940 statements to camt.053, and returns use pacs.004.
What is a structured address in ISO 20022?
A postal address given in dedicated elements — street, building number, post code, town (TwnNm) and country (Ctry) — instead of free-text AdrLine lines. A hybrid address adds at most two AdrLine to TwnNm and Ctry. Swift, Fedwire and the EPC are retiring fully unstructured addresses; their dates were moved in August and September 2026.