Free SWIFT MT Parser
Paste MT103, MT202, MT940 or other FIN messages to read the headers and every field, with amounts and balances decoded.
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.
Copy the Message
From Alliance, a payments hub, a bank portal’s export or a test file.
Paste It
Whole messages with headers, several at once, or just the block 4 fields.
Read the Fields
Each field shows its tag, name and value, with what it means underneath.
Export as JSON
JSON gives the headers and fields for reconciliation scripts.
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.
“{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}}”
“{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 -}”
“{1:F01BANKGB2LAXXX0000000001}{2:I202BANKUS33XXXXN}{4: :20:FX-881245 :21:FX-881245 :32A:261029USD2500000, :52A:BANKGB2L :58A:BANKFRPP -}”
“:20:REF1 :32A:261028GBP100,5 :59:/GB29NWBK60161331926818 JOHN SMITH”
“{1:F01BANKGB2LAXXX0000000002}{2:I199BANKDEFFXXXXN}{4: :20:QRY-5512 :21:PAY-2026-0042 :79:PLEASE CONFIRM THE BENEFICIARY ACCOUNT FOR YOUR REFERENCE PAY-2026-0042. -}”
“{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 -}”
“{1:F01BANKGB2LAXXX0000000001}{2:I202BANKUS33XXXXN}{4: :20:FX-881245 :21:FX-881245 :32A:261029USD2500000, :52A:BANKGB2L :58A:BANKFRPP -}”
“{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. -}”
“{1:F01BANKDEFFAXXX0000123456}{2:I103BANKGB2LXXXXN}{4: :20:PAY-2026-0042 :32A:261028EUR1250,00”
“PAY-2026-0042 EUR 1250.00”
The Parts of an MT Message
Every FIN message is built from the same blocks and a handful of fields that matter most.
Block 1, Basic Header
Application, service, the logical terminal address, session and sequence number.
“What does F01 mean?”
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?”
Block 3, User Header
Optional tags such as 108 for a reference and 121 for the UETR.
“What is the UETR?”
Block 4, Text
The fields themselves, each starting :tag: on a new line, ending with -}.
“How does block 4 end?”
Block 5, Trailer
Checksums and flags added by the network, such as CHK and PDE.
“What does PDE mean?”
:20: Reference
The sender’s reference for the message, up to 16 characters.
“Who sets :20:?”
:32A: Amount
Value date as YYMMDD, currency and amount with a comma decimal.
“What is 261028EUR1250,00?”
:50K: and :59:
The ordering and beneficiary customers: account on the first line, then name and address.
“What’s on the first line?”
:71A: Charges
Who pays the fees: SHA shared, OUR the sender, BEN the beneficiary.
“What does OUR mean?”
: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.
MT103 to pacs.008
Customer credit transfers move to the pacs.008 message, with structured parties and remittance.
MT202 to pacs.009
Bank-to-bank transfers become pacs.009, and cover payments pacs.009 COV.
MT940 to camt.053
End-of-day statements become camt.053, with entries in structured XML.
The UETR
Block 3 tag 121 carries the same UETR that ISO 20022 messages use, linking the two worlds.
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.
Comma Decimals
Amounts use a comma, so 1250,00 is 1250.00 and 1.250,00 is invalid.
Character Set
FIN allows only the SWIFT X character set: no lowercase in older systems, no accents or @.
Line Lengths
Party fields allow four lines of 35 characters, so long names get cut.
Two-Digit Years
Dates are YYMMDD, which systems must interpret consistently.
Field Options
50A, 50F and 50K are the same field in different options, with different layouts.
Mistyped IBANs
A single wrong digit fails the mod-97 check, which this parser flags.