For the complete documentation index, see llms.txt. This page is also available as Markdown.
Page cover

Application Group 0x07 - EMV L2 Contact Messages (Chip Card L2 Mode Only) - 1 - 15

About EMV L2 Transaction Flows

The general flow of an EMV L2 transaction is as follows (bear in mind the device does not have a display, so in these steps the host drives the user interface for both the terminal operator / cashier and for the cardholder / customer):

  • The terminal operator / cashier performs steps external to the transaction, generally resulting in a total balance owed, and directs the host software to initiate a transaction. If the device supports Quick Chip and the system is designed to use that feature, the host may skip this step and instead start the transaction with a default amount as a placeholder, which is generally a pre-determined non-zero value that is consistent with the system’s payment processing environment. Further differences pertaining to Quick Chip transactions are included in the steps below.

  • The device must have already used Command 0x01::0x50 - Subscribe to Notifications to subscribe to at least notifications from Application Group 0x01 - General Messages, Application Group 0x04 - Magnetic Stripe Reader (MSR) Messages, and Application Group 0x07 - EMV L2 Contact Messages (Chip Card L2 Mode Only).

  • The cardholder inserts their card into the device. In response, the device sends Notification 0x01::0x40 - Card Detected / Identified / Removed to report Card was not present and is now present / Card is a chip card (ICC card) indicating there is a chip card ready to begin a transaction.

  • The host software may optionally call Command 0x03::0x00 - Card Latch Control to hold the card in the slot.

  • The host software sends the device Command 0x07::0x00 - EMV L2 Start Transaction.

  • From this point until the host sends the transaction results to the transaction processor, the host may cancel the EMV transaction by sending Command 0x07::0x04 - EMV L2 Cancel Transaction and the device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Host Canceled Transaction / Transaction error.

  • The device attempts to communicate with a chip on the inserted card.

    • If the device is unable to power up the card:

      • The device responds with error code 0013 and terminates the transaction.

        • The host may display a message to guide the cardholder to remove the card.

        • Upon card removal, the device sends Notification 0x01::0x40 - Card Detected / Identified / Removed to indicate Card was present and has been removed / Card is not a chip card (ICC card).

        • If MSR data was captured on card removal, the device sends Notification 0x04::0x11 - MSR Card Data Available.

        • The host must send Command 0x04::0x12 - Request MSR Card Data within 5 seconds to retrieve the MSR data. Otherwise the device automatically erases the data.

        • If the device is able to power-up the card but can not find an application that both the device and the card mutually support:

          • If setting DFDF67 in EMV Contact Application Settings and Defaults (Contact Only) is set to Fallback Disabled, the device terminates the transaction and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated / Empty Candidate List, followed by Notification 0x07::0x81 - EMV L2 Display Message Request with the message CARD ERROR .

          • If setting DFDF67 in EMV Contact Application Settings and Defaults (Contact Only) is set to Fallback Enabled:

            • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Selecting the application, followed by Notification 0x07::0x81 - EMV L2 Display Message Request to the host with the message Please Wait followed by Notification 0x07::0x81 - EMV L2 Display Message Request to the host with the message REMOVE CARD .

            • Upon card removal, the device sends Notification 0x01::0x40 - Card Detected / Identified / Removed to indicate Card was present and has been removed / Card is not a chip card (ICC card).

            • Upon successfully decoding a magnetic stripe swipe, the device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Online Processing.

            • Because the MSR transaction must always be performed online, the device passes the MSR track data to the host for forwarding to the transaction processor using Notification 0x07::0x83 - EMV L2 ARQC Message containing MSR Data Container F4. Inside the message, the host should examine tag DFDF53 to determine the cause of the MSR Fallback (No Fallback or MSR Fallback). The device then sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Waiting for User Response / Waiting Online Processing Response.

            • The host processes the ARQC Message data and uses it to coordinate with the transaction processor to receive an ARPC Response, which it processes and sends to the device using Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response.

            • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Transaction complete.

            • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated and either Transaction Approved or Transaction Declined.

            • The device sends Notification 0x07::0x81 - EMV L2 Display Message Request with Approved or Declined or to notify the cardholder of the transaction result.

            • The device ends the transaction by sending Notification 0x07::0x84 - EMV L2 Transaction Result, which contains transaction details the host should save for later verification. Inside the message, the host should examine tag DFDF53 to determine the cause of the fallback to an MSR swipe (MSR Fallback).

  • At this point the device was able to power-up the card and found mutually supported applications. The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Selecting the application.

  • The device sends Notification 0x07::0x81 - EMV L2 Display Message Request with the message Please Wait.

  • The device negotiates with the card to determine which payment applications are available. If the card holds only one mutually supported payment application and the host did not enable Enhanced App Selection in the Transaction Options parameter, the device uses that application. Otherwise:

    • The device sends Notification 0x07::0x82 - EMV L2 User Selection Request to prompt the cardholder to Select Application with a list of available applications, followed by Notification 0x07::0x8A - EMV L2 Transaction Status to report Waiting for User Response / Waiting for User Application Selection.

    • After the cardholder selects an application, the host passes the selection to the device by sending Command 0x07::0x02 - EMV L2 User Selection Result.

  • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Initiating Application.

  • If the card’s selected application reports to the device that the cardholder should select a language, the device sends Notification 0x07::0x82 - EMV L2 User Selection Request to prompt the cardholder to Select Language with a list of available languages, followed by Notification 0x07::0x8A - EMV L2 Transaction Status to report event Waiting for User Response / Waiting for user language selection. After the cardholder selects a language, the host passes the selection to the device by sending Command 0x07::0x02 - EMV L2 User Selection Result.

  • The device continues communicating with the card and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Reading Application Data. If an error or other type of failure occurs during this step, the device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated / Transaction Error, followed by Notification 0x07::0x81 - EMV L2 Display Message Request with the message Transaction Terminated, followed by Notification 0x07::0x84 - EMV L2 Transaction Result.

  • If the host used the Transaction Options parameter to specify either Continue Mode Enabled, Wait or Continue Mode Enabled, Continue when it called Command 0x07::0x00 - EMV L2 Start Transaction, the device sends Notification 0x07::0x8C - EMV L2 Continue Notification with data from the card application read in the previous step. If the host specified Continue Mode Enabled, Wait, the device pauses the transaction and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Waiting for User Response / Waiting for Continue. The host must send Command 0x07::0x13 - EMV L2 Continue Action to direct the device to proceed or cancel before the 60 seconds timeout occurs, otherwise the device terminates the transaction.

  • Depending on the capabilities of the card and the device, the device authenticates the card data using SDA, DDA, or CDA. The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Offline data authentication.

  • The steps from here through Card Action Analysis below are collectively referred to as the Risk Management process:

    • The device checks to make sure the selected application is valid for the transaction, and is compatible with the device (such as application version number, application usage control, and application effective / expiration date), and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Process Restrictions.

    • The device uses the cardholder verification related data in the card to determine which cardholder verification method (CVMs) to use. The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Cardholder Verification.

    • If the card and device determine the transaction requires the cardholder to enter a PIN, the device sends Notification 0x07::0x81 - EMV L2 Display Message Request with the message Enter PIN followed by Notification 0x07::0x88 - EMV L2 Online PIN CVM Request or Notification 0x07::0x8B - EMV L2 Offline PIN CVM Request, depending on the rules encoded on the card. In response, the host should coordinate PIN entry with an external PIN entry device and provide the encrypted PIN block and KSN or sequence number to the device:

      • For online PIN, the host sends a Notification 0x07::0x88 - EMV L2 Online PIN CVM Request with PIN data to the device, which adds it to the ARQC.

      • For offline PIN, the host sends Command 0x07::0x14 - EMV L2 Offline PIN CVM Result with the PIN data from a Cryptera EPP. The device sends the PIN to the card for confirmation, and includes the results in the ARQC.

  • The device performs terminal risk management procedures, which involves floor limit checking, velocity checking, and periodically forcing online authorization to protect against fraud, and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Terminal Risk Management.

  • The device analyzes the results of the previous steps and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Terminal Action Analysis.

  • The device rolls up the results of the previous Risk Management process:

    • If the Risk Management process encounters an error or determines the transaction or payment method fails to meet required criteria, the device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated / Transaction Error, followed by Notification 0x07::0x81 - EMV L2 Display Message Request with the message TRANSACTION TERMINATED , followed by Notification 0x07::0x84 - EMV L2 Transaction Result, and terminates the transaction.

    • If the Risk Management process determines the transaction is too risky to approve, the device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated / Transaction Error, followed by Notification 0x07::0x84 - EMV L2 Transaction Result, followed by Notification 0x07::0x81 - EMV L2 Display Message Request with message Declined to notify the cardholder, and terminates the transaction.

  • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Generating First Application Cryptogram, followed by Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Card Action Analysis.

  • If the device is NOT configured as Online-Only Terminal Type [see Tag 9F35 in EMV Contact Terminal Settings and Defaults] and the Risk Management processes determined the transaction is OK to perform offline, the device reports the transaction result to the host as follows:

    • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Transaction Complete.

    • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated and either Transaction Approved or Transaction Declined, then sends Notification 0x07::0x81 - EMV L2 Display Message Request with message Approved or Declined to notify the cardholder.

    • The device ends the transaction by sending Notification 0x07::0x84 - EMV L2 Transaction Result, which contains transaction details the host should save for later verification. The transaction result message indicates whether the host must prompt the cardholder to provide a signature.

  • If the device is configured as an Online Only Terminal Type [see Tag 9F35 in EMV Contact Terminal Settings and Defaults] or the Risk Management processes determined the transaction must be performed online, the device reports the transaction result to the host as follows:

    • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Online Processing, followed by Notification 0x07::0x83 - EMV L2 ARQC Message.

    • The next event depends on whether the device supports the Contact Quick Chip feature and whether the host specified Quick Chip as an Option when it started the transaction:

    • If Quick Chip operation is supported and in effect:

      • The device immediately constructs its own internal ARPC Response, with tag 8A set to ‘Z3’ to coordinate the transaction with the card, and sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Transaction Complete, followed by Notification 0x07::0x8A - EMV L2 Transaction Status to report End of Transaction / Transaction Declined.

      • The device sends Notification 0x07::0x81 - EMV L2 Display Message Request with message Remove Card to notify the cardholder the card can be removed.

      • The host should then process the ARQC Message data, including replacing the default amount with the final transaction amount, and should coordinate with the transaction processor to retrieve a final transaction result. Because in this case the device is not involved in determining the final transaction result, it does not send a notification to the host to show Approved or Declined. Instead, the host should display an appropriate message (such as Quick Chip Approved/Quick Chip Declined) to the cardholder based on the final transaction result.

      • The device ends the transaction by sending Notification 0x07::0x84 - EMV L2 Transaction Result, which contains transaction details the host should save for later verification. The transaction result message indicates whether the host must prompt the cardholder to provide a signature.

  • If Quick Chip operation is NOT supported or is not in effect:

    • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Progress Change / Waiting for Online Processing Response.

    • The host processes the ARQC Message data and uses it to coordinate with the transaction processor to receive an ARPC Response, which it processes and sends to the device using Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response. Alternatively, the host may implement host-driven Quick Chip by instead constructing its own preliminary ARPC Response with tag 8A set to ‘Z3’ and sending it to the device immediately, without waiting for a transaction processor response. The device responds by sending Notification 0x07::0x81 - EMV L2 Display Message Request to the host with message Declined and ending the transaction. The host should suppress this message and take over the remainder of the transaction, including notifying the cardholder to remove the card, determining the final transaction amount, coordinating with the transaction processor to retrieve a final transaction result, and interacting with the cardholder.

    • The device communicates with the chip card to determine whether to approve or decline the transaction, then sends Notification 0x07::0x8A - EMV L2 Transaction Statusto report Transaction Progress Change / Transaction Complete.

    • The device sends Notification 0x07::0x8A - EMV L2 Transaction Status to report Transaction Terminated and either Transaction Approved or Transaction Declined, then sends Notification 0x07::0x81 - EMV L2 Display Message Request with message Approved or Declined to notify the cardholder of the transaction result.

    • The device ends the transaction by sending Notification 0x07::0x84 - EMV L2 Transaction Result, which contains transaction details the host should save for later verification. The transaction result message indicates whether the host must prompt the cardholder to provide a signature.

