ISO 8583 :: MTI
As it's name suggests, the message type indicator provides information
about the type of message we are dealing with. The MTI consists of four
components describing version, class, function and originator of the
message. Typically, the four MTI components are encoded as two
bytes, with each half-byte or nibble representing one of the components.
For example, a message beginning
0x01 0x00 has the version info set to
0, the class set to
1, and function and originator fields both set
This is the first piece of information contained in the message, indicating the ISO standard version the message is based on. The following version values are defined:
|3-9||Reserved for ISO use|
the next position of the MTI provides information about the message class that the message is categorized as:
|0||Reserved for ISO use|
|9||Reserved for ISO use|
At this point, one could asked oneself naively, what exactly do these classes mean? How are 'Financial Presentment' and 'Financial Presentment' different? What about the difference between the 'Administrative' and 'Network management' classes? It turns out that those are very good questions and not everybody using 8583 to create a protocol came up with identical answers. A semantically identical message marked 'Authorization' in one protocol may be 'Financial Presentment' in another. So vaguely, the classes should mean roughly what you think they mean, but you need to check the description of the protocol you're talking about to be certain.
The following table contains the possible values of the message function component of the MTI. Note that here again the precise meaning of these functions are dependent on the flavor of ISO you're using.
|8,9||Reserved for ISO use|
Again, don't ask what the difference is between an 'Advice', a 'Notification' and an 'Instruction'. The answer is: it depends.
The final component is information about who initiated the transaction. The possible values are:
|3||Card Issuer Repeat|
|5||Other Originator Repeat|
|6-9||Reserved for ISO|
An important aspect to note is the existence of 'Repeat' messages. In case no response was received, it's usually possible to resend the identical message with the originator information set to 'Repeat'.
A typical message a new terminal sends out when first connected might be
0800 message. Looking up the information above, we see the
terminals protocol is old'ish (1987). The message class is 'Network
Management', the message's function is a 'Request' and it's being sent
by the 'Acquirer'. You could argue about the sense of claiming the
acquirer sent the message when in fact it's being sent by a terminal at
If the host the terminal is trying to communicate with answers, it would
send back a
0810 message. The message type is identical, apart
from being a 'response' and not a 'request'. But, if the terminal
doesn't receive an answer from the host, the terminal may try to resend
the message, this time as a
0801 message, indicating the message to be
When the answer from the host finally arrives, the terminal will be able
to tell apart delayed answers to the first (
0810) message and answers
to the repeat (