Swift Message Structure ISO 15022 and ISO 20022

Posted on 2nd Apr 2024 87 views

SWIFT stands for Society for Worldwide Interbank Financial Telecommunication

SWIFT Message types are the format or schema used to send messages to financialinstitutions on the SWIFT network.

The original message types were developed by SWIFT and retrospectively made into an ISOstandard, ISO 15022.

This was later supplemented by a XML based version under ISO 20022

 SWIFT MT Message

A SWIFT MT message consists of the following blocks or segments:

  • {1:} Basic Header Block
  • {2:} Application Header Block
  • {3:} User Header Block
  • {4:} Text Block
  • {5:} Trailer Block

No data is included any data at this point, just the Swift message shell; 

{1:}{2:}{3:}{4:

-}

{5:}

 

SWIFT Message Structure: Basic Header Block

The Basic Header Block provides information about the logical originator of the message

It can be identified by the starting tag {1:

It will typically consist of something like: {1:F01MYXXCODEZABC1234567890} where:

  • {1: – Identifies the Block (always 1) – i.e. the Basic Header Block
  • F – Indicates the Application Id – in this case, FIN
    • F = FIN (financial application)
    • A = GPA (general purpose application)
    • L = GPA (for logins, and so on)
  • 01 – Indicates the Service Id
    • 01 = FIN/GPA
    • 21 = ACK/NAK
  • MYXXCODE– The Logical Terminal Address – which is typically your BIC 8 (MYXXCODE) + Logical Terminal Code (Z) + Branch Code(ABC)
    • Logical terminal (LT) address. It is fixed at 12 characters; it must not have X in position 9.
    • MYXXCODE is an invalid BIC – the real BIC must be used
  • 1234 – Session Number – It is generated by the user's computer and is padded with zeros 
  • 567890 – Sequence Number – Sequence number that is generated by the user's computer. It is padded with zeros.
  • } – Indicated the end of the Basic Header Block

 

SWIFT Message Structure: Application Header Block

The Application Header Block is identified by starting tag {2:

There are two types of application headers: Input and Output. Both are fixed-length and continuous with no field delimiter

And will look something like: {2:I101MYXXBANKXJKLU3003} where:

  • {2: – Indicates the start of the Application Header block
  • I – Informs you that you’re in Input mode (i.e. the Sender), O would indicate Output mode – so you would be the recipient of the message
  • 101 – Message type – in this case, an MT101
  • MYXXBANKXJKL – The recipients BIC address, consisting of their BIC (MYXXBANK) + Recipients Logical Terminal Code (X) + Recipients Branch Code (JKL)
    • U = the message priority as follows
      • S = System
      • N=Normal
      • U=Urgent
  • 3 – Delivery Monitoring – Ask your SWIFT contacts or Service Bureau how you should populate this, if at all – Optional
    • 3 = Delivery monitoring field is as follows:

      • 1 = Non delivery warning (MT010)
      • 2 = Delivery notification (MT011)
      • 3 = Both valid = U1 or U3, N2 or N
  • 003 – Non-delivery notification period – again, ask your SWIFT contacts how to populate this, if at all – Optional
    • 003 = Obsolescence period. It specifies when a non-delivery notification is generated as follows:

      • Valid for U = 003 (15 minutes)
      • Valid for N = 020 (100 minutes)
  • } – Indicated the end of the Application Header Block

 

SWIFT Message Structure: User Header Block

The User Header Block will always starts {3:

And will look something like: {3:{113:SEPA}{108:ILOVESEPA}} where:

  • {3: – Block ID (always 3)Indicates the start of the User Header Block
  • {113:SEPA} This is an optional 4 alphanumeric bank priority code
  • {108:ILOVESEPA} – Indicates the Message User Reference (MUR) value, which can be up to 16 characters, and will be returned in the ACK
  • } – Indicated the end of the User Header Block

 

SWIFT Message Structure: Text Block

The Text Block will always starts {4:

And will look something like: {4:

Followed by the details of the message you’re sending. In this case, it is a MT101 – as indicated in Application Header Block message type. For this piece, I strongly recommend that you find and read the appropriate SWIFT message specification – in this instance SWIFT MT101 Format Specifications –  and then work with your bank(s) to understand their specific message requirements.

The format, which is variable length and requires use of CRLF as a field delimiter, is as follows:

{4:CRLF
:20:PAYREFTB54302 CRLF
:32A:970103BEF1000000,CRLF
:50:CUSTOMER NAME CRLF
AND ADDRESS CRLF
:59:/123-456-789 CRLF
BENEFICIARY NAME CRLF
AND ADDRESS CRLF
-}

Finally ending with -}

The example above is of type MT100 (Customer Transfer) with only the mandatory fields completed. It is an example of the format of an ISO 7775 message structure. Block 4 fields must be in the order specified for the message type in the appropriate volume of the SWIFT User Handbook.

 

The format of block 4 field tags is:

:nna:

nn = Numbers

a = Optional letter, which may be present on selected tags

For example:

:20: = Transaction reference number

:58A: = Beneficiary bank

 

SWIFT Message Structure: Trailer Block

The Trailer Block will always starts {5:

This is usually automatically added by the systemand specified in the proprietary SWIFT implementation

And ends with }

 

A message always ends in a trailer with the following format:

{5: {MAC:12345678}{CHK:123456789ABC}

This block is for SWIFT system use and contains a number of fields that are denoted by keywords such as the following:

MAC

Message Authentication Code calculated based on the entire contents of the message using a key that has been exchanged with the destination and a secret algorithm. Found on message categories 1,2,4,5,7,8, most 6s and 304.

CHK

Checksum calculated for all message types.

PDE

Possible Duplicate Emission added if user thinks the same message was sent previously

DLM

Added by SWIFT if an urgent message (U) has not been delivered within 15 minutes, or a normal message (N) within 100 minutes.

 

Overview of SWIFT MT Categories:

Message Type

Description

MT0xx

System Messages

MT1xx

Customer Payments and Cheques

MT2xx

Financial Institution Transfers

MT3xx

Treasury Markets

MT4xx

Collection and Cash Letters

MT5xx

Securities Markets

MT6xx

Treasury Markets - Metals and Syndications

MT7xx

Documentary Credits and Guarantees

MT8xx

Travellers Cheques

MT9xx

Cash Management and Customer Status

 

 

All SWIFT messages include the literal "MT" (Message Type). This is followed by a three-digit number that denotes the message category, group and type. Consider the following example, which is an order to buy or sell via a third party:

The first digit (3) represents the category. A category denotes messages that relate to particular financial instruments or services such as Precious Metals (6), Treasury (3), or Travellers Cheques (8). The category denoted by 3 is Treasury Markets.

The second digit (0) represents a group of related parts in a transaction life cycle. The group indicated by 0 is a Financial Institution Transfer.

The third digit (4) is the type that denotes the specific message. There are several hundred message types across the categories. The type represented by 4 is a notification.

The first digit (1) represents the category. A category denotes messages that relate to particular financial instruments or services such as Cash Transfer(1), Treasury (3), or Cash Management (9). The category denoted by 1 is Cash Transfer.

The second digit (0) represents a group of related parts in a transaction life cycle. The group indicated by 0 is a Financial Institution Transfer.

The third digit (3) is the type that denotes the specific message. There are several hundred message types across the categories. The type represented by 3 is a notification.

 

ISO 20022 MX

A new message type expressed in XML syntax, which is more flexible and easier to implement than the previous generation of message types (MT). These message types are developed in accordance with ISO 20022 standard.

Current syntax is as following: xxxx.nnn.aaa.bb, where

  • xxxx is an alphabetic code in four positions (fixed length) identifying the Business Process,
  • nnn is an alphanumeric code in three positions (fixed length) identifying the Message Functionality,
  • aaa is a numeric code in three positions (fixed length) identifying a particular flavour (variant) of Message Functionality,
  • bb is a numeric code in two positions (fixed length) identifying the version.

Consider the following example: TREA.001.001.02

  • TREA refers to ‘Treasury’
  • 001 refers to ‘NDF opening (notification)’
  • 001 refers to the variant
  • 02 refers to the version message format, in this case version 2 of ‘NDF opening’ type.

SWIFT Standards for MX Messages:

MX Identifier

Description

acmt.xxx.xxx.xx

Account Management

admi.xxx.xxx.xx

Administration

camt.xxx.xxx.xx

Cash Management

defp.xxx.xxx.xx

Derivatives

pacs.xxx.xxx.xx

Payments Clearing and Settlement

pain.xxx.xxx.xx

Payments Initiation

reda.xxx.xxx.xx

Reference Data

seev.xxx.xxx.xx

Securities Events

semt.xxx.xxx.xx

Securities Management

sese.xxx.xxx.xx

Securities Settlement

setr.xxx.xxx.xx

Securities Trade

trea.xxx.xxx.xx

Treasury

tsmt.xxx.xxx.xx

Trade Services Management

 


LinkedIn

Docs Home ISO8583 Simulator Simulator Tutorials ISO8583 Converter Cards Issuer BASE24 Base24-eps Reference Guide ISO8583 Switch HSM Simulator POS Simulator Products


Top Read Articles


BIN List & Range for MasterCard, Visa, Amex, Diners, Discover, JCB, CUP 165970 views

ISO8583 Response Codes for Transaction processing 67426 views

Read smart card chip data with APDU commands ISO 7816 63885 views

ISO8583 Processing Codes for Transaction Processing 31461 views

ISO8583 Message Types for Transaction Processing 31426 views

Deploy, run and generate with neaPay Card Data Generator 21467 views

MCC Codes - Merchant Category Codes to use in ISO8583 Field 18 21046 views

Run the neaPay ISO8583 simulator 20937 views

ISO8583 payments message format, programmers guide 18451 views

ISO8583 message: The list of ISO 4217 currency codes for data elements 49 and 52 17612 views

ISO8583 ATM POS Crypto API integration with exchanges like Coinbase or Binance 17082 views

ISO8583 Message Converter JSON and XML interface specification mapping 14037 views

Cards and Banks Training 13644 views

Java version for neapay products Simulator Converter Switch Authorization Cards Issuer 10757 views

Support for the neaPay products: Authorization, Switch, Converter, Simulator, Issuer 10136 views

Log Files in BASE24 classic 9856 views

Create a new test case in the neaPay ISO8583 simulator Video guide 9098 views

BASE24 classic vs BASE24-eps 8802 views

BASE24 documentation to read 8643 views

BASE24 classic interview questions 8573 views

Deploy the neaPay ISO8583 simulator - video guide 8512 views

EMV explained for programmers 8206 views

ISO8583 Simulator neapay- Performance testing at 500, 1000 and 1500 Transactions per second 8129 views

ISO8583 converter to JSON XML SQL to HTTP host - message flow - video guide - Part.2 7797 views

ISO8583 converter to JSON XML SQL to HTTP Host - host unavailable - video guide- Part.3 7319 views

ISO8583 converter to JSON XML SQL to HTTP host - start& run - video guide - Part.1 7171 views

Adding your own card to the Payments simulator to test your system 7155 views

Card readers supported by neaPay payments simulator, CHIP and NFC 7082 views

Changing fields definitions in the ISO8583 simulator and message converter 7078 views

Run the neaPay ISO8583 converter to JSON, XML, SQL, in a test environment 7049 views

Connect the neaPay ISO8583 Acquirer simulator to your own host or Issuer 7039 views

BASE24 classic screens examples explained 7037 views

Load Test enabling and performance testing at 1TPS and 100TPS 6984 views

Run One, Run Scenario, Run All, Run Load in the neaPay ISO8583 Simulator - Use guide 6984 views

Sample Recommended design for an Acquirer test cases suite, Scenarios and Regression 6974 views

Enabling traces in the payments simulator 6970 views

How the fingerprint reader works in the ISO8583 payments simulator 6957 views

Deploy the neaPay ISO8583 Payments converter in a test environment 6956 views

Altering test cases in Excel for the ISO8583 simulator 6953 views

BASE24-eps interview questions 6894 views

Deploy the neaPay HSM simulator in a test environment 6813 views

Regression Testing in 1 click with instant Analytics and CSV report 6660 views

Deploy the Payments Switch Router in a test environment 6546 views

BASE24 classic ATM configuration Tutorial in ATD and XPNET with examples 6258 views

Add extra custom fields to the ISO8583 simulator 6166 views

BASE24 classic cards configuration tutorial with Examples 6162 views

Trace configuration in neaPay Simulator, Converter, Switch, Authorization and Cards Issuer 6140 views

PCI compliant with neapay switch 5735 views

ISO8583 Message Converter to XML SQL CSV interface specification mapping 5709 views

BASE24-EPS ACI DESKTOP tutorial - Getting started 5538 views

BASE24 classic prefix configuration tutorial CPF with examples 4102 views

BASE24 classic tracing of transactions. Audits, configuration, enabling and opening 3953 views

ACI BASE24 classic automatic extract configuration 3652 views

BASE24 classic Institution configuration Tutorial with example 3620 views

BASE24 classic balance file configuration PBF with example 3528 views

POS simulator format SPDH HPDH Verifone and custom 3483 views

First steps with BASE24 Classic 3379 views

Getting started with using Prognosis for BASE24 and BASE24-eps 3094 views

ISO8583 simulator Visa MasterCard Amex CUP configuration demo video 325 views

ISO8583 simulator scheduling tasks and test regressions 124 views

Swift Message Structure ISO 15022 and ISO 20022 88 views

POS Transaction types explained 81 views

SWIFT Message types complete list reference 81 views

SWIFT Common Message Type List with examples 77 views

Contact    

Iso8583 - articles


ISO8583 Simulator   124 views

ISO8583 simulator scheduling tasks and test regressions


The neaPay ISO8583 simulator improves automated testing with full capabilities for scheduling minutely message exchanges, duration tests, nightly or w ...
ISO8583 Converter   5709 views

ISO8583 Message Converter to XML SQL CSV interface specification mapping


ISO8583 Converter creating an XML,  SQL and CSV object from an incoming TCP/IP ISO8583 binary message, and then sending it to a HTTP host as ...
ISO8583 Switch   5735 views

PCI compliant with neapay switch


PCI compliant with neapay switch Steps and procedure: Configuration parameters to acheive service PCI DSS compliance   ...
Products   6140 views

Trace configuration in neaPay Simulator, Converter, Switch, Authorization and Cards Issuer


Trace configuration in neaPay Simulator, Converter, Switch, Authorization and Cards Issuer ...
ISO8583 Simulator   6166 views

Add extra custom fields to the ISO8583 simulator


Adding extra, custom fields to the ISO8583 simulator in 3 simple steps is as easy as running the tests: Edit the spreadsheet and save it; Edit th ...
ISO8583 Switch   6546 views

Deploy the Payments Switch Router in a test environment


Deploy then neaPay Payments switch router to easily route transactions based on BIN/prefix, amount, merchant, originating or destination insytitution, ...
ISO8583 Simulator   6660 views

Regression Testing in 1 click with instant Analytics and CSV report


The neaPay Payments simulator is designed from the start to follow the life of a project, and therefore, after all testing has been completed, we need ...
ISO8583 Simulator   6953 views

Altering test cases in Excel for the ISO8583 simulator


When you need to customize your own test case, you need to follow some simple steps all the time.In order to obtain this, you need to alter test data ...
ISO8583 Converter   6956 views

Deploy the neaPay ISO8583 Payments converter in a test environment


When you receive a delivery from neaPay for an iso8583 convertor, you will get 1 zip file.  This step by step guide will guide you through ...
ISO8583 Simulator   6957 views

How the fingerprint reader works in the ISO8583 payments simulator


Step by step guide to enable and disable fingerprint reading, enrollment and verification with the neapay Simulator is pretty straight forward and ass ...
ISO8583 Simulator   6970 views

Enabling traces in the payments simulator


Enabling traces in the ISO8583 Payments Simulator, just like the ISO8583 message converter and the ISO8583 Host, is a call to the system core to write ...
ISO8583 Simulator   6974 views

Sample Recommended design for an Acquirer test cases suite, Scenarios and Regression


A test suit is composed of different scenarios which follow in a functional (or another) way in order to cover the full, or as much as possible, of th ...

Choose the product you need



ISO8583 Converter

Convert ISO8583 to JSON XML SQL


ISO8583 Interface

ISO8583 Interface Handler


ISO20022 Converter

Convert ISO20022 to ISO8583 ...


ISO8583 Builder

Build ISO8583 from scratch


ISO8583 Switch

ISO8583 Router by criteria


ISO8583 Authorization

Authorize cards and ledger


Payments Acquirer

Acquiring host from devices


Cards Issuing

Generate and issue cards


ISO8583 Simulator

ISO8583 HISO98 HISO87 simulator


ISO20022 Simulator

ISO20022 & SWIFT simulator


POS Simulator

POS protocols simulator


Web Api Simulator

Web API tester Performance

 

Get a free quote, Ask for details
Get help

Contact us

Try the software yourself
Download

Download software

Read Documentation and Start guides

Documentation

Online Tools Overview

Online Tools