SWIFT MT Parser

Parse and analyze SWIFT MT messages

1
Understanding SWIFT MT Messages
TL;DR

SWIFT MT messages are the standard messaging format used by 11,000+ financial institutions worldwide for cross-border payments and securities transactions.

What is SWIFT MT?

SWIFT MT (Message Type) is the legacy messaging format used by the Society for Worldwide Interbank Financial Telecommunication (SWIFT) network to facilitate cross-border financial transactions. Since 1977, MT messages have been the backbone of international banking communication, connecting over 11,000 financial institutions in more than 200 countries.

Each MT message type is identified by a three-digit number. The first digit indicates the message category (e.g., 1xx for customer transfers, 2xx for financial institution transfers, 9xx for cash management). The full message type — such as MT103 for customer credit transfers or MT940 for account statements — determines the exact fields and structure required.

MT messages use a proprietary tagged format where each data element is identified by a colon-delimited tag number. While this format has served the industry for decades, it is gradually being replaced by ISO 20022 XML messages as part of the global migration initiative.

Message Structure

Every SWIFT MT message is composed of five blocks, each serving a distinct role in message routing, processing, and authentication.

SWIFT MT Message Block Structure A vertical stack diagram showing the five blocks of a SWIFT MT message: Basic Header, Application Header, User Header, Text Body, and Trailer, with field annotations for each block. B1 Block 1 — Basic Header App ID | Service ID | LT Address | Session | Sequence B2 Block 2 — Application Header I/O Indicator | Message Type | Receiver BIC | Priority B3 Block 3 — User Header (Optional) Service Identifier | Banking Priority | MUR B4 Block 4 — Text (Message Body) :20: Reference | :32A: Amount | :50K: Ordering Customer :59: Beneficiary | :71A: Charges | :70: Remittance Info B5 Block 5 — Trailer MAC (Authentication) | CHK (Checksum) | PDE | DLM Parse order

Block 1 (Basic Header) identifies the sender and session. It contains the application identifier, service identifier, sender’s logical terminal (LT) address, session number, and sequence number.

Block 2 (Application Header) specifies the message type and recipient. The I/O indicator shows whether this is an input (sent) or output (received) message, followed by the three-digit MT type, receiver BIC, and message priority.

Block 3 (User Header) is optional and carries user-defined metadata such as the Message User Reference (MUR) used for reconciliation, banking priority, and service identifiers.

Block 4 (Text Body) is the heart of the message. It contains the actual transaction data using tagged fields (e.g., :20: for transaction reference, :32A: for value date/currency/amount). The required tags vary by message type.

Block 5 (Trailer) provides authentication and verification. The MAC (Message Authentication Code) ensures integrity, while the CHK (checksum) verifies the content has not been altered in transit.

Common Message Types

MT TypeNameDescription
MT103Customer Credit TransferSingle customer payment — the most common SWIFT message type
MT202Financial Institution TransferBank-to-bank payment, often used to cover MT103 obligations
MT940Customer StatementEnd-of-day account statement with balance and transaction details
MT199Free Format MessageUnstructured message for queries, investigations, or ad-hoc communication
MT300Foreign Exchange ConfirmationConfirms the details of an FX deal between two counterparties
MT760Guarantee / Standby Letter of CreditIssuance of a bank guarantee or standby LC
MT700Issue of a Documentary CreditOpening a letter of credit for trade finance

How a Cross-Border Payment Flows

A typical cross-border payment using MT103 follows this path:

  1. Origination: The ordering customer instructs their bank (originating bank) to send funds
  2. MT103 creation: The originating bank creates an MT103 message with full beneficiary details
  3. SWIFT network: The message is routed through the SWIFT network (SWIFTNet FIN) to the beneficiary bank
  4. Correspondent banking: If there is no direct relationship, the message passes through one or more correspondent banks, each generating an MT202 (cover payment)
  5. Credit: The beneficiary bank credits the beneficiary’s account and sends an MT199 or MT910 confirmation
  6. Statement: At end of day, both banks generate MT940 statements reflecting the transaction

Common Use Cases

  • International wire transfers: MT103 is the standard for cross-border customer payments between banks
  • Treasury operations: MT202, MT300, and MT320 handle interbank transfers, FX deals, and fixed deposits
  • Cash management: MT940 and MT942 deliver end-of-day and intraday account statements to corporate treasuries
  • Trade finance: MT700, MT760, and related messages support letters of credit and bank guarantees
  • Securities settlement: MT5xx messages handle settlement instructions, confirmations, and corporate actions
  • Investigations: MT199 and MT299 provide free-format channels for payment inquiries and exception handling

Try These Examples

Valid MT103 (Customer Credit Transfer) Valid

A complete MT103 customer credit transfer with all mandatory tags: transaction reference (20), bank operation code (23B), value date/currency/amount (32A), ordering customer (50K), beneficiary (59), and fee instruction (71A). Block 5 contains authentication (MAC) and checksum (CHK).

{1:F01BANKFRPPAXXX0000000000}{2:I103BANKDEFFXXXXN}{3:{108:MT103}}{4: :20:TXREF20240315001 :23B:CRED :32A:240315EUR25000,00 :50K:/FR7630006000011234567890189 JOHN DOE 10 RUE DE LA PAIX PARIS FR :59:/DE89370400440532013000 JANE SMITH BERLINER STR 45 BERLIN DE :71A:SHA -}{5:{MAC:00000000}{CHK:123456789ABC}}
Malformed MT103 (Missing Mandatory Tag 32A) Invalid

This MT103 is missing the mandatory tag 32A (Value Date/Currency/Amount). Without this tag, the receiving bank cannot determine the transfer amount, currency, or settlement date. Block 3 and Block 5 are also absent.

{1:F01BANKFRPPAXXX0000000000}{2:I103BANKDEFFXXXXN}{4: :20:TXREF20240315001 :23B:CRED :50K:/FR7630006000011234567890189 JOHN DOE :59:/DE89370400440532013000 JANE SMITH :71A:SHA -}