Command 0x07::0x00 - EMV L2 Start Transaction

The host uses this command to start an EMV L2 transaction.

Table - Message Structure for Command 0x07::0x00 - EMV L2 Start Transaction

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

00

Command ID Data Object (Tag C2) = 0x00 EMV L2 Start Transaction

C4

13

Data Field Data Object (Tag C4 or E0) = Byte 0: Maximum Process Time

Specifies the maximum time, in seconds, for user interaction events to complete while processing a transaction. Values from 0x01 to 0xFF (1 to 255 seconds) are allowed. The timer starts at the beginning of each event. If the cardholder does not take action within the specified time, the transaction will process as follows:

· User card insertion timeout: The transaction terminates.

· User language selection timeout: The transaction continues with the default language.

· User application selection timeout: The transaction terminates.

Byte 1 Reserved. Set to 0x00 (preferred) or 0x02 (legacy).

Byte 2 Transaction Options (options can be combined) 0x00 = Normal

0x20 = Continue Mode Enabled, Wait. The device sends Notification 0x07::0x8C - EMV L2 Continue Notification), then pauses the transaction and waits for the host to send Command 0x07::0x13 - EMV L2 Continue Action)

0x30 = Continue Mode Enabled, Continue. Same as 0x20 above but the device does not pause the transaction after sending the notification.

