— Developer Tools

Free SWIFT MT Parser

Paste MT103, MT202, MT940 or other FIN messages to read the headers and every field, with amounts and balances decoded.

— Samples
Messages 1Fields 7Valid
Live

What is a SWIFT MT Parser?

SWIFT MT messages are how banks have sent payments and statements to each other for decades: MT103 for a customer transfer, MT202 between banks, MT940 for a statement. They are dense blocks of tags such as :32A:. This parser lays them out field by field.

It reads the basic, application, user and trailer headers, including the UETR, and names the block 4 fields of the common message types. Amounts with comma decimals, balances, statement lines, charges and operation codes are decoded, BICs are split into their parts, and IBAN check digits are verified.

Key Features

Every Block Read

Basic, application, user and trailer headers, with the UETR and message user reference.

Fields Named

Fifty block 4 tags across MT103, MT202, MT199 and the MT940 and MT950 statements.

Values Decoded

Value dates, currencies, comma-decimal amounts, balances and statement lines in plain words.

IBANs and BICs Checked

IBAN check digits are verified and BICs split into institution, country, location and branch.

Stays in Your Browser

Payment details are parsed locally and never uploaded.

Perfect for everyone

  • Payments developers
  • Bank operations and reconciliation teams
  • Treasury analysts and anyone reading FIN messages

How to Use the SWIFT MT Parser

Paste one message or several.

1

Copy the Message

From Alliance, a payments hub, a bank portal’s export or a test file.

2

Paste It

Whole messages with headers, several at once, or just the block 4 fields.

3

Read the Fields

Each field shows its tag, name and value, with what it means underneath.

4

Export as JSON

JSON gives the headers and fields for reconciliation scripts.

Worked Examples

MT Messages, Parsed

Each row is a FIN message as it appears in a payments system, and each answer is this parser’s output in the mode on the chip. The banks are fictional and the IBANs are the standard examples.

REF_001An MT103 customer transfer

“{1:F01BANKDEFFAXXX0000123456}{2:I103BANKGB2LXXXXN}{3:{108:INV-2026-0042}{121:8e81b6f3-2c3a-4f7e-9a1d-3c5b7e2f9a10}}{4: :20:PAY-2026-0042 :23B:CRED :32A:261028EUR1250,00 :50K:/DE89370400440532013000 ACME GMBH HAUPTSTRASSE 1, BERLIN :59:/GB29NWBK60161331926819 ACME UK LTD 1 HIGH STREET, LONDON :70:INVOICE 2026-0042 :71A:SHA -}{5:{CHK:A1B2C3D4E5F6}}”

REF_002An MT940 statement

“{1:F01BANKDEFFAXXX0000123457}{2:O9401030261028BANKGB2LAXXX00011234562610281030N}{4: :20:STMT-20261027 :25:DE89370400440532013000 :28C:301/1 :60F:C261026EUR10000,00 :61:2610271027D1250,00NTRFPAY-2026-0042//BK-77812 :86:INVOICE 2026-0042 ACME UK LTD :61:2610271027C540,25NTRFNONREF//BK-77813 :86:REFUND ORDER 9981 :62F:C261027EUR9290,25 :64:C261027EUR9290,25 -}”

REF_003An MT202 bank transfer as JSON

“{1:F01BANKGB2LAXXX0000000001}{2:I202BANKUS33XXXXN}{4: :20:FX-881245 :21:FX-881245 :32A:261029USD2500000, :52A:BANKGB2L :58A:BANKFRPP -}”

REF_004Block 4 alone, with a mistyped IBAN

“:20:REF1 :32A:261028GBP100,5 :59:/GB29NWBK60161331926818 JOHN SMITH”

REF_005An MT199 free-format query

“{1:F01BANKGB2LAXXX0000000002}{2:I199BANKDEFFXXXXN}{4: :20:QRY-5512 :21:PAY-2026-0042 :79:PLEASE CONFIRM THE BENEFICIARY ACCOUNT FOR YOUR REFERENCE PAY-2026-0042. -}”

REF_006A cross-currency MT103 with charges

“{1:F01BANKGB2LAXXX0000000003}{2:I103BANKUS33XXXXU}{4: :20:PAY-77 :23B:CRED :32A:261030USD1088,00 :33B:GBP850,00 :36:1,28 :50K:/GB29NWBK60161331926819 ACME UK LTD :59:/123456789 JANE DOE :71A:OUR :71F:GBP15,00 -}”

REF_007The MT202 field by field

“{1:F01BANKGB2LAXXX0000000001}{2:I202BANKUS33XXXXN}{4: :20:FX-881245 :21:FX-881245 :32A:261029USD2500000, :52A:BANKGB2L :58A:BANKFRPP -}”

REF_008Two messages in one paste

“{1:F01BANKGB2LAXXX0000000001}{2:I202BANKUS33XXXXN}{4: :20:FX-881245 :21:FX-881245 :32A:261029USD2500000, :52A:BANKGB2L :58A:BANKFRPP -} {1:F01BANKGB2LAXXX0000000002}{2:I199BANKDEFFXXXXN}{4: :20:QRY-5512 :21:PAY-2026-0042 :79:PLEASE CONFIRM THE BENEFICIARY ACCOUNT FOR YOUR REFERENCE PAY-2026-0042. -}”

REF_009Block 4 without its closing -}

