TSI Decoder
Paste a TSI (tag 9B) and see which processing steps the terminal says it performed.
Runs entirely in your browser. Nothing you paste is uploaded, logged or stored.
Transaction Status Information (tag 9B)
Which processing functions actually executed. Read it alongside the TVR: the TVR says what went wrong, the TSI says whether the step even ran. For cardholder verification, issuer authentication and script processing, a clear TVR bit means little unless the TSI shows the step was performed.
Transaction Status Information bit table (tag 9B)
2 bytes, 4 hex characters. Byte 1 is the leftmost, and b8 is the most significant bit of each byte.
Byte 1
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Offline data authentication was performed |
| b7 | 40 | Cardholder verification was performed |
| b6 | 20 | Card risk management was performed |
| b5 | 10 | Issuer authentication was performed |
| b4 | 08 | Terminal risk management was performed |
| b3 | 04 | Script processing was performed |
| b2 | 02 | Reserved for future use |
| b1 | 01 | Reserved for future use |
Byte 2
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Reserved for future use |
| b7 | 40 | Reserved for future use |
| b6 | 20 | Reserved for future use |
| b5 | 10 | Reserved for future use |
| b4 | 08 | Reserved for future use |
| b3 | 04 | Reserved for future use |
| b2 | 02 | Reserved for future use |
| b1 | 01 | Reserved for future use |
Other fields: TVR decoder , AIP decoder , 9F33 decoder , 9F34 decoder , TTQ decoder , and the rest (AUC, CID, 9F40, 9F35, CTQ) in the bit field decoder .
What the TSI records
Transaction Status Information is tag 9B, two bytes, and only six bits of the
first byte are assigned. Each one says that a processing step was performed. It says nothing
about how the step turned out: "cardholder verification was performed" is set whether the PIN
was right or wrong.
Byte 2 is entirely reserved. A TSI with anything in its second byte is usually a value that has been misaligned by a byte, not a new feature.
Why the TVR needs it
The TVR sets a bit when something goes wrong, so a clear bit can mean the check passed or that it never happened. The TSI is what separates the two. If TVR byte 5 b7, "issuer authentication failed", is clear and TSI byte 1 b5 is set, the ARPC was checked and verified. If both are clear, no ARPC was ever checked, and the clear TVR bit tells you nothing.
Values you will see often
E800 is b8, b7, b6 and b4: offline data authentication, cardholder verification,
card risk management and terminal risk management all ran. That is a complete contact
transaction up to the first GENERATE AC. F800 adds b5, issuer authentication,
which appears once the response has come back and the card has checked the ARPC.
FC00 adds b3 as well, because an issuer script was processed.
6800 is the same as E800 without b8: no offline data authentication.
Expect the TVR alongside it to have byte 1 b8 set, and if it does not, one of the two values
was captured at a different point in the transaction.
When it was captured matters
The terminal sets these bits as it goes, so the TSI in an authorisation request is a snapshot taken before the issuer has replied. Issuer authentication and script processing cannot be set in it yet. The final value is the one in the terminal's own record after the second GENERATE AC, and the two are often quoted as if they were the same.
The TSI belongs to the contact flow. Several contactless kernels do not define it, so a tap
that carries no 9B is not necessarily broken.
More EMV chip tools
All EMV chip toolsTLV parser
Paste BER-TLV hex and get a decoded tag tree with EMV names, formats and nested templates.
Bit fields
Decode TVR, TSI, AIP, AUC, CID, CVM Results, Terminal Capabilities and the contactless qualifiers.
TVR decoder
Paste a TVR (tag 95) and see which of its 40 bits are set, with the full bit table underneath.
AIP decoder
Paste an AIP (tag 82) and see what the card supports: SDA, DDA, CDA, cardholder verification and issuer authentication.
9F33 decoder
Paste Terminal Capabilities (tag 9F33) and see how the terminal reads cards, which CVMs it offers and which offline authentication it supports.
9F34 decoder
Paste CVM Results (tag 9F34) and see which method the terminal performed, under which condition, and whether it succeeded.
TTQ decoder
Paste a TTQ (tag 9F66) and see what the contactless reader told the card about its capabilities and requirements.
IAC vs TVR
Compare a TVR against the Issuer Action Codes to see exactly which bit forced the decline or the go-online.
CVM list
Break tag 8E into its X and Y amounts and the cardholder verification rules, in priority order.
Status words
What 9000, 6A82, 6985 and the rest of SW1SW2 actually mean.
AID lookup
Application identifiers to scheme and product: A0000000031010 and friends.
EMVCo QR
Decode a merchant-presented QR payload and verify its CRC.