Every tag this site's parser knows, in one printable table โ grouped by what the tag is for, not by hex order โ plus the three rules that let you read raw TLV by eye.
A tag table is only useful if you can find the tag boundaries in the first place. Three rules cover everything DE55 will throw at you:
xxx1 1111, i.e. the byte ends in F after masking: 9F, 5F, BF, DFโฆ), the tag continues into the next byte. That is why 9F26 is a two-byte tag while 95 is complete in one. (A subsequent tag byte with its top bit set would extend the tag further still โ three-byte tags are legal in BER, you just won't meet them in DE55.)00โ7F, that is the length. If its top bit is set, the low seven bits say how many following bytes hold the actual length: 81 C8 means "length in the next 1 byte" = 200 bytes, 82 01 04 means 260 bytes. You meet this on long templates and issuer scripts.0x20) marks a constructed tag: the value is another run of TLVs, not a final value. 77 (0111 0111) is constructed โ expand it. 80 (1000 0000) is primitive, despite being named a "template". The tag byte, not the name, is the truth.Worked example โ a minimal GENERATE AC response fragment, 771082023D00950500000080009F3602004B:
| Bytes | Read as |
|---|---|
77 10 | Tag 77: low five bits 10111 โ not all ones, so one byte; bit 6 set, so constructed. Length 10 = 16 bytes of inner TLV follow. |
82 02 3D00 | Tag 82 (AIP), 2 bytes: 3D00. |
95 05 0000008000 | Tag 95 (TVR), 5 bytes: one bit set โ transaction exceeds floor limit. |
9F36 02 004B | 9F ends in five ones โ tag continues: 9F36 (ATC), 2 bytes: 004B = 75 transactions. |
Paste that string into the EMV TLV parser and you get the same walk back: one top-level tag, four tags in total, with the AIP, TVR and ATC broken out. For a whole DE55 that is always the faster route โ this section exists so the output never looks like magic.
Grouped the way you actually query them: by what stage of the transaction the tag belongs to. Formats: b = binary, n = numeric (BCD digits), cn = compressed numeric (BCD, padded with F), an / ans = alphanumeric (with specials), template = constructed, the value is more TLV. Byte counts are value lengths โ the tag and length bytes come on top.
Everything the card and terminal exchange to agree which application runs. The AID โ the answer to "what is an AID in EMV" โ is a registered identifier of 5โ16 bytes: a 5-byte RID naming the scheme plus an optional PIX naming the product; A0000000031010, for instance, is Visa's main credit/debit application (the AID lookup has the common ones). Templates are wrappers: expand them and read the tags inside.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
6F | File Control Information (FCI) Template | var | template | The card's SELECT response: the DF name (84) plus the proprietary block (A5). |
A5 | FCI Proprietary Template | var | template | Proprietary part of the FCI; carries 50, 9F12, BF0C and friends. |
BF0C | FCI Issuer Discretionary Data | โค222 | template | Container for the issuer's own extras inside the FCI. |
61 | Application Template | var | template | Wraps one application entry (AID plus label) in a payment directory listing. |
4F | Application Identifier (AID) โ card | 5โ16 | b | The card's answer to application selection: which chip application this transaction is running on. |
9F06 | Application Identifier (AID) โ terminal | 5โ16 | b | The terminal-side copy of the AID; in DE55 it tells the issuer which application the terminal selected. |
50 | Application Label | 1โ16 | ans | Human-readable application name from the card, often printed on receipts. |
9F12 | Application Preferred Name | 1โ16 | ans | Display name the card prefers over tag 50 when the terminal can render it. |
84 | Dedicated File (DF) Name | 5โ16 | b | Name of the selected dedicated file โ for payment applications, usually identical to the AID. |
9F0A | Application Selection Registered Proprietary Data | var | b | EMVCo-registered data that fine-tunes application selection; interpreted per registered entry. |
70 | READ RECORD Response Message Template | โค252 | template | Everything READ RECORD returns from the card's files is wrapped in this template. |
77 | Response Message Template Format 2 | var | template | GPO / GENERATE AC response as a proper TLV list โ expand it like any other template. |
80 | Response Message Template Format 1 | var | b | The same responses with values concatenated in a fixed order, no inner tags โ despite the template name, it is primitive. |
E1 | Proprietary Template | var | template | Proprietary template; the inner layout is whatever its definer says it is. |
Personalised onto the chip by the issuer; the same values come back transaction after transaction. This is also where the cardholder data lives โ 5A, 57 and 5F20 are PAN-equivalent and fall under PCI DSS: mask them before a DE55 dump goes into a log, a ticket or a screenshot.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
5A | Application Primary Account Number (PAN) | โค10 | cn | The PAN as the chip stores it. Cardholder data โ mask it in logs and tickets. |
57 | Track 2 Equivalent Data | โค19 | b | Track-2 image: PAN, expiry and service code in one value. Cardholder data, same masking rules as 5A. |
5F20 | Cardholder Name | 2โ26 | ans | Cardholder name as personalised onto the card. |
5F24 | Application Expiration Date | 3 | n 6 | Application expiry, YYMMDD; what the terminal checks for an expired chip application. |
5F25 | Application Effective Date | 3 | n 6 | Date the application becomes usable; transactions before it set a TVR bit. |
5F28 | Issuer Country Code | 2 | n 3 | Issuer's country, ISO 3166 numeric. |
5F34 | Application PAN Sequence Number | 1 | n 2 | Distinguishes several physical cards sharing one PAN (reissues, supplementary cards). |
9F07 | Application Usage Control | 2 | b | Bit flags for where the card may be used: domestic vs international, goods, cash, ATM. |
9F08 | Application Version Number (ICC) | 2 | b | Application version personalised on the card; a mismatch with the terminal's 9F09 sets a TVR bit. |
9F0D | Issuer Action Code โ Default | 5 | b | Issuer policy mask matched against the TVR when the terminal cannot go online. |
9F0E | Issuer Action Code โ Denial | 5 | b | TVR bits that decline the transaction offline outright, no online attempt. |
9F0F | Issuer Action Code โ Online | 5 | b | TVR bits that force the transaction online for the issuer to decide. |
9F42 | Application Currency Code | 2 | n 3 | Currency in which the card keeps its internal offline amounts. |
9F44 | Application Currency Exponent | 1 | n 1 | Decimal places for amounts in the application currency. |
9F53 | Consecutive Transaction Limit (International) | 1 | โ | Card risk-management parameter whose exact definition differs by scheme โ confirm against your scheme's spec before relying on it. |
Supplied by the terminal, per transaction. These are the fields the card's cryptogram is computed over โ which is why a DE55 repeats information (amount, currency, date) that also exists elsewhere in the ISO 8583 message: the copy in DE55 is the one the chip signed.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
9F02 | Amount, Authorised (Numeric) | 6 | n 12 | The amount the application cryptogram is computed over; the money core of DE55. |
9F03 | Amount, Other (Numeric) | 6 | n 12 | Cashback portion of the transaction; all zeros when there is none. |
5F2A | Transaction Currency Code | 2 | n 3 | Transaction currency, ISO 4217 numeric โ pairs with DE49. |
9A | Transaction Date | 3 | n 6 | Terminal's local transaction date, YYMMDD. |
9F21 | Transaction Time | 3 | n 6 | Terminal's local transaction time, HHMMSS. |
9C | Transaction Type | 1 | n 2 | Transaction type โ the first two digits of the processing code (00 purchase, 01 cash, 20 refund). |
9F39 | Point-of-Service (POS) Entry Mode | 1 | n 2 | How the PAN entered the terminal: 05 contact chip, 07 contactless, 90 magstripe. |
9F15 | Merchant Category Code (MCC) | 2 | n 4 | Merchant category of the acceptor โ same code set as DE18. |
9F16 | Merchant Identifier | 15 | ans | Merchant identifier as configured in the terminal. |
9F1A | Terminal Country Code | 2 | n 3 | Country the terminal operates in; drives domestic-vs-cross-border checks. |
9F1C | Terminal Identification | 8 | an | Terminal identifier โ matches DE41 in the surrounding ISO 8583 message. |
9F1E | Interface Device (IFD) Serial Number | 8 | an | Serial number of the physical acceptance device. |
9F4E | Merchant Name and Location | var | ans | Merchant name and address as the terminal knows them. |
9F33 | Terminal Capabilities | 3 | b | Three bytes of bit flags: card input methods, CVMs and security features the terminal supports. |
9F35 | Terminal Type | 1 | n 2 | Terminal class: attended or unattended, online-capable or offline-only, operated by whom. |
9F40 | Additional Terminal Capabilities | 5 | b | Extended capabilities: which transaction types and input/output methods the terminal handles. |
9F09 | Application Version Number (terminal) | 2 | b | Application version implemented by the terminal kernel; compared against the card's 9F08. |
9F37 | Unpredictable Number | 4 | b | Terminal's random number โ the freshness that keeps each cryptogram unique. |
9F41 | Transaction Sequence Counter | 2โ4 | n 4โ8 | The terminal's own transaction sequence counter. |
The reason DE55 exists at all. 9F26 is the ARQC in the request; 91 carries the issuer's ARPC back; the rest give both sides the context to verify each other. If a "what is ARQC" question brought you here: it is the 8-byte cryptogram in 9F26 when the card asks to go online โ see ARQC vs TC vs AAC for the full story.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
9F26 | Application Cryptogram (ARQC / TC / AAC) | 8 | b | The card's MAC over the transaction data: ARQC when requesting online authorisation, TC when approving, AAC when declining. |
9F27 | Cryptogram Information Data (CID) | 1 | b | Declares which of the three the cryptogram in 9F26 is, plus advice flags. |
9F36 | Application Transaction Counter (ATC) | 2 | b | Increments on every transaction; issuers watch it for gaps and repeats as a cloning signal. |
9F10 | Issuer Application Data (IAD) | โค32 | b | Issuer-proprietary block: cryptogram version (CVN), key index (DKI) and card verification results (CVR) travel here. |
91 | Issuer Authentication Data | 8โ16 | b | The issuer's ARPC coming back in the response โ the card's proof the approval really came from its issuer. |
8A | Authorisation Response Code | 2 | an | The response code as delivered to the card โ mirrors DE39 of the response message. |
9F45 | Data Authentication Code | 2 | b | Static value covered by the issuer's signature under SDA. |
9F4C | ICC Dynamic Number | 2โ8 | b | Random number the card generates per transaction for dynamic data authentication. |
The tags that look like gibberish until decoded bit by bit โ and the ones that answer most troubleshooting questions. Each is expanded below.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
82 | Application Interchange Profile (AIP) | 2 | b | The card's capability declaration, returned with the GPO response before anything is verified. |
95 | Terminal Verification Results (TVR) | 5 | b | The terminal's running log of checks that failed or deserve noting โ first stop when investigating a decline. |
9B | Transaction Status Information (TSI) | 2 | b | Which EMV functions actually executed in this transaction. |
9F34 | CVM Results | 3 | b | Which cardholder verification method ran, under what condition, and how it ended. |
The issuer's channel for managing a card it can no longer touch physically: script commands ride the authorization response, the terminal relays them to the chip, and 9F5B reports back in a later transaction.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
71 | Issuer Script Template 1 | var | template | Issuer script commands the terminal must send to the card before the second GENERATE AC. |
72 | Issuer Script Template 2 | var | template | Script commands sent after the second GENERATE AC โ PIN unblock, counter resets and similar card management. |
9F5B | Issuer Script Results | var | b | The terminal's report of how each script command fared, so the issuer knows the script landed. |
Three tags the parser recognises by their most common use, but which are not defined by the public EMV books โ the authoritative layout lives in each scheme's own specification.
| Tag | Name | Bytes | Format | What it tells you |
|---|---|---|---|---|
9F63 | Product Identification Information | var | โ | Scheme-assigned tag whose meaning depends on the network โ defer to the counterpart's spec. |
9F6E | Form Factor Indicator / Third Party Data | var | โ | Used differently across schemes (form factor vs third-party data) โ defer to the spec you are integrating against. |
9F7C | Merchant Custom Data | var | โ | Proprietary payload whose meaning is agreed between the transaction parties. |
Seven tags in DE55 pack their meaning into individual bits, and one more (the ATC) into a plain counter. For each: the question it answers, a real value, and the decoder that expands it. Every example below was run through the linked decoder โ the readings are the tool's output, not paraphrase.
Answers: "what did the terminal see go wrong?" Starts as five bytes of zeros; the terminal sets a bit for every exceptional condition it meets โ offline authentication failures, CVM problems, floor-limit triggers, issuer-authentication failures. Observations, not decisions: whether a set bit declines the transaction is settled against the action codes (9F0D/0E/0F). Example: 0400048000 decodes to three set bits โ CDA failed (byte 1ยทb3), online PIN entered (byte 3ยทb3), transaction exceeds floor limit (byte 4ยทb8). One real problem, one neutral fact, one routine online trigger โ a typical mix. Decode yours in the TVR decoder; the full bit map is in TVR bits explained.
Answers: "what does this card support?" Static personalisation, declared with the GPO response before any check has run: which offline authentication methods (SDA / DDA / CDA), whether cardholder verification and issuer authentication are supported, whether terminal risk management must run. Example: 3D00 announces DDA, cardholder verification, terminal risk management, issuer authentication and CDA โ but no SDA. Check any value in the AIP decoder; how AIP relates to TVR and TSI is the subject of AIP vs TVR vs TSI.
Answers: "which EMV functions actually ran?" Six meaningful bits, all in byte 1, each set once the corresponding function executed โ regardless of how it went. Example: F800 means offline data authentication, cardholder verification, card risk management, issuer authentication and terminal risk management were all performed, and no issuer script was. "Performed" is not "passed": the verdict lives in the TVR. Decode in the TSI decoder.
Answers: "what kind of cryptogram is 9F26?" The top two bits classify it โ 00 AAC (decline), 01 TC (approve), 10 ARQC (go online) โ and the low bits carry advice flags. Example: 80 = ARQC, online authorisation requested. Decode in the CID decoder; the three cryptogram types are compared in ARQC vs TC vs AAC.
Answers: "how was the cardholder actually verified?" Three bytes: the method performed, the condition under which it applied, and the result. Example: 410302 = plaintext PIN verified by the ICC (41, with permission to fall through to the next rule on failure), applied because the terminal supports the CVM (03), and it succeeded (02). Decode in the CVM Results decoder.
Answers: "in what order did the card want verification attempted?" Two 4-byte amounts (X and Y) followed by 2-byte rules, each a method plus a condition, tried top to bottom. Example: 000003E800000000420344031E031F02 = X 1000, Y 0, four rules โ enciphered PIN online, enciphered PIN by ICC, signature, then "no CVM required" when the conditions allow. One placement note: 8E is personalised in the card's records and consumed by the terminal during CVM selection โ it is not one of the 66 tags above because it does not normally travel in DE55; what travels is the outcome, 9F34. Decode one in the CVM List decoder; the rule-by-rule logic is in the CVM List article.
Answers: "what is the issuer telling itself?" The one tag in this section without a public bit map: EMV reserves the container, the issuer (via its scheme's template) defines the content โ typically a derivation key index, the cryptogram version number (CVN), and the Card Verification Results, the card's own view of the transaction. Example: 06101203A40000 reads, under the common Visa-style layout, as length 6, DKI 10, CVN 12 (= version 18), CVR 03A40000 โ but any such split is a heuristic until confirmed against the CVN and the scheme spec, which is exactly how the IAD decoder labels it. Background: IAD tag 9F10 explained.
Answers: "how many transactions has this chip done?" Not a bit string โ a big-endian counter that increments every time the application starts a transaction. Example: 003C = 60. Issuers compare it against the last ATC seen: gaps are normal (offline transactions not yet cleared), but a repeated or decreasing ATC is a strong cloning signal. Convert values in the ATC decoder; more in the ATC article.
Given a raw DE55, look at five tags before anything else. Paste the whole string into the TLV parser, then read: 9F27 (what the chip recommended), 9F26 (the cryptogram backing it), 95 (what the terminal saw go wrong), 9F34 (how the cardholder was verified), 9F36 (the counter, for cloning checks). Those five answer "what happened and does it look legitimate" for most tickets; everything else is supporting detail.
Know which direction a tag travels. Most tags ride the request. Three exist only in the response: 91 (issuer authentication data), 71 and 72 (issuer scripts). If you find them in a request dump, the dump is mislabelled. Conversely 9F5B (script results) shows up in a later request, reporting on scripts delivered earlier โ a one-transaction lag that regularly confuses log correlation.
Know which side wrote the value. When a value looks wrong, the tag tells you whom to call. Card-personalisation tags (82, 9F07, 9F08, 5F24, the IACs) can only be fixed by the issuer's card profile. Terminal-configuration tags (9F1A, 9F33, 9F35, 9F40, 9F1C) point at the acquirer or the device estate. A terminal country code of 0000 is a terminal-fleet bug, not a card problem.
Expand templates before counting tags. If a dump starts with 77 or 70, the payload is one level down โ a naive scan that treats the template as opaque will report "one tag" and miss everything. Same for 6F/A5/BF0C nesting in selection data. The parser expands these automatically; when walking by hand, apply Rule 3 above and recurse.
Watch for the encoding trap. DE55 is binary TLV inside a message that may otherwise be ASCII or EBCDIC. If tag bytes look shifted by a constant or every second character is 3, the DE55 was re-encoded as text somewhere upstream โ fix the extraction, not the parse. The hex viewer helps spot this quickly.
This reference covers tags with public, EMV-book-level definitions (plus the three scheme-assigned ones explicitly flagged above). Beyond it lie the private classes, and the honest answer about them is shorter than any table:
DF- and FF-prefixed tags are private-class by construction โ the tag byte itself says "context-defined". DF60, a common search, is a good example: different kernels, vendors and schemes each assign it their own meaning, and there is no public definition to cite. The only correct reading comes from the spec of the system that produced the message.9F50โ9F7F range is assigned by individual schemes rather than the EMV books. The same tag number can mean different things on different networks โ which is why 9F53 and 9F63 carry a "confirm against your scheme" note above rather than a confident one-liner.A tag table that invents meanings for private tags is worse than none: it reads as authoritative exactly where it is guessing. When you hit an unknown DFxx, the productive move is to identify the producing system and ask for its tag dictionary.
DF/FF-prefixed as defined by the counterpart, not by any generic table โ this one included.