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

Your First Transformation

A step-by-step guide to understanding how Reframe transforms MT103 to ISO 20022 pacs.008.

What We’ll Cover

  1. Understanding the MT103 message structure
  2. Transforming MT103 to pacs.008
  3. Examining the transformation result
  4. Understanding field mappings

The MT103 Message

MT103 is SWIFT’s standard message for single customer credit transfers. Here’s a sample:

{1:F01BNPAFRPPXXX0000000000}
{2:I103DEUTDEFFXXXXN}
{3:{121:174d2c70-7a8c-4c0d-8b2e-5c2a9f8e6d3a}}
{4:
:20:REF123456
:23B:CRED
:32A:250115USD50000,00
:50K:/12345678
ACME CORPORATION
123 MAIN STREET
NEW YORK NY 10001
:59:/98765432
GLOBAL TRADING LTD
456 HIGH STREET
LONDON EC1A 1BB
:71A:SHA
-}

MT103 Structure

Block/TagContentPurpose
Block 1F01BNPAFRPPXXX...Basic header - sender BIC
Block 2I103DEUTDEFFXXXXApplication header - receiver BIC
Block 3{121:...}User header - UETR
Tag 20REF123456Transaction reference
Tag 23BCREDBank operation code
Tag 32A250115USD50000,00Value date, currency, amount
Tag 50KAccount + Name + AddressOrdering customer (debtor)
Tag 59Account + Name + AddressBeneficiary (creditor)
Tag 71ASHACharges (shared)

Step 1: Send the Transformation Request

curl -X POST http://localhost:3000/api/transform \
  -H "Content-Type: application/json" \
  -d '{
    "message": "{1:F01BNPAFRPPXXX0000000000}{2:I103DEUTDEFFXXXXN}{3:{121:174d2c70-7a8c-4c0d-8b2e-5c2a9f8e6d3a}}{4:\n:20:REF123456\n:23B:CRED\n:32A:250115USD50000,00\n:50K:/12345678\nACME CORPORATION\n123 MAIN STREET\nNEW YORK NY 10001\n:59:/98765432\nGLOBAL TRADING LTD\n456 HIGH STREET\nLONDON EC1A 1BB\n:71A:SHA\n-}",
    "validation": true
  }'

Step 2: Examine the Response

The response contains the transformed pacs.008 message:

{
  "status": "success",
  "direction": "outgoing",
  "source_type": "MT103",
  "target_type": "pacs.008.001.12",
  "message": "<?xml version=\"1.0\"?>...",
  "timing_ms": 0.8
}

Step 3: Understanding the pacs.008 Output

The transformed ISO 20022 message has two parts:

Business Application Header (BAH)

<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.03">
  <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>
  <CreDt>2025-01-15T10:30:00Z</CreDt>
</AppHdr>

Document (pacs.008)

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.12">
  <FIToFICstmrCdtTrf>
    <GrpHdr>
      <MsgId>REF123456</MsgId>
      <CreDtTm>2025-01-15T10:30:00Z</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <SttlmInf>
        <SttlmMtd>INDA</SttlmMtd>
      </SttlmInf>
    </GrpHdr>
    <CdtTrfTxInf>
      <PmtId>
        <InstrId>REF123456</InstrId>
        <EndToEndId>REF123456</EndToEndId>
        <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>
        <PstlAdr>
          <AdrLine>123 MAIN STREET</AdrLine>
          <AdrLine>NEW YORK NY 10001</AdrLine>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <Othr>
            <Id>12345678</Id>
          </Othr>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>BNPAFRPPXXX</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <CdtrAgt>
        <FinInstnId>
          <BICFI>DEUTDEFFXXX</BICFI>
        </FinInstnId>
      </CdtrAgt>
      <Cdtr>
        <Nm>GLOBAL TRADING LTD</Nm>
        <PstlAdr>
          <AdrLine>456 HIGH STREET</AdrLine>
          <AdrLine>LONDON EC1A 1BB</AdrLine>
        </PstlAdr>
      </Cdtr>
      <CdtrAcct>
        <Id>
          <Othr>
            <Id>98765432</Id>
          </Othr>
        </Id>
      </CdtrAcct>
    </CdtTrfTxInf>
  </FIToFICstmrCdtTrf>
</Document>

Field Mapping Summary

Here’s how key MT103 fields map to pacs.008:

MT103 Fieldpacs.008 PathExample
Block 1 BICFr/FIId/FinInstnId/BICFIBNPAFRPPXXX
Block 2 BICTo/FIId/FinInstnId/BICFIDEUTDEFFXXX
Tag 20PmtId/InstrIdREF123456
Tag 121 (UETR)PmtId/UETR174d2c70-…
Tag 32A dateIntrBkSttlmDt2025-01-15
Tag 32A amountIntrBkSttlmAmt50000.00
Tag 32A currencyIntrBkSttlmAmt/@CcyUSD
Tag 50K nameDbtr/NmACME CORPORATION
Tag 50K accountDbtrAcct/Id/Othr/Id12345678
Tag 59 nameCdtr/NmGLOBAL TRADING LTD
Tag 59 accountCdtrAcct/Id/Othr/Id98765432
Tag 71AChrgBrSHA → SHAR

Charge Bearer Mapping

The 71A tag maps to ISO 20022 charge bearer codes:

MT (71A)ISO 20022Meaning
SHASHARShared between parties
OURDEBTAll charges to debtor
BENCREDAll charges to creditor

Try It Yourself

Use the interactive playground to experiment:

Debug Mode

To see the transformation steps, add debug: true:

curl -X POST http://localhost:3000/api/transform \
  -H "Content-Type: application/json" \
  -d '{
    "message": "...",
    "debug": true
  }'

The debug response shows:

  • Parsed input structure
  • Each workflow that executed
  • Intermediate transformation values
  • Final output assembly

Reverse Transformation

Transform pacs.008 back to MT103:

curl -X POST http://localhost:3000/api/transform \
  -H "Content-Type: application/json" \
  -d '{
    "message": "<?xml version=\"1.0\"?>..."
  }'

Reframe auto-detects the input format and applies the appropriate transformation direction.


Explore CBPR+ Message Types →

See MT103 → pacs.008 Details →

API Reference →