Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MT to ISO 20022 Transformations

Converting SWIFT MT messages to ISO 20022 format.

Overview

Outgoing transformations convert legacy SWIFT MT messages to ISO 20022 XML format. This is the primary direction for institutions migrating to ISO 20022 for cross-border payments.

Transformation Pipeline

Every MT → ISO 20022 transformation follows this pipeline:

┌─────────────────────────────────────────────────────────────┐
│                    MT → ISO 20022 Pipeline                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. Parse MT              Priority 1                        │
│     Extract blocks, tags, and field values                  │
│                                                             │
│  2. Detect Message Type   Priority 2                        │
│     Identify MT variant (standard, STP, REJT, RETN)         │
│                                                             │
│  3. Map BAH               Priority 3                        │
│     Create Business Application Header from MT headers      │
│                                                             │
│  4. Pre-conditions        Priority 4                        │
│     Validate business rules before transformation           │
│                                                             │
│  5. Map Document          Priority 5                        │
│     Transform MT fields to ISO 20022 document structure     │
│                                                             │
│  6. Post-conditions       Priority 6                        │
│     Validate output compliance                              │
│                                                             │
│  7. Combine XML           Priority 10                       │
│     Generate final ISO 20022 XML envelope                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Supported Transformations

Customer Payments

SourceTargetDescriptionDetails
MT103pacs.008Customer Credit TransferView →
MT103 STPpacs.008Straight-Through Processing
MT103 REJTpacs.002Payment Rejection
MT103 RETNpacs.004Payment Return

Financial Institution Transfers

SourceTargetDescription
MT200pacs.009Own Account Transfer
MT202pacs.009General FI Transfer
MT202 COVpacs.009Cover Payment
MT202 REJTpacs.002FI Transfer Rejection
MT202 RETNpacs.004FI Transfer Return
MT205pacs.009Third Party FI Transfer
MT205 COVpacs.009Cover Payment (Third Party)

Cancellation & Investigation

SourceTargetDescription
MT192camt.056Customer Payment Cancellation
MT196camt.029Cancellation Response
MT292camt.056FI Payment Cancellation
MT296camt.029FI Cancellation Response

Cash Management

SourceTargetDescription
MT900camt.054Debit Confirmation
MT910camt.054Credit Confirmation

Common Field Mappings

These mappings apply across multiple MT → ISO 20022 transformations:

Header Mappings

MT SourceISO 20022 TargetDescription
Block 1 BICAppHdr/Fr/FIId/FinInstnId/BICFISender identification
Block 2 BICAppHdr/To/FIId/FinInstnId/BICFIReceiver identification
Tag 20AppHdr/BizMsgIdrMessage identifier
Tag 121 (Block 3)PmtId/UETREnd-to-end tracking

Amount Mappings

MT SourceISO 20022 TargetNotes
Tag 32A DateIntrBkSttlmDtYYMMDD → YYYY-MM-DD
Tag 32A CurrencyIntrBkSttlmAmt/@Ccy3-letter code
Tag 32A AmountIntrBkSttlmAmtRemove comma separator

Party Mappings

MT SourceISO 20022 TargetNotes
Tag 50K/50FDbtrOrdering customer
Tag 50K AccountDbtrAcct/Id/Othr/IdAccount number
Tag 59/59ACdtrBeneficiary
Tag 59 AccountCdtrAcct/Id/Othr/IdAccount number

Agent Mappings

MT SourceISO 20022 TargetNotes
Tag 52ADbtrAgtDebtor’s bank
Tag 53A/53BInstgAgt or IntrmyAgt1Intermediary
Tag 54AIntrmyAgt1Intermediary
Tag 57ACdtrAgtCreditor’s bank

Charge Bearer Mapping

MT (Tag 71A)ISO 20022Code
SHASHARShared
OURDEBTAll charges to debtor
BENCREDAll charges to creditor

Business Rules

Service Level Determination

The CBPR+ service level is determined from MT fields:

{
  "if": [
    {"==": [{"var": "fields.23E.instruction_code"}, "URGP"]},
    "G001",
    {"if": [
      {"==": [{"var": "fields.23B.bank_operation_code"}, "SPAY"]},
      "G003",
      "G002"
    ]}
  ]
}
MT IndicatorService LevelPriority
23E: URGPG001Urgent
23B: SPAYG003Same-day
DefaultG002Normal

UETR Handling

If Tag 121 exists in Block 3, it’s used as the UETR. Otherwise, a new UUID is generated.

Date Conversion

MT dates (YYMMDD) are converted to ISO format (YYYY-MM-DD):

MTISO 20022
2501152025-01-15
9912312099-12-31

Example Transformation

Input: MT103

{1:F01BNPAFRPPXXX0000000000}
{2:I103DEUTDEFFXXXXN}
{3:{121:174d2c70-7a8c-4c0d-8b2e-5c2a9f8e6d3a}}
{4:
:20:REF123456
:23B:CRED
:32A:250115USD50000,00
:50K:/12345678
ACME CORPORATION
:59:/98765432
GLOBAL TRADING LTD
:71A:SHA
-}

Output: pacs.008

<?xml version="1.0"?>
<BizMsg xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.03">
  <AppHdr>
    <Fr><FIId><FinInstnId><BICFI>BNPAFRPPXXX</BICFI></FinInstnId></FIId></Fr>
    <To><FIId><FinInstnId><BICFI>DEUTDEFFXXX</BICFI></FinInstnId></FIId></To>
    <BizMsgIdr>REF123456</BizMsgIdr>
    <MsgDefIdr>pacs.008.001.12</MsgDefIdr>
  </AppHdr>
  <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.12">
    <FIToFICstmrCdtTrf>
      <CdtTrfTxInf>
        <PmtId>
          <InstrId>REF123456</InstrId>
          <UETR>174d2c70-7a8c-4c0d-8b2e-5c2a9f8e6d3a</UETR>
        </PmtId>
        <IntrBkSttlmAmt Ccy="USD">50000.00</IntrBkSttlmAmt>
        <IntrBkSttlmDt>2025-01-15</IntrBkSttlmDt>
        <ChrgBr>SHAR</ChrgBr>
        <Dbtr><Nm>ACME CORPORATION</Nm></Dbtr>
        <DbtrAcct><Id><Othr><Id>12345678</Id></Othr></Id></DbtrAcct>
        <Cdtr><Nm>GLOBAL TRADING LTD</Nm></Cdtr>
        <CdtrAcct><Id><Othr><Id>98765432</Id></Othr></Id></CdtrAcct>
      </CdtTrfTxInf>
    </FIToFICstmrCdtTrf>
  </Document>
</BizMsg>

Try It


MT103 → pacs.008 Details →

Back to CBPR+ Overview →