Skip to content
CardTools

Terminal Capabilities Decoder

Paste Terminal Capabilities (tag 9F33) and see how the terminal reads cards, which CVMs it offers and which offline authentication it supports.

Runs entirely in your browser. Nothing you paste is uploaded, logged or stored.

Terminal Capabilities (tag 9F33)

What the terminal can do: how it reads cards, which cardholder verification methods it offers, and which offline authentication it supports. Mismatches against the card AIP explain a lot of odd CVM outcomes.

3 bytes · 6 hex characters
Try:

Terminal Capabilities bit table (tag 9F33)

3 bytes, 6 hex characters. Byte 1 is the leftmost, and b8 is the most significant bit of each byte.

Byte 1: Card Data Input Capability

Bit Hex Meaning when set
b8 80 Manual key entry
b7 40 Magnetic stripe
b6 20 IC with contacts
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

Byte 2: CVM Capability

Bit Hex Meaning when set
b8 80 Plaintext PIN for ICC verification
b7 40 Enciphered PIN for online verification
b6 20 Signature (paper)
b5 10 Enciphered PIN for offline verification
b4 08 No CVM required
b3 04 On-device cardholder verification Later addition for CDCVM.
b2 02 Reserved for future use
b1 01 Reserved for future use

Byte 3: Security Capability

Bit Hex Meaning when set
b8 80 SDA
b7 40 DDA
b6 20 Card capture The terminal can physically retain the card. ATMs only.
b5 10 Reserved for future use
b4 08 CDA
b3 04 Reserved for future use
b2 02 Reserved for future use
b1 01 Reserved for future use

Other fields: TVR decoder , TSI decoder , AIP decoder , 9F34 decoder , TTQ decoder , and the rest (AUC, CID, 9F40, 9F35, CTQ) in the bit field decoder .

Three bytes, three questions

Terminal Capabilities is tag 9F33. Byte 1 is how the terminal can read a card: keyed, magnetic stripe, or chip with contacts. Byte 2 is which cardholder verification methods it can perform. Byte 3 is which offline data authentication methods it supports, plus whether it can capture a card.

It is a configuration value. The terminal does not compute it per transaction, so the same device should send the same 9F33 every time, and a value that changes between transactions points at more than one configuration on the estate.

Reading E0F8C8

Byte 1 is E0: 80 plus 40 plus 20, so manual key entry, magnetic stripe and chip. Byte 2 is F8: plaintext offline PIN, online PIN, signature, enciphered offline PIN and no CVM. Byte 3 is C8: SDA, DDA and CDA. That is an attended terminal that can do everything.

Change byte 2 to B8 and online PIN is gone, which is what a terminal in an offline PIN market often looks like. Change it to 08 and only "no CVM" is left, which is a terminal with no PIN pad.

Where byte 2 decides the outcome

During cardholder verification the terminal walks the card's CVM List in order. A rule whose condition is not met is passed over, and the commonest condition code, 03, is "if terminal supports the CVM". So byte 2 of 9F33 decides which rule in the list is the first one that applies. Put a card's list through the CVM list parser next to this value and the method that was chosen stops being a surprise. What was performed is then recorded in CVM Results.

Where byte 3 decides the outcome

Byte 3 is the terminal's half of the offline data authentication choice. The card's half is in the AIP. The terminal uses the strongest method both support, and if there is none it sets "offline data authentication was not performed" in the TVR.

Related fields

Additional Terminal Capabilities, tag 9F40, carries the transaction types and the keypad, printer and display hardware. Terminal Type, tag 9F35, is one coded byte for who operates the terminal, whether it is attended and whether it can go online. Both decode in the bit field decoder.

Contactless readers describe themselves separately. For a tap, the capabilities the card sees are in the kernel's own data, such as the TTQ, and 9F33 may describe only the contact side of the same device.

More EMV chip tools

All EMV chip tools