ISO 20022 Message Decoder

abokicalculator

ISO 20022 Message Decoder

Paste an ISO 20022 XML message, and read what it is, every element by its full name, and whether its numbers add up.

An ISO 20022 message is an XML file whose namespace names it, for example pacs.008.001.08: a business area, a function, a flavour and a version. Paste a message, and the decoder identifies it from a catalogue of 3,470 messages, shows every element by its full name instead of a tag such as CdtTrfTxInf, lists the transactions, and checks the transaction count, the control sum, IBANs, BICs, UETRs and dates. You can also type just an identifier such as pacs.008.001.08. It all runs in your browser.

Decode a Message

Message XML or message identifier

Messages often hold names and account numbers. The decoder runs in your browser, and nothing you paste is sent or stored.

The decoder reads the message in your browser and does not validate it against the ISO 20022 schema. It checks the things that can be tested from the message itself. Element names come from the Payments Canada usage guidelines and the European Payments Council implementation guidelines, and codes that belong to external code lists, such as reason codes, are shown as they are. The examples are made up.

The Messages People Meet Most

A short guide to the messages that carry payments and statements. "Versions" are the versions of the message in the catalogue.

Common ISO 20022 messages, what they do and their versions
MessageNameWhat it doesVersions
pain.001Customer Credit Transfer InitiationA customer asks its bank to make one or more credit transfers.2 to 12
pain.002Customer Payment Status ReportThe bank tells the customer whether a payment initiation message, or some of its payments, was accepted or rejected.2 to 14
pain.008Customer Direct Debit InitiationA creditor asks its bank to collect one or more direct debits.1 to 11
pacs.008FI to FI Customer Credit TransferA bank sends a customer credit transfer to another bank, directly or through a clearing and settlement system.1 to 13
pacs.009Financial Institution Credit TransferA bank sends a transfer of funds to another bank on its own account, not a customer payment.1 to 12
pacs.002FI to FI Payment Status ReportA bank reports the status of an earlier bank-to-bank payment message: accepted, rejected or pending.2 to 15
pacs.004Payment ReturnA bank returns the funds of an earlier payment.1 to 14
pacs.003FI to FI Customer Direct DebitA bank sends direct debits to another bank for collection.1 to 11
pacs.007FI to FI Payment ReversalA bank reverses an earlier payment that was already settled.1 to 13
pacs.028FI to FI Payment Status RequestA bank asks another bank for the status of an earlier payment.1 to 6
camt.052Bank To Customer Account ReportThe bank reports the movements and balances of an account during the day.1 to 13
camt.053Bank To Customer StatementThe bank sends the account statement, with the booked entries and the balances.1 to 13
camt.054Bank To Customer Debit Credit NotificationThe bank notifies the account owner of individual debits and credits.1 to 13
camt.056FI to FI Payment Cancellation RequestA bank asks another bank to cancel a payment sent earlier.1 to 11
camt.029Resolution Of InvestigationA bank answers a request to cancel a payment, or an investigation.1 to 13
camt.055Customer Payment Cancellation RequestA customer asks its bank to cancel a payment.1 to 12
head.001Business Application HeaderThe envelope information that travels with a message: who sent it, who receives it, its identifier and its creation date.1 to 2

Business Areas

The first four letters of a message identifier name its business area. The catalogue has 37 areas.

ISO 20022 business areas and the number of messages in the catalogue
CodeBusiness areaMessages
acmtAccount Management159
admiAdministration24
authAuthorities169
caaaAcceptor to Acquirer Card Transactions269
caadCard Administration0
caamATM Management0
cafcFee Collection0
cafmFile Management0
cafrFraud Reporting and Disposition0
cainAcquirer to Issuer Card Transactions76
camtCash Management516
canmNetwork Management0
caspSale to POI Card Transactions0
casrSettlement Reporting0
catmTerminal Management79
catpATM Card Transactions0
cbrfClearing Operations and Reporting0
colrCollateral Management83
fxtrForeign Exchange Trade56
headBusiness Application Header2
pacsPayments Clearing and Settlement92
painPayments Initiation112
redaReference Data83
remtPayments Remittance Advice9
seclSecurities Clearing33
seevSecurities Events480
semtSecurities Management260
seseSecurities Settlement527
setiSecurities Trade Initiation0
setrSecurities Trade116
suplSupplementary Data122
trckPayments Tracker11
treaTreasury18
tsinTrade Services Initiation13
tsmtTrade Services Management109
tsrvTrade Services19
xsysSystem Message33
Check These Out:  FX Spread and Quote Checker: Is Your Rate Fair?

