SWIFT stands for Society for Worldwide Interbank Financial Telecommunication
SWIFT——环球银行金融电信协会
SWIFT Payment Useful Link
Notes: 内部可以使用 SWIFT Translator & SWIFT Validator。
MT Overview
https://www2.swift.com/knowledgecentre/products/Standards%20MT/publications
- Category 1 - Customer Payments and Cheques
- Category 2 - Financial Institution Transfers
- Category 3 - Treasury Markets - Foreign Exchange, Money Markets and Derivatives
- Category 4 - Collections and Cash Letters
- Category 5 - Securities Markets
- Category 6 - Reference Data
- Category 6 - Treasury Markets - Commodities
- Category 7 - Documentary Credits and Guarantees/Standby Letters of Credit
- Category 8 - Travellers Cheques
- Category 9 - Cash Management and Customer Status
- Category n - Common Group Messages
MX Overview
https://www2.swift.com/knowledgecentre/products/Standards%20MX/publications
- Collateral Management
- Corporate Actions
- Cross-Border Payments and Reporting Plus (CBPR+)
- Funds
- General Meeting
- Securities Clearing
- Settlement and Reconciliation
- Shareholders Identification Disclosure
- Technical
- Total Portfolio Valuation Report
- Triparty Collateral Management
XSD (XML Schema Definition)
XML Schema Definition or XSD is a recommendation by the World Wide Web Consortium (W3C) to describe and validate the structure and content of an XML document.
ISO 20022 Message Definition: https://www.iso20022.org/iso-20022-message-definitions
Securities: https://www.iso20022.org/iso-20022-message-definitions?business-domain=6
Swift Message Structure ISO 15022 and ISO 20022
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
- U = the message priority as follows
- 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:
- Example 1 : MT304
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.
- Example 2 : MT103
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 |