Interested in pro-bono consulting

.Unplugged Mind

Think, Believe, Dream, and Dare

Introduction to ISO 8583 Message Specification

My almost a decade long experience in Payment domain allowed me to understand financial transactions better. Here I will try my best to provide a simple introduction to ISO 8583 Financial Messaging Standard.

ISO 8583 is the standard which being followed by majority of financial transactions. It might appear complex at first glance, but once you learn it’s quite simple and fun to use.

There are few versions of the ISO 8583 standard: ISO 8583:1987, ISO8583:1993, ISO8583:2003. Though it defines a common standard, but some field are standard and some are generic. Means standard fields and their usage will remain same across the systems, but generic can be used in custom ways as per the specific system’s need.

Typically financial transaction messages being exchanged between two systems through a TCP/IP connection. Once the connection is established a Sign-On message is exchanged and then Financial Transaction messages. On regular interval an Echo message is also sent to ensure the other system is still alive.

These messages are being formatted as per the guidelines of ISO 8583 standards, which typically are made of three components

a) Message Type Identifier (MTI): Message Type Identifier is a 4 digit numeric that describe the type of message, which further explains the intents of message.

  • First Position describes the version of ISO 8583 used.
  • Second Position describes the message class such as authorization or reversal or network message and so on.
  • Third Position describes the message function such as request or response or advice and so on.
  • Fourth Position describes the origin point of message such as issuer or acquirer and so on.

Next is the list of MTI (ref: Wikipedia)

MTIMeaningUsage
0100Authorization RequestRequest from a point-of-sale terminal for authorization for a cardholder purchase
0110Request ResponseRequest response to a point-of-sale terminal for authorization for a cardholder purchase
0120Authorization AdviceWhen the Point of Sale device breaks down and you have to sign a voucher
0121Authorization Advice RepeatIf the advice times out
0130Issuer Response to Authorization AdviceConfirmation of receipt of authorization advice
0200Acquirer Financial RequestRequest for funds, typically from an ATM or pinned point-of-sale device
0210Issuer Response to Financial RequestIssuer response to request for funds
0220Acquirer Financial Advicee.g. Checkout at a hotel. Used to complete transaction initiated with authorization request
0221Acquirer Financial Advice repeatIf the advice times out
0230Issuer Response to Financial AdviceConfirmation of receipt of financial advice
0320Batch UploadFile Update/Transfer Advice
0330Batch Upload ResponseFile Update/Transfer Advice Response
0400Acquirer Reversal RequestReverses a transaction
0510Batch Settlement responseCard Acceptor Reconciliation Request Response
0800Network Management RequestHypercom terminals initialize request. Echo test, logon, log off etc.
0810Network Management ResponseHypercom terminals initialize response. Echo test, logon, log off etc.
0820Network Management AdviceKey Change


b) Bitmap :
 Bitmap provide the information about which data element is present in the current message. It contains data in 16 hexadecimal characters, which can be broken into binary. All the positions with value ‘1’ signifies the presence of data element of #position number in the message.

An example will make it clear.

Primary Bitmap: 7024640100C08000

Convert it to Binary. Each 1 will represent a data element of corresponding position
0x70 0111 0000 (Data Element 2, 3, 4. Bit at position 1 value 0 indicate no secondary bitmap)
0x24 0010 0100 (Data Element 11, 14)
0x64 0110 0100 (Data Element 18, 19, 22)
0x01 0000 0001 (Data Element 32)
0x00 0000 0000
0xC0 1100 0000 (Data Element 41, 42)
0x80 1000 0000 (Data Element 49)
0x00 0000 0000

That’s how primary bitmap is being read, which can provide information of only 64 data elements. Some transaction messages requires data elements in the range of 65-128, means another bitmap is required, i.e secondary bitmap. The first bit of primary bitmap signifies the presence of secondary bitmap with value ‘1’

Primary Bitmap: F024640100C08000  &   Secondary Bitmap: 0000000000000004
0xF0 1111 0000 (Data Element 2, 3, 4. Also bit at position 1 value 1 indicates presence of secondary bitmap)
0x24 0010 0100 (Data Element 11, 14)
0x64 0110 0100 (Data Element 18, 19, 22)
0x01 0000 0001 (Data Element 32)
0x00 0000 0000
0xC0 1100 0000 (Data Element 41, 42)
0x80 1000 0000 (Data Element 49)
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x00 0000 0000
0x04 0000 0100 (Data Element 126)

c) Data Elements : Data elements are all the fields that contains the transaction information. Each element have their own format, attribute and length. Some are standard such as DE#49 Transaction Currency.

Next is the list of data elements (ref: Wikipedia)