Go Deeper

What ISO 20022 Is

ISO 20022 is an international standard for financial messages. It describes each message as a set of named elements, and the messages are written in XML. Payment schemes and banks choose the messages and versions they use: the European Payments Council's SEPA guidelines, for example, use pain.001 to send a payment to a bank and pacs.008 between banks, and Payments Canada's guidelines use camt.053 for statements. The standard also gives every element a full name, such as Message Identification, and an XML tag that abbreviates it, such as MsgId. A message on the wire uses the tags, which are hard to read, so this decoder puts the names back.

How to Read a Message Identifier

The identifier has four parts, and it is the end of the message's namespace: urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08.

pacsBusiness area: Payments Clearing and Settlement
008Message function: FI to FI Customer Credit Transfer
001Flavour, usually 001
08Version

A new version of a message keeps its area and function and changes the last number. Banks and schemes agree which version they use, so a bank may send pacs.008.001.08 while the catalogue also has pacs.008.001.13. The decoder tells you which versions of the message exist.

The Business Application Header

A message often travels with a header, head.001.001.02, in the same file. It says who sent the message, who receives it, the business message identifier, the message definition identifier and the creation date. The decoder reads it, and checks that the message definition identifier in the header is the message that follows.

What the Decoder Checks

  • The message element. The first element inside the Document should be the one that the catalogue gives for the message, for example CstmrCdtTrfInitn for pain.001.
  • The number of transactions. The group header's NbOfTxs against the transactions in the message, and the same for each payment information block of a pain.001.
  • The control sum. The group header's CtrlSum against the total of the amounts, added as decimals with no rounding error. It is skipped when the amounts are in more than one currency.
  • IBANs. Each IBAN against the MOD 97-10 check digits.
  • BICs. Each BIC against the ISO 20022 pattern: 4 letters or digits, 2 letters, 2 letters or digits, and an optional 3.
  • UETRs. Each UETR against the pattern of a version 4 UUID that the pacs.008 guideline gives.
  • Dates, currencies and lengths. Real calendar dates, currency codes of 3 capital letters, and the maximum lengths of common text elements such as MsgId (35) and Ustrd (140).

A pass does not mean the message is valid against the schema, or that a bank will accept it. Banks add their own rules.

Where the Names Come From

The catalogue of messages is read from the open-source Prowide ISO 20022 model, which is generated from the ISO 20022 schemas, and has 3,470 messages in 37 business areas. The element names come from usage guidelines that quote the ISO names next to the XML tags: the Payments Canada guidelines for pain.001, pain.002, pacs.008, pacs.002, camt.052, camt.053 and camt.054, and the European Payments Council implementation guidelines for SEPA credit transfers, instant credit transfers and direct debits. Where both name the same tag, they always agree. The 553 names cover the elements of those messages. A tag that is not in them is shown as it is, without a guess.

Codes

The decoder explains the fixed codes that the guidelines define: credit or debit (CRDT, DBIT), charge bearer (DEBT, CRED, SHAR, SLEV), entry status (BOOK, INFO), balance types (OPBD, CLBD, PRCD, CLAV, FWAV), the status codes of pacs.002 such as ACSC and RJCT, and a few others. Codes from the external code lists, such as reason codes (AC04), purpose codes (SUPP) and bank transaction codes, are left as they are, because those lists change and are kept by ISO.

What This Page Uses