0x40 = Enhanced App Select Mode Enabled. The device adds data to Notification 0x07::0x82 - EMV L2 User Selection Request – Application Select) including when only one card application is present.

0x80 = Quick Chip Mode Enabled

Bytes 3..8 Transaction Amount:

EMV Tag 9F02, format n12, 6 bytes. If Byte 9 Transaction Type is set to Refund (0x20), the Transaction Amount must be zero.

Byte 9 Transaction Type:

0x00 = Purchase (covers transaction types Payment, Goods, and Services) 0x02 = Cash back

0x20 = Refund (converts internally to type 0x00 Purchase, Bytes 3..8 are is ignored and set to

$0.00)

Bytes 10..15 Cash Back Amount:

Cash back amount. If non-zero, use EMV Tag 9F03, format n12, 6 bytes. For Transaction Type Refund (0x20) this must be zero.

Bytes 16..17 Transaction Currency Code (EMV Tag 5F2A, format n4, 2 bytes) Valid values: 0x0000 = Use Terminal Settings currency code 0x0840 = US Dollar 0x0978 = Euro

Byte 18 Level of Transaction Status Notifications:

Select the level of detail of transaction status notifications the device will send to the host as the transaction progresses (see Notification 0x07::0x8A - EMV L2 Transaction Status for details):

