TVR Decoder
Paste a TVR (tag 95) and see which of its 40 bits are set, with the full bit table underneath.
Runs entirely in your browser. Nothing you paste is uploaded, logged or stored.
Terminal Verification Results (tag 95)
A running record of everything the terminal believed went wrong during the transaction. The terminal compares it against the Issuer and Terminal Action Codes to decide approve / decline / go online. When you are diagnosing an unexplained decline, this is the first field to read.
Terminal Verification Results bit table (tag 95)
5 bytes, 10 hex characters. Byte 1 is the leftmost, and b8 is the most significant bit of each byte.
Byte 1: Offline data authentication
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Offline data authentication was not performed Neither SDA, DDA nor CDA ran. Normal for online-only terminals. |
| b7 | 40 | SDA failed |
| b6 | 20 | ICC data missing A mandatory data object was absent from the card. |
| b5 | 10 | Card appears on terminal exception file |
| b4 | 08 | DDA failed |
| b3 | 04 | CDA failed |
| b2 | 02 | SDA selected Added in EMV 4.3. |
| b1 | 01 | Reserved for future use |
Byte 2: Card and application validity
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | ICC and terminal have different application versions |
| b7 | 40 | Expired application |
| b6 | 20 | Application not yet effective |
| b5 | 10 | Requested service not allowed for card product Set when the transaction violates Application Usage Control (tag 9F07). |
| b4 | 08 | New card The card has never been used online (ATC and Last Online ATC both effectively zero). |
| b3 | 04 | Reserved for future use |
| b2 | 02 | Reserved for future use |
| b1 | 01 | Reserved for future use |
Byte 3: Cardholder verification
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Cardholder verification was not successful |
| b7 | 40 | Unrecognised CVM The card asked for a CVM code the terminal does not implement. |
| b6 | 20 | PIN Try Limit exceeded |
| b5 | 10 | PIN entry required and PIN pad not present or not working |
| b4 | 08 | PIN entry required, PIN pad present, but PIN was not entered Usually a cardholder cancel at the PIN prompt. |
| b3 | 04 | Online PIN entered Informational. The PIN block goes to the issuer, so the terminal cannot know the result yet. |
| b2 | 02 | Reserved for future use |
| b1 | 01 | Reserved for future use |
Byte 4: Terminal risk management
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Transaction exceeds floor limit |
| b7 | 40 | Lower consecutive offline limit exceeded |
| b6 | 20 | Upper consecutive offline limit exceeded |
| b5 | 10 | Transaction selected randomly for online processing |
| b4 | 08 | Merchant forced transaction online |
| b3 | 04 | Reserved for future use |
| b2 | 02 | Reserved for future use |
| b1 | 01 | Reserved for future use |
Byte 5: Issuer authentication and scripts
| Bit | Hex | Meaning when set |
|---|---|---|
| b8 | 80 | Default TDOL used |
| b7 | 40 | Issuer authentication failed The ARPC in tag 91 did not verify. Often a key or CVN mismatch rather than fraud. |
| b6 | 20 | Script processing failed before final GENERATE AC |
| b5 | 10 | Script processing failed after final GENERATE AC |
| b4 | 08 | Relay resistance threshold exceeded Set by the Mastercard contactless kernel (EMV Book C-2). |
| b3 | 04 | Relay resistance time limits exceeded Set by the Mastercard contactless kernel (EMV Book C-2). |
| b2 | 02 | Relay resistance protocol performed Bits 2 and 1 are one field in Book C-2: 00 not supported, 01 not performed, 10 performed, 11 reserved. A byte of 02 is the check running, not a failure. |
| b1 | 01 | Relay resistance protocol not performed Bits 2 and 1 read 01. With both clear, the protocol is not supported at all, which sets no bit. |
Other fields: TSI decoder , AIP decoder , 9F33 decoder , 9F34 decoder , TTQ decoder , and the rest (AUC, CID, 9F40, 9F35, CTQ) in the bit field decoder .
What the TVR records
The Terminal Verification Results is tag 95, five bytes that start a transaction
as all zeros. As the terminal works through the EMV steps it sets a bit each time a check
fails, is skipped or cannot be completed. Each byte belongs to one stage: offline data
authentication, card and application validity, cardholder verification, terminal risk
management, and in byte 5 the things that happen after the card has spoken to the issuer.
The card usually asks for the TVR in the data for GENERATE AC, and the issuer receives it in DE 55, so all three parties end up holding the terminal's account of the transaction.
Reading one by hand
Take 0000048000. Split it into bytes: 00 00 04 80 00. Bytes 1 and 2
are clear. Byte 3 is 04, which is b3 on its own: an online PIN was entered. Byte
4 is 80, which is b8: the transaction exceeds the floor limit. That is an
ordinary chip and PIN purchase going online, and nothing in it is a fault.
The Hex column in the table above gives the value of each bit alone. A byte with several bits
set is their sum, so C0 in byte 1 is 80 plus 40:
offline data authentication not performed, and SDA failed.
Values you will see often
0000000000 means the terminal recorded nothing. 0000008000 is the
floor limit bit alone, which a terminal with a zero floor limit sets on every transaction.
8000008000 adds byte 1 b8, offline data authentication not performed, which is
normal for an online-only terminal. 0080008000 has byte 2 b8 set: the card and
the terminal carry different application version numbers, which is informational.
A set bit is not a decline
The TVR is a report. The decision comes from terminal action analysis, where the terminal compares the TVR against the Issuer Action Codes from the card and its own Terminal Action Codes: the Denial pair first, then the Online pair, then the Default pair if it cannot reach the issuer. A bit matters only when the same bit is set in the action code being checked. The IAC comparator does that comparison and names the bit that decided it.
Read it with the TSI
A clear bit has two possible meanings: the check passed, or the check never ran. For cardholder verification, issuer authentication and script processing, only the TSI tells them apart. Offline data authentication is the exception, because byte 1 b8 says outright that it was not performed.
The relay resistance bits in byte 5 are set by the Mastercard contactless kernel (EMV Book C-2). On a contact transaction, or under another kernel, expect them clear.
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.
TSI decoder
Paste a TSI (tag 9B) and see which processing steps the terminal says it performed.
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.