The catalogue is from the Prowide ISO 20022 model (Apache 2.0 licence), main branch, 20 September 2026. The element names are from the Payments Canada usage guidelines, published as PDF files with MyStandards, and the EPC implementation guidelines. The patterns for BICs, IBANs and UETRs, and the lengths of text elements, are read from those guidelines. The names of the header elements are from the open-source moov-io code for the Business Application Header. We last checked on 20 September 2026.

Check These Out:  SEPA Instant Checker

Frequently Asked Questions

What is an ISO 20022 message?

A financial message written as XML, in which every piece of data is a named element. The message is named by an identifier such as pacs.008.001.08 in its namespace. Payment schemes and banks choose which messages and versions they use.

What does the ISO 20022 message decoder do?

It reads a pasted XML message, names it from a catalogue of 3,470 messages, shows every element by its full name, lists the transactions, and checks the transaction count, the control sum, IBANs, BICs, UETRs, dates and the length of common text elements.

How do I read a message identifier such as pacs.008.001.08?

It has four parts: the business area (pacs), the message function (008), the flavour (001) and the version (08). The area and function name the message, here the FI to FI Customer Credit Transfer of the Payments Clearing and Settlement area. A new version keeps the first three parts.

What is the difference between pain, pacs and camt?

They are business areas. Pain messages initiate payments, such as a customer asking its bank for a credit transfer (pain.001). Pacs messages clear and settle payments between banks (pacs.008, pacs.009). Camt messages carry cash management information such as statements (camt.053) and notifications (camt.054).

Which versions of pacs.008, pain.001 and camt.053 exist?

In the catalogue pacs.008 has versions 1 to 13, pain.001 has 2 to 12 and camt.053 has 1 to 13. Banks and schemes agree which version they use, so the version in your message may not be the newest.

What is a Business Application Header?

The header, head.001.001.02, that can travel with a message in the same file. It names the sender, the receiver, the business message identifier, the message definition identifier and the creation date. The decoder checks that the message definition identifier in the header is the message that follows.

Does a pass mean my message is valid?

No. The decoder does not check the message against the ISO 20022 schema, and banks add their own rules. It checks what can be tested from the message: the counts, the sums, the IBANs, the BICs, the dates and some lengths.

Why does the control sum not match?

The control sum should be the total of the amounts. It commonly fails after a transaction is added or removed and the group header is not updated, or when a rounded amount is used. The decoder adds the amounts as decimals, so a difference is real. It does not check the sum when the amounts are in more than one currency.

What is a UETR?

The unique end-to-end transaction reference of a payment, a version 4 UUID such as 3f5a7c1e-2b4d-4a6f-9c8e-0d1b2a3c4d5e. In a pacs.008 it is in PmtId/UETR. The decoder checks its pattern, which is the one that the pacs.008 guideline of Payments Canada gives.

Why are some elements shown by their tag and not by a name?

The decoder names 553 tags, taken from the Payments Canada and EPC guidelines, and it does not guess a name for any other tag. A tag that is not named is listed under the result, and it is shown as it is.

Are reason codes such as AC04 explained?

No. Reason codes, purpose codes and bank transaction codes belong to the ISO 20022 external code lists, which ISO keeps and changes. The decoder shows them as they are, and explains only the fixed codes that the guidelines define, such as CRDT and DBIT.

Can I type just a message identifier?

Yes. Type pacs.008.001.08, or paste the namespace urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08, and the decoder shows its parts, its name, what it does and the versions that exist.

How current is the catalogue?

It is read from the Prowide ISO 20022 model as of 20 September 2026, and has 3,470 messages in 37 business areas. ISO publishes new messages and versions every year, so a very new one may be missing, and the decoder says so.

Is anything I paste stored or sent?

No. The message is read in your browser, on data that is inside the page. Nothing you paste is stored or sent. Messages often contain names and account numbers, so use the decoder only on a device you trust.

This page is for information only. It does not send messages, and it does not contact any bank. Confirm payment details with your bank before you send money. Not financial advice. Not provided or endorsed by ISO, SWIFT, Payments Canada, the European Payments Council or Prowide.

© 2026 AbokiCalculator.com

Similar Posts