0x00 = Termination status only (normal termination, card error, timeout, host cancel) 0x01 = Major status changes (terminations plus card insertions and waiting for user) 0x02 = All status changes (documents the entire transaction flow

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

Table - Response to Command 0x07::0x00 - EMV L2 Start Transaction

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

00

Command ID Data Object (Tag C2) = 0x00 EMV L2 Start Transaction

C3

01

00

Result Code Data Object (Tag C3) = 0x00 OK

The host can only select the Quick Chip Mode transaction option for online transactions. This option significantly reduces the time the chip card needs to stay in the device. In this mode, the cardholder can remove the chip card before the transaction processor returns the Authorization Response Cryptogram (ARPC) to the host.

When Quick Chip Mode is enabled, the device requests data for an online authorization from the card. After the card responds with an online authorization request (ARQC), oDynamo sends the Authorization Response Code (tag 8A) with a declined status (Z3) to the card. The host software should complete the EMV processing as a deferred authorization, and prompt the card holder to remove the card. The host software should then proceed with requesting authorization from the transaction processor, and wait for the online response to approve or deny the transaction. For more details, see Visa’s Quick Chip for EMV and qVSDC - Specification Version 2.0.

Command 0x07::0x02 - EMV L2 User Selection Result

The host uses this command to report the cardholder’s or operator’s selection in response to the device’s Notification 0x07::0x82 - EMV L2 User Selection Request. In response to each possible selection, the device will behave according to EMV rules.

Table - Message Structure for Command 0x07::0x02 - EMV L2 User Selection Result

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

02

Command ID Data Object (Tag C2) = 0x02 EMV L2 User Selection Result

C4

02

Data Field Data Object (Tag C4 or E0) = Byte 0 Selection Status:

0x00 = User Selection Request completed, see Selection Result 0x01 = User Selection Request aborted, canceled by user

0x02 = User Selection Request aborted, timeout

Byte 1 Selection Result:

Contains the value of the menu item the cardholder or operator selected. Use 0x00 to select the first menu item.

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

Table - Response to Command 0x07::0x02 - EMV L2 User Selection Result

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

02

Command ID Data Object (Tag C2) = 0x02 EMV L2 User Selection Result

C3

01

Result Code Data Object (Tag C3) =

0x00 = Success, the Selection Result was received 0x01 = Invalid Selection Status

0x02 = Invalid Selection Result

0x03 = Failure, no transaction currently in progress

Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response

The host uses this command to inform the device of the result of online processing. It will contain ARPC, Script 1, and Script 2 data.

Table - Message Structure for Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

03

Command ID Data Object (Tag C2) = 0x03 EMV L2 Online Processing Result

C4

Calculated

Data Field Data Object (Tag C4 or E0) =

See Appendix B ARPC Response from Online Processing (EMV Only)

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

Table - Response to Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

03

Command ID Data Object (Tag C2) = 0x03 EMV L2 Online Processing Result

C3

01

Result Code Data Object (Tag C3) = 0x00 OK / Done

Command 0x07::0x04 - EMV L2 Cancel Transaction

The host uses this command to cancel an EMV transaction while the device is waiting for the cardholder to insert a card.

Table - Message Structure for Command 0x07::0x04 - EMV L2 Cancel Transaction

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

04

Command ID Data Object (Tag C2) = 0x04 EMV L2 Cancel Transaction

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

Table - Message Structure for Command 0x07::0x04 - EMV L2 Cancel Transaction

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

04

Command ID Data Object (Tag C2) = 0x04 EMV L2 Cancel Transaction

C3

01

Result Code Data Object (Tag C3) =

0x00 = Success, the transaction was canceled

0x8D = Failure, no transaction currently in progress

0x8F = Failure, transaction in progress, card already inserted

Command 0x07::0x05 - EMV L2 Modify Contact Terminal Configuration

The host uses this command to modify EMV Contact Terminal configuration data. Descriptions of the tags can be found in EMV Integrated Circuit Card Specifications for Payment Systems v4.3 .

Table - Message Structure for Command 0x07::0x05 - EMV L2 Modify Contact Terminal Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

05

Command ID Data Object (Tag C2) = 0x05 EMV L2 Modify Contact Terminal Configuration

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0: MAC Type

MAC algorithm designator

0x00 = ISO 9797 MAC Algorithm 3, Padding Method 1.

Byte 1 Slot Number

EMV Terminal Slot Number. Must be 0x01.

Byte 2 Operation

0x01 = Write Operation

0xFF = Set to Factory Defaults (sets all items, Terminal, Applications, and Application Public Keys to factory default values)

Bytes 3 Database Selector 0x00 = EMV Contact L2

Byte 4..19 Device Serial Number 16 Byte device Serial Number

Bytes 20..N: Objects to Write

Note: Not needed if Operation is 0xFF Set to Factory Defaults. FA<len> /* container for generic data */

<tag><len><value>

<tag><len><value>

Bytes N..N+3 MAC

First four bytes of a CBC-MAC computed using the AMK key (modified by XOR with 0xFF for the 7th, 15th, and 23rd bytes), on the data portion of TLV data object C4 padded to a multiple of 8 bytes. If the host has set the EMV Configuration Security setting to OEM Behavior, the host can transmit padding instead of a MAC.

Table - Message Structure for Command 0x07::0x05 - EMV L2 Modify Contact Terminal Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

05

Command ID Data Object (Tag C2) = 0x05 EMV L2 Modify Terminal Configuration

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the modify completed 0x90 = Device Has No Keys

0x91 = Invalid Device Serial Number 0x92 = Invalid Type of MAC field 0x93 = Invalid Slot Number field 0x94 = Invalid Operation field

0x95 = Invalid Database Selector field 0x96 = Invalid Objects to Write field 0x97 = Invalid MAC

0x98 = No Slots Available

0x9B = Invalid CAPK Checksum

Command 0x07::0x06 - EMV L2 Get Contact Terminal Configuration

The host uses this command to read EMV Contact Terminal configuration data.

Table - Message Structure for Command 0x07::0x06 - EMV L2 Get Contact Terminal Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

06

Command ID Data Object (Tag C2) = 0x06 EMV L2 Get Contact Terminal Configuration

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0: Slot Number

Must be 0x01

Byte 1: Operation 0x00 = Read Operation

0x0F = Read All Tags of selected slot

Byte 2: Database Selector 0x00 = EMV Contact L2

Bytes 3..n: Tags to Read

Note: Not needed if Operation is 0x0F Read All Tags of selected slot.

FA<len> /* container for generic data */

<tag>

<tag>

Tag DFDF47 cannot be read individually. This tag can only be retrieved using the

‘Read All Tags’ option.

Table - Response to Command 0x07::0x06 - EMV L2 Get Contact Terminal Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

06

Command ID Data Object (Tag C2) = 0x06 EMV L2 Get Contact Terminal Configuration

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the read completed 0x02 = Invalid paramter in command 0x93 = Failure, invalid slot number field 0x94 = Failure, invalid Operation field

0x95 = Failure, invalid Database Selector field 0x96 = Failure, invalid Tag to Read field

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0..1 Message Length

Two byte hex, most significant byte first. This gives the total length of the EMV Terminal Configuration message that follows.

Byte 2..N Tags Read:

FA<len> /* container for generic data */

<tag><len><value>

<tag><len><value>

When reading all tags for the selected slot, the last tag will be DFDF47, the Database Checksum.

Command 0x07::0x07 - EMV L2 Modify Contact Application Configuration

The host uses this command to modify EMV contact application configuration data. Descriptions of the tags can be found in EMV Integrated Circuit Card Specifications for Payment Systems v4.3 .

Table - Message Structure for Command 0x07::0x07 - EMV L2 Modify Contact Application Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

07

Command ID Data Object (Tag C2) = 0x07 EMV L2 Modify Contact Application Configuration

C4

Calculated

Byte 0: MAC Type

MAC algorithm designator

0x00 = ISO 9797 MAC Algorithm 3, Padding Method 1

Byte 1: Slot Number

EMV Application Slot Number = Any value from 0x01 to 0x20 inclusive

Byte 2: Operation

0x01 = Write Operation

Bytes 3: Database Selector 0x00 = EMV Contact L2

Byte 4..19: Serial Number

16 Byte device Serial Number

Bytes 20..N: Objects to Write

Note: Not needed if Operation is 0xFF Set to Factory Defaults. FA<len> /* container for generic data */

<tag><len><value>

<tag><len><value>

Bytes N..N+3: MAC

MAC computed on Device Serial Number and Objects to Write fields using the AMK key. Use the first 4 bytes for the MAC. If the host has set the EMV Configuration Security setting to OEM Behavior, the host should transmit padding here.

Table - Message Structure for Command 0x07::0x07 - EMV L2 Modify Contact Application Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

07

Command ID Data Object (Tag C2) = 0x07 EMV L2 Modify Contact Application Configuration

C3

01

Tag

Len

Value(s) / Description

C2

01

07

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the modify completed 0x90 = Device Has No Keys

0x91 = Invalid Device Serial Number 0x92 = Invalid Type of MAC field 0x93 = Invalid Slot Number field 0x94 = Invalid Operation field

0x95 = Invalid Database Selector field 0x96 = Invalid Objects to Write field 0x97 = Invalid MAC

Command 0x07::0x08 - EMV L2 Get Contact Application Configuration

The host uses this command to read back EMV contact application configuration data.

Table - Message Structure for Command 0x07::0x08 - EMV L2 Get Contact Application Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

08

Command ID Data Object (Tag C2) = 0x08 EMV L2 Get Contact Application Configuration

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0: Slot Number

Must be 0x01

Byte 1: Operation

0x00 = Read Operation

0x0F = Read All Tags of selected slot

Byte 2: Database Selector 0x00 = EMV Contact L2

Bytes 3..n: Tags to Read

Note: Not needed if Operation is 0x0F Read All Tags of selected slot.

FA<len> /* container for generic data */

<tag>

<tag>

Tag DFDF47 cannot be read individually. This tag can only be retrieved using the

‘Read All Tags’ option.

Table - Response to Command 0x07::0x08 - EMV L2 Get Contact Application Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

08

Command ID Data Object (Tag C2) = 0x08 EMV L2 Get Contact Application Configuration

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the read completed 0x93 = Failure, invalid slot number field 0x94 = Failure, invalid Operation field

0x95 = Failure, invalid Database Selector field 0x96 = Failure, invalid Tag to Read field

C4

Calculated

Byte 0..1: Message Length

Two byte hex, most significant byte first. This gives the total length of the EMV Terminal Configuration message that follows.

Byte 2..n Tags Read:

FA<len> /* container for generic data */

<tag><len><value>

<tag><len><value>

When reading all tags for the selected slot, the last tag will be DFDF47, the Database Checksum.

Command 0x07::0x09 - EMV L2 Modify CA Public Key

The host uses this command to modify EMV CA Public Key data.

Table - Message Structure for Command 0x07::0x09 - EMV L2 Modify CA Public Key

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

06

Command ID Data Object (Tag C2) = 0x09 EMV L2 Modify CA Public Key

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0 MAC Type

MAC algorithm designator

0x00 = ISO 9797 MAC Algorithm 3, Padding Method 1.

Byte 1 Slot Number

Any value from 0x01 to 0x34 inclusive

0xFF = Next Available (slot with RID TLV length set to zero)

If the Operation byte is set to Erase All, the device ignores this byte.

Byte 2 Operation

0x00 = Erase All (Erases all tags in all CAPK slots). This will set the TLV length of every TLV in each slot to 1 and the value to 0. A slot is considered erased and available for use by the Next Available Slot Number (0xFF) if its RID TLV length is set to 1 and its value is set to 0.

0x01 = Writes a CA Public Key. To erase a single slot, write all of the slot’s tags’

TLV lengths to 1 and values to 0.)