Data ElementTypeUsage
1b 64Bitmap
2n ..19Primary account number (PAN)
3n 6Processing code
4n 12Amount, transaction
5n 12Amount, settlement
6n 12Amount, cardholder billing
7n 10Transmission date & time
8n 8Amount, cardholder billing fee
9n 8Conversion rate, settlement
10n 8Conversion rate, cardholder billing
11n 6System trace audit number (STAN)
12n 6Time, local transaction (hhmmss)
13n 4Date, local transaction (MMDD)
14n 4Date, expiration
15n 4Date, settlement
16n 4Date, conversion
17n 4Date, capture
18n 4Merchant type
19n 3Acquiring institution country code
20n 3PAN extended, country code
21n 3Forwarding institution. country code
22n 3Point of service entry mode
23n 3Application PAN sequence number
24n 3Function code (ISO 8583:1993)/Network International identifier (NII)
25n 2Point of service condition code
26n 2Point of service capture code
27n 1Authorizing identification response length
28x+n 8Amount, transaction fee
29x+n 8Amount, settlement fee
30x+n 8Amount, transaction processing fee
31x+n 8Amount, settlement processing fee
32n ..11Acquiring institution identification code
33n ..11Forwarding institution identification code
34ns ..28Primary account number, extended
35z ..37Track 2 data
36n ...104Track 3 data
37an 12Retrieval reference number
38an 6Authorization identification response
39an 2Response code
40an 3Service restriction code
41ans 8Card acceptor terminal identification
42ans 15Card acceptor identification code
43ans 40Card acceptor name/location (1-23 address 24-36 city 37-38 state 39-40 country)
44an ..25Additional response data
45an ..76Track 1 data
46an ...999Additional data - ISO
47an ...999Additional data - national
48an ...999Additional data - private
49a or n 3Currency code, transaction
50a or n 3Currency code, settlement
51a or n 3Currency code, cardholder billing
52b 64Personal identification number data
53n 16Security related control information
54an ...120Additional amounts
55ans ...999ICC Data - EMV having multiple tags
56ans ...999Reserved ISO
57ans ...999Reserved national
58ans ...999Reserved national
59ans ...999Reserved national
60ans ...999Reserved national
61ans ...999Reserved private
62ans ...999Reserved private
63ans ...999Reserved private
64b 16Message authentication code (MAC)
65b 1Bitmap, extended
66n 1Settlement code
67n 2Extended payment code
68n 3Receiving institution country code
69n 3Settlement institution country code
70n 3Network management information code
71n 4Message number
72n 4Message number, last
73n 6Date, action (YYMMDD)
74n 10Credits, number
75n 10Credits, reversal number
76n 10Debits, number
77n 10Debits, reversal number
78n 10Transfer number
79n 10Transfer, reversal number
80n 10Inquiries number
81n 10Authorizations, number
82n 12Credits, processing fee amount
83n 12Credits, transaction fee amount
84n 12Debits, processing fee amount
85n 12Debits, transaction fee amount
86n 16Credits, amount
87n 16Credits, reversal amount
88n 16Debits, amount
89n 16Debits, reversal amount
90n 42Original data elements
91an 1File update code
92an 2File security code
93an 5Response indicator
94an 7Service indicator
95an 42Replacement amounts
96b 64Message security code
97x+n 16Amount, net settlement
98ans 25Payee
99n ..11Settlement institution identification code
100n ..11Receiving institution identification code
101ans ..17File name
102ans ..28Account identification 1
103ans ..28Account identification 2
104ans ...100Transaction description
105ans ...999Reserved for ISO use
106ans ...999Reserved for ISO use
107ans ...999Reserved for ISO use
108ans ...999Reserved for ISO use
109ans ...999Reserved for ISO use
110ans ...999Reserved for ISO use
111ans ...999Reserved for ISO use
112ans ...999Reserved for national use
113ans ...999Reserved for national use
114ans ...999Reserved for national use
115ans ...999Reserved for national use
116ans ...999Reserved for national use
117ans ...999Reserved for national use
118ans ...999Reserved for national use
119ans ...999Reserved for national use
120ans ...999Reserved for private use
121ans ...999Reserved for private use
122ans ...999Reserved for private use
123ans ...999Reserved for private use
124ans ...999Reserved for private use
125ans ...999Reserved for private use
126ans ...999Reserved for private use
127ans ...999Reserved for private use
128b 64Message authentication code

 

To conclude an ISO 8583 transaction message (based on the examples above) would look like as below:

0100F024640100C0800000000000000000041640000000000000010000000000001000001122112020599984005011123456789011234567812345678901234584002012345678901234567890
In Hex/Ascii : 
30313030F024640100C08000000000000000000431363430303030303030303030303030303130303030303030303030303031303030303031313232313132303230353939393834303035303131313233343536373839303131323334353637383132333435363738393031323334353834303032303132333435363738393031323334353637383930