95

Terminal Verification Results
TVR

A 5-byte status word recording the outcome of the terminal checks during a transaction: offline data authentication, card/terminal compatibility, cardholder verification, terminal risk management, and issuer script processing. Compared against the Terminal Action Codes and Issuer Action Codes to decide approve / decline / go online.

If a transaction went somewhere you did not expect, tag 95 is where you look first. The Terminal Verification Results is the running record of everything the terminal noticed while processing the transaction: five bytes, each byte a category of check, each bit a specific finding. It is produced by the terminal, not the card, and it accumulates as the transaction proceeds.

The five bytes divide cleanly. Byte 1 is offline data authentication — whether it ran at all, and whether SDA, DDA or CDA failed. Byte 2 is card and terminal compatibility: version mismatch, expired application, service not allowed, new card. Byte 3 covers cardholder verification, including the PIN cases that generate the most support tickets — PIN try limit exceeded, PIN required with no working pinpad, PIN required but not entered. Byte 4 is terminal risk management: floor limit exceeded, consecutive offline limits, random selection for online processing, merchant forcing the transaction online. Byte 5 covers issuer authentication and script processing.

Two properties of the TVR matter more than any individual bit. First, the bits are sticky: once the terminal sets one it stays set for the rest of the transaction, so the TVR is a cumulative log rather than a snapshot of the current state. Second, and this is the one that surprises people, a non-zero TVR is not a decline. The TVR is meaningless on its own — it acquires meaning only when it is matched against the Terminal Action Codes and the Issuer Action Codes (Denial, Online, Default). A bit that is set but matched by no action code changes nothing about the outcome.

That is why "the TVR is not zero, why was it approved?" is usually the wrong question. The right one is which action code, if any, matches the bits that are set. Take 0000048000, a value you will see constantly in the field: byte 3 bit 3 says online PIN was entered, and byte 4 bit 8 says the transaction exceeded the floor limit. Nothing failed. That is simply a normal transaction that went online because it was above the floor limit and used online PIN — exactly what the terminal was configured to do.

Properties

Tag95
NameTerminal Verification Results
FormatBinary
Length5 bytes
SourceTerminal
Templates77, 80
BooksBook 3

Bit-by-bit breakdown

ByteBitMeaning
18Offline data authentication was not performed
17SDA failed
16ICC data missing
15Card appears on terminal exception file
14DDA failed
13CDA failed
12SDA selected
11RFU (Reserved for Future Use)
RFU
28ICC and terminal have different application versions
27Expired application
26Application not yet effective
25Requested service not allowed for card product
24New card
23RFU (Reserved for Future Use)
RFU
22RFU (Reserved for Future Use)
RFU
21RFU (Reserved for Future Use)
RFU
38Cardholder verification was not successful
37Unrecognised CVM
36PIN Try Limit exceeded
35PIN entry required and PIN pad not present or not working
34PIN entry required, PIN pad present, but PIN was not entered
33Online PIN entered
32RFU (Reserved for Future Use)
RFU
31RFU (Reserved for Future Use)
RFU
48Transaction exceeds floor limit
47Lower consecutive offline limit exceeded
46Upper consecutive offline limit exceeded
45Transaction selected randomly for online processing
44Merchant forced transaction online
43RFU (Reserved for Future Use)
RFU
42RFU (Reserved for Future Use)
RFU
41RFU (Reserved for Future Use)
RFU
58Default TDOL used
57Issuer authentication failed
56Script processing failed before final GENERATE AC
55Script processing failed after final GENERATE AC
54RFU (Reserved for Future Use)
RFU
53RFU (Reserved for Future Use)
RFU
52RFU (Reserved for Future Use)
RFU
51RFU (Reserved for Future Use)
RFU

Decoded example

Example value: 0000048000

  • B3·b3Online PIN entered
  • B4·b8Transaction exceeds floor limit

Interactive decoder

Paste a hex value for this tag to decode it in your browser. Nothing is sent anywhere.

  • B3·b3
    Online PIN entered
  • B4·b8
    Transaction exceeds floor limit

Related tags

Frequently asked questions

What is EMV tag 95?
Tag 95 is the Terminal Verification Results (TVR), a 5-byte bitmap in which the terminal records the outcome of its checks during a transaction: offline data authentication, card and terminal compatibility, cardholder verification, terminal risk management, and issuer authentication or script processing.
What does TVR mean in EMV?
TVR stands for Terminal Verification Results. It is the terminal's cumulative record of what it observed while processing the transaction. Each bit is a specific finding, and the bits are sticky: once set, a bit stays set for the remainder of the transaction.
Does a non-zero TVR mean the transaction was declined?
No. The TVR only records findings; it does not decide anything by itself. The outcome comes from matching the TVR against the Terminal Action Codes and Issuer Action Codes (Denial, Online, Default). A bit that is set but not matched by any action code has no effect on approval.
How do I decode a TVR value like 0000048000?
Read it byte by byte against the bit table. In 0000048000, byte 3 bit 3 indicates online PIN was entered and byte 4 bit 8 indicates the transaction exceeded the floor limit — a normal online transaction, with no failure. Paste your own value into the decoder on this page to resolve every set bit.

Sources

  • EMV 4.4 Book 3, Annex C5 (Terminal Verification Results) (page pending verification)

Receive site updates

Subscribe to receive site updates directly to your email

We won't send spam. You can unsubscribe at any time.