Bytes 3 Database Selector 0x00 = EMV Contact L2

Bytes 4..19 Serial Number

16 Byte device Serial Number

Bytes 20..n Objects to Write

Note: Not needed if Operation is 0x00 Erase All. FA<len> /* container for generic data */

< DFDF79><len><value> /* RID */

< DFDF7A><len><value>/* Index */

< DFDF7B><len><value>/* Modulus */

< DFDF7C><len><value>/* Key Exponent */

< DFDF7D><len><value> /* Checksum */.

Bytes n..n+3: MAC

MAC computed on Device Serial Number and Objects to Write fields using the AMK key. Use the first 4 bytes for the MAC. If the host has set the EMV Configuration Security setting to OEM Behavior, the host should transmit padding here.

Table - Message Structure for Command 0x07::0x09 - EMV L2 Modify CA Public Key

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

09

Command ID Data Object (Tag C2) = 0x09 EMV L2 Modify CA Public Key

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the modify completed 0x90 = Device Has No Keys

0x91 = Invalid Device Serial Number 0x92 = Invalid Type of MAC field 0x93 = Invalid Slot Number field 0x94 = Invalid Operation field

0x95 = Invalid Database Selector field 0x96 = Invalid Objects to Write field 0x97 = Invalid MAC

0x98 = No Slots Available

