MT103 → MX migration checklist.
For the compliance buyer who owns the cross-border payment rail. The CBPR+ (ISO 20022) migration is mostly a field-mapping exercise — but the structured-address mandate is the part that fails payments. This checklist is honest about what the November 14, 2026 cutover actually rejects, and what survives.
Read this first
What the cutover rejects — and what survives.
Fully-unstructured addresses
An address carried only as freeform <AdrLine> text, with no structured elements, becomes rejectable on cross-border MX. This is the form most legacy MT103 emitters produce by default.
Hybrid (town + country)
A hybrid address — structured town <TwnNm> plus <Ctry>, even when street-level detail is incomplete — survives the cutover. Do not block a payment on perfect street parsing; the hybrid form is the documented survival path while you backfill toward fully structured.
The honest takeaway for planning: you do not need every address fully structured by November 14 — you need none of them fully unstructured. Prioritise getting every party to at least hybrid, then improve toward fully structured on a slower timeline.
The checklist
Nine steps the compliance team owns.
- 01
Map every MT103 field to its MX (pacs.008 / pain.001) equivalent
Field 50 (ordering customer) → Dbtr/PstlAdr; field 59 (beneficiary) → Cdtr/PstlAdr; field 70 (remittance) → RmtInf; field 71A (charges) → ChrgBr. The address fields are where the November 14 mandate bites — they cannot stay freeform.
- 02
Inventory every freeform address path
grep your codebases for <AdrLine> in MX emission and the freeform fields feeding it. Each freeform debtor/creditor address is a future reject when fully unstructured.
- 03
Classify addresses: structured, hybrid, or fully unstructured
Fully unstructured (only <AdrLine>) is what the Nov 14 mandate rejects. A hybrid address — structured town (<TwnNm>) plus country (<Ctry>), even if street detail is incomplete — survives the cutover. Fully structured is the target. Sort your customer data into these three buckets.
- 04
Backfill freeform to structured where you can
Where the source data supports it, restructure freeform into <StrtNm>/<BldgNb>/<PstCd>/<TwnNm>/<Ctry>. Where it does not, the hybrid form (town + country) is the documented survival path — do not block the payment on perfect street parsing.
- 05
Add an ASCII-fold pass for the SWIFT "x" character set
MX/CBPR+ pins a Latin-only character set. Accented and non-Latin characters in <Nm> and the structured-address fields require an ASCII-fold at emission (Zürich → Zurich). Pick a per-locale rule and document it for audit.
- 06
Add a pre-emission lint
Reject the build in your own pipeline if a required field is empty, so you catch it before the bank does. The iso-compliant pain.001 builder validates structured-address completeness and rejects legacy freeform on post-mandate rulesets with STRUCTURED_ADDRESS_REQUIRED.
- 07
Wire the pain.002 rejection path
MX returns rejections as pain.002 (CstmrPmtStsRpt). Decide per reason code whether you can auto-retry or must route to a human — never blind-retry on an ambiguous status (double-wire risk). See the pain.002 reason-code reference.
- 08
Wire camt.053 reconciliation parity
Confirm your reconciliation key survives the round trip by checking which camt.053 carrier field your bank echoes it back in — EndToEndId, StrdCdtrRef, or another. The carrier varies per bank; see the camt.053 field reference.
- 09
Run a shadow lane, then cut over
Run MT103 and MX in parallel for the first week of production. Reconcile camt.053 inbound to confirm parity between the two rails, then switch MT103 off.
Ship the MX cutover this quarter
Build mandate-compliant pain.001, classify pain.002 rejections, and reconcile camt.053 from one API — 100 documents/month free, no card.