ISO 8583 Parser
online lookup

EMV TVR (Tag 95) Terminal Verification Results Decoder

The TVR is the terminal's checklist: 5 bytes, 40 bits, one check per bit. Paste your hex value above — set bits get highlighted; below sits the full 40-bit reference table, searchable by meaning.

PositionMeaning

A set bit is not a decline

The TVR merely records which checks did not pass; it decides nothing by itself. The decision happens in terminal action analysis: the terminal ANDs the TVR against the issuer's IAC (written on the card) and the acquirer's TAC — only a non-zero result triggers the corresponding action (deny, go online, or let the issuer decide). So a transaction can carry set TVR bits and still be approved. 0000008000 (floor limit exceeded) is completely routine in an online environment: it pushes the transaction online, it is not grounds for a decline. And the reverse holds: an all-zero TVR can still be declined — all zeros only says the terminal's checks passed; the decline can come from issuer risk rules, limits or card status, none of which appear in the TVR.

Using it to answer "why was this declined?"

Take the declined chip transaction, pull tag 95 out of DE55 and paste it above: the set bits are your suspect list. Bits in byte 1 point at card authentication (counterfeit cards, expired certificates and a missing terminal CAPK all land here). Byte 3 points at CVM — PIN try limit exceeded (b6) is the usual answer when a cardholder complains their card is "blocked". Issuer authentication failed in byte 5 (b7) sends you back to the issuer's ARPC verification. Reading the TVR first cuts the search space in half: bits set, look at the terminal/card side; all zeros, look at the issuer side.

Two bits people misread: "Online PIN entered" (byte 3, b3) is not an error — it is a statement of fact, naturally set on every online-PIN transaction. Likewise "selected randomly for online processing" (byte 4, b5) is a normal mechanism doing its job. Don't chase these status bits as if they were failure bits.

Read next