0x9B = Invalid CAPK Checksum

Command 0x07::0x0A - EMV L2 Get CA Public Key

The host uses this command to read EMV Certificate Authority Public Key data.

Table - Message Structure for Command 0x07::0x0A - EMV L2 Get CA Public Key

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0A

Command ID Data Object (Tag C2) = 0x0A EMV L2 Get CA Public Key

C4

Calculated

Data Field Data Object (Tag C4 or E0) = Byte 0: Slot Number

Must be 0x01

Byte 1: Operation

0x00 = Read Operation

0x0F = Read All Tags of selected slot

Byte 2: Database Selector 0x00 = EMV Contact L2

Bytes 3..n: Tags to Read

Note: Not needed if Operation is 0x0F Read All Tags of selected slot.

FA<len> /* container for generic data */

<tag>

<tag>

Tag DFDF47 cannot be read individually. This tag can only be retrieved using the

‘Read All Tags’ option.

Table - Response to Command 0x07::0x0A - EMV L2 Get CA Public Key

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0A

Command ID Data Object (Tag C2) = 0x0A EMV L2 Get CA Public Key

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the read completed 0x93 = Failure, invalid slot number field 0x94 = Failure, invalid Operation field

0x95 = Failure, invalid Database Selector field 0x96 = Failure, invalid Tag to Read field