“{1:F01BANKDEFFAXXX0000123456}{2:I103BANKGB2LXXXXN}{4: :20:PAY-2026-0042 :32A:261028EUR1250,00”

REF_010Text with no fields

“PAY-2026-0042 EUR 1250.00”

Message Blocks

The Parts of an MT Message

Every FIN message is built from the same blocks and a handful of fields that matter most.

01 / BLOCK

Block 1, Basic Header

Application, service, the logical terminal address, session and sequence number.

“What does F01 mean?”

02 / BLOCK

Block 2, Application Header

I for input with the receiver, or O for output with the sender, plus the MT number.

“What does I103 mean?”

03 / BLOCK

Block 3, User Header

Optional tags such as 108 for a reference and 121 for the UETR.

“What is the UETR?”

04 / BLOCK

Block 4, Text

The fields themselves, each starting :tag: on a new line, ending with -}.

“How does block 4 end?”

05 / BLOCK

Block 5, Trailer

Checksums and flags added by the network, such as CHK and PDE.

“What does PDE mean?”

06 / 20

:20: Reference

The sender’s reference for the message, up to 16 characters.

“Who sets :20:?”

07 / 32A

:32A: Amount

Value date as YYMMDD, currency and amount with a comma decimal.

“What is 261028EUR1250,00?”

08 / 50K

:50K: and :59:

The ordering and beneficiary customers: account on the first line, then name and address.

“What’s on the first line?”

09 / 71A

:71A: Charges

Who pays the fees: SHA shared, OUR the sender, BEN the beneficiary.

“What does OUR mean?”

10 / 61

:61: Statement Line

A statement entry: value date, debit or credit, amount, type and references.

“What does NTRF mean?”

Reading an MT940 Statement

Statements follow a fixed shape, and reconciliation depends on reading it correctly. These fields carry the balances and entries in the order they appear.

:25: Account

The account the statement covers, often an IBAN.

:28C: Statement Number

The statement and page number, so missing pages can be spotted.

:60F: Opening Balance

The booked balance at the start, with C or D for credit or debit.

:61: and :86:

Each entry, followed by free text for the account owner such as the payer and invoice.

:62F: Closing Balance

Opening balance plus credits minus debits. If it doesn’t add up, an entry is missing.

:64: Available Balance

The balance available to use, which can differ from the booked closing balance.

MT and ISO 20022

Cross-border payments on SWIFT have been moving from MT messages to ISO 20022 XML. MT text still turns up in archives, statements and systems that translate between the two, so it helps to know how they map.

Tip 01

MT103 to pacs.008

Customer credit transfers move to the pacs.008 message, with structured parties and remittance.

Tip 02

MT202 to pacs.009

Bank-to-bank transfers become pacs.009, and cover payments pacs.009 COV.

Tip 03

MT940 to camt.053

End-of-day statements become camt.053, with entries in structured XML.

Tip 04

The UETR

Block 3 tag 121 carries the same UETR that ISO 20022 messages use, linking the two worlds.

Tip 05

Truncation

Translating rich ISO 20022 data into MT fields can cut names and addresses short.

When to Parse MT Messages

Whenever a FIN message needs reading without a payments hub.

Payment Investigations

Find the UETR, references, parties and charges of a payment someone is asking about.

Reconciliation

Check statement balances and entries against your ledger.

Testing Integrations

Verify the messages your system generates before sending them to a bank.

Migrations

Compare MT fields with their ISO 20022 equivalents during a migration.

Learning SWIFT

See what each tag means in real-looking messages.

MT Message Pitfalls

Mistakes that cause rejects and reconciliation breaks.

Tip 01

Comma Decimals

Amounts use a comma, so 1250,00 is 1250.00 and 1.250,00 is invalid.

Tip 02

Character Set

FIN allows only the SWIFT X character set: no lowercase in older systems, no accents or @.

Tip 03

Line Lengths

Party fields allow four lines of 35 characters, so long names get cut.

Tip 04

Two-Digit Years

Dates are YYMMDD, which systems must interpret consistently.

Tip 05

Field Options

50A, 50F and 50K are the same field in different options, with different layouts.

Tip 06

Mistyped IBANs

A single wrong digit fails the mod-97 check, which this parser flags.

Frequently Asked Questions