EMV tags · Kernel 2 and Kernel 8, UIRD 1 and Kernel 8, UIRD 2

DF8116 9F8205 9F8219 User Interface Request Data (UIRD)

TagDF8116 – Kernel 2
9F8205 – Kernel 8, UIRD 1
9F8219 – Kernel 8, UIRD 2
NameUser Interface Request Data (UIRD)
Format and lengthb 22
SourceKernel, sent to the terminal
Where you see itWith the outcome, and in messages the kernel sends during processing

User Interface Request Data, or UIRD, is the kernel's instruction to the reader's display, lights and sounds. It is 22 bytes long and says which message to show, which status to signal, for how long, in which language and with which amount. Kernel 2 uses DF8116. Kernel 8 has two: 9F8205 (UIRD 1) and 9F8219 (UIRD 2).

Fields

  • Message Identifier, 1 byte: for example 17 CARD READ OK, 03 APPROVED, 07 declined, 1A APPROVED – SIGN, 1B AUTHORISING – PLEASE WAIT, 20 SEE PHONE, 21 TRY AGAIN in Kernel 8, 1E CLEAR DISPLAY, FF N/A.
  • Status, 1 byte: 00 NOT READY, 01 IDLE, 02 READY TO READ, 03 PROCESSING, 04 CARD READ SUCCESSFULLY, 05 PROCESSING ERROR, FF N/A. Readers use it to drive their status lights and beeps.
  • Hold Time, 3 bytes, n6: how long the message stays, in units of 100 ms.
  • Language Preference, 8 bytes: the card's language preference, padded with hexadecimal zeroes.
  • Value Qualifier, 1 byte: whether to show an amount, a balance or nothing.
  • Value, 6 bytes, n12, and Currency Code, 2 bytes, n3: the amount or balance to show.

One UIRD or two

In Kernel 8, UIRD 1 is included in the outcome when the Outcome Parameter Set flags "UI Request on Outcome Present" or "UI Request on Restart Present" are set. If both flags are set, UIRD 1 is for the outcome and UIRD 2 holds what to show when the transaction restarts, for example "SEE PHONE" before the second tap of a phone payment. Kernel 2 sends a single UIRD with the outcome, and can send others while it is processing.

Example

17 04 000013 656E000000000000 10 000000002500 0124: CARD READ OK, card read successfully, hold for 1.3 seconds, language "en", show the amount 25.00 in Canadian dollars.

Common mistakes

  • Reading the hold time as binary or as milliseconds. It is BCD, in units of 100 ms.
  • Ignoring the language preference and always displaying the terminal's default language.
  • Showing a value without checking the Value Qualifier, so a balance is displayed as if it were the amount.
  • Not handling CLEAR DISPLAY or N/A, which leaves old messages on screen.

Decode a value

Open in the TLV parser

Related

Kernel 8 definitions follow EMV Contactless Book C-8 v1.0; Kernel 2 definitions follow EMV Contactless Book C-2. Always check the EMVCo and payment scheme specifications that apply to your project.