C4

Calculated

Byte 0..1: Message Length

Two byte hex, most significant byte first. This gives the total length of the EMV Terminal Configuration message that follows.

Byte 2..n Tags Read:

FA<len> /* container for generic data */

<tag><len><value>

<tag><len><value>

When reading all tags for the selected slot, the last tag will be DFDF47, the Database Checksum.

Command 0x07::0x0B - EMV L2 Get Kernel Base Checksum

The host uses this command to read EMV L2 Kernel Checksum.

Table - Message Structure for Command 0x07::0x0B - EMV L2 Get Kernel Base ChecksumKernel Base Checksum

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0B

Command ID Data Object (Tag C2) = 0x0B EMV L2 Get Kernel Checksum

C4

01

Data Field Data Object (Tag C4 or E0) = 0x11 = Read L2 Kernel checksum

Table - Response to Command 0x07::0x0B - EMV L2 Get Kernel Base Checksum

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0B

Command ID Data Object (Tag C2) = 0x0B EMV L2 Get Kernel Information

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the read completed 0x02 = Bad parameter

0x86 = Invalid read option 0x9A = Internal error

0xFF = Failed memory allocation

C4

15

Byte 0: Data return type 0x11 = Kernel checksum

Byte 1..14: Kernel checksum in ASCII

Command 0x07:0x0D - Get Date Time

The host uses this command to read the device’s Real Time Clock (RTC).

Table - Message Structure for Command 0x07:0x0D - Get Date Time

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0D

Command ID Data Object (Tag C2) = 0x0D EMV Get Date Time

If an error occurs, the device will terminate the command and report the error using an ACK Response containing the result code. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3). If no error occurs, the device responds as follows:

Table - Response to Command 0x07:0x0D - Get Date Time

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0D

Command ID Data Object (Tag C2) = 0x0D EMV Get Date Time

C3

01

00

Result Code Data Object (Tag C3) = 0x00 OK / Done

C4

07

Data Field Data Object (Tag C4 or E0) = Byte 0 Month

0x01..0x0C: valid Month number; Dec = 12.

Byte 1 Day

0x01..0x1F: valid day of the month; Last day = 31.

Byte 2 Hour

0x00..0x17: valid hour of the day; last hour day = 23.

Byte 3 Minute

0x00..0x3B: valid minute of the hour; last minute = 59.

Byte 4 Second

0x00..0x3B: valid second of the minute; last second = 59.

Byte 5 Reserved 0x00: Reserved

Byte 6 Year

0x00..0xFF: valid year value added to 2008; 2017-2008 = 09.

Command 0x07::0x0E - EMV L2 Commit Configuration

The host uses this command to commit changes after using Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration.

Table - Message Structure for Command 0x07::0x0E - EMV L2 Commit Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0E

Command ID Data Object (Tag C2) = 0x0E EMV L2 Commit Configuration

C4

01

Byte 0: Database Selector 0x00 = EMV Contact L2

Table - Response to Command 0x07::0x0E - EMV L2 Commit Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

0E

Command ID Data Object (Tag C2) = 0x0E EMV L2 Commit Configuration

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success

0x01 = Failure

0x95 = Invalid Database Selector field

Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration

The host uses this command to select EMV Terminal Capabilities Configuration. The EMV terminal settings affected by this command can not be set directly; they must be set to one of a specified set of certified values. Descriptions of the tags and their values can be found in EMV Integrated Circuit Card Specifications for Payment Systems v4.3. For full descriptions of each configuration, see the device’s EMVCo Letter of Approval for Contact Terminal Level 2 [see Appendix D EMV Configurations (EMV Only)].

After calling this command, the host should call Command 0x07::0x0E - EMV L2 Commit Configuration to save the changes.

Running this command changes the value of tag DFDFDF33 in the device configuration. See Command 0x03::0x72 - Get Device Configuration. It also changes the device and terminal configuration check values reported by Command 0x07::0x12 - Read EMV L2 Configuration Check Values.

Table - Message Structure for Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration

Tag

Len

Value(s) / Description

C0

01

01

Message Type Data Object (Tag C0) = 0x01 Command

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

10

Command ID Data Object (Tag C2) = 0x10 Modify EMV L2 Terminal Capabilities Configuration

C4

Calculated

Byte 0: MAC Type

MAC algorithm designator

0x00 = ISO 9797 MAC Algorithm 3, Padding Method 1.

Byte 1: Database Selector 0x00 = EMV Contact L2

Bytes 2..17: Serial Number 16 Byte device Serial Number

