Check this out

Friday 29 April 2011

SWIFT Message Block Structure Definition

All FIN messages conform to a defined block structure. Each block of a message contains data of a particular type and is used for a particular purpose. Each block of a message begins and ends with a curly bracket, or brace, character ‘{‘ and ‘}’ respectively.

All main blocks are numbered, and the block number followed by a colon : is always the first character within any block. A typical FIN user-to-user message may consist of:

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

These five SWIFT message blocks include header information, the body of the message, and a trailer.

All blocks have the same basic format:
{n:...}

The curly braces ({}) indicate the beginning and end of a block. is the block identifier, in this case a single integer between 1 and 5.

Each block identifier is associated with a particular part of the message. There is no carriage return or line feed (CRLF) between blocks.

Blocks 3, 4, and 5 may contain sub-blocks or fields delimited by field tags. Block 3 is optional. Many applications, however, populate block 3 with a reference number so that when SWIFT returns the acknowledgement, it can be used for reconciliation purposes.

{1: Basic Header Block}

The basic header block is fixed-length and continuous with no field delimiters. It has the following format:
{1:    F    01   BANKBEBB   2222   123456}
(a) (b) (c) (d) (e) (f)

a) 1: = Block ID (always 1)

b) Application ID as follows:
  • F = FIN (financial application)
  • A = GPA (general purpose application)
  • L = GPA (for logins, and so on)
c) Service ID as follows:
  • 01 = FIN/GPA
  • 21 = ACK/NAK
d) BANKBEBB = Logical terminal (LT) address. It is fixed at 12 characters; it must not have X in position 9.

e) 2222 = Session number. It is generated by the user's computer and is padded with zeros.

f) 123456 = Sequence number that is generated by the user's computer. It is padded with zeros.

{2: Application Header Block}

There are two types of application headers:

  1. Input  
  2. Output. 

Both are fixed-length and continuous with no field delimiters.

1. The input (to SWIFT) structure is as follows:

{2:    I     100    BANKABCDXXXX    U       3       003}
(a) (b) (c) (d) (e) (f) (g)

a) 2: = Block ID (always 2)

b) I = Input

c) 100 = Message type

d) BANKABCDXXXX = Receiver's address with X in position 9/ It is padded with Xs if no branch is required.

e) U = the message priority as follows:
  • S = System
  • N = Normal
  • U = Urgent

f) 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

g) 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)
2. The output (from SWIFT) structure is as follows:

{2:   O      100   1200   970103BANKBEBBAXXX2222123456   970103  1201   N}
(a) (b) (c) (d) (e) (f) (g) (h)

a) 2: = Block ID (always 2)

b) O = Output

c) 100 = Message type

d) 1200 = Input time with respect to the sender

e) The Message Input Reference (MIR), including input date, with Sender's address

f) 970103 = Output date with respect to Receiver

g) 1201 = Output time with respect to Receiver

h) N = Message priority as follows:
  • S = System
  • N = Normal
  • U = Urgent

{3: User Header Block}

This is an optional block and has the following structure:
{3:  {113:xxxx}  {108:abcdefgh12345678}     }
(a) (b) ( c)

a) 3: = Block ID (always 3)

b) 113:xxxx = Optional banking priority code

c) This is the Message User Reference (MUR) used by applications for reconciliation with ACK.
Note:
Other tags exist for this block. They include tags (such as 119, which can contain the code ISITC on an MT521) that may force additional code word and formatting rules to validate the body of the message as laid down by ISITC (Industry Standardization for Institutional Trade Communication). For further information, see All Things SWIFT: the SWIFT User Handbook.

{4: Text Block or body}

This block is where the actual message content is specified and is what most users see. Generally the other blocks are stripped off before presentation. 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
-}
The symbol CRLF is a mandatory delimiter in block 4.

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 content of the text block is a collection of fields.  Sometimes, the fields are logically grouped into sequences. Sequences can be mandatory or optional, and can repeat. Sequences also can be divided into subsequences. In addition, single fields and groups of consecutive fields can repeat. For example, sequences such as those in the SWIFT Tags 16R and 16S may have beginning and ending fields. Other sequences, such as Tag 15, have only a beginning field. In yet other message types, no specific tags mark the start or end of a field sequence.

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

The length of a field is as follows:

nn = Maximum length
nn! = Fixed-length
nn-nn = Minimum and maximum length
nn * nn = Maimum number of lines times maximum line length
The format of the data is as follows:
= Digits
d = Digits with decimal comma
h = Uppercase hexadecimal
a = Uppercase letters
c = Uppercase alphanumeric
e = Space
x = SWIFT character set
y = Uppercase level A ISO 9735 characters
z = SWIFT extended character set

Some fields are defined as optional. If optional fields are not required in a specific message, do not include them because blank fields are not allowed in the message.

/,word = Characters "as is"
[...] = Brackets indicate an optional element

For example:
4!c[/30x]
This is a fixed 4 uppercase alphanumeric, optionally followed by a slash and up to 30 SWIFT characters.

ISIN1!e12!c
This is a code word followed by a space and a 12 fixed uppercase alphanumeric.
Note:
In some message types, certain fields are defined as conditional. For example, when a certain field is present, another field may change from optional to mandatory or forbidden. Certain fields may contain sub-fields, in which case there is no CRLF between them. Validation is not supported.
Certain fields have different formats that depend on the option that is chosen. The option is designated by a letter after the tag number, for example:

:32A:000718GBP1000000,00
Value Date, ISO Currency, and Amount

:32B:GBP1000000,00
ISO Currency and Amount
Note:
The SWIFT standards for amount formats are: no thousand separators are allowed (10,000 is not allowed, but 10000 is allowed); use a comma (not a decimal point) for a decimal separator (1000,45 = one thousand and forty-five hundredths).

:58A:NWBKGB2L
Beneficiary SWIFT address

{5: Trailer Block}

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.

3 comments:

  1. Very useful pice of information! Thanks for sharing!

    ReplyDelete
  2. Block 2 has only 11 characters although the text says it should be twelve

    BANKDEFFXXX

    ReplyDelete
  3. We have system which provides the ability to convert message data from any format to the SWIFT qualified format that SWIFTAlliance Access will accept.

    More details mail to: info@messagetransformation.com

    ReplyDelete

Popular Posts