Byte 18: Configuration Identifier

One byte field that specifies one of the following configurations. Each device implements a subset of this standard list; the supported subset is specified in the device’s EMVCo Letter of Approval (LoA) as Vendor Config IDs:

0x00 = Vendor Config ID oDynamo-PIN-Bypass (Default)

· Tag 0x9F33 = 0x604800 (MSR, IC with Contacts, Enciphered PIN for online PIN, No CVM, No Signature, no ODA)

· Tag 0x9F35 = 0x24 (Unattended, Online Only)

· Tag 0x9F40 = 0x7200A05001 (Goods, Services, Cashback, Payment, NumCommand Keys, Print Cardholder, Display cardholder, Code table 1)

· Tag 0xDFDF20 = 0x432380 (Manual language selection, CDA Mode 1, Cardholder Confirmation, EMV language Selection, Application Preferred Order,

· Subsequent Bypass, PIN Bypass, Floor Limit Checking)

0x01 = Vendor Config ID oDynamo-No PIN

· Tag 0x9F33 = 0x600800 (MSR, IC with Contacts, No CVM, No Signature, No ODA)

· Tag 0x9F35 = 0x24 (Unattended, Online Only)

· Tag 0x9F40 = 0x7200A05001 (Goods, Services, Cashback, Payment, NumCommand Keys, Print Cardholder, Display cardholder, Code table 1)

· Tag 0xDFDF22 = 0x432080 (Manual language selection, CDA Mode 1, Cardholder Confirmation, EMV language Selection, Application Preferred Order,Floor Limit Checking)

0x02 = Vendor Config ID oDynamo-OLP

· Tag 0x9F33 = 0x60D8C8 (MSR, ICC, Offline and Online PIN, No CVM, No Signature, ODA)

· Tag 0x9F35 = 0x25 (Unattended, Offline with Online Capability)

· Tag 0x9F40 = 0x7200F05001 (Goods, Services, Cashback, Payment, NumAlphaCommandFunc Keys, Print Cardholder, Display cardholder, Code table 1)

· Tag 0xDFDF22 = 0x4323E0 (Manual language selection, CDA Mode 1, Cardholder Confirmation, EMV language Selection, Application Preferred Order,

· Subsequent Bypass, PIN Bypass, Floor Limit Checking, Random Trans Selection, Velocity Checking)

0x03 = Vendor Config ID oDynamo-ATM

· Tag 0x9F33 = 0x60D8C8 (MSR, ICC, Offline and Online PIN, No CVM, No Signature, ODA)

· Tag 0x9F35 = 0x14 (Unattended, Financial, Online Only)

· Tag 0x9F40 = 0x8C80F05001 (Cash, Inquiry, Transfer, Cash Deposit, NumAlphaCommandFunc Keys, Print Cardholder, Display cardholder, Code table 1)

· Tag 0xDFDF22 = 0x432380 (Manual language selection, CDA Mode 1, Cardholder Confirmation, EMV language Selection, Application Preferred Order, Subsequent Bypass, PIN Bypass, Floor Limit Checking)

0x04 = Vendor Config ID oDynamo-OLEP

· Tag 0x9F33 = 0x6058C8 (MSR, ICC, Offline Encrypted and Online PIN, No CVM, No Signature, ODA)

· Tag 0x9F35 = 0x25 (Unattended, Offline with Online Capability)

· Tag 0x9F40 = 0x7200F05001 (Goods, Services, Cashback, Payment,

· NumAlphaCommandFunc Keys, Print Cardholder, Display cardholder, Code table 1)

· Tag 0xDFDF22 = 0x4323E0 (Manual language selection, CDA Mode 1,

· Cardholder Confirmation, EMV language Selection, Application Preferred Order Subsequent Bypass, PIN Bypass, Floor Limit Checking, Random Trans Selection,Velocity Checking)

Bytes 19..22: MAC

MAC computed on Device Serial Number and Configuration Identifier using the AMK key. If the host has set the EMV Configuration Security setting to OEM Behavior, the host should transmit padding here.

Table - Response to Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration

Tag

Len

Value(s) / Description

C0

01

02

Message Type Data Object (Tag C0) = 0x02 Response

C1

01

07

Application ID Data Object (Tag C1) = 0x07 EMV L2 Contact Messages

C2

01

10

Command ID Data Object (Tag C2) = 0x10 EMV L2 Modify EMV L2 Terminal Capabilities Configuration

C3

01

Result Code Data Object (Tag C3) = 0x00 = Success, the modify completed 0x90 = Device Has No Keys

0x91 = Invalid Device Serial Number 0x92 = Invalid Type of MAC field 0x93 = Invalid Slot Number field 0x94 = Invalid Operation field

0x95 = Invalid Database Selector field 0x96 = Invalid Objects to Write field 0x97 = Invalid MAC

0x9C = Invalid Configuration Identifier

Last updated