All pages
Powered by GitBook
1 of 90

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Appendix A Examples

Reserved

Programmer's Manuals

This page provides comprehensive programmer's manuals, EMV flowcharts, configuration instructions, and demo guides to help you integrate the oDynamo hybrid insertion secure card reader authenticator into your software solutions using direct commands or MagTek's Common Message Structure (MTCMS) across multiple development platforms.

Documents

Reference Section

Information Available

A reference manual providing the direct command set for controlling the oDynamo's magnetic stripe and EMV contact chip reading functions in unattended terminal applications.

Reader EMV Flowchart

A programmer's reference document that provides EMV transaction flow instructions for software developers creating solutions that include a MagTek Secure Card Reader Authenticator (SCRA) device connected to Windows, Android, or iOS.

EMV Configuration Software Instructions

A guide describing how to use the MagTek EMV Configuration application to verify EMV configurations, tags, and Certificate Authority Public Keys (CAPKs) on an oDynamo connected to a host PC via USB.

Common Message Structure (MTCMS) (Microsoft .NET/Java/Applet)

A programmer's reference manual for developers creating Windows and cross-platform software solutions that include a MagTek Common Message Structure (MTCMS) device.

Common Message Structure (MTCMS) Programmer's Reference Manual (C++)

A reference manual providing instructions for software developers who want to create Windows C++ software solutions that communicate with a MagTek Common Message Structure (MTCMS) device.

MTCMSNET Demo Guide

This document provides the instructions on how to use the MTCMSNET Demo.

Need More Help

Need Help?

For additional support, please contact MagTek Support:

Technical Support:

  • 📧 Email: support@magtek.com

  • 📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

Online Resources:

  • 🌐 Support Portal: developer.magtek.com

Documentation Feedback:

Help us improve this documentation!

Programmer's Manual (COMMANDS)

OEM Readers and Components

This page provides documentation for MagTek OEM magnetic stripe and EMV insertion readers and components, including developer guides, mechanical drawings, firmware downloads, and setup instructions to help integrate secure card reading into your own kiosk, payment terminal, and unattended hardware designs.

feedback@magtek.com

A small‑form‑factor device that combines a 3‑track magnetic stripe secure card reader authenticator with contact EMV chip reading, and can be paired with DynaWave to add contactless/NFC capabilities, offering a flexible hybrid solution.

The IP34-rated mDynamo with Outdoor Bezel is a compact EMV chip card reading module built on the MagneSafe security architecture, featuring a spring‑loaded door to block dust and moisture for reliable integration into both indoor and outdoor unattended kiosks.

A manually operated, push‑in magnetic stripe reader that minimizes incorrect card insertion with an optional dual‑head design and an open‑frame construction that keeps the card slot free of debris, available in TTL, RS‑232, and USB interfaces.

oDynamo is a PCI PTS 5.x SRED‑certified, secure insertion card reader authenticator for OEM solutions that reads both magnetic stripe and EMV contact chip data, supports USB, Ethernet, and RS‑232 connections, and features a sealed, liquid‑impervious chassis designed for harsh unattended environments like gas pumps, ATMs, and vending machines.

Secure card reader authenticator that reads up to three tracks from ISO and AAMVA cards, featuring a sealed, tamper‑resistant design for unattended and outdoor installations.

Secure card reader authenticator that reads up to three tracks from ISO and AAMVA cards, featuring a sealed, tamper‑resistant design for unattended and outdoor installations.

OEM Components

The first magnetic sensing, media-validating, tamper-resistant security module that reads three tracks of magnetic stripe data, encrypts it inside the head using 3DES and DUKPT, and authenticates cards with MagnePrint technology to help OEMs meet stringent PCI security requirements.

High-performance, low-cost three-channel magnetic stripe decoder chips that significantly simplify the card-reader-to-micro-controller interface, including the Delta ASIC (proven for three-track reading) and the next-generation Qwantum ASIC with integrated encryption, SPI support, and ultra-low power modes.

An EMV contact chip card reader module that connects via USB, features two optional auxiliary ports (SPI and UART) to easily add magnetic stripe or contactless/NFC reading, and is built on the MagneSafe Security Architecture for secure chip card transactions.

A compact bidirectional magnetic stripe swipe reader available in USB keyboard emulation or HID format, designed for low‑cost, high‑reliability card reading in payment, membership, loyalty, and identification applications.

Highly efficient three-channel fully integrated magnetic stripe decoder chips (including the Delta and Qwantum families) that simplify the card-reader-to-micro-controller interface via MagTek's "Shift-Out" protocol while supporting advanced features like integrated encryption, SPI, and USB-C connectivity.

Modular card guide rails that work with MagTek’s IntelliHead product line (including the encrypted MagneSafe™ IntelliHead) to provide a complete card swipe assembly in lengths such as 43mm, 60mm, 70mm, and 90mm for various OEM integration needs.

A low-profile magnetic read head with an embedded high-performance multi-channel decoder chip that outputs raw track data using the simple "Shift-Out" protocol (data/strobe), making it ideal for battery-powered or microcontrollers where minimal power consumption is critical.

Product

Description

OEM Readers

OEM Readers and Components

For more help

Need Help?

For additional support, please contact MagTek Support:

Technical Support:

  • 📧 Email:

📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    DynaDip
    mDynamo Outdoor Bezel
    MT-215
    oDynamo
    PermaSeal
    SlimSeal
    MagneSafe IntelliHead
    MagneSafe ASIC
    mDynamo Module
    OEM USB Swipe Reader
    ASICs
    Rails
    Shift Out IntelliHead
    support@magtek.com
    feedback@magtek.com

    Rails

    For all Rails documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official Rails Support Page:

    Rails Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    support@magtek.com
    feedback@magtek.com
    Support Page >

    MTCMSMessage Class Methods

    This class allows building MagTek CMS messages to be used in communications with MagTek CMS devices.

    MTCMSMessage

    This constructor method builds an MTCMSMessage instance with the provided values.

    public void MTCMSMessage(int messageType, int applicationID, int commandID, int dataTag, byte[] data)

    Parameters:

    Parameter

    Description

    messageType

    Return Value: None

    This constructor method builds an MTCMSMessage instance with the provided byte array value.

    Parameters:

    Return Value: None

    This method sets the value of MessageType.

    Parameters:

    Return Value: None

    This method sets the value of ApplciationID.

    Parameters:

    Return Value: None

    This method sets the value of CommandID.

    Parameters:

    Return Value: None

    This method sets the value of ResultCode.

    Parameters:

    Return Value: None

    This method sets the value of Data Tag and the value of Data.

    Parameters:

    Return Value: None

    This method returns the value of MessageType.

    Return Value: MessageType value.

    This method returns the value of ApplicationID.

    Return Value: ApplicationID value.

    This method returns the value of CommandID.

    Return Value: CommandID value.

    This method returns the value of ResultCode.

    Return Value: ResultCode value.

    This method returns the value of Data Tag.

    Return Value: Data Tag value.

    This method returns the value of Data.

    Return Value: Data value.

    This method returns the message bytes.

    Return Value: Message bytes.

    MTCMS Class Methods

    After creating an instance of the MTCMS class in your software project, use the methods described in this section to communicate with MagTek CMS device.

    This method initiates request to discover devices that are visible to the host using the specified connection interface. The DeviceListReceived event will provide information regarding the available devices once the discovery process is completed.

    Parameters:

    MessageType value

    applicationID

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data Tag value

    data

    Data value

    Parameter

    Description

    messageBytes

    Message byte array value

    Parameter

    Description

    messageType

    MessageType value

    Parameter

    Description

    applicationID

    ApplicationID value

    Parameter

    Description

    commandID

    CommandID value

    Parameter

    Description

    resultCode

    ResultCode value

    Parameter

    Description

    dataTag

    Data Tag value

    data

    Data value

    MTCMSMessage

    setMessageType

    setApplicationID

    setCommandID

    setResultCode

    setData

    getMessageType

    getApplicationID

    getCommandID

    getResultCode

    getDataTag

    getData

    getMessageBytes

    public void MTCMSMessage(byte[] messageBytes)
    public void setMessageType(int messageType)
    public void setMessageType(int messageType)
    public void setCommandID(int commandID)
    public void setResultCode (int resultCode)
    public void setData (int dataTag, byte[] data)
    public int getMessageType()
    public int getApplciationID()
    public int getCommandID()
    public int getResultCode()
    public int getDataTag()
    public byte[] getData()
    public byte[] getMessageBytes()

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    Return Value: None

    This method sets the connection type of the device..

    Parameters

    Parameter

    Description

    connectionType

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    Return Value: None

    This method sets the address of the device.

    Parameters:

    Parameter

    Description

    deviceAddress

    String value of the address.

    The following table shows the address formats supported by the different connection types:

    Connection Type

    Address Format Parameter

    Address Format Description

    USB

    [PATH]

    The OS specific device path to the USB device. The path is normally retrieved from the Address property of MTDeviceInformation.

    IP

    [IPA]

    Connection Type

    Address Format

    Serial

    PORT=[PORT],

    BAUDRATE=[BAUDRATE],

    DATABITS=[DATABITS],

    PARITY=[PARITY],

    STOPBITS=[STOPBITS],

    HANDSHAKE=[HANDSHAKE],

    STARTINGBYTE=[STARTINGBYTE],

    ENDINGBYTE=[ENDINGBYTE],

    CRCMODE=[CRCMODE]

    Connection Type

    Parameter

    Description

    Serial

    [PORT]

    The OS specific device path to the serial port (i.e. COM4).

    Serial

    [BAUDRATE]

    Return Value: None

    This method sets the device ID.

    Parameter

    Description

    deviceID

    String value of the device ID.

    Return Value: None

    This method opens the connection to the device.

    Parameters: None

    Return Value: None

    This method closes the connection to the device.

    Parameters: None Return Value: None

    This method returns whether the device is connected or not.

    Parameters: None

    Return Value:

    Return true if the device is connected. Otherwise, return false.

    This method sends a command string to the device.

    Parameters:

    Parameter

    Description

    dataString

    Command to be sent in hexadecimal string format.

    Return Value:

    • 0 = Success

    • 9 = Error

    • 15 = Busy

    This method sends a command to the device.

    Parameters:

    Parameter

    Description

    dataBytes

    Command to be sent in byte array format.

    dataBytesLength

    Length of the command bytes.

    Return Value:

    • 0 = Success

    • 9 = Error

    • 15 = Busy

    This method sends a command to the device.

    Parameters:

    Parameter

    Description

    message

    MTCMSMessage to be sent to the device.

    Return Value:

    • 0 = Success

    • 9 = Error

    • 15 = Busy

    MTCMS_API void requestDeviceList(MTConnectionType connectionType); Parameters:

    Parameter

    Description

    requestDeviceList

    connectionType

    MTCMS_API void setConnectionType(MTConnectionType connectionType); 
    MTCMS_API void setAddress(const char* deviceAddress);
    MTCMS_API void setDeviceID(const char* deviceID); 
    MTCMS_API void openDevice(); 
    MTCMS_API void closeDevice();
    MTCMS_API bool isDeviceConnected();
    MTCMS_API int sendCommandString(const char* dataString);
    MTCMS_API int sendDataBytes( 
    const unsigned char* dataBytes, 
    int dataBytesLength);
    MTCMS_API int sendMTCMSMessage(MTCMSMessage* message);

    setConnectionType

    setAddress

    setDeviceID

    openDevice

    closeDevice

    isDeviceConnected

    sendDataString

    sendDataBytes

    sendMTCMSMessage

    The IP address of the device in dotted-quad notation (i.e. 192.178.1.123).

    IP

    [PORT]

    The TCP port of the device. (Default: 5000)

    The data baud rate . (Default: 9600)

    Serial

    [DATABITS]

    The data bits per byte. (Default: 8)

    Serial

    [PARITY]

    The parity checking protocol. (Default: NONE).

    Supported Values: NONE,EVEN,ODD,SPACE,MARK

    Serial

    [STOPBITS]

    The number of stop bits per byte. (Default: 1)

    Supported Values: 1,1.5,2

    Serial

    [HANDSHAKE]

    The handshaking protocol for serial port transmission of data. (Default: NONE)

    Supported Values: NONE,RTS,XONXOFF,RTSXONSOFF

    Serial

    [STARTINGBYTE]

    The special character used as the starting byte for each message. (Default is empty string)

    An empty string indicates no special character is used as the starting byte for each message.

    Serial

    [ENDINGBYTE]

    The special character used as the ending byte for each message. (Default is 0x0A)

    Serial

    An empty string indicates no special character is used as the ending byte for each message.

    Serial

    [CRCMODE]

    A value of 0 indicates CRC is disabled, otherwise CRC is enabled. (Default: 0)

    Introduction

    About This Document

    This document describes the master set of messages a host can send and receive via byte-by-byte direct communication with secure card reader authenticator devices that implement MagTek Common Message Format (MCMF), such as oDynamo (referred to in this document as “the device”).

    About Terminology

    The general terms “device” and “host” are used in different, often incompatible ways in a multitude of specifications and contexts. For example, “host” may have different a meaning in the context of USB communication than in the context of networked financial transaction processing. In this document, “device” and “host” are used strictly as follows:

    • Device refers to the MagTek product that receives and responds to the command set specified in this document. Devices include oDynamo.

    • Host refers to the piece of general-purpose electronic equipment the device is connected or paired to, which can send data to and receive data from the device. Host types include PC and Mac computers/laptops, tablets, smartphones, teletype terminals, and even test harnesses. In many cases the host may have custom software installed on it that communicates with the device. When “host” must be used differently, it is qualified as something specific, such as “acquirer host” or “USB host.”

    Similarly, the word “user” is used in different ways in different contexts. This document separates users

    into more descriptive categories:

    • The cardholder

    • The operator (such as a cashier, bank teller, customer service representative, or server), and The developer or the administrator (such as an integrator configuring the device for the first time).

    Because some connection types, payment brands, and other vocabulary name spaces (notably Bluetooth, EMV, smart phones, and more recent versions of Windows) use very specific meanings for the term “Application,” this document favors the term software to refer to software on the host that provides a user interface for the operator.

    The word terminal uses the EMV definition, which may mean a stationary interface for a cashier or teller at a point of sale or bank, an ATM or other unattended device, a handheld service interface on an air or water craft, and so on. In some situations the terminal interacts with the operator, though in self-service situations the terminal might interact with a cardholder directly.

    The combination of device(s), host(s), software, firmware, configuration settings, physical mounting and environment, user experience, and documentation is referred to as the solution.

    This device and related products use a common communication protocol across a variety of physical connection layers, which can include universal serial bus (USB), Ethernet, RS-232, and Bluetooth Low Energy (“Bluetooth LE”). The set of available connection layers depends on the device. Details for communicating with devices via each physical connection type are provided in section 3 Connection Types.

    The information in this document applies to multiple devices. When developing solutions that use a specific device or set of devices, integrators must be aware of each device’s communication interfaces, features, and configuration options, which affect the availability and behavior of some messages. Table 1-1 provides a list of device features that may impact message availability and behavior.

    MagTek provides convenient Software Development Kits (SDKs) that include libraries for some connection types and development frameworks. These SDKs wrap the details of the connection in an interface that conceptually parallels the device’s internal operation, freeing developers from dealing with the details of the connection, and allowing them to focus on software business logic. In cases where SDK libraries are available, developers also have the option to revert to direct communication with the device using libraries available in the chosen development framework. This document provides information and support for the latter method. Information about using MagTek SDKs is available in separate documentation.

    Signature Capture (“SC”)

    No

    Custom messages

    No

    Bitmaps

    No

    Clear text user data

    No

    Capacitive Keypad (“Cap Keypad”)

    No

    Power management

    No

    PCI 4.x Key Block

    Yes

    IntelliHead

    No

    Max financial card PAN length

    19

    MagneSafe 2.0 (MS 2.0)

    No

    Communication Interfaces

    USB Connection to peripherals

    No

    USB Connection to host

    Yes

    TCP/IP over 802.11 wireless connection

    No

    Ethernet connection

    Yes

    Apple 30-pin connection

    No

    RS-232 connection

    Yes

    Bluetooth LE connection

    No

    EMV Features

    Chip card contact

    Yes

    Chip card L1 mode

    No

    Chip card L2 mode

    Yes

    RID CAPK Key Slots

    Yes

    Multiple payment brand defaults

    Yes

    PayPass support

    No

    payWave support

    No

    Expresspay support

    No

    D-PAS support

    No

    Configurable EMV Support

    No

    Feature

    oDynamo

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    General Features

    Feature

    oDynamo

    Reserved

    Reserved

    Reserved

    Reserved

    Reserved

    Chip card contactless

    No

    About Connection Types

    About Device Features

    Table - Device Features

    About SDKs

    Appendix E EMV Settings (EMV Only)

    Details about the tag set in this section are provided in EMV Integrated Circuit Card Specifications for Payment Systems v4.3, Book 3, Annex A. In addition, MagTek defines custom tags for use with the device, which are clearly identifiable as beginning with DFDF. The information here applies to the newest firmware with the EMV 4.3J kernel. For older firmware, please see previously published revisions of this manual. When upgrading from firmware that uses an older EMV kernel, please note the following changes to EMV configuration files:

    • Tags removed from Contact Terminal Settings

      • DFDF5B Terminal Capabilities for Purchase Transaction

      • DFDF5C Terminal Capabilities for Cashback Transaction

      • DFDF75 Terminal Capabilities for Inquiry Transaction

      • DFDF76 Terminal Capabilities for Transfer Transaction

      • DFDF6E Terminal Capabilities for Payment Transaction

      • DFDF7E Terminal Capabilities for Cash Advance

      • DFDF7F Terminal Capabilities for Cash Manual

    • Tag added to Contact Terminal Settings

      • DF812D Display hold time (n*100ms, default=10=1 second)

      • Pauses transaction for the following EMV messages

    • Tags moved from Contact Terminal Settings to each slot of Contact Application Settings

      • 9F15 Merchant Cat Code

      • 9F16 Merchant ID

    Certificate Authority Public Key (CAPK) slots are left blank, there are 52 CAPK slots.

    EMV Contact Terminal Settings and Defaults

    This section lists the default EMV Contact Terminal default settings. For information about reading and changing these settings, see Application Group 0x07 - EMV L2 Contact Messages (Chip Card L2 Mode Only).

    EMV Contact Application Settings and Defaults (Contact Only)

    LAST PIN TRY
  • Invalid PIN length

  • INCORRECT PIN

  • PIN OK

  • NOT ACCEPTED

  • 9F1C Terminal ID
  • 9F4E Merchant Name and Location

  • 5F36

    02

    1

    MagTek

    Transaction Currency Exponent

    5F57

    00

    1

    MagTek

    Account Type

    9F1A

    08 40

    2

    MagTek

    Terminal Country Code

    9F1D

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Risk Management Data

    9F1E

    8

    9F33

    20 48 00

    3

    Manufacturer

    Terminal Capabilities

    9F35

    24

    1

    Manufacturer

    Terminal Type

    9F3A

    00 00 00 00

    4

    MagTek

    Amount Reference Currency

    9F3C

    09 98

    2

    MagTek

    Transaction Reference Currency Code

    9F3D

    02

    1

    MagTek

    Transaction Reference Currency Exponent

    9F40

    72 00 00 F0 01

    5

    Manufacturer

    Additional Terminal Capabilities

    DF812D

    00 00 0A

    3

    MagTek

    Message Pause Time (100msec)

    DFDF01

    A0 00 00 00 04 F8 00

    10 00

    16

    MagTek

    Certificate Revocation List. Contains zero or more sequences of:

    · 5 byte Registered Application Provider ID (RID)

    · 1 byte CAPK Index

    · 3 byte Certificate Serial Number

    DFDF05

    9A 82 9F 36 9F 1E 9F

    10 9F 5B 9F 33 9F 35

    95 9F 01 5F 24 5A 5F

    34 8A 9F 15 9F 16 9F

    39 9F 1A 9F 1C 57 9F

    02 5F 2A 9F 21 9C

    128

    MagTek

    Reversal message for EMV transaction. Data Object List (DOL) of tags to be included in Batch Data for EMV Transactions.

    DFDF06

    8A 91

    2

    MagTek

    Data Object List (DOL) of tags to be checked in EMV Online Response in EMV Transactions.

    DFDF14

    00 00 75 30

    4

    MagTek

    Socket timeout for Online Processing (in ms)

    DFDF15

    00 00 00 01

    4

    MagTek

    Number of connection retries in Online Processing

    DFDF16

    00 00 00 80

    4

    Read Only

    Maximum length of issuer script

    DFDF17

    9A DF DF 28 9F 02

    9F 03 5A 89 9F 10 9F

    15 9F 16 9F 4E 82 8E

    5F 24 5F 25 9F 06 9F

    07 9F 0D 9F 0E 9F 0F

    9F 26 9F 27 9C 9F 33

    9F 34 9F 35 9F 36 9F

    37 9F 39 9F 40 9F 41

    9F 53 95 9B 9F 5B DF DF 00 9F 1E 9F 1A 5F 2A 9F 01 8A DF 81 20

    128

    MagTek

    Batch Message for EMV Transaction Data Object List (DOL) of tags to be included in Batch Data for EMV Transactions

    DFDF21

    20

    1

    Compile Only

    Number of supported AIDs

    DFDF26

    4D 41 47 54 45 4B 20

    44 45 46 41 55 4C 54

    16

    MagTek

    EMV Database Label

    DFDF4E

    00 00 01 10

    4

    MagTek

    Transaction Reference Currency Conversion. See the function definition of the same name in EMV 4.3 Book 3.

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 25 01

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 01

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF68

    00

    1

    MagTek

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 06 20 06 20

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 01

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    00 00 00

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 50 AC A0 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC 50 BC F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    DFDF68

    00

    1

    MagTek

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 01 52 30 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 01

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 00 00 20 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC E0 9C F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 98 08 40

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 8C

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 02 77 10 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 01

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 50 F8 A8 F0

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    10 10 58 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC F8 E4 B8 70

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 65 10 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    2 00

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 60 24 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC 60 AC F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06 5F 2A 02 9A

    03 9C 01 95 05 9F 37 04

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 04 10 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 02

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 50 B8 A0 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC 50 B8 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06 5F 2A 02 9A

    03 9C 01 95 05 9F 37 04

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 04 30 60

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 02

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 50 BC A0 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC 50 BC F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06 5F 2A 02 9A

    03 9C 01 95 05 9F 37 04

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 04 22 03

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 02

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    FC 50 BC A0 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 00 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    FC 50 BC F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 03 33 01 01 01

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 20

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    D8 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported

    0x01 = MSR Fallback Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 03 33 01 01 02

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 20

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    D8 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported

    0x01 = MSR Fallback Supported

    97

    00 00 00

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 03 33 01 01 03

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 20

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Meerchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34 34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    D8 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported

    0x01 = MSR Fallback Supported

    97

    9F 02 06

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 03 10 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 8C

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 03 20 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 8C

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    A0 00 00 00 03 30 10

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 8C

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 5B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    97

    9F 02 06

    252

    MagTek

    TDOL

    9F01

    00 00 00 00 00 01

    6

    MagTek

    Acquirer Identifier

    9F06

    00

    16

    MagTek

    Application Identifier (AID) - Terminal

    9F09

    00 8C

    2

    MagTek

    Application Version Number

    9F15

    30 30

    2

    MagTek

    Merchant Category Code

    9F16

    4D 61 67 54 65 6B

    15

    MagTek

    Merchant Identifier

    9F1B

    00 00 00 00

    4

    MagTek

    Terminal Floor Limit

    9F1C

    31 31 32 32 33 33 34

    34

    8

    MagTek

    Terminal Identification

    9F49

    9F 37 04

    15

    MagTek

    Default DDOL

    9F4E

    4D 61 67 54 65 6B

    128

    MagTek

    Merchant Name and Location

    DF8120

    DC 40 00 A8 00

    5

    MagTek

    Terminal Action Code - Default

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8121

    00 10 00 00 00

    5

    MagTek

    Terminal Action Code - Denial

    See the function definition of the same name in EMV 4.3 Book 3.

    DF8122

    D8 40 04 F8 00

    5

    MagTek

    Terminal Action Code - Online

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF10

    00 00 00 00 00 00

    6

    MagTek

    Terminal Threshold Value for Biased Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF11

    63

    1

    MagTek

    Terminal Target Percentage to be used for Random Selection

    See the function definition of the same name in EMV 4.3 Book 3.

    DFDF12

    63

    1

    MagTek

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    DFDF23

    01

    1

    MagTek

    Application Selection Indicator (ASI) See the function definition of the same name in EMV 4.3 Book 3.

    DFDF67

    01

    1

    MagTek

    MSR Fallback Supported 0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    5F2A

    08 40

    2

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF02

    9A DF DF 28 9F 02

    5A 89 9F 10 9F 15 9F

    16 9F 4E 82 8E 5F 24

    5F 25 9F 06 9F 07 9F

    0D 9F 0E 9F 0F 9F 26

    9F 27 9F 36 9C 9F 33

    9F 34 9F 37 9F 39 9F

    40 95 9B 9F 5B DF DF 00 9F 1E 9F 1A 5F 2A 9F 01 9F 21 8A

    DF 81 20 DF 81 21

    DF 81 22 5F 20 50 5F

    34 84 9F 03 9F 09 9F

    1E 9F 35 9F 41 9F 53

    F5 9F 24

    128

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF20

    43 23 80

    3

    Read Only

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 25 01

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF67

    01

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 06 20 06 20

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF12

    63

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 01 52 30 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 98 08 40

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 02 77 10 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 65 10 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 04 10 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 04 30 60

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 04 22 03

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 03 33 01 01 01

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 03 33 01 01 02

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 03 33 01 01 03

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 03 10 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 03 20 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    A0 00 00 00 03 30 10

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    84

    00

    16

    MagTek

    Tag

    Default Value (Hex)

    Max. Length

    Configurable

    Tag Description

    DFDF68

    00

    1

    MagTek

    Certificate Authority Public Keys (EMV Only)

    EMV Contact Settings (Contact Only)

    Table - EMV Contact Terminal Settings

    Table - EMV Contact Payment Brand Factory Defaults Slot 1

    Table - EMV Contact Payment Brand Factory Defaults Slot 2

    Table - EMV Contact Payment Brand Factory Defaults Slot 3

    Table - EMV Contact Payment Brand Factory Defaults Slot 4

    Table - EMV Contact Payment Brand Factory Defaults Slot 5

    Table - EMV Contact Payment Brand Factory Defaults Slot 6

    Table - EMV Contact Payment Brand Factory Defaults Slot 7

    Table - EMV Contact Payment Brand Factory Defaults Slot 8

    Table - EMV Contact Payment Brand Factory Defaults Slot 9

    Table - EMV Contact Payment Brand Factory Defaults Slot 10

    Table - EMV Contact Payment Brand Factory Defaults Slot 11

    Table - EMV Contact Payment Brand Factory Defaults Slot 12

    Table - EMV Contact Payment Brand Factory Defaults Slot 13

    Table - EMV Contact Payment Brand Factory Defaults Slot 14

    Table - EMV Contact Payment Brand Factory Defaults Slot 15

    Table - EMV Contact Payment Brand Factory Defaults-Slots 16 .. 32

    Transaction Currency Code

    Online message for EMV transaction. Data Object List (DOL) of tags to be included in Online Messages for EMV Transactions

    Terminal Features Byte 1:

    Bit 8 TAC/IAC-Default process when unable to go online

    Bit 7 Manual Language Selection Enabled Bit 6 Referrals are supported

    Bit 5 CDA Failure detected prior to TAA is enabled

    Bit 4 / Bit 3 0x00 = CDA Mode 1 is enabled, 0x01 = CDA Mode 2 is enabled, 0x10 = CDA Mode 3 is enabled, 0x11 = CDA Mode 4 is enabled

    Bit 2 Cardholder confirmation is enabled Bit 1 EMV Language Selection is enabled

    Byte 2:

    Dedicated File (DF) Name

    MSR Fallback Supported

    0x00 = MSR Fallback Not Supported 0x01 = MSR Fallback Supported

    Dedicated File (DF) Name

    Terminal Maximum Target Percentage to be used for Biased Random Selection See the function definition of the same name in EMV 4.3 Book 3.

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    Dedicated File (DF) Name

    PIN Bypass Supported

    0x00 = PIN Bypass Not Supported 0x01 = PIN Bypass Supported

    DF 81 21 DF 81 22 5F

    20 5F 34 9F 09 84

    Bit 8 RFU

    Bit 7 ‘Forced Acceptance’ is enabled Bit 6 ‘Application Preferred Order’ is enabled

    Bit 5 ‘Transaction log’ is enabled

    Bit 4 ‘Revocation of Issuer Public Key’ is

    enabled

    Bit 3 ‘Account Type selection’ is enabled Bit 2 ‘Subsequent Bypass PIN Entry’ is enabled

    Bit 1 ‘Bypass PIN Entry’ is enabled

    Byte 3:

    Bit 8 Floor Limit Checking Enabled Bit 7 Random Transaction Selection Enabled

    Bit 6 Velocity Checking Enabled Bit 1..5 Reserved

    Command Set

    How to connect to the Device

    Overview

    This document is intended to be used with the MagTek Reader Management System Windows Application.

    RMS Windows

    • Windows Application (PN 1000009734)

    • For use with DynaPro Go and oDynamo devices.

    Purpose

    This document provides instructions for updating the Certificate Authority Public Keys (CAPKs) securely stored in DynaPro Go and oDynamo devices. CAPKs are used in EMV (Europay, Mastercard, and Visa) payment systems to verify the authenticity of card transactions. Each CAPK is associated with a specific issuing bank or payment network and has an expiration date, after which it must be updated in the device.

    Installation

    This section contains supporting information for the solution design team to develop solution-specific tools, software, and procedures. For detailed information about procedures the solution design team must develop before deployment, see section 1.8 About Solution Planning.

    Because every solution design is unique, the solution design team must develop and field test solution-specific installation procedures. Section 4.1 Example Installation Instructions provides a rudimentary example of device installation steps the solution design team may use as a starting point.

    How to Set Up the MagTek CMS SDK for .NET Projects

    Custom Windows software installed on a host PC can communicate with MagTek Common Message Structure (MTCMS) devices via USB, network interface, or serial interface using the MTCMS library.

    The supported platforms for .NET projects include Windows 7, Windows 8/8.1, and Windows 10. The .NET project should contain references to the main library file: MTCMSNET.dll.

    To add the MagTek CMS library to a .NET project in Microsoft Visual Studio, follow these steps:

    • Create or open your .NET project in Visual Studio.

    • Copy the following DLL file from the Library folders to the library folder of your software project: MTCMSNET.dll.

    • In the Visual Studio Solution Explorer, right-click the project and select Add Reference window to show the Add Reference window.

    • Select the Browse tab and press the Browse... button.

    • Navigate to your library folder, select MTCMSNET.dll, then press the Add button.

    • In your custom software, create an instance of MTDevice. For examples, see the source code included with the MTCMSNETDemo project and/or Appendix A Code Examples.

    • Begin using the features provided by the MTCMS library.

    About This Document

    This document describes how to use the MagTek EMV Configuration application to verify the EMV configuration on a MagTek oDynamo and DynaWave connected to a host PC via USB interface.

    About MTCMS Library

    Custom Windows software installed on a host PC can communicate with MagTek Common Message Structure (MTCMS) devices via USB, network interface, or serial interface using the MTCMS library.

    The supported platforms for Windows C++ projects include Windows 7, Windows 8/8.1, and Windows 10. The Windows C++ project should contain references to the main library file: MTCMS.dll.

    Introduction

    This document provides instructions for software developers who want to create Windows C++ software solutions that include a MagTek Common Message Structure (MTCMS) device connected to a Windows PC.

    Introduction

    This document provides EMV transaction flow instructions for software developers who want to create software solutions that include a MagTek Secure Card Reader / Authenticator (SCRA) device connected to a Windows PC, Android, or iOS device.

    How to Use the MagTek Debris Clearing Tool

    Introduction

    This document provides instructions for using MagTek’s debris clearing tool to perform regular maintenance cleaning of the oDynamo card insertion slot. For additional support, contact MagTek Support Services.

    1000007173 CLEANING KIT, CARD SLOT DEBRIS CLEARING TOOL, ODYNAMO contains the debris clearing tool and these instructions. For more intensive cleaning, consider 1000007139 CLEANING KIT, CARD SLOT, ODYNAMO, which includes additional tools and materials.

    Instructions

    To clean the oDynamo card insertion slot using the MagTek debris clearing tool, follow these steps. MagTek recommends performing this preventive maintenance regularly, depending on usage of the devices you are cleaning. Ideally maintenance would be performed before debris accumulates and renders the device non-functional:

    • Gather one of the debris cleaning tools from the kit. Turn the tool so its hook corner is on the right side, pointing toward the card insertion slot.

    • Push the tool straight into the card insertion slot all the way until you feel it touch the back wall.

    • Push the butt end of the tool to the left. This pivots the tool inside the device and pushes the hook against the back right corner of the card insertion slot.

    • Continue pushing the tool to the left so it stays engaged with the right wall of the slot, and slowly pull the tool out, scraping the right wall of the card insertion slot clean as you pull.

    • Repeat the scraping motion 2-3 times.

    • Turn the tool over so the hook points to the left, and repeat the same steps 2-3 times.

    Appendix F Language and Country Codes (EMV Only)

    The device’s language and country codes are derived from ISO 3166-1; country codes are numeric, and language codes are ASCII strings based on alpha-2.

    Terminal Country Codes

    Table - Terminal Country Codes

    0840

    United States

    0250

    France

    0380

    EMV Configuration Software Instructions

    Document Number D998200314-10

    Table 1.1 - Revisions

    Rev Number

    Date

    Notes

    10

    June 11, 2019

    MTCMSResponseMessage Class Methods

    This class is a subclass of MTCMSMessage. This class instantiates an MTCMSMessages instance with MessageID value set to the Response message type.

    MTCMSResponseMessage

    This constructor method builds and initializes an MTCMSResponseMessage instance with the provided values.

    public void MTCMSResponseMessage(int applicationID, int commandID, int dataTag, byte[] data)

    Parameters:

    Parameter

    Description

    applicationID

    Return Value: None

    MTCMSNotificationMessage Class Methods

    This class is a subclass of MTCMSMessage. This class instantiates an MTCMSMessages instance with MessageID value set to the Notification message type.

    MTCMSNotificationMessage

    This constructor method builds and initializes an MTCMSNotificationtMessage instance with the provided values.

    public void MTCMSNotificationMessage(int applicationID, int commandID, 
    int dataTag, byte[] data)

    Parameters:

    Parameter

    Description

    applicationID

    Return Value: None

    OEM Readers

    OEM insertion readers are designed for seamless integration into kiosks, payment terminals, unattended kiosks, fuel pumps, and other self‑service environments; this page provides documentation including mechanical drawings, developer guides, firmware downloads, and setup instructions to embed reliable card reading into your own hardware designs.

    OEM Readers

    Product

    Description

    A small‑form‑factor device that combines a 3‑track magnetic stripe secure card reader authenticator with contact EMV chip reading, and can be paired with DynaWave to add contactless/NFC capabilities, offering a flexible hybrid solution.

    Appendix D EMV Configurations (EMV Only)

    For the most up-to-date information about the device’s EMV Terminal Configuration, EMV Terminal Type, EMV Terminal Capabilities, and Additional EMV Terminal Capabilities, see the EMVCo Letter Of Approval (LOA) for the device:

    • In a web browser, open www.emvco.com.

    • Follow the Approvals and Certifications link.

    • Expand the navigation tree to Terminal Type Approval > Approved Products, and follow the Level/Contact Approved Application Kernels link.

    • Alternatively you may try

    • Find the table for products made by MagTek, Inc. and locate the table row for the device you are working with.

    • Click the attachment icon at the end of the row to open the Letter of Approval for that device.

    Common Message Structure (MTCMS) (Microsoft .NET/Java/Applet)

    Manual Part Number: D998200160-20

    REGISTERED TO ISO 9001:2015

    Information in this publication is subject to change without notice and may contain technical inaccuracies or graphical discrepancies. Changes or improvements made to this product will be updated in the next publication release. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of MagTek, Inc.

    MagTek® is a registered trademark of MagTek, Inc. oDynamo™ is a registered trademark of MagTek, Inc.

    Microsoft® and Windows® are registered trademarks of Microsoft Corporation. Java™ and Java Applet™ are registered trademarks of Oracle.

    Bluetooth®, Bluetooth® Low Energy, Bluetooth® LE are registered trademarks of Bluetooth SIG, Inc. All other system names and product names are the property of their respective owners.

    Appendix A Code Examples

    MTCMS Library Enumerations and Structures

    The MTCMS Library uses the following constants and data structures.

    Device connection types:

    Device connection states:

    Device information structure:

    MTCMSMessage structure:

    Appendix A Warranty and Software License

    MagTek warrants that the products sold pursuant to this Agreement will perform in accordance with

    MagTek’s published specifications. This warranty shall be provided only for a period of one year from the date of the shipment of the product from MagTek (the “Warranty Period”). This warranty shall apply only to the “Buyer” (the original purchaser, unless that entity resells the product as authorized by MagTek, in which event this warranty shall apply only to the first repurchaser).

    During the Warranty Period, should this product fail to conform to MagTek’s specifications, MagTek will, at its option, repair or replace this product at no additional charge except as set forth below. Repair parts and replacement products will be furnished on an exchange basis and will be either reconditioned or new. All replaced parts and products become the property of MagTek. This limited warranty does not include service to repair damage to the product resulting from accident, disaster, unreasonable use, misuse, abuse, negligence, or modification of the product not authorized by MagTek. MagTek reserves the right to examine the alleged defective goods to determine whether the warranty is applicable.

    Without limiting the generality of the foregoing, MagTek specifically disclaims any liability or warranty for goods resold in other than MagTek’s original packages, and for goods modified, altered, or treated without authorization by MagTek.

    Appendix A Code Examples (.NET)

    MagneSafe ASIC

    For all MagneSafe ASIC documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official MageneSafe ASIC Support Page:

    Appendix G How to Pair With a Cryptera Encrypting PIN Pad

    Some of the commands and notifications described in this application group are designed to support an external Cryptera Encrypting PIN Pad (EPP). To use these functions, the host software must first serve as a broker to pair oDynamo with the Encrypting PIN Pad.

    • Be aware that dismounting the EPP erases all pairing information.

    • Pairing can happen in the field, usually after installation or replacement of the EPP or SCR. Pairing always starts at Step 1.

    OEM USB Swipe Reader

    For all OEM USB Swipe Reader documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official OEM USB Swipe Reader Support Page:

    Documentation

    This page provides essential documentation for the oDynamo hybrid insertion secure card reader authenticator (SCRA), including installation and operation manuals, programmer's references, EMV configuration guides, compliance documents, and supporting resources to enable seamless integration into unattended OEM solutions.

    Firmware & Downloads

    This page provides essential software resources for developing with and managing the oDynamo secure card reader, including platform-specific SDKs for integration across Linux, Windows, .NET, and Java, as well as utility programs for device demonstration, remote configuration, and enterprise‑scale firmware and setting updates.

    DynaDip

    For all DynaDip documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official DynaDip Support Page:

    mDynamo Outdoor Bezel

    For all mDynamo Outdoor Bezel documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official mDynamo Outdoor Bezel Support Page:

    How to Connect with the MTCMS .NET Demo

    To connect to the oDynamo, follow these steps.

    To set up the USB interface with oDynamo on Windows PC, follow these steps:

    • Connect the oDynamo to the USB port of the Windows PC. Connect the power cable to the oDynamo and wait 1 minute for the device to fully boot up.

    • Launch the MTCMSNET Demo and select USB as the device type in the Type list box.

    Introduction

    This document provides instructions for software developers who want to create .NET / Java software solutions that include a MagTek Common Message Structure (MTCMS) device connected to a Windows PC.

    SlimSeal

    For all SlimSeal documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official SlimSeal Support Page:

    Other Documents

    This page provides essential supporting documentation for the oDynamo, including industry magnetic stripe card standards, a white paper on cryptographic algorithm transitions, and a technical bulletin on proper device maintenance and debris removal.

    To use the Cryptera EPP, oDynamo must have the Device Signing Keys and certificate installed by the manufacturer. Older devices do not support use of the EPP, even when upgraded in the field with the latest firmware. The host can also check this using Command 0x01::0x04 - Get Device Status and checking the response for tag DF52. If byte 1, bit 6 =1, the device can be used with an EPP.

    For additional detail, see the EPP documentation provided by Cryptera.

    To pair oDynamo with a Cryptera Encrypting PIN Pad, follow these steps:

    • The operator puts the EPP into the Pre-Activated or Activated state.

    • The host starts the pairing process by sending the EPP Command START_EXCHANGE (no parameters), Response = P1 P2 P3. If P1=OK, use the entire response (P1P2P3) in the next step.

    • The host sends oDynamo Command = Command 0x02::0x0A - EPP Pairing Certificate Exchange (C4 = P1P2P3). Make sure C3 value=0 in the response to confirm success. Use the data in C4 (excluding the tag and length) in the next step.

    • The host sends the EPP Command GENERATE_KEK using the data from the previous step as the parameters. Response = P1 P2 P3. If P1=OK, use the entire response (P1P2P3) for the next step.

    • The host sends oDynamo Command 0x02::0x0C - EPP Pairing Load KEK (C4 = data from the previous step). Check the oDynamo response to make sure C3 value is 0x00 = OK before proceeding.

    • The host sends the EPP Command FETCH_KEY (P1 = “LINK_KGK”) and receives a response P1 P2. If P1 = OK, use the data in P2 for the next step.

    • The host sends oDynamo Command 0x02::0x0D - EPP Pairing Load Derivation Key (C4 = the data from the previous step). Check the oDynamo response to verify C3 value is zero. C4 data is a 3 byte Key Check Value. Save this for the final step.

    • The host sends the EPP Command GET_KCV (“LINK_KGK”). The EPP responds with parameters = Status, KCVZERO, KCVSELF.

    • The host compares the 3 byte Key Check Value from oDynamo with the 3-byte KCVZERO value from the previous step. If they match, pairing is complete.

    • The host can re-check the pairing status at any time by comparing key check values (KCV). The host retrieves the KCV from oDynamo by sending Command 0x02::0x0E - Get Key / Certificate Information with info ID=7, and retrieves a corresponding KCV from the EPP using GET_KCV (“LINK_KGK”) like the steps above. If the values match, pairing is confirmed. If they don’t match, repeat the full pairing process described above.

    Initial Release

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data Tag value

    data

    Data value

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data Tag value

    data

    Data value

    Italy

    0724

    Spain

    0276

    Germany

    656E

    English (en)

    6465

    German (de)

    Terminal Language Codes

    Table - Terminal Language Codes

    Service may be obtained by delivering the product during the warranty period to MagTek (1710 Apollo Court, Seal Beach, CA 90740). If this product is delivered by mail or by an equivalent shipping carrier, the customer agrees to insure the product or assume the risk of loss or damage in transit, to prepay shipping charges to the warranty service location, and to use the original shipping container or equivalent. MagTek will return the product, prepaid, via a three (3) day shipping service. A Return Material

    Authorization (“RMA”) number must accompany all returns. Buyers may obtain an RMA number by contacting MagTek Support Services at support@magtek.com

    EACH BUYER UNDERSTANDS THAT THIS MAGTEK PRODUCT IS OFFERED AS-IS. MAGTEK MAKES NO OTHER WARRANTY, EXPRESS OR IMPLIED, AND MAGTEK DISCLAIMS ANY WARRANTY OF ANY OTHER KIND, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    IF THIS PRODUCT DOES NOT CONFORM TO MAGTEK’S SPECIFICATIONS, THE SOLE REMEDY SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE. MAGTEK’S LIABILITY, IF ANY, SHALL IN NO EVENT EXCEED THE TOTAL AMOUNT PAID TO MAGTEK UNDER THIS AGREEMENT. IN NO EVENT WILL MAGTEK BE LIABLE TO THE BUYER FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE, SUCH PRODUCT, EVEN IF MAGTEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

    Limitation On Liability

    EXCEPT AS PROVIDED IN THE SECTIONS RELATING TO MAGTEK’S LIMITED WARRANTY, MAGTEK’S LIABILITY UNDER THIS AGREEMENT IS LIMITED TO THE CONTRACT PRICE OF THIS PRODUCT.

    MAGTEK MAKES NO OTHER WARRANTIES WITH RESPECT TO THE PRODUCT, EXPRESSED OR IMPLIED, EXCEPT AS MAY BE STATED IN THIS AGREEMENT, AND MAGTEK DISCLAIMS ANY IMPLIED WARRANTY, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    MAGTEK SHALL NOT BE LIABLE FOR CONTINGENT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES TO PERSONS OR PROPERTY. MAGTEK FURTHER LIMITS ITS LIABILITY OF ANY KIND WITH RESPECT TO THE PRODUCT, INCLUDING NEGLIGENCE ON ITS PART, TO THE CONTRACT PRICE FOR THE GOODS.

    MAGTEK’S SOLE LIABILITY AND BUYER’S EXCLUSIVE REMEDIES ARE STATED IN THIS SECTION AND IN THE SECTION RELATING TO MAGTEK’S LIMITED WARRANTY.

    Limited Warranty

    this direct table link to the M section of tables.

    Java Applet

    · Windows 7

    · Windows 8, 8.1

    · Windows 10

    Tested web browsers:

    · Internet Explorer 11

    · Java Runtime requirements: Java 8.

    · Tested Java Runtime Environments: 8u221

    Language

    Requirements

    .NET

    · Windows 7

    · Windows 8, 8.1

    · Windows 10

    · Microsoft .NET Framework 4.5 or above.

    Java Library

    System Requirements

    · Windows 7

    · Windows 8, 8.1

    · Windows 10

    · Java Build Platform: JDK 1.8, 32-bit and above.

    · Minimum Java Runtime requirement: 8

    Connect to Device

    Send Command String to Device

    Send Command Bytes to Device

    Send MTCMSMessage to Device

    Receiving Connection State Updates from Device

    Receiving Response Message from Device

    Receiving Notification Message from Device

    Close Device

    MTConnectionType Values

    MTConnectionState Values

    MTDeviceInformation

    MTCMSMessage

    Initialize Device

    Connect to Device

    Send Data String to Device

    Send Data Bytes to Device

    Send MTCMSMessage to Device

    Send MTCMSRequestMessage to Device

    Receiving Connection State Updates from Device

    Receiving Response Message from Device

    Receiving Notification Message from Device

    Close Device

    openDevice();
    const char* dataString = “C00101C10100C20114”; 
    sendDataString(dataString);
    unsigned char* dataBytes =
    {0xC0,0x01,0x01,0xC1,0x01,0x00,0xC2,0x01,0x14};
    
    sendDataBytes(dataBytes,9);
    MTCMSMessage* message = CreateMTCMSMessage(0x01,0x00,0x14, NULL,0, 
    false);
    sendMTCMSMessage(message); 
    ReleaseMTCMSMessage(message);
    void _stdcall OnDeviceConnectionStateChanged(void* sender, 
    MTConnectionState state)
    {
            switch (state)
            {
            case MTConnectionState::Connected: 
                    Log(_T("[Connected]")); 
                    break;
            case MTConnectionState::Connecting: 
                    Log(_T("[Connecting...]")); 
                    break;
            case MTConnectionState::Disconnecting: 
                    Log(_T("[Disconnecting...]")); 
                    break;
            case MTConnectionState::Disconnected: 
                    Log(_T("[Disconnected]")); 
                    break;
            }
    }
    void  stdcall OnDeviceResponseMessage(void* sender, const 
    MTCMSMessage* response)
    {
        processResponseMessage(response);
    }
    void  stdcall OnDeviceNotificationMessage(void* sender, const 
    MTCMSMessage* notification)
    {
        processNotificationMessage(notification);
    }
    closeDevice();
    enum MTConnectionType
    {
            USB, IP,
                    Serial
    };
    enum MTConnectionState
    {
        Disconnected, 
        Connecting,
        Error, 
        Connected, 
        Disconnecting
    };
    struct MTDeviceInformation
    {
        const char* Id; 
        const char* Name; 
        const char* Address;
        const char* ProductId;
    };
    struct MTCMSMessage
    {
        int messageType; 
        int applicationID; 
        int commandID;
        int resultCode; 
        int dataTag;
        const unsigned char* data; 
        int dataLength;
        const unsigned char* messageBytes; 
        int messageBytesLength;
    };
    MTDevice device = new MTDevice(); if (device != null)
    {
            device.setConnectionType(MTConnectionType.USB);
    
            device += OnDeviceConnectionStateChanged; 
            device += onDeviceResponseMessage; 
            device += onDeviceNotificationMessage;
    }
    if (device != null)
    {
    device.openDevice();
    }
    String dataString = “C00101C10100C20114”; 
    device.sendDataString(dataString);
    Byte[] dataBytes = new Byte[9] {0xC0,0x01,0x01,
                                    0xC1,0x01,0x00,
                                    0xC2,0x01,0x14};
    device.sendDataBytes(dataBytes);
    MTCMSMessage message = new MTCMSMessage(0x01,0x00,0x14, 0xC4, null); 
    device.sendMTCMSMessage(message);
    MTCMSRequestMessage request = new MTCMSRequestMessage
                                    (0x00,0x14, 0xC4, false);
    device.sendMTCMSMessage(request);
    protected void OnDeviceConnectionStateChanged(object sender, 
    MTConnectionState state)
    {
        if (state == MTConnectionState.Connected)
        {
            sendToDisplay(“Device is Connected”);
        }
        else if (state == MTConnectionState.Disconnected)
        {
            sendToDisplay(“Device is Disconnected”);
        }
    }
    protected void OnDeviceResponseMessage(object sender, 
    MTCMSResponseMessage response)
    {
            sendToDisplay(“[Response Message]” 
            sendToDisplay(“AppID: ” + response.getApplicationID()); 
            sendToDisplay(“CommandID: ” + response.getCommandID());
            sendToDisplay(“ResultCode: ” + response.getResultCode());
    }
    protected void OnDeviceNotificationMessage(object sender, 
    MTCMSNotificationMessage notification)
    {
            sendToDisplay(“[Notification Message]” 
            sendToDisplay(“AppID: ” notification. getApplicationID() ); 
            sendToDisplay(“CommandID: ” + notification.getCommandID());
            sendToDisplay(“ResultCode: ” + notification.getResultCode());
    }
    if (device != null)
    {
            device.closeDevice();
    }

    Table 0.1 Revisions

    Rev Number

    Date

    Notes

    10

    05/24/2018

    Initial Release

    20

    09/17/2019

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS ON THE FRONT PAGE OF THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    TERMS, CONDITIONS, AND RESTRICTIONS

    MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products. LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT. Licensee

    may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and PC hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE, THE SOFTWARE. Licensee's sole remedy in

    the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT HE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO SUPPORT@MAGTEK.COM.

    SOFTWARE LICENSE AGREEMENT

    Technical references for developers including the Commands Programmer's Manual, the Microsoft .NET/Java/Applet Programmer's Manual, the MTCMS Demo guide, and the SCRA EMV Flowchart

    Supporting resources such as the EMV Configuration Software Instructions for verifying EMV configuration via USB, the debris clearing tool manual , the device inspection manual for tamper detection and PCI PTS compliance, and marketing brochures including the oDynamo Hybrid Card Reader Brochure.

    Reference Section

    Information Available

    User Manuals

    End‑user and integrator documentation including the Installation and Operation Manual for design guidelines, mounting instructions, and host connectivity, along with the MagTek Reader Management System guide for firmware and CAPK updates.

    Documentation Categories

    Need More Help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    Press the Scan button to scan for connected USB devices.

    • Select the Device ID and press the Connect button to open the device.

    • If Ethernet interface will be used, select IP Address from the Info list box and press the Get Info button. Note the value retuned from the response as this will be used for the IP Address when connecting via Ethernet Interface.

    To set up the Ethernet interface with oDynamo on Windows PC, follow these steps:

    • Connect the oDynamo to the Ethernet port on the Ethernet hub, connect the power cable to the oDynamo and wait 1 minute for the device to fully boot up.

    • Launch the MTCMSNET Demo and select IP as the device in the Type list box.

    • Enter the IP address attained from the last step from connection via USB Interface section 2.1, then press the Connect button to open the device. The MTCMS NET Demo may take up to 30 seconds before disconnecting if the device cannot be connected.

    To set up the Serial interface with oDynamo on Windows PC, follow these steps:

    • Connect the oDynamo to the Serial port, connect the power cable to the oDynamo and wait 1 minute for the device to fully boot up.

    • Launch the MTCMSNET Demo and select Serial as the device in the Type list box.

    • Select the Com number the device is attached to and press the Connect button to open the device.

    Connect via USB Interface

    Connect via Ethernet Interface

    Connect via Serial Interface

    A technical bulletin that provides illustrated step-by-step instructions for correctly using the MagTek debris clearing tool to remove accumulated debris from the oDynamo's card insertion slot, helping to maintain device functionality and prevent mechanical damage.

    Reference Section

    Information Available

    Magnetic Stripe Standards

    Common technical details for magnetic stripe cards.

    MagTek Response to NIST SP 800-131A re: Two-Key TDEA Encryption

    Key Documents

    A white paper that addresses NIST Special Publication 800-131A regarding the transition away from Two-Key TDEA encryption, outlining MagTek's approach to cryptographic algorithm migration.

    Need More Help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    mDynamo Outdoor Bezel

    The IP34-rated mDynamo with Outdoor Bezel is a compact EMV chip card reading module built on the MagneSafe security architecture, featuring a spring‑loaded door to block dust and moisture for reliable integration into both indoor and outdoor unattended kiosks.

    MT-215

    A manually operated, push‑in magnetic stripe reader that minimizes incorrect card insertion with an optional dual‑head design and an open‑frame construction that keeps the card slot free of debris, available in TTL, RS‑232, and USB interfaces.

    oDynamo

    oDynamo is a PCI PTS 5.x SRED‑certified, secure insertion card reader authenticator for OEM solutions that reads both magnetic stripe and EMV contact chip data, supports USB, Ethernet, and RS‑232 connections, and features a sealed, liquid‑impervious chassis designed for harsh unattended environments like gas pumps, ATMs, and vending machines.

    PermaSeal

    Secure card reader authenticator that reads up to three tracks from ISO and AAMVA cards, featuring a sealed, tamper‑resistant design for unattended and outdoor installations.

    SlimSeal

    Secure card reader authenticator that reads up to three tracks from ISO and AAMVA cards, featuring a sealed, tamper‑resistant design for unattended and outdoor installations.

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    DynaDip

    Description

    Summary

    oDynamo Software

    Essential software resources for developing with and managing the oDynamo secure card reader.

    Download Page

    Need More Help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-800-788-6835 (US) | +1-562-546-6616 (International)

    • 🕐 Hours: Monday-Friday, 6:00 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Official Site:

    • 💬 Developer Forum:

    Documentation Feedback:

    Help us improve this documentation!

    MagneSafe ASIC Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    OEM USB Swipe Reader Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    DynaDip Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    mmDynamo Outdoor Bezel Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    SlimSeal Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    MTDevice Events

    OnDeviceList

    The library will call this function when device information is available.

    typedef void ( stdcall * OnDeviceListEvent)( 
    void* sender,
    MTConnectionType connectionType, 
    int deviceCount, 
    MTDeviceInformation* deviceList);

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    connectionType

    Return Value: None

    This event occurs when the connection state of the device is changed.

    This event occurs when a response is received from the device.

    Return Value: None

    This event occurs when a response is received from the device.

    This event occurs when a response is received from the device.

    MTCMSNET Demo Guide

    Manual Part Number: D998200166-10

    REGISTERED TO ISO 9001:2015

    Copyright © 2006 – 2018 MagTek, Inc. Printed in the United States of America

    Information in this publication is subject to change without notice and may contain technical inaccuracies or graphical discrepancies. Changes or improvements made to this product will be updated in the next publication release. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of MagTek, Inc.

    MagTek® is a registered trademark of MagTek, Inc. oDynamo™ is a trademarks of MagTek, Inc.

    Microsoft® and Windows® are registered trademarks of Microsoft Corporation.

    All other system names and product names are the property of their respective owners.

    Table 0.1 – Revisions

    SOFTWARE LICENSE AGREEMENT

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS ON THE FRONT PAGE OF THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products. LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT. Licensee

    may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and PC hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE, THE SOFTWARE. Licensee's sole remedy in

    the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT HE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO

    Common Message Structure (MTCMS) Programmer’s Reference Manual (C++)

    Manual Part Number: D998200159-10 REGISTERED TO ISO 9001:2015 MagTek I 1710 Apollo Court I Seal Beach, CA 90740 I Phone: (562) 546-6400 I Technical Support: (888) 624-8350 www.magtek.com Copyright © 2006-2018 MagTek, Inc. Printed in the United States of America Information in this publication is subject to change without notice and may contain technical inaccuracies or graphical discrepancies. Changes or improvements made to this product will be updated in the next publication release. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of MagTek, Inc. MagTek® is a registered trademark of MagTek, Inc. Microsoft® and Windows® are registered trademarks of Microsoft Corporation. All other system names and product names are the property of their respective owners.

    Table 0.1 Revisions

    Rev Number

    Date

    SOFTWARE LICENSE AGREEMENT

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS ON THE FRONT PAGE OF THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    TERMS, CONDITIONS, AND RESTRICTIONS MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products.

    LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT.

    Licensee may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and PC hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE, THE SOFTWARE.

    Licensee's sole remedy in the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT HE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO SUPPORT@MAGTEK.COM.

    User Manuals

    This page provides essential user manuals for the oDynamo hybrid insertion secure card reader authenticator (SCRA), including installation and operation guides, quick start instructions, and EMV configuration tools to support seamless integration into unattended OEM solutions.

    Documentation

    Reference Section

    Information Available

    A concise, step-by-step guide designed to help developers quickly connect the oDynamo to a host system and activate it for testing and development using the included development kit.

    EMV Tags/CAPKs

    Updating EMV Tags/CAPKs requires the RMS Windows application. Download and install the MagTek Reader Management System.

    Update

    • Launch the RMS application and select USB as the Interface.

    • Select the device type either DynPro for DynaPro Go devices, or oDynamo for oDynamo devices.

    • Click Scan to scan for USB devices.

    • Available devices will appear in the Devices field. Select the desired device and click Open .

    • Check EMV Tags/CAPKs and click Update

    • The update status bar will appear in green at the bottom of the window, and log the update and results.

    • Once the update has finished loading, the Output log will display "SUCCESS," confirming that all updates have been applied and the process is complete.

    PermaSeal

    For all PermaSeal documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official PermaSeal Support Page:

    PermaSeal Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    MT-215

    For all MT-215 documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official MT-215 Support Page:

    MT-215 Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    Compliance Documentation

    This page provides the compliance documentation required to maintain PCI PTS approval for the oDynamo hybrid insertion secure card reader authenticator (SCRA), including the device and package inspection guides for tamper detection and physical security verification.

    Compliance Documents

    Reference Section

    Information Available

    A step‑by‑step service and repair manual that explains how to visually inspect the oDynamo’s enclosure, bezel, screws, ventilation holes, dismount switches, and connection ports for signs of tampering or unauthorized modification to help ensure the device remains PCI PTS 5.x SRED compliant before deployment.

    MTCMSMessage Structure

    These methods allows building CMS messages to be used in communications with MagTek CMS devices.

    This constructor method builds an MTCMSMessage instance with the provided values.

    Parameters:

    Reader EMV Flowchart

    Manual Part Number: D100005143-10

    REGISTERED TO ISO 9001:2015

    Information in this publication is subject to change without notice and may contain technical inaccuracies or graphical discrepancies. Changes or improvements made to this product will be updated in the next publication release. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of MagTek, Inc.

    MagTek® is a registered trademark of MagTek, Inc. MagneSafe® is a registered trademark of MagTek, Inc. iDynamo™, and uDynamo are trademarks of MagTek, Inc.

    eDynamo™, Dynamag, and DynaMAX are trademarks of MagTek, Inc.

    The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by MagTek is under license.

    Update Java System Requirements.

    Notes

    10

    05/25/2018

    Initial Release

    feedback@magtek.com
    feedback@magtek.com
    Support Page >
    feedback@magtek.com
    Support Page >
    feedback@magtek.com
    Support Page >
    feedback@magtek.com
    Support Page >
    feedback@magtek.com
    Support Page >

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Programmer's Manuals
    Other Documents
    support@magtek.com

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    How to Use the MagTek Debris Clearing Tool
    support@magtek.com

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Support Page >

    support@magtek.com

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Support Page >

    support@magtek.com

    Rev Number

    Date

    Notes

    10

    May 21, 2018

    Initial release

    TERMS, CONDITIONS, AND RESTRICTIONS

    SUPPORT@MAGTEK.COM.

    How to Set Up the MagTek CMS SDK for Windows C++ Projects

    To add the MagTek CMS libraries to a Windows C++ project in Microsoft Visual Studio, follow these steps:

    • Create or open your project in Visual Studio.

    • Copy the following DLL file from the MTCMSDemo folders to the library folder of your software project:

      • MTCMS.dll

    • In the Visual Studio Solution Explorer, right-click the project and select Add Reference to show the Add Reference window.

    • Select the Browse tab and press the Browse… button.

    • Navigate to your library folder, select MTCMS.dll, then press the Add button.

    • In your custom software, create an instance of MTDevice. For examples, see the source code included with the MTCMSDemo project and/or Appendix A Code Examples.

    • Begin using the features provided by the MTCMS library

    Anroid™ is a trademark of Google LLC.

    IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is is used by Apple Inc. under license.

    Microsoft®, Windows® and .NET® are registered trademarks of Microsoft Corporation.

    EMV® is a registered trademark in the U.S. and other countries and an unregistered trademark elsewhere. The EMV trademark is owned by EMVCo, LLC. The Contactless Indicator mark, consisting of four graduating arcs, is a trademark owned by and used with permission of EMVCo, LLC.

    All other system names and product names are the property of their respective owners.

    Table 0.1 Revisions

    Rev Number

    Date

    Notes

    10

    11/15/2019

    Initial Release

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS ON THE FRONT PAGE OF THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    TERMS, CONDITIONS, AND RESTRICTIONS

    MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products. LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT. Licensee

    may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and PC hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE, THE SOFTWARE. Licensee's sole remedy in

    the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT HE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO SUPPORT@MAGTEK.COM.

    SOFTWARE LICENSE AGREEMENT

    Introduction

    This document provides the instructions to use the MTCMSNET Demo. It is part of a larger library of documents designed to assist oDynamo implementers, which includes the following documents available from MagTek:

    · D998200160 ODYNAMO PROGRAMMER'S REFERENCE MANUAL (MICROSOFT .NET)

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    deviceCount

    Number of devices in deviceList.

    deviceList

    A list of MTDeviceInformation objects.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    state

    MTConnectionState value indicating the state of the device: MTConnectionState.Disconnected MTConnectionState.Connecting MTConnectionState.Error MTConnectionState.Connected MTConnectionState.Disconnecting

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    dataString

    String representing data received.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    response

    MTCMSMessage representing data received.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    notification

    MTCMSMessage representing data received.

    OnDeviceConnectionStateChanged

    OnDeviceDataString

    OnDeviceResponseMessage

    OnDeviceNotificationMessage

    typedef void ( stdcall * OnDeviceConnectionStateChangedEvent)( 
    void* sender,
    MTConnectionState state);
    typedef void ( stdcall * OnDeviceDataStringEvent)( 
    void* sender, 
    const char* dataString);
    typedef void ( stdcall * OnDeviceResponseMessageEvent)( void* sender,
    const MTCMSMessage* response);
    typedef void ( stdcall * OnDeviceNotificationMessageEvent)( 
    void* sender,
    const MTCMSMessage* notification);

    applicationID

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data tag value

    data

    Data value

    dataLength

    Length of data value

    Return Value: MTCMSMessage structure

    This constructor method builds an MTCMSMessage instance with the provided values.

    Parameters:

    Parameter

    Description

    messageBytes

    Message in byte array value

    messageBytesLength

    Length of message bytes value

    Return Value: MTCMSMessage structure

    This constructor method builds an MTCMSMessage instance with the provided values.

    Parameters:

    Parameter

    Description

    applicationID

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data tag value

    Return Value: MTCMSMessage structure

    This method releases the resource allocated by calls to CreateMTCMSMessage and CreateMTCMSRequestMessage methods.

    Parameters:

    Parameter

    Description

    message

    MTCMSMessage to deallocate.

    Return Value: None

    MTCMS_API MTCMSMessage* CreateMTCMSMessage( 
    int messageType,
    int applicationID, 
    int commandID,
    int dataTag,
    const unsigned char* data, 
    int dataLength);

    Parameter

    Description

    messageType

    CreateMTCMSMessage

    MessageType value

    MTCMS_API MTCMSMessage* CreateMTCMSMessageFromBytes( 
    const unsigned char* messageBytes,
    int messageBytesLength);
    MTCMS_API MTCMSMessage* MTCMSMessage( 
    int applicationID,
    int commandID,
    int dataTag,
    const unsigned char* data, 
    int dataLength);
    MTCMS_API void ReleaseMTCMSMessage(MTCMSMessage* message);

    CreateMTCMSMessageFromBytes

    CreateMTCMSRequestMessage

    ReleaseMTCMSRequestMessage

    A guide that details the process of updating the Certificate Authority Public Keys (CAPKs) and EMV tags in oDynamo devices, ensuring continued compliance with card brand security requirements and transaction authenticity.

    Installation and Operation Manual

    A comprehensive manual offering design guidelines, mounting instructions, electrical integration specifications, and operational best practices for embedding the oDynamo into self‑service terminals, kiosks, and other unattended payment solutions.

    EMV Configuration Software Instructions

    A document that explains how to use the MagTek EMV Configuration application to verify and manage EMV configurations on an oDynamo connected to a host PC via USB, supporting proper EMV transaction processing.

    Need More Help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    Quick Installation Guide
    EMV Tag and CAPK Update Instructions

    The Package Inspection Document provides step-by-step visual and physical verification procedures for detecting tamper evidence on oDynamo packaging—including security tape inspection, seal integrity checks, and serial number validation—to ensure the single‑pack and multi‑pack devices remain PCI compliant before installation.

    Need More Help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    Device Inspection Document
    Package Inspection Document - Single and Multi-Pack
    https://www.magtek.com
    https://forum.magtek.com

    Application Group 0x05 - PAN Messages

    Command 0x05::0x01 - Read PAN

    The host uses this command to retrieve the Primary Account Number (PAN) of the last card it successfully read, regardless of the interface used to read the card. Generally the host would use this command in solutions that use an external Encrypting PIN Pad (EPP), to retrieve the PAN and provide it to the EPP so it can create a PIN block.

    For the host to successfully retrieve the plaintext PAN using this command, the device must have determined the card matched one or more entries in the device’s PAN Whitelist (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist). If the card does not match an entry in the whitelist, the PAN will be available in encrypted form, but only if oDynamo is currently paired with a Cryptera EPP. The EPP decrypts the PAN and uses it to form the encrypted PIN block. Otherwise the device returns 0x0000 in parameter C4 to indicate the PAN is not available.

    After successful return of the PAN to the host or a timeout, the device erases the PAN from memory. For MSR transactions, the timeout for the host to follow up with the device to retrieve the PAN is 3 seconds. Because EMV transactions may require more time for the cardholder and operator to complete, the timeout for EMV transactions is 255 seconds. If a timeout occurred, the device returns 0x0000 in parameter C4 to indicate the requested item is not available.

    Table - Message Structure for Command 0x05::0x01 - Read PAN

    MTDevice Events

    OnDeviceList

    This event occurs when device information is available.

    public event DeviceListHandler OnDeviceList
    public delegate void DeviceListHandler(object sender,
    MTConnectionType connectionType, List<MTDeviceInformation> deviceList)

    Parameter

    Description

    Sender

    Object representing the publisher of the event.

    connectionType

    This event occurs when the connection state of the device is changed.

    This event occurs when a response is received from the device.

    This event occurs when a response is received from the device.

    This event occurs when a response is received from the device.

    This event occurs when a response is received from the device.

    Shift Out IntelliHead

    For all Shift Out IntelliHead documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official Shift Out IntelliHead Support Page:

    Shift Out IntelliHead Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    Appendix B ARPC Response from Online Processing (EMV Only)

    This section gives the format of the data for Command 0x07::0x03 - EMV L2 Online Processing Result. The host sends this command to the device in response to Notification 0x07::0x83 - EMV L2 ARQC Message. The data is a TLV object with the following contents:

    How to Use the MTCMS .NET Demo

    To use the MTCMS .NET Demo, follow these steps.

    • To send a command to the device, enter the command in the command text box and press the button.

    • To enable the MTCMS .NET Demo to receive message notifications, the Demo needs to first subscribe to messages. Select Auto in the Subscription list box to enable the Demo to Subscribe after connecting to the device.

    EMV Configuration Software Instructions

    Document Number D998200314-10

    Table 1.1 - Revisions

    Rev Number
    Date
    Notes

    data

    Data value

    dataLength

    Length of data value

    feedback@magtek.com
    feedback@magtek.com

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Support Page >

    support@magtek.com

    Application ID Data Object (Tag C1) = 0x05 PAN Messages

    C2

    01

    01

    Command ID Data Object (Tag C2) = 0x01 Request PAN

    01

    05

    Application ID Data Object (Tag C1) = 0x05 PAN Messages

    C2

    01

    01

    Command ID Data Object (Tag C2) = 0x01 Request PAN

    C3

    01

    00

    Result Code Data Object (Tag C3) = 0x00 OK / Done or 0x11 = Timeout occurred.

    C4

    Calculated

    Byte 0 PAN Status

    0x00 = PAN is not in PAN Whitelist, can not be transferred 0x01 = PAN is in PAN whitelist, full PAN is available

    0x02 = PAN is in PAN whitelist, 12 digits of PAN are available 0x03 = PAN is encrypted for use with paired Cryptera EPP

    Byte 1 PAN Length

    Bytes 2..n PAN Value (if available)

    If the PAN is encrypted, the value will be 16 bytes and can be used as the data portion of parameter P2 for the EPP command READPIN_EXT.

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    C1

    01

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Table - Response to Command 0x05::0x01 - Read PAN

    05

    C1

    F9

    var

    Container for MAC structure and generic data

    T

    R

    /DFDF54

    var

    MAC KSN

    B

    R

    /DFDF55

    01

    MAC Encryption Type

    B

    R

    /DFDF25

    var

    Device Serial Number (IFD Serial Number)

    B

    R

    /FA

    var

    Container for generic data

    T

    R

    //70

    var

    Container for ARPC Response

    T

    R

    ///8A

    02

    Authorization Response Code

    · “00” = Approved

    · “10” = Approved

    · “11” = Approved

    · “05” = Declined

    · “51” = Declined

    · “Z3” = Declined

    AN

    R

    ///91

    var

    Issuer Authentication Data

    B

    O

    ///71

    var

    Issuer Script Template 1

    As defined in EMV Integrated Circuit Card Specifications for Payment Systems 4.3. The host may include as many instances of this parameter as needed.

    B

    O

    ///72

    var

    Issuer Script Template 2

    As defined in EMV Integrated Circuit Card Specifications for Payment Systems 4.3. The host may include as many instances of this parameter as needed.

    B

    O

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    Table - ARPC Response

    Padding to ensure the length of data, starting at the first byte (F9), and ending with any additional padding, is a multiple of 8 bytes. This is a requirement of using the CBC-MAC algorithm.

    Four byte CBC-MAC. Currently the device does not check this value. The host should set the value to 0x00000000.

    Appendices

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    deviceList

    A list of MTDeviceInformation objects

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    state

    MTDeviceState value indicating the state of the device:

    Disconnected Connecting Error Connected Disconneting

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    dataString

    Hexadecimal string representing data received.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    dataBytes

    Byte array representing data received.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    response

    MTCMSResponseMessage representing data received.

    Parameter

    Description

    sender

    Object representing the publisher of the event.

    notification

    MTCMSNotificationMessage representing data received.

    OnDeviceConnectionStateChanged

    OnDeviceDataString

    OnDeviceDataBytes

    OnDeviceResponseMessage

    OnDeviceNotificationMessage

     public event DeviceListHandler OnDeviceList
    
    public delegate void DeviceListHandler(object sender,
    MTConnectionType connectionType, List<MTDeviceInformation> deviceList)
    public event DeviceDataStringHandler OnDeviceDataString
    
    public delegate void DeviceDataStringHandler(object sender, string dataString)
    public event DeviceDataBytesHandler OnDeviceDataBytes 
    public delegate void DeviceDataBytesHandler(object sender, byte[] dataBytes)
    public event DeviceResponseMessageHandler OnDeviceResponseMessage 
    public delegate void DeviceResponseMessageHandler(object sender, 
    MTCMSResponseMessage response)
    public event DeviceNotificationMessageHandler OnDeviceNotificationMessage 
    
    public delegate void DeviceNotificationMessageHandler(object sender, 
    MTCMSNotificationMessage notification)

    To stop the Demo from automatically subscribing to message notifications after connecting to a device, select Manual in the Subscription list box.

    • To disable the MTCMS .NET Demo from receiving message notifications from the currently connected device, first connect to the device and then press the Unsubscribe button.

    • To automatically display magnetic stripe data after a card swipe, select Auto in the MSR Request list box. This step needs only be done once on the currently connected device

    • Insert and remove a card from the device. The magnetic stripe data will be displayed in the status box.

    • To manually display magnetic stripe data after a card swipe, select Manual in the MSR Request list box. This step needs only be done once on the currently connected device.

    • Insert then remove a magnetic stripe card from the device. A notification will inform that MSR card data is available.

    • Within 5 seconds of this notification (the device’s MSR data retention period), press the Request MSR Data button to receive the magnetic stripe data

    • If a manual request is not sent in time, the display will show empty data fields because the response has no magnetic stripe data.

    • To request that PAN data, press the Request PAN button button immediately after pressing the Request MSR button.

    • Example sequence: Insert card > Remove card > Request MSR > Request PAN

    • To perform an EMV transaction, insert the chip card, select the desired response from the Response list box, then press the Start button.

    • Follow any instructions for application or language selection.

    • After the transaction, the status will be displayed.

    • 1To cancel the EMV transaction, press the Cancel button. Please note that the cancel feature will only work before the card is inserted (Not supported at this time).

    • To view the device information, select the desired information from the Info list box, then press the Get Info button. An example of requesting Firmware information is shown below.

    • To clear the screen, press the Clear button.

    • To close the device, press the Disconnect button.

    • To demonstrate card Latch and Unlatch, press the Latch button and listen for an audible click. Now press the Unlatch button and listen for an audible click.

    Send Command

    Message Subscription

    MSR Auto

    MSR Manual

    Request PAN

    EMV Transaction

    Device Info

    Latch/Unlatch

    Initial Release

    This document describes how to use the MagTek EMV Configuration application to verify the EMV configuration on a MagTek oDynamo and DynaWave connected to a host PC via USB interface.

    This section will demonstrate how to use the MagTek EMV Configuration application on an oDynamo and DynaWave.

    • Connect the device to the host PC via USB cable.

    • Power cycle the device. Wait until the status LED is steady Green in color.

    • Press the Open button to connect to the device. The software will display the Serial Number and

      Firmware Version.

    Serial Number

    This section will demonstrate how to view EMV tags.

    • After the device is already open, press on the EMV Tags select a Database, select a Slot, select a tag type from the list, and press theSend button

    • A list is displayed in columns of Tag, Length (decimal), Value (hexadecimal), and Description.

    • To view a subset from the result list, enter either a Tag, Value, or Description into the Filter input box. Below are examples of searching for the tag “dfdf16” and description “max size”.

    • To view specific tags, select a tag type without “All” in its description, enter a Tag value or list of values without spaces, then press the Send button. Below is example result of getting tags DFDF02 and DFDF16.

    This section demonstrates how to verify the device against an EMVTag xml file. An EMVTag file contains an array of tags. Only tags listed in the EMVTag file are compared against the device.

    Verify

    • Press the EMV Tags tab and press the Verify button.

    • Select the EMV tags file to be compared with the device, and press theOpen button.

    Open

    • The status of the verification will be displayed. Each mismatched tag is shown as: Error Item [Tag] -> [ValueFromFile]

    Example: Successful verification.

    Example: Failed verification. Value in device is 00000080.

    This section demonstrates how to view Certificate Authority Public Keys (CAPKs) on a device.

    • Press on the CA Public Key tab, select a Database, and press the Send button.

    • A list of CAPKs will be shown along with the status of the operation.

    This section demonstrates how to verify the device against an EMVCAPK xml file. An EMVCAPK file contains an array of Certificate Authority Public Keys. Only CAPKs listed in the EMVCAPK file are compared against the device.

    • Press the CA Public Key tab and press the Verify button.

    • Select the EMVCAPK xml file to be compared with the device, and press the Open button.

    • The status of the verification will be displayed. Each mismatched RID is shown as: Error Item [RID] -> [ValueFromFile]

    Example: Successful verification.

    Example: Failed verification.

    10

    June 11, 2019

    About This Document

    How to connect to the Device

    How to View EMV Tags

    How to Verify EMV Tags

    How to View EMV CA Public Keys

    How to Verify EMV CA Public Keys

    Connection Types

    Table 1-1 in section 1.4 includes a list of connection types available for each device. The following subsections provide details developers will need to communicate with the device using each connection type.

    How to Use Network Connections (Ethernet or 802.11 Wireless Only)

    How to Use Ethernet Connections (Ethernet Only)

    When the device is connected to a network via a 10/100 Ethernet port, it will attempt to contact a DHCP server to acquire a dynamic IP address during power-up. See the network administrator to determine the IP address the DHCP server assigned to the device. After determining the IP address, use port 5000 to communicate with the device.

    How to Send Commands Using the Network Connection

    The messages exchanged between the host and the device on the TCP/IP connection do not require any wrappers or encoding: The binary data flowing through the connection is identical to the message format defined in section 2 Messages, Commands, Responses, and Notifications and in section 4 Command Set. A C0 at the beginning of a message’s usage table means that without any preparation other than binding to the port, the host begins sending the command by sending a single binary byte 0xC0.

    For example, to send Command 0x00:0x10 - Get Product ID to the device over TCP/IP, the host should send a stream consisting of single binary byte 0xC0, followed by single binary byte 0x01, followed by single binary byte 0x01, followed by single binary byte 0xC1, and so on following the sequence in Table 4-1. The device will then send a response over the same connection according to the sequence in Table 4-2.

    The messages exchanged between the host and the device on the RS-232 connection require a small wrapper and must be ASCII encoded hexadecimal (‘0’ through ‘F’ only). The message format is defined in section 2 Messages, Commands, Responses, and Notifications and in section 4 Command Set. ASCII encoding means when the device intends to send C0 at the beginning of a message’s usage table, it should send two ASCII bytes, where ‘C’ is ASCII 0x43 and ‘0’ is ASCII 0x30. When the device is using default settings, the host should send a line feed (0x0A) to signal the end of the message. The device’s responses and notifications will be wrapped and encoded the same way.

    For example, to send Command 0x00:0x10 - Get Product ID to the device over the RS-232 connection, the host should send a stream consisting of ASCII ‘C’ (0x43), ASCII ‘0’ (0x30), ASCII ‘0’ (0x30), ASCII ‘1’ (0x31), ASCII ‘0’ (0x30), ASCII ‘1’ (0x31), ASCII ‘C’ (0x43), ASCII ‘1’ (0x31), and so on following the sequence in Table 4-1, then a line feed (0x0A). The device will then send a response over the same connection according to the sequence in Table 4-2, then a line feed (0x0A).

    The devices only use TXD and RXD; hardware handshaking is not available. The default serial settings are 9600 bps, No parity, 8 data bits, and 1 stop bit.

    The device can optionally be configured by the manufacturer to expect / transmit a Starting Byte and an ASCII CRC checksum in this order: <Starting Byte> <Message in ASCII> <CRC in ASCII> <Ending Byte>. The device’s default setting is “raw mode,” where the device only expects / transmits the Ending Byte, which is set to Line Feed (0x0A). Other popular choices when ordering a device may include Starting Byte=STX (0x02); Ending Byte=ETX (0x03) or CR (0x0D).

    The device conforms to the USB specification revision 2.0, and is compatible with revision 1.1. It also conforms to the Human Interface Device (HID) class specification version 1.1, and communicates as a vendor-defined HID device. This document assumes the reader is familiar with USB HID class specifications, which are available at

    Developers can easily create custom software to communicate with the device using any framework that can communicate with a USB port. For example, developers can use the standard Windows USB HID driver with Visual Basic or Visual C++. MagTek has developed demonstration software that communicates with the device via this method, and developers can use it to test the device and to provide a starting point for developing other software. Because the device’s USB implementation is operating system agnostic, the device can be used with other platforms as well, such as Linux. For more information, see the MagTek web site, or contact your reseller or MagTek Support Services.

    The device is a full speed high-powered USB device that identifies itself with vendor ID 0x0801 and product ID 0x001B. The device does not draw power from the USB port, and does not support USB Suspend or remote wakeup.

    USB HID devices send and receive data using reports. Each report can contain several sections, called usages, each of which has its own unique four-byte identifier. The two most significant bytes of a usage are called the usage page, and the least two significant bytes are called the usage ID. Vendor-defined usages must have a usage page in the range 0xFF00 - 0xFFFF, and it is common practice for related usage IDs to share the same usage page. For these reasons, all usages for this device uses vendor-defined usage page 0xFF20.

    HID reports used by the host can be divided into three types:

    • Feature Reports, which can be further divided into Get types and Set types. The host exclusively uses this type of report to send messages to the device.

    • Input Reports are used by the device to send asynchronous responses or notifications to the host when a related feature report completes, or automatically when the device’s state changes. This is common when an operation depends on cardholder action.

    • Output Reports. Output reports are part of the USB HID standard, but are not used by this device.

    The list of the device’s available reports and their structure is sent to the host in a report descriptor, usually just after the device is connected to the USB port. Generally the details of the report descriptor are abstracted by the developer’s HID API; however, should it become necessary to examine a report descriptor byte-by-byte, a full inventory of the report descriptor for these devices is provided in Table 3-1.

    How to Send Commands Using USB HID

    The general sequence the host should use to send a message to the device is as follows:

    • The host sends a Set Feature Report with Report ID 0x05, containing the command message in binary format (bytes) as data.

    • The device asynchronously sends an Input Report with Report ID 0x02, containing the defined response to the originating command in binary format (bytes) as data. Depending on the command, the response may or may not contain a Data Field Data Object (Tag C4 or E0).

    The general sequence the device uses to send a message to the host is as follows:

    • The device’s state changes, a cardholder or operator takes action, or new information becomes available.

    • The device asynchronously sends an Input Report with Report ID 0x02, containing the notification message in binary format (bytes) as data.

    MagTek Response to NIST SP 800-131A re: Two-Key TDEA Encryption

    April 8, 2019

    Dear MagTek Customers,

    In March 2019, NIST (National Institute of Standards and Technology) released a document entitled: “NIST Special Publication 800-131A Revision 2 – Transitioning the Use of Cryptographic Algorithms and Key Lengths1”. In that document, it states that the use of “Two-Key TDEA Encryption” has been listed as a “Disallowed” operational mode. This NIST document has raised concerns with our customers regarding the use of Two-Key TDEA Encryption within our products.

    As a security leader, it is our intent to provide relevant information and guidance on this subject to our customers, and we can advise as follows:

    At present time, “Two-Key TDEA Encryption” is currently the most widely used encryption method in the electronic payments and financial services sectors. It is used to protect both PIN and PAN payment data, and is used by most of the leading secure payment devices and payment networks deployed today.

    As of this date there have been no successful attacks upon Two-Key TDEA Encryption that have resulted in the compromise of payment data encrypted under this mode. As such, Two-Key TDEA Encryption remains fully approved for use by both the ANSI X9 (American National Standards X9 - Financial Services) standards group and the PCI Security Standards Council.

    MagTek customers who are currently using our products in the “Two-Key TDEA Encryption” mode can rest assured that the recent NIST announcements have no impact on security requirements within the Financial Services or Electronic Payments business sectors. As such, there is no need to make any changes to your MagTek products or encryption modes at this time.

    It should be noted that the NIST recommendations only apply to Federal Agencies and their Information Systems. Commercial sector financial services are exempt from the NIST directives and are best served by following the ANSI X9 and PCI security standards organizations for recommendations on encryption requirements for payment data.

    In regard to Two-Key TDEA Encryption for Transport Layer Security (TLS), PCI advised on this matter during a November 2017 blog entitled: “2”.

    In that discussion, PCI acknowledges that the strength of Two-Key TDEA Encryption is under review and is no longer considered as “strong cryptography” by NIST. Further, PCI mentions that when NIST formally declares

    MagTek, Inc. | 1710 Apollo Court | Seal Beach, CA 90740 | p. 562-546-6400 | f. 562-546-6301 |

    Registered to ISO 9001:2015 © Copyright 2019 MagTek, Inc. PN D998200305 rev 10 4/19

    Two-Key TDEA Encryption as “fully disallowed” it will no longer be considered “strong cryptography” by PCI SSC. Now that NIST has formally declared such (as of March 2019), the payment industry will need to await PCI’s further guidance on this subject.

    In the interim, PCI has recommended that organizations begin planning their transition towards AES-128, yet acknowledges that due to legacy considerations this transition may take place over a long period of time.

    Additionally, PCI recommends the use of several mitigation techniques to reduce risk. One of those measures is to “Change TDEA keys regularly…every 256 transactions or daily, whichever is more frequent”. In regard to this recommendation, MagTek can advise that our products utilize DUKPT (Derived Unique Key Per Transaction), a far more rigorous key management method. DUKPT ensures that a different key is generated for each and every transaction, taking PCI’s recommendation for frequent key changes to the maximum level.

    Looking ahead, both the ANSI X9 and PCI Security Standards Council are establishing standards and transition paths towards the adoption of AES-128 as the successor to TDEA for encryption of payment data.

    However, due to the proven security of TDEA, legacy concerns, and logistical considerations, it is anticipated that this transition will take place over the next 4-10 years. The earliest transition milestone will be the end of PCI support for TDEA PIN encryption using fixed-key management by Jan 1, 2023.

    It is important to note that this milestone does not apply to the use of TDEA PIN encryption using DUKPT (Derived Unique Key Per Transaction) key management. As such, it is very likely that there will be a long transition period where both Two-Key TDEA DUKPT and AES128 DUKPT encryption methods will be used concurrently for the foreseeable future. (See table below for upcoming security milestones.)

    As a security leader in the electronic payments industry, MagTek is moving forward with implementation of AES-128 DUKPT into our products and security services. In the meantime, we will continue to support Two-Key TDEA DUKPT encryption in our products for however long the payments industry requests it, and/or the relevant security standards support it.

    As always, MagTek will continue to keep our customers informed on these matters and provide clear guidance as new security trends and requirements emerge.

    If you have any further questions, please contact your MagTek Sales Representative or me and we will be happy to answer any questions you may have.

    Sincerely,

    Larry Meyers

    Vice President, Qwantum Secure Media MagTek, Inc

    1710 Apollo Court Seal Beach, CA 90740 562-546-6400

    About MagTek

    Founded in 1972, MagTek is a leading manufacturer of electronic systems for the reliable issuance, reading, transmission and security of cards, checks, PINs and identification documents. Leading with innovation and engineering excellence, MagTek is known for quality and dependability. Its products include secure card reader/authenticators, token generators, EMV contact, contactless and NFC reading devices, encrypting check scanners, PIN pads and distributed credential personalization systems for secure magstripe and EMV enabled cards. These products are used worldwide by financial institutions, retailers, and processors to provide secure and efficient payment and identification transactions.

    Today, MagTek continues to innovate. Its MagneSafe™ Security Architecture leverages strong encryption, secure tokenization, dynamic card authentication, and device/host validation enabling users to assess the trustworthiness of credentials and terminals used for online identification, payment processing, and high- value electronic transactions.

    MagTek is headquartered in Seal Beach, CA. For more information, please visit

    Citations

    1. Barker, Elaine and Roginsky, Allen; March 21, 2019; NIST Special Publication (SP) 800-131A Revision 2; “Transitioning the Use of Cryptographic Algorithms and Key Lengths”

    2 and and “PCI SSC Cryptography Expert on Triple DEA”; link:

    Mechanical Integration

    This section provides information and guidelines for designing the mechanical aspects of a solution that incorporates oDynamo. MagTek strongly recommends vetting and testing solution designs before finalizing and deploying them, to make sure the design meets all requirements (e.g., functional, legal, security, certification, safety, and so on).

    When designing the mechanical portions of a solution that incorporates oDynamo, consider the following:

    ASICs

    MagTek offers a range of high-performance, low-cost Application Specific Integrated Circuits (ASICs) designed for OEM developers building magnetic stripe card reading systems. These three-channel fully integrated decoder chips significantly simplify the card-reader to microcontroller interface. The family includes the Triple-Track Delta ASIC, a proven solution widely used to read three tracks of card data for financial and retail applications. The next-generation Qwantum ASIC adds support for the Serial Peripheral Interface (SPI), integrated AES-256 encryption, and much lower power demand, making it ideal for advanced, battery-powered devices requiring both card data decoding and Qwantum security features. The ASICs are available in ultra-compact packages requiring minimal external components, feature a data buffer with Shift-Out protocol, high noise immunity, high performance decoding, low voltage operation, and a wide operational temperature range supporting a broad spectrum of card swipe speeds. The official MagTek ASICs support page is a central hub containing all the resources you'll need. There you can find the 2024 product catalog, the OEM Components brochure offering an overview of ASICs, Heads, Head Assemblies, and Rails, programmer's manuals including an application note for character conversion, and technical reference manuals such as the Magnetic Card Reader Design Kit and specifications for the Triple-Track Delta ASIC with Shift-Out (3 Volt and RoHS Compliant versions).

    Report Size (8)

    75 08

    Logical Minimum (0)

    15 00

    Logical Maximum (255)

    26 FF 00

    Report ID (5)

    85 05

    Usage (Vendor-Defined 5)

    09 05

    Report Count (63)

    95 3F

    Feature (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Buf)

    B2 02 01

    Report ID (2)

    85 02

    Usage (Vendor-Defined 32)

    09 20

    Report Count (63)

    95 3F

    Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Buf)

    82 02 01

    Report ID (3)

    85 03

    Usage (Vendor-Defined 33)

    09 21

    Report Count (5)

    95 05

    Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit)

    91 02

    End Collection

    C0

    Item Tag (Value)

    Raw Data

    Usage Page (Vendor-Defined 33)

    06 20 FF

    Usage (Vendor-Defined 1)

    09 01

    Collection (Application)

    A1 01

    How to Use RS-232 Connections (RS-232 Only)

    How to Use USB Connections (USB Only)

    About HID Usages

    About Reports

    About the Report Descriptor

    Table - USB HID Report Descriptor

    www.usb.org.

    PCI PIN

    All hosts must support ISO PIN Block Format 4 (AES)

    DECRYPTION

    Jan 1, 2023

    PCI PIN

    All hosts must support ISO PIN Block Format 4 (AES)

    DECRYPTION & ENCRYPTION

    Jan 1, 2025

    Security

    Entity

    Requirement

    Effective Date

    VISA PCI PIN

    Sunset data for SINGLE DES PIN encryption

    (applies to fuel dispenser environments POS only)

    Oct 1, 2020

    PCI PIN

    FIXED Key for TDEA PIN encryption in POI devices and

    Host-to-Host connections is disallowed

    PCI SSC Cryptography Expert on Triple DEA
    www.magtek.com
    larry.meyers@magtek.com
    www.magtek.com.
    . Poore, Ralph Spencer; Nov 9, 2019; PCI Security Standards; TLS/SSL
    Encryption
    Approved Scanning Vendors;
    https://blog.pcisecuritystandards.org/pci-ssc-cryptography-expert-on-triple-dea

    Jan 1, 2023

    Review section 1.6 About oDynamo Components for an overall introduction to the device’s physical features and what they are called.

  • Review Appendix A Technical Specifications.

  • See section 3.2 Dimensions for overall device dimensions.

  • Design the solution enclosure front panel. Information about fitting the device into a panel cutout are in section 3.4 Panel Cutout.

  • Determine how the device will be mounted. See section 3.5 Mounting for details. Coordinate with the electrical design team to make sure the panel design, mounting hardware, and solution-specific installation instructions meet electrical requirements.

  • Coordinate with the electrical design team to plan cable routing and fastening. See section 3.6 Cabling for details.

  • Consider additional factors that do not fit these categories. See section 3.7 Miscellaneous Considerations.

  • Review safe handling practices in section 1.9 Handling to make sure the logistical aspects of the solution design meet the device’s handling requirements.

  • Review recommended installation practices in section 4 Installation. The steps provided in that section depend on the solution design team to customize the steps or fill in solution-specific details before distribution to installation technicians.

  • Review section 6 Maintenance. When installed in the solution-specific enclosure, the maintenance procedures may require modifications, or the solution may require additional maintenance not covered in the general guidelines provided here.

  • Review any additional requirements from other agencies, such as PCI certification requirements, building codes, and so on, which may introduce additional constraints to the design.

  • Overall dimensions of the device are shown in Figure 3-1. On request, MagTek can provide a 3D model of the device’s envelope to assist with the mechanical portion of solution design. MagTek strongly recommends building and testing prototypes with actual devices before finalizing the solution design.

    Figure 3-1 - oDynamo Mechanical Dimensions in Inches [mm]

    For optimum results, MagTek recommends orienting the device for horizontal card insertion (see Figure 3-2). Although it is possible to mount the device in vertical orientation, doing so may lead to impaired device function caused by the potential for increased accumulation of debris. Maintenance planning should take this into consideration.

    Figure 3-2 - oDynamo Mounting Orientation

    The device must be installed such that cardholders have a full, unobstructed view of the housing around the card insertion slot opening (“entry zone”) prior to insertion. This is to allow cardholders to easily detect suspicious objects in or around the card slot entry, such as bugs / skimmers / tapping mechanisms, and their wires or antennas. Installation height is one factor in meeting this requirement: Assuming the solution design does not add features that obstruct the view of the slot, choosing the installation height involves making sure the nominal inspection position has a view of the device that is no greater than 55° above the horizontal plane of the device (measured from the plastic body), which provides a view similar to Figure 3-3. If the solution mounts the device at a downward pitch, subtract the pitch angle from the 55° before calculating. For example, if the nominal inspection position is 12” away from the device and 60” above the ground, and the device is mounted at 0° pitch, the device’s slot must be mounted no higher than 60”-(12”)tan(55°-0°)=43”.

    Figure 3-3 - View from 55 Degree Angle Above Device Horizontal

    The device incorporates a number of drain holes, shown in Figure 3-4. Drainage requirements are as follows:

    • The drain holes must not be obstructed.

    • The device must be oriented with the drain holes on the bottom.

    • The enclosure must pitch the device’s face between 0 degrees (level) and 30 degrees downward. It must not pitch the device’s face upward (see Figure 3-5, 0° ≤ θ ≤ 30°).

    Figure 3-4 - oDynamo Drain Holes

    Figure 3-5 - oDynamo Mounting Pitch

    The device is designed to be integrated into a solution design that includes an enclosure to secure the device and protect it from the elements. This section provides guidelines for creating a cutout in the enclosure’s front panel that accommodates the device.

    The device’s installation face and gasket provide a seal against the elements:

    • The enclosure panel must be flat and rigid to produce a solid seal with the gasket and to provide security against tampering.

    • The solution’s enclosure must include a cutout that is sized to expose the device’s bezel while still squeezing the gasket.

    • The enclosure must protect the device from unauthorized tampering.

    • The enclosure must protect the device from the elements. The device is designed for ingress protection from the gasket forward, but the rear of the device behind the gasket must be protected.

    The device is sized for Compact Door Module hole patterns as specified by the European Vending Association (EVA) Electronic Payment Specification for Unattended Point Of Sale (UPOS), EVA EPS 1.1. Reference dimensions for the cutout in the solution enclosure, including the location of either screw holes or threaded studs, are shown in Figure 3-6; the outside dimensions of the sample cutout plate represent absolute minimum required clearances for the cutout’s overall placement in the enclosure. Detailed dimensions of the device’s installation face are shown in Figure 3-7.

    Figure 3-6 - oDynamo Panel Cutout Dimensions in Inches [mm]

    Figure 3-7 - oDynamo Mounting Face Dimensions in Inches [mm]

    The solution design’s mounting hardware and torque specifications must apply adequate force to create a water-tight seal between the enclosure and the gasket. For example, for M4 nuts/bolts, the torque may be in the range of 0.7 N-m (6 to 7 in-lbs.).

    The device is designed to be mounted either onto screws (see Figure 3-9) or onto threaded studs permanently attached to the enclosure (see Figure 3-8), and nuts. The maximum shaft size for screws or studs is #10 or M5. Make sure mounting hardware in contact with the mounting holes conforms to the grounding requirements in section 2 Electrical Integration.

    Figure 3-8 - oDynamo Threaded Stud / Nut Mounting

    Figure 3-9 - oDynamo Screw/Nut Mounting

    This section provides information about mechanical integration of cables into a solution design. For details about electrical aspects of integrating the device, see section 2 Electrical Integration.

    The device incorporates cable tie mounts (see Figure 1-1) that can be used with cable ties (not included) to implement cable strain relief. See Figure 3-10 for an example of tying down cables.

    Figure 3-10 - Cable Strain Relief

    The enclosure should include adequate clearance for installation and maintenance personnel to connect and disconnect all cables. If the solution uses the device’s cable tie mounts for strain relief, it should provide additional clearance to remove and re-fasten the cable ties. It should also provide support for the device when cables are being connected and disconnected.

    Installation technicians will need to be provided detailed instructions for installing the cabling. For some basic guidelines, see section 4 Installation.

    The device includes a label well (see Figure 1-1) around the General Status LED that can accommodate solution-branded labels. Labels should incorporate a cutout so they do not obstruct the LED.

    The device operates on low power, so no special cooling should be necessary. However, there must be adequate clearance around the vent holes in the top of the device’s body for heat to escape (see Figure 3-11), and the enclosure must not be an isolated thermal system that traps indefinite amounts of heat.

    This document describes how to use oDynamo securely. Using the device in any way other than the approved methods described in this document invalidates the PCI PTS approval of the device.

    Not following the guidelines in this section could damage the device, render it inoperable, and/or violate the conditions of the warranty.

    Overview

    Dimensions

    Orientation

    Panel Cutout

    Mounting

    Cabling

    Miscellaneous Considerations

    ASICs Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    Device Inspection Document

    Inspection of Form Factor, Front, Top, Bottom, and Back

    Overview

    oDynamo is a PCI PTS 5.x, SRED Certified hybrid insertion reader. oDynamo’s enclosure and its associated electronics have been designed to form a Tamper Resistant Security Module (TRSM). The covers are securely attached and incorporate sensing circuits to detect if any attempt is made to open the device. Internal spaces within the device have been minimized to reduce the possibility

    of unauthorized modifications. Any attempt to penetrate or modify oDynamo electronically will cause the device to permanently erase its stored encryption keys, after which oDynamo will cease to function. Inspect the following areas of the device for tampering.

    Form Factor

    Visual Comparison

    Carefully inspect the form factor. Make certain there are no additional electronics, wires or forms added to the device. Check the overall form factor for signs of attempted entry.

    Exterior Surface/Metal Bezel

    Look for any hidden and additional wires in crevasses, seams, and exterior surface. Check there are no additional wires on the device.

    Mounting Gasket

    The device’s installation face includes a gasket. Do not remove the gasket.

    Front Face Metal Bezel

    The front face metal bezel is one die-cast piece. Inspect for any modification or hidden wires protruding from the card slot or drain holes.

    The device includes a label well around the General Status LED. MagTek is default label.

    Apply power to the device, LED should be solid GREEN. Apply power to the device for 60 seconds. If the LED shows any red, a tamper event has occurred.

    The product label is located on the back of the device. Check PN, SN and HW number. Serial Number matches serial number on boot-up.

    Look for any hidden and additional wires in crevasses, seams and exterior surface of the device.

    Check tampering of 6 screws. DO NOT REMOVE THE SCREWS.

    PRIOR TO INSTALLATION Inspect for objects or wires in the vent holes.

    The card insertion slot is a smooth, unobstructed path. Insert an embossed card into the device to check for any signs of obstruction inside. Other than the magnetic head that reads magnetic stripes and contact points that read chips there are no electronics, objects, or wires on the path.

    Unauthorized removal of switches will disable the device. Exercise the two (2) dismount switches by pressing them. They should return to the original position upon release of finger pressure.

    Inspect individual connection ports

    • RS-232 and Power Port

    • USB Host Port

    • USB Device Port

    • Ethernet Port

    Check tampering of 4 screws. DO NOT REMOVE THE SCREWS.

    PRIOR TO INSTALLATION Inspect for objects or wires in the vent holes.

    The card insertion slot is a smooth, unobstructed path. Insert an embossed card into the device to check for any signs of obstruction inside. Other than the magnetic head that reads magnetic stripes and contact points that read chips there are no electronics, objects, or wires on the path.

    Unauthorized removal of switches will disable the device. Exercise the two (2) dismount switches by pressing them. They should return to the original position upon release of finger pressure.

    Inspect where the seams come together to ensure there are no extraneous wires.

    Inspect crevasses to ensure there are no extraneous wires.

    Inspect the 4x drain holes below the bezel nose (plus the 1x drain hole to the left side of the bezel nose). There are no electronics, objects or wires coming from the drain holes.

    Inspect where the seams come together to make ensure are no extraneous wires.

    Inspect crevasses to make certain there are no extraneous wires.

    Carefully inspect the form factor. Ensure there are no additional electronics, wires, or forms added to the device.

    Periodically inspect the following items:

    • Metal Bezel

    • Card Slot

    When servicing behind cabinet/door (terminal) inspect device for external wires, or foreign objects not included in the solution design. For proper installation, refer to your solution design documentation.

    Observe front face of the metal bezel and inspect for any modification or hidden wires.

    Look for any hidden and additional wires. No additional wires should be coming out of the holes.

    Check all views of the device and compare to photos.

    It is helpful to do the following for your device inspection audit.

    • Have a list of the device sand details listed on the asset tag.

    • Take photos of the front, back, and sides of each device.

    Check device Part numbers, serial numbers and IDs and check physical connections. Report any suspected signs of tampering immediately.

    How to find oDynamo on PCI web site https://www.pcisecuritystandards.org/assessors_and_solutions/pin_ transaction_devices.

    Search for MagTek and find the product name, oDynamo, on the web page. Compare the Hardware # and Firmware #.

    Periodically inspect the following items while installed: Exterior surface/metal bezel

    • Card slot

    • Five (5) drain holes

    • Form factor

    • Crevasses

    Inspect the following additional items during service:

    • Crevasses

    • Screws

    • Ventilation holes

    • Connection ports

    mDynamo Module

    For all mDynamo module documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the official mDynamo module Support Page:

    mDynamo module Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    MTCMSRequestMessage Class Methods

    This class is a subclass of MTCMSMessage. This class instantiates an MTCMSMessages instance with MessageID value set to the Request message type.

    MTCMSRequestMessage

    This constructor method builds and initializes an MTCMSRequestMessage instance with the provided values.

    public void MTCMSRequestMessage(int applicationID, int commandID, int dataTag, byte[] data)

    Parameters:

    Parameter

    Description

    applicationID

    Return Value: None

    Package Inspection Document - Single and Multi-Pack

    ODynamo SCRA reads magnetic stripe cards and EMV chip cards and is PCI compliant. The packaging has been designed to be tamper resistant and tamper evident. The packaging closure uses security tape. Any attempt to open the package would show signs of tampering. This document reviews how to detect tamper evidence in a single and multi-pack package.

    MagneSafe IntelliHead

    For all MagneSafe IntelliHead documentation, including programmer’s manuals, the technical reference manual, software/SDKs, and warranty info, please visit the officialMagneSafe IntelliHead Support Page:

    ApplicationID value

    commandID

    CommandID value

    dataTag

    Data Tag value

    data

    Data value

    feedback@magtek.com
    Support Page >

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Support Page >

    support@magtek.com

    Alternative Earth Grounding Port

    Screws

    Seams parting lines

    Decal

    General Status LED

    Product Label

    Top Back

    Crevasses

    Screws

    Ventilation Holes

    Front Face

    Card Insertion Slot

    Dismount Switches

    Bottom Back

    Connection Ports

    Screws

    Ventilation Holes

    Front Face

    Card Insertion Slot

    Dismount Switches

    Right Side Angle

    Seams Parting Line

    Crevasses

    Left Side Angle

    Drain Holes

    Seams Parting Line

    Crevasses

    At Point of Installation - Mounted

    Front Face Metal Bezel

    Mounting Holes

    Checklist Summary

    Device Audit

    PCI compliance web page.

    Does the box appear to be torn or cut?

    Is there any damage to the box?

    Are there any changes to the printing or labeling?

    Inside the package

    Are the components placed in the box as pictured in this document?

    Security Tape

    Is the tape missing? Devices are always shipped with security tape. Tape is red. The tape should only be located as pictured.

    Do you see the words "OPENED" or "VOID" where the tape is supposed to be?

    After removal of the security tape, it will leave red ink glued to the box: inverse OPENED and VOID text.

    Has the tape been cut? Has it been replaced? Check to make certain the tape has not been cut and that new clear tape has not been placed over the existing security tape.

    Is there any evidence of red ink? Does the front edge show any residual red ink, or scratch marks from an attempt to remove the residual security tape ink.

    Installation site inspection

    If yes, then tampering has occurred

    If no, then continue inspection

    Sealed plastic enclosure

    Does the device appear to have any physical forced entry points?

    Check the overall form factor for signs of attempted entry.

    SN label and security tape are applied to top of package.

    Security tape is applied to bottom of package.

    Packing Lot Label is applied to side of package.

    Inside of package holds device inspection document.

    Security tape secures the package together. The package itself is a brown box as pictured below with fitted foam.

    Check the overall form factor for signs of attempted entry.

    Security tape goes across center package seam. Clear packaging tape is across package ends seams.

    Security tape is applied across the bottom package seam.

    Package front has a MagTek logo and UN 3091 battery warning emblem.

    Package back has MagTek logo and storage notice.

    Security tape is applied across the top and bottom of the package, to not overlap at the sides.

    Security tape is applied across the top and bottom of the package, to not overlap at the sides.

    Security tape is red and applied across center seam of package.

    When tape is peeled back, “OPENED” warning pulls from tape and adheres to package. There is clear evidence of attempts to remove tape. Check seams have not been cut and re-taped.

    This lists the serial numbers of the devices packed in the shipment.

    On one side, the serial number list label and LOT label is applied.

    Inside the package is a pad to secure the devices, pictured below.

    After removing the pad, there are partitions that separate the devices from one another.

    Devices additionally have MAGTEK security tape holding the static shield bag in place.

    On the end of the static shield bag is the device serial number. Compare this with the serial list label on the outside of the package.

    A view of the partition with no devices. The partitions are designed to hold a maximum of 10 devices.

    To check for PCI Validation check the Hardware and Firmware ID. Hardware ID is printed on the label. The Firmware ID is accessible via the device and displayed on the screen. Go to the PCI compliance web page, compare the Hardware ID and Firmware ID: https://listings.pcisecuritystandards.org/popups/pts_device.

    Package inspection upon receipt

    If yes, then tampering has occurred

    If no, then continue inspection

    Cardboard box - Top, Bottom, Sides

    If the security switches have been tripped, the oDynamo cannot be repaired in the field. It must go back to the factory for repair. Follow RMA procedures. Report all signs of tampering as per standard protocol.

    Single Pack

    Top

    Bottom

    Side

    Inside

    Overall Packaging

    Multi Pack

    Top

    Bottom

    Front

    Back

    Left

    Right

    Security Tape - Secured

    Security Tape - Removed

    Serial Number Label

    Side - Left or Right

    Inside

    Inside - Devices

    Device

    Device Serial Number

    Partitions Empty

    POI Device Validation

    MagneSafe IntelliHead Support

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    Introduction

    This document provides guidelines and technical information for designing solutions that integrate oDynamo, MagTek’s manual insertion Secure Card Reader Authenticator (SCRA) for OEM solutions.

    About oDynamo

    oDynamo is a secure insertion card reader that is built to be durable and flexible. oDynamo allows for fast, reliable, and secure reading of magnetic stripe and chip card data from cards that meet the ISO 7810, 7811, and 7816 specifications. The slot and chassis are designed so cardholder-facing elements are impervious to liquid and other harsh environmental elements, making it an ideal solution for gas pumps, ATMs, and vending machines. Ultimate system design flexibility makes it ideal for a variety of unattended payment terminals.

    oDynamo withstands a wide range of operational conditions and supports multiple communication protocols, and offers a USB connection, an Ethernet connection, and a serial connection.

    Stability and Reliability

    oDynamo is made to work in harsh environmental conditions and delivers reliability of 500 thousand magnetic stripe swipes and 500 thousand chip inserts. The device is designed to be integrated into a solution that provides an enclosure. The device has been tested by an FCC lab for Class B radiated susceptibility and has no special shielding requirements.

    Secure Card Reading

    oDynamo is secured by the MagneSafe™ Security Architecture (MSA), providing immediate encryption of card data using Triple DEA encryption with Derived Unique Key Per Transaction (DUKPT) key management. Additionally, oDynamo provides advanced MagnePrint® Card Authentication, which enables authorizing parties to detect and stop counterfeit card fraud in real-time. The firmware and the encryption keys are securely downloaded to the reader eliminating the chance of tampering.

    The card latch feature allows the card to be securely held within the reader during the entire transaction process, and reduces the possibility of unwanted human intervention during card read operations. Power-fail card latch release and manual override features are available to ensure that a cardholder’s card can be easily retrieved under any conditions.

    • Cardholder-facing elements impervious to Liquid

    • Supports Multiple Protocols

    • Card Seated Sensor

    • ESD Protection: ±4kV contact discharge / ±8kV air discharge

    In this document, oDynamo is referred to as the device. It is designed to be connected to a host, which is a piece of general-purpose electronic equipment which can send commands and data to, and receive data from, the device. Host types include PC computers/laptops, tablets, and smartphones. Generally, the host must have software installed that communicates with the device and is capable of processing transactions. The combination of device(s), host(s), software, firmware, configuration settings, physical mounting and environment, user experience, and documentation is referred to as the solution. During a transaction, the host and its software interact with the operator, such as a cashier or bank teller, while the device interacts with the cardholder.

    A smooth deployment of a solution that integrates oDynamo requires some up-front planning and decision-making:

    • Determine the overall functional requirements and desired user experience of the solution oDynamo will be integrated into.

    • Determine what documentation and training will be required from solution design through testing and field deployment.

    • Determine what type of host oDynamo will connect to, and what connection type it will use. The host can be a computer with a USB port, serial (RS-232) port, or Ethernet port. When planning, include any additional support or devices required by the host and its connection, such as physical locations, mounting, and power connections.

    From device delivery through assembly, shipping, installation, usage, and maintenance, the device must not be exposed to conditions outside the ratings in Appendix A Technical Specifications.

    If the device is exposed to cold temperatures, adjust it to warmer temperatures gradually to avoid condensation, which can interfere with the operation of the device or cause permanent damage.

    Upon receiving the device, inspect it according to D998200235 oDynamo Device Inspection procedure included in the box to make sure it originated from an authentic source and has not been tampered with.

    Do not drop or shake the device.

    The device should be transported/stored inside an anti-static bag at all times.

    Before removing the device from the package, remove any static charge from your body by touching an earth-grounded metal surface.

    Avoid touching the exposed pins on the connectors when handling the device.

    For information about ongoing maintenance of the device, such as cleaning, see section 6 Maintenance.

    OEM Components

    This page provides documentation for MagTek OEM components, including mechanical drawings, developer guides, and setup instructions to help you integrate secure transaction components (secure magnetic read heads, decoder chips, EMV chip modules, USB swipe readers, card guide rails, and shift-out heads) directly into your custom hardware designs for payment terminals, kiosks, and unattended retail and banking applications.

    OEM Components

    Product

    Description

    The first magnetic sensing, media-validating, tamper-resistant security module that reads three tracks of magnetic stripe data, encrypts it inside the head using 3DES and DUKPT, and authenticates cards with MagnePrint technology to help OEMs meet stringent PCI security requirements.

    Installation and Operation Manual

    Copyright © 2006 - 2021 MagTek, Inc. Printed in the United States of America

    INFORMATION IN THIS PUBLICATION IS SUBJECT TO CHANGE WITHOUT NOTICE AND MAY CONTAIN TECHNICAL INACCURACIES OR GRAPHICAL DISCREPANCIES. CHANGES OR IMPROVEMENTS MADE TO THIS PRODUCT WILL BE UPDATED IN THE NEXT PUBLICATION RELEASE. NO PART OF THIS DOCUMENT MAY BE REPRODUCED OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, ELECTRONIC OR MECHANICAL, FOR ANY PURPOSE, WITHOUT THE EXPRESS WRITTEN PERMISSION OF MAGTEK, INC.

    MagTek® is a registered trademark of MagTek, Inc. MagnePrint® is a registered trademark of MagTek, Inc. MagneSafe® is a registered trademark of MagTek, Inc. Magensa™ is a trademark of MagTek, Inc.

    Magnetic Stripe Card Standards

    How to Set Up the MagTek CMS SDK for Java Demo

    MagTek highly recommends using the 32-bit version of Java when using the PCI PED Java applet, regardless of whether you are using a 32-bit or 64-bit version of Windows.

    • Uninstall any existing instances of the 64-bit Java Runtime Environment (JRE) or Java Development Kit (JDK). Leaving them installed can cause runtime failures, as the library may fail to load.

    • Download and install the latest version of the 32-bit Java Development Kit (JDK).

    oDynamo

    This page provides comprehensive documentation for the oDynamo hybrid insertion secure card reader authenticator (SCRA), including programmer's manuals, quick installation guides, EMV configuration tools, compliance documentation, downloadable software, and marketing materials to support integration into unattended OEM solutions.

    feedback@magtek.com
    Support Page >

    Are there any breaks in the sealed plastic enclosure?

    Tripped device

    If there is forced entry, the security switches built into the electronics will be tripped. If they are tripped the sensitive data such as encryption keys and certificates are cleared as part of security measures mandated by PCI, and the oDynamo will be non-responsive with a blank display. Is the device non-responsive?

  • EMVCo ESD Protection ±12kV air discharge

  • Card Latch

  • Anti-Tamper Security Features

  • Secure Download and Authentication of Firmware and of Encryption Keys

  • Determine what software will be installed on the host and how it will be configured. Software can include operating system, transaction processing software, security software, and so on. Include any additional support required by the software, such as network connections.

  • Determine how oDynamo should be configured, and specify that when you order devices. MagTek or your reseller can advise. For deep detail about configuration options and how they affect device behavior, see D998200162 ODYNAMO PROGRAMMER'S MANUAL (COMMANDS).

  • Determine how the solution design will integrate oDynamo electrically (see section 2 Electrical Integration for details).

  • Determine how the solution design will integrate oDynamo mechanically (see section 3 Mechanical Integration for details).

  • Develop an installation procedure. Basic device installation steps are provided in section 4 Installation, but installing technicians will need solution-specific materials. For example, technicians may be supported by incorporating a Maintenance Mode into the host software for configuration, updates, and diagnostic tests.

  • Determine how the solution will be tested and, if appropriate, how it will be certified.

  • Determine how the solution will be maintained. See section 6 Maintenance for guidance on maintaining the oDynamo portion of the solution.

  • Determine how the solution will be regularly inspected. MagTek provides D998200235 oDynamo Device Inspection with each device, but proper inspection will require additional solution-specific training, instructions, and visual references for inspecting the entire solution for tampering, unauthorized added components such as eavesdropping or skimming devices, and so on.

  • This document describes how to use oDynamo securely. Using the device in any way other than the approved methods described in this document invalidates the PCI PTS approval of the device.

    Proper handling of the device throughout delivery, assembly, shipping, installation, usage, and maintenance is very important. Not following the guidelines in this document could damage the device, render it inoperable, and/or violate the conditions of the warranty.

    The device does not contain any user-serviceable parts. Removing ANY screw, or otherwise attempting to disassemble or modify the device, is very likely to trigger tamper protection and render the device inoperable.

    Engineered Security

    Features

    About oDynamo Components

    About Terminology

    About Solution Planning

    Handling

    MAS-CON® is a registered trademark of Pancon Corporation. AAMVA™ is a trademark of AAMVA.

    MasterCard® is a registered trademark of MasterCard International Incorporated.

    ANSI®, the ANSI logo, and numerous other identifiers containing "ANSI" are registered trademarks, service marks, and accreditation marks of the American National Standards Institute (ANSI).

    ISO® is a registered trademark of the International Organization for Standardization.

    PCI Security Standards Council® is a registered trademark of the PCI Security Standards Council, LLC. EMVCo™ and EMV™ are trademarks of EMVCo and its licensors.

    UL™ and the UL logo are trademarks of UL LLC.

    All other system names and product names are the property of their respective owners.

    Table 0-1 - Revisions

    Rev Number

    Date

    Notes

    10

    July 31, 2017

    Initial release

    20

    Jan 11, 2018

    LIMITED WARRANTY

    MagTek warrants that the products sold pursuant to this Agreement will perform in accordance with MagTek’s published specifications. This warranty shall be provided only for a period of one year from the date of the shipment of the product from MagTek (the “Warranty Period”). This warranty shall apply only to the “Buyer” (the original purchaser, unless that entity resells the product as authorized by MagTek, in which event this warranty shall apply only to the first repurchaser).

    During the Warranty Period, should this product fail to conform to MagTek’s specifications, MagTek will, at its option, repair or replace this product at no additional charge except as set forth below. Repair parts and replacement products will be furnished on an exchange basis and will be either reconditioned or new. All replaced parts and products become the property of MagTek. This limited warranty does not include service to repair damage to the product resulting from accident, disaster, unreasonable use, misuse, abuse, negligence, or modification of the product not authorized by MagTek. MagTek reserves the right to examine the alleged defective goods to determine whether the warranty is applicable.

    Without limiting the generality of the foregoing, MagTek specifically disclaims any liability or warranty for goods resold in other than MagTek’s original packages, and for goods modified, altered, or treated without authorization by MagTek.

    Service may be obtained by delivering the product during the warranty period to MagTek (1710 Apollo Court, Seal Beach, CA 90740). If this product is delivered by mail or by an equivalent shipping carrier, the customer agrees to insure the product or assume the risk of loss or damage in transit, to prepay shipping charges to the warranty service location, and to use the original shipping container or equivalent. MagTek will return the product, prepaid, via a three (3) day shipping service. A Return Material Authorization (“RMA”) number must accompany all returns. Buyers may obtain an RMA number by contacting MagTek Support Services at (888) 624-8350.

    LIMITATION ON LIABILITY

    EXCEPT AS PROVIDED IN THE SECTIONS RELATING TO MAGTEK’S LIMITED WARRANTY, MAGTEK’S LIABILITY UNDER THIS AGREEMENT IS LIMITED TO THE CONTRACT PRICE OF THIS PRODUCT.

    MAGTEK MAKES NO OTHER WARRANTIES WITH RESPECT TO THE PRODUCT, EXPRESSED OR IMPLIED, EXCEPT AS MAY BE STATED IN THIS AGREEMENT, AND MAGTEK DISCLAIMS ANY IMPLIED WARRANTY, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    MAGTEK SHALL NOT BE LIABLE FOR CONTINGENT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES TO PERSONS OR PROPERTY. MAGTEK FURTHER LIMITS ITS LIABILITY OF ANY KIND WITH RESPECT TO THE PRODUCT, INCLUDING NEGLIGENCE ON ITS PART, TO THE CONTRACT PRICE FOR THE GOODS.

    MAGTEK’S SOLE LIABILITY AND BUYER’S EXCLUSIVE REMEDIES ARE STATED IN THIS SECTION AND IN THE SECTION RELATING TO MAGTEK’S LIMITED WARRANTY.

    FCC WARNING STATEMENT

    This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:

    • Reorient or relocate the receiving antenna.

    • Increase the separation between the equipment and receiver.

    • Connect the equipment to an outlet on a different circuit than the receiver.

    • Consult the dealer or an experienced radio/TV technician for help.

    FCC COMPLIANCE STATEMENT

    This device complies with Part 15 of the FCC Rules. Operation of this device is subject to the following two conditions: (1) This device may not cause harmful interference, and (2) This device must accept any interference received, including interference that may cause undesired operation.

    CUR/UR

    This product is recognized per Underwriter Laboratories and Canadian Underwriter Laboratories 1950.

    CE STANDARDS

    Testing for compliance with CE requirements was performed by an independent laboratory. The unit under test was found compliant with standards established for Class B devices.

    UL/CSA

    This product is recognized per Underwriter Laboratories and Canadian Underwriter Laboratories 1950.

    ROHS STATEMENT

    When ordered as RoHS compliant, this product meets the Electrical and Electronic Equipment (EEE) Reduction of Hazardous Substances (RoHS) Directive (EU) 2015/863 amending Annex II to Directive 2011/65/EU. The marking is clearly recognizable, either as written words like “Pb-free,” “lead-free,” or as another clear symbol ( ).

    SOFTWARE LICENSE AGREEMENT

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS IN THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    TERMS, CONDITIONS, AND RESTRICTIONS

    MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products. LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT. Licensee

    may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE THE SOFTWARE. Licensee's sole remedy in

    the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT LICENSEE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO SUPPORT@MAGTEK.COM.

    DEMO SOFTWARE / SAMPLE CODE: Unless otherwise stated, all demo software and sample code are to be used by Licensee for demonstration purposes only and MAY NOT BE incorporated into any production or live environment. The PIN Pad sample implementation is for software PIN Pad test purposes only and is not PCI compliant. To meet PCI compliance in production or live environments, a third-party PCI compliant component (hardware or software-based) must be used.

    REGISTERED TO ISO 9001:2015

    EACH BUYER UNDERSTANDS THAT THIS MAGTEK PRODUCT IS OFFERED AS-IS. MAGTEK MAKES NO OTHER WARRANTY, EXPRESS OR IMPLIED, AND MAGTEK DISCLAIMS ANY WARRANTY OF ANY OTHER KIND, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    IF THIS PRODUCT DOES NOT CONFORM TO MAGTEK’S SPECIFICATIONS, THE SOLE REMEDY SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE. MAGTEK’S LIABILITY, IF ANY, SHALL IN NO EVENT EXCEED THE TOTAL AMOUNT PAID TO MAGTEK UNDER THIS AGREEMENT. IN NO EVENT WILL MAGTEK BE LIABLE TO THE BUYER FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE, SUCH PRODUCT, EVEN IF MAGTEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

    7811-3

    Location of embossed characters

    7811-4

    Location of tracks 1 & 2

    7811-5

    Location of track 3

    7811-6

    Magnetic stripe - high coercivity

    7813

    Financial transaction cards

    Measurement - 0.223"

    Track

    Recording Density (bits per inch)

    Character Configuration (including parity bit)

    Information Content (including control characters)

    0.110"

    1 IATA

    210

    7 bits per character

    76 alphanumeric data characters between Format Code and Discretionary Data.

    SS

    FC

    PAN

    FS

    Name

    FS

    Additional data

    Discretionary Data

    ES

    • SS: Start Sentinel - %

    • FC: Format Code - ^

    • PAN: Primary Account Number (19 digits max.)

    • FS: Field Separator

    • NAME: Name (26 alphanumeric characters max.)

    • ADDITIONAL DATA: Number of characters:

      • Expiration Date (YYMM) - 4

      • Service Code - 3

    • DISCRETIONARY DATA: Number of characters:

      • PVKI - PIN Verification Key Number

      • PVV or Offset - PIN Verification Value

    • ES: End Sentinel - ?

    • LRC: Logitudinal Redundancy Check character

    37 data characters between PAN and Discretionary Data.

    SS

    PAN

    FS

    Additional data

    Discretionary Data

    ES

    LRC

    • SS: Start Sentinel - Hex B - ;

    • PAN: Primary Account Number (19 digits max.)

    • FS: Field Separator - Hex D - =

    • ADDITIONAL DATA: Number of characters:

      • Expiration Date (YYMM) - 4

      • Service Code - 3

    • DISCRETIONARY DATA: Number of characters:

      • PVKI - PIN Verification Key Number

      • PVV or Offset - PIN Verification Value

    • ES: End Sentinel - Hex F - ?

    • LRC: Logitudinal Redundancy Check character

    104 numeric data characters between Format Code and Additional Data.

    SS

    FC

    PAN

    FS

    USE AND SECURITY DATA

    Additional data

    ES

    LRC

    • SS: Start Sentinel - Hex B - ;

    • PAN: Primary Account Number (19 digits max.)

    • FS: Field Separator - Hex D - =

    • USE AND SECURITY DATA - Number of characters

      • Country Code (optional) - 3

      • Currency Code - 3

      • Currency Exponent - 1

      • Amount Authorized per Cycle - 4

    • ADDITIONAL DATA: Number of characters:

      • First subsidiary account number (optional)

      • Second subsidiary account number (optional)

    • ES: End Sentinel - Hex F - ?

    • LRC: Logitudinal Redundancy Check character

    • FC: Format Code - (2 digits) (in place of optional field)

    7810

    Physical characteristics of credit card size document

    7811-1

    Embossing

    7811-2

    Magnetic stripe - low coercivity

    Dimensions - Financial Transaction Cards

    ISO

    For copies of specifications contact: American National Standards Institute 11 W. 42nd Street, New York, NY 10036 212-642-4900

    Magnetic Stripe Encoding

    Magnetic Stripe Encoding

    Track 1

    Encoding Key

    Track 2

    Encoding Key

    Some or all of the above Discretionary Data fields may be found with the discretionary data

    Track 3 (ISO 4909)

    Encoding Key

    A Field Separator (FS) must be used if an optional field is not used

    The track formats used in this document are based on ISO Standards, however, other formats may be used. Contact your card issuer for your exact requirements

    If you opted to manually copy the SDK dependencies from a master development workstation to the target workstation where it will be used, follow these steps:
    • On the master workstation, navigate to the root of the SDK \Library\Java.

    • Open the \x86 subfolder and copy all the files to the target workstation’s C:\Windows\System32 folder for x86 systems, or to the target workstation’s C:\Windows\SysWOW64 folder for x64 systems.

  • Connect the device to the workstation using a USB cable. Windows will install the device drivers automatically. Wait for Windows to report the driver installation is complete.

  • Launch a Windows command prompt as an Administrator.

  • cd to the root of the folders where the SDK is installed.

  • Type runsample.bat and press Enter to launch the Java Demo software.

  • MagTek highly recommends using the 32-bit version of Java if you intend to use the Java applet, regardless of whether you are using a 32-bit or 64-bit version of Windows.

    • Uninstall any existing instances of the 32-bit Java Runtime Environment (JRE) or Java Development Kit (JDK). Leaving them installed can cause runtime failures, as the library may fail to load.

    • Download and install the latest version of the 64-bit Java Development Kit (JDK).

    • If you opted to manually copy the SDK dependencies from a master development workstation to the target workstation where it will be used, follow these steps:

      • On the master workstation, navigate to the root of the SDK \Library\Java

      • Open the x86 subfolder and copy all the files to the target workstation’s C:\Windows\System32 folder or to the target workstation’s C:\Windows\SysWOW64 folder for x64 systems.

    • Connect the device to the workstation using a USB cable. Windows will install the device drivers automatically. Wait for Windows to report the driver installation is complete.

    • Launch a Windows command prompt as an Administrator.

    • cd to the root of the folders where the SDK is installed.

    • Type runsample.bat and press Enter to launch the Java Demo software.

    MagTek highly recommends using the 32-bit version of Java when using the Java applet, regardless of whether you are using a 32-bit or 64-bit version of Windows.

    To set up the Java applet using the 32-bit version of Java on either a 32-bit or 64-bit version of Windows, follow these steps:

    • Follow the steps in section How to Set Up the Java Library With the 32-bit JRE/JVM. Having a working JVM, working Java library, working drivers, and working DLLs are prerequisites for using the applet.

    • Verify Java is installed and that the Internet Explorer Java plugin is working correctly by using Oracle’s Java applet test page, usually provided as a link or auto-launch at the end of installation.

    • On the Windows 7 workstation you will use for development, enable Internet Information Services 7 (IIS) as follows:

      • Log in to a Windows 7 workstation using an administrator account.

      • Launch the Windows Control Panel.

      • Select the Programs and Features item to open the Programs and Features page.

      • On the left side of the page, select the Turn Windows features on or off link to launch the Windows Features window.

      • Turn on the checkboxes for Internet Information Services and Internet Information Services Hostable Web Core.

    • Press the OK button to launch a progress window. Wait for Windows to install IIS.

    • Launch a web browser and navigate to //localhost . Verify the IIS default page appears as shown in Figure 2-1.

    Figure 2-1 IIS Default Page

    • If it does not already exist, create a MTPPSCTA folder in C:\inetpub\wwwroot\ . If it does exist, delete its contents.

    • On the workstation where the SDK is installed, navigate to the folder where it is installed.

    • Open the Sample Code\Java Applet\Object\Signed subfolder.

    • Copy the contents of the subfolder to C:\inetpub\wwwroot\MTCMS .

    • Open the Sample Code\Java Applet\Object\x85 subfolder.

    • Copy the contents of the subfolder to C:\inetpub\wwwroot\MTCMS.

    Figure 2-2 - inetpub Structure

    • Connect the device to the workstation using a USB cable. Windows will install the device drivers automatically. Wait for Windows to report the driver installation is complete.

    • Open Internet Explorer as an administrator.

    • If you are using a 64-bit version of Windows with IE11, make sure to launch directly in 32-bit mode using the iexplore.exe found in C:\Program Files (x86). Verify you are running in 32-bit mode using the Help>About menu.

    • If you are running a 64-bit version of Windows with IE10 or higher, choose the Internet options that enable 32-bit mode / disable Protected Mode for the zone you are accessing. Also turn OFF the checkbox for Enhanced Protected Mode in the Internet Options > Advanced tab.

    • If you changed the value of the Enable Enhanced Protected Mode checkbox, restart Windows.

    • Open Windows Task Manager (Ctrl-Alt-Del > Start Task Manager).

    • Open the Processes tab and sort by Image Name.

    • Note the number and location of all iexplore.exe *32 processes.

    • In Internet Explorer, navigate to

    • In the Windows Task Manager Processes tab, find the new process for the Internet Explorer tab you just opened and make sure it is running in 32-bit mode ( iexplore.exe *32 instead of iexplore.exe.

    • Close the Windows Task Manager window.

    • Internet Explorer will display a welcome page and will pop up a Do you want to run this application? window. Press the Run button and the Allow button to run the Java applet.

    • On the welcome page, press the Connect button.

    • Press the Get Info button. The large text box in the browser will display device information.

    • Use the buttons and fields on the welcome page to test the connection to the device.

    • After installation on the workstation is complete, future browser sessions do not require the user to launch Internet Explorer as an administrator to use the applet.

    The Caller-Allowable-Codebase attribute is used to identify the domains from which JavaScript code can make calls to your RIA without security prompts. Set this attribute to the domain that hosts the JavaScript code. If a call is made from JavaScript code that is not located in a domain specified by the Caller-Allowable-Codebaser attribute, the call is blocked. To specify more than one domain, separate the domains by a space, for example:

    The Application-Library-Allowable-Codebase attribute identifies the locations where your signed RIA is expected to be found. This attribute is used to determine what is listed in the Location field for the security prompt that is shown to users when the JAR file for your RIA is in a different location than the JNLP file or HTML page that starts your RIA. If the files are not in the locations identified, the RIA is blocked. Set this attribute to the domains where the JAR file, JNLP file, and HTML page are located. To specify more than one domain, separate the domains by a space, for example:

    For more information regarding the JAR File Manifest Attributes for Security, please visit this website http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/manifest.html

    In order to modify the Manifest file, please follow these steps. You need to do this for: magtek-mtcms-lib.jar.

    • Find installation folder by default, the installation folder is: \Sample Code\Java Applet\Object\Unsigned.

    • Launch the command prompt and extract the META-INF/MANIFEST.MF from the jar file.

    • Open MANIFEST.MF and look for the Caller-Allowable-Codebase and Application-Library-Allowable-Codebase and add your website URL to the list like the example above.

    • Update the manifest to the jar file.

    These instructions provide an overview of obtaining and using Sun Java signing and a digital certificate. Please follow this instruction to sign and verify both MTCMSJavaSample.jar magtek-mtmcms-lib.jar.

    • Make sure your machine has the latest Java JDK installed.

    • Generate a public/private key pair by entering the following command, specifying an alias for your keystore:

    • Generate a certificate signing request (CSR) by entering the following command:

    After prompting you to enter the password for your keystore, keytool will generate a CSR.

    • Save the certificate received from the Certificate provider as Certname.p7b.

    • Import your Digital Certificate by entering the following command:

    In this string, keytool is requested to import the Digital ID “Certname.cer” into the keystore MyCert.

    • Bundle your applet into a Java Application Resource (JAR) file by entering the following command:

    • Sign the files by using jarsigner to sign the JAR file, using the private key you saved in your keystore:

    • Verify the output of your signed JAR file by entering the following command:

    Please visit this website https://docs.oracle.com/javase/tutorial/deployment/jar/signing.html for more information regarding signing JAR files.

    How to Set Up the Java Library With the 32-bit JRE/JVM

    Caller-Allowable-Codebase: *.yahoo.com *.google.com *.magtek.com *
    Application-Library-Allowable-Codebase: *.yahoo.com *.google.com *.magtek.com *
    jar xf magtek-mtcms-lib.jar META-INF/MANIFEST.MF
    jar umf META-INF/MANIFEST.MF magtek-mtcms-lib.jar
    keytool -genkey -keyalg rsa -alias MyCert
    keytool -certreq -alias MyCert
    keytool -import -alias MyCert -file Certname.p7b
    jar cvf C:\MTCMSJavaSample.jar
    jarsigner C:\Magtek-ppscra-applet.jar MyCert 
    jarsigner C:\magtek-mtcms-lib.jar MyCert
    jarsigner -verify -verbose -certs C:\Magtek-ppscra-applet.jar 
    jarsigner -verify -verbose -certs C:\magtek-mtcms-lib.jar

    How to Set Up the Java Library With the 64-bit JRE/JVM

    How to Set Up the Applet With the 32-bit JRE/JVM

    How to Modify Manifest

    How to Sign JAR

    Technical references for developers including the Commands Programmer's Manual, the Microsoft .NET/Java/Applet Programmer's Manual, the MTCMS Demo guide, and the SCRA EMV Flowchart

    Supporting resources such as the EMV Configuration Software Instructions for verifying EMV configuration via USB, the debris clearing tool manual , the device inspection manual for tamper detection and PCI PTS compliance, and marketing brochures including the oDynamo Hybrid Card Reader Brochure.

    This page provides the compliance documentation required to maintain PCI PTS approval for the oDynamo hybrid insertion secure card reader authenticator (SCRA), including the device and package inspection guides for tamper detection and physical security verification.

    Reference Section

    Information Available

    essential software resources for developing with and managing the oDynamo secure card reader, including platform-specific SDKs for integration across Linux, Windows, .NET, and Java, as well as utility programs for device demonstration, remote configuration, and enterprise‑scale firmware and setting updates.

    Reference Section

    Information Available

    User Manuals

    End‑user and integrator documentation including the Installation and Operation Manual for design guidelines, mounting instructions, and host connectivity, along with the MagTek Reader Management System guide for firmware and CAPK updates.

    Documentation

    Downloads & Compliance

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email:

    MagneSafe ASIC

    High-performance, low-cost three-channel magnetic stripe decoder chips that significantly simplify the card-reader-to-micro-controller interface, including the Delta ASIC (proven for three-track reading) and the next-generation Qwantum ASIC with integrated encryption, SPI support, and ultra-low power modes.

    mDynamo Module

    An EMV contact chip card reader module that connects via USB, features two optional auxiliary ports (SPI and UART) to easily add magnetic stripe or contactless/NFC reading, and is built on the MagneSafe Security Architecture for secure chip card transactions.

    OEM USB Swipe Reader

    A compact bidirectional magnetic stripe swipe reader available in USB keyboard emulation or HID format, designed for low‑cost, high‑reliability card reading in payment, membership, loyalty, and identification applications.

    ASICs

    Highly efficient three-channel fully integrated magnetic stripe decoder chips (including the Delta and Qwantum families) that simplify the card-reader-to-micro-controller interface via MagTek's "Shift-Out" protocol while supporting advanced features like integrated encryption, SPI, and USB-C connectivity.

    Rails

    Modular card guide rails that work with MagTek’s IntelliHead product line (including the encrypted MagneSafe™ IntelliHead) to provide a complete card swipe assembly in lengths such as 43mm, 60mm, 70mm, and 90mm for various OEM integration needs.

    Shift Out IntelliHead

    A low-profile magnetic read head with an embedded high-performance multi-channel decoder chip that outputs raw track data using the simple "Shift-Out" protocol (data/strobe), making it ideal for battery-powered or microcontrollers where minimal power consumption is critical.

    For more help

    Need Help?

    For additional support, please contact MagTek Support:

    Technical Support:

    • 📧 Email: support@magtek.com

    • 📞 Phone: 1-562-546-6800 (US)

    • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

    Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation!

    MagneSafe IntelliHead

    Application Group 0x04 - Magnetic Stripe Reader (MSR) Messages

    Command 0x04::0x09 - Read MSR Data

    The host uses this command to arm the device’s MSR to read magnetic stripe data after the device reports an EMV transaction using a chip card has failed. The command is intended to be used to implement fallback when Command 0x07::0x80 - EMV L2 Transaction Status or Notification 0x07::0x8A - EMV L2 Transaction Status report statuses EMV Error - Card Blocked or Empty Candidate List. If the host wishes to fall back to reading MSR data upon receiving those status reports, it must invoke this command while the card is still inserted, and the device will read the magnetic stripe when the cardholder removes the card from the slot, then send its response to the host to return the requested data.

    Although this command is intended to be used after EMV transaction failure, if the host calls it outside the context of an EMV transaction, the command will function the same: The MSR reader will continue to be armed, and the device will return MSR card data in the response upon card removal.

    Table - Message Structure for Command 0x04::0x09 - Read MSR Data

    Notification 0x04::0x11 - MSR Card Data Available

    When a cardholder swipes a magnetic stripe card, the device sends this notification to inform the host that card data is available. After receiving this notification, the host should call Command 0x04::0x12 - Request MSR Card Data to get the data.

    Command 0x04::0x12 - Request MSR Card Data

    The host uses this command to request MSR data after receiving Notification 0x04::0x11 - MSR Card Data Available.

    Quick Installation Guide

    Thank you for purchasing oDynamo Development Kit 21060861. MagTek has designed this kit to help you quickly connect oDynamo to a host and activate it so you can begin testing and development.

    To set up oDynamo with your test host using the contents of the kit, follow these steps:

    • From the Manuals tab of the oDynamo Support page on www.magtek.com, download the latest product documentation. This includes:

      • oDynamo Installation and Operation Manual, which provides an overview of the product and deep detail about integrating it into a solution design.

      • oDynamo Programmer’s Manual (COMMANDS), which provides details about the internal logical workings of the device and about communicating directly (without an SDK) using operating system native communication libraries and the device’s native commands.

    • From the Software tab of the oDynamo Support page, download the latest SDKs that pertain to your chosen development framework, which may include:

      • oDynamo MTCMS .NET SDK for Windows

      • oDynamo MTCMS C++ / Java SDK for Windows

    • In the oDynamo Installation and Operation Manual, become familiar with the device’s major components, shown in the section About oDynamo Components . The device’s four connectors and the General Status LED are of particular importance in setting up the development kit.

    • In the oDynamo Installation and Operation Manual, become familiar with the device’s mount and dismount behaviors, documented in the section About Pre-Activision, Activation, and Re-Activation . After installing the clip-on dismount switch lock included in this kit, it is important to not remove it without already knowing how to re-activate the device.

    • Unpack oDynamo, which is sold separately from the kit.

    • Select the oDynamo connector you will use to communicate with the host (USB, Ethernet, or RS-232), and connect the appropriate cable(s) as follows, depending on connection type:

    • To use the RS-232 and Power Port [J1] to communicate with the host using RS-232:

      • Connect the 9-pin DIN serial data leg of the RS-232 / power cable (1000004111) to the host.

      • Connect the other signal leg of the cable to the device’s RS-232 and Power Port [J1].

    • To use the USB Device Port [J3] to communicate with the host using USB:

      • Connect the USB cable (22350300) to the device’s USB Device Port [J3].

      • Connect the other end of the cable to the host’s USB port.

    • To use the Ethernet Port [J4] to communicate with the host using TCP/IP:

      • Connect the Ethernet cable (71900032) to the device’s Ethernet Port [J4].

      • Connect the other end of the Ethernet cable to a network switch on the same network segment as the host, or appropriate network drop on the LAN.

    • Engage the device’s dismount switches by connecting the clip-on dismount switch lock 1000005104:

    • Connect the power supply (1000004941) to a properly grounded AC socket-outlet.

    • Make sure the power supply LED turns on and that the device’s General Status LED is blinking yellow to show the device is in the Pre-Activated state.

    • oDynamo is now ready for testing and development. See the product documentation and the sample code / demonstrations / documentation in the SDKs to do the following:

    CVV or CVC - Card Verification Value, Card Vakudation Code
    CVV or CVC - Card Verification Value, Card Vakudation Code
  • Amount Remaining this Cycle - 4

  • Cycle Begin (Validity Date) - 4

  • Cycle Length - 2

  • Retry Count - 1

  • PIN Control Parameters (optional) - 6

  • Interchange Controls - 1

  • PAN Service Restriction - 2

  • SAN-1 Service Restriction - 2

  • SAN-2 Service Restriction - 2

  • Expiration Date (optional) - 4

  • Card Sequence Number - 1

  • Card Security Number (optional) - 9

  • Relay marker - 1
  • Cryptographic check digits (optional) - 6

  • Discretionary Data

  • 79 alphanumeric characters

    0.110"

    ABA

    75

    5 bits per character

    40 numeric characters

    0.110"

    THRIFT

    210

    5 bits per character

    107 numeric characters

    LRC

    Orange characters identify control characters

    Orange characters identify control characters

    feedback@magtek.com

    📞 Phone: 1-562-546-6800 (US)

  • 🕐 Hours: Monday-Friday, 5:30 AM - 5:00 PM PST

  • Online Resources:

    • 🌐 Support Portal: developer.magtek.com

    Documentation Feedback:

    Help us improve this documentation! feedback@magtek.com

    Programmer's Manuals
    Other Documents
    Compliance Documentation
    Firmware & Downloads
    support@magtek.com
    Connect the power supply (1000004941) to the power connector on the cable’s Y junction.
    Connect the power-only cable (1000003906) to the device’s RS-232 and Power Port [J1].
  • Connect the other end of the power-only cable to the power supply (1000004941).

  • Connect the power-only cable (1000003906) to the device’s RS-232 and Power Port [J1].
  • Connect the other end of the power-only cable to the power supply (1000004941).

  • Test the connection between the device and the host.

  • Send an Activate Device from command and make sure the device’s General Status LED transitions from Pre-Activated to Ready.

  • Test the device’s card reading capabilities.

  • http://localhost/MTCMS/magtek-mtcms.html.

    Add LED detail to section 5.2; Add section 1.9 and section 7; Completely rewrite section 3; Remove USB Host Port [J2]; Misc. clarifications, corrections, quality improvements.

    21

    May 22, 2018

    Add clarifying details about grounding in section 2.2; Provide detailed current requirement calculations in section 2.5, Misc. clarifications and corrections.

    22

    May 23, 2019

    Table 5-1 clarify dismount and re-mount requires re-activation using a signed command; Add an introduction to section 4 Installation and new subsection about activation to clarify solution design requirements for install / uninstall security features; Misc. clarifications and corrections.

    23

    Mar 23, 2021

    6.1 add information about debris clearing maintenance, reorder maintenance advice in order of importance.

    30

    Aug 26, 2021

    1.8, 3.4, 3.5, 4, 4.1, 5.2, and whole section “About Pre-Activation, Activation, and Re-Activation” remove mention of dismount switches as a security function; 1.2, 3.1, 3.3, Appendix A remove mention of vertical mounting as a supported orientation; Misc. clarifications and corrections.

    31

    Sep 22, 2021

    3.3 clarify horizontal orientation for optimum results; Misc. clarifications and corrections.

    32

    Oct 20, 2021

    Update Software License Agreement, RoHS Statement.

    33

    June 6, 2022

    Change EMV Contact chip insertions to 500K from 200K.

    PbFreeSym

    01

    04

    Application ID Data Object (Tag C1) = 0x04 MSR Messages

    C2

    01

    09

    Command ID Data Object (Tag C2) = 0x09 Read MSR Data

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    If Result Code is OK / Done, this contains magnetic stripe data as documented in Data Object F4 - Magnetic Stripe Reader Card Data, otherwise the response will not include data object C4.

    01

    04

    Application ID Data Object (Tag C1) = 0x04 MSR Messages

    C2

    01

    11

    Command ID Data Object (Tag C2) = 0x11 MSR Card Data Available

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

    0x00 = Other 0x01 = ISO

    0x02 = AAMVA

    0x99 = MSR_OPERATION_ERROR

    Byte 1 Account Data whitelist comparison result (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist)

    0x00 = The card does not match any rule in the Account Data whitelist, device will send data encrypted.

    0x01 = The card matches one or more rules in the Account Data whitelist, device will send data unencrypted.

    01

    04

    Application ID Data Object (Tag C1) = 0x04 MSR Messages

    C2

    01

    12

    Command ID Data Object (Tag C2) = 0x12 Request MSR Card Data

    01

    04

    Application ID Data Object (Tag C1) = 0x04 MSR Messages

    C2

    01

    12

    Command ID Data Object (Tag C2) = 0x12 Request MSR Card Data

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    If Result Code is OK / Done (0x00), this contains magnetic stripe data as documented in Data Object F4 - Magnetic Stripe Reader Card Data, otherwise the response includes a 1-byte error code.

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    C1

    01

    04

    Application ID Data Object (Tag C1) = 0x04 MSR Messages

    C2

    01

    09

    Command ID Data Object (Tag C2) = 0x09 Read MSR Data

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Table - Response to Command 0x04::0x09 - Read MSR Data

    Table - Message Structure for Notification 0x04::0x11 - MSR Card Data Available

    Table - Message Structure for Command 0x04::0x12 - Request MSR Card Data

    Table - Response to Command 0x04::0x12 - Request MSR Card Data

    C1

    C1

    C1

    C1

    MTDevice Class Methods

    After creating an instance of the MTDevice class in your software project, use the methods described in this section to communicate with MagTek CMS device.

    requestDeviceList

    This method initiates request to discover devices that are visible to the host using the specified connection interface. The OnDeviceList event will provide information regarding the available devices once the discovery process is completed.

    public void requestDeviceList(MTConnectionType connectionType)

    Parameters:

    Parameter

    Description

    Return Value: None

    This method sets the connection type of the device..

    Parameters:

    Return Value: None

    This method sets the address of the device.

    Parameters:

    The following table shows the address formats supported by the different connection types:

    Return Value: None

    This method sets the device ID.

    Parameters:

    Return Value: None

    This method opens the connection to the device.

    Parameters: None

    Return Value: None

    This method closes the connection to the device.

    Parameters: None

    Return Value: None

    This method returns whether the device is connected or not.

    Parameters: None

    Return Value:

    Return true if the device is connected. Otherwise, return false.

    This method sends a data string to the device.

    Parameters:

    Return Value:

    • 0 = Success (MTDevice.SEND_SUCCESS)

    • 9 = Error (MTDevice.SEND_ERROR)

    • 15 = Busy (MTDevice.SEND_BUSY)

    This method sends data bytes to the device.

    Parameters:

    Return Value:

    • 0 = Success (MTDevice.SEND_SUCCESS)

    • 9 = Error (MTDevice.SEND_ERROR)

    • 15 = Busy (MTDevice.SEND_BUSY)

    This method sends a MagTek CMS message to the device.

    Parameters:

    Return Value:

    • 0 = Success (MTDevice.SEND_SUCCESS)

    • 9 = Error (MTDevice.SEND_ERROR)

    • 15 = Busy (MTDevice.SEND_BUSY)

    C4

    03

    0x99 = MSR_OPERATION_ERROR

    Byte 2 PAN status (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist)

    0x00 = The card does not match any rule in the PAN whitelist. No PAN is available.

    0x01 = The card matches one or more rules in the PAN whitelist. Full cleartext PAN for PIN block construction is available.

    0x02 = The card matches one or more rules in the PAN whitelist. Partial cleartext PAN for PIN block construction is available.

    0x03 = The card does not match any rule in the PAN whitelist, but an encrypted PAN is available for use with a paired Cryptera EPP.

    0x99 = MSR_OPERATION_ERROR

    IP

    [PORT]

    The TCP port of the device. (Default: 5000)

    [PARITY]

    The parity checking protocol. (Default: NONE).

    Supported Values: NONE,EVEN,ODD,SPACE,MARK

    [STOPBITS]

    The number of stop bits per byte. (Default: 1)

    Supported Values: 1,1.5,2

    [HANDSHAKE]

    The handshaking protocol for serial port transmission of data.

    (Default: NONE)

    Supported Values: NONE,RTS,XONXOFF,RTSXONSOFF

    [STARTINGBYTE]

    The special character used as the starting byte for each message.

    (Default is empty string)

    An empty string indicates no special character is used as the starting byte for each message.

    [ENDINGBYTE]

    The special character used as the ending byte for each message.

    (Default is 0x0A)

    connectionType

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    Parameter

    Description

    connectionType

    MTConnectionType value: MTConnectionType.USB, MTConnectionType.IP, MTConnectionType.Serial

    Parameter

    Description

    deviceAddress

    String value of the address.

    Connection Type

    Address Format Parameter

    Address Format Descroption

    USB

    [PATH]

    The OS specific device path to the USB device. The path is normally retrieved from the Address property of MTDeviceInformation.

    IP

    [IPA]

    Parameter

    Description

    Serial

    PORT=[PORT],

    BAUDRATE=[BAUDRATE],

    DATABITS=[DATABITS],

    PARITY=[PARITY],

    STOPBITS=[STOPBITS],

    HANDSHAKE=[HANDSHAKE],

    STARTINGBYTE=[STARTINGBYTE],

    ENDINGBYTE=[ENDINGBYTE],

    CRCMODE=[CRCMODE]

    Parameter

    Description

    [PORT]

    The OS specific device path to the serial port (i.e. COM4).

    [BAUDRATE]

    The data baud rate . (Default: 9600)

    [DATABITS]

    The data bits per byte. (Default: 8)

    Connection Type

    Address Format

    An empty string indicates no special character is used as the ending byte for each message

    [CRCMODE]

    A value of 0 indicates CRC is disabled, otherwise CRC is enabled.

    (Default: 0)

    Parameter

    Description

    deviceID

    String value of the device ID.

    Parameter

    Description

    dataString

    Data to be sent in hexadecimal string format.

    Parameter

    Description

    dataBytes

    Data to be sent in byte array format.

    Parameter

    Description

    message

    MTCMSMessage to be sent to the device.

    setConnectionType

    setAddress

    setDeviceID

    openDevice

    closeDevice

    isDeviceConnected

    sendDataString

    sendDataBytes

    sendMTCMSMessage

    The IP address of the device in dotted-quad notation (i.e. 192.178.1.123).

    public void setConnectionType(MTConnectionType connectionType)
    public void setAddress(string deviceAddress)
    public void setDeviceID(string deviceID)
    public void openDevice()
    public void closeDevice()
    public bool isDeviceConnected()
    public int sendDataString(string dataString)
    public int sendDataBytes(byte[] dataBytes)
    public int sendMTCMSMessage(MTCMSMessage message)

    EMV Transaction Flow

    Flow Chart

    Sample Flow Code: C#

    // #1
    MTSCRA m_SCRA = new MTSCRA();
    
    // Delegate the MTSCRA Events. m_SCRA.OnDisplayMessageRequest += OnDisplayMessageRequest;
    .
    // Assign parameters. 
    byte timeLimit = 0x3C; 
    byte cardType = 0x07; 
    byte option = 0x00;
    byte[] amount = new 
    byte[] { 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }; 
    byte transactionType = 0x00; // Purchase
    byte[] cashBack = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 
    byte[] currencyCode = new byte[] { 0x08, 0x40 };
    byte reportingOption = 0x02; // All Status Changes
    
    // Start transaction.
    long result = m_SCRA.startTransaction( 
    timeLimit,
    cardType, 
    option, 
    amount,
    transactionType, 
    cashBack, 
    currentCode, 
    reportingOption);

    // #2
    
    protected void OnDisplayMessageRequest(obj sender, byte[] data)
    {
        String message;
    
        // Get the message. 
        if (data != NULL)
        {
            message = System.Text.Encoding.UTF8.GetString(data);
        }
    
    
        // A data size of 0 is an instruction to clear the display. 
        if (data.Length == 0)
        {
            // Clear the display.
            }
    }

    // #3
    
    protected void OnUserSelectionRequest(object sender, byte[] data)
    {
        /* data[0]	– selection type 
        data[1]	– timeout
        data[2..n] – remainder contains zero-terminated string items */
        
    // display/retrieve user selection.
    .
    // set status and selection result. 
    m_SCRA.setUserSelectionResult(status, selection);
    
    }

    // #4
    
    protected void OnARQCReceived(object sender, byte[] data)
    {
        /* data[0..1] – ARQC length
        data[2..n] – remainder contains the ARQC TLV object */
    
        // #4a Forward ARQC to Processor.
    
        /* An application function to forward the ARQC 
            to a Processor for approval. */
        proccesorResponse = sendARQCToProcesor(data);
    
        /* No need to send ARQC Response if transaction option 
            had enabled Quick Chip mode. */
        if (isQuickChipEnabled())
        {
        return;
        }
    
    
        // #4b Set Acquirer Response.
    
        // An application function to build Acquirer Response. 
        byte[] response = buildAcquirerResponse(processorResponse);
    
        // Set Acquirer Response.
        m_SCRA.setAcquirerResponse(response);
    
    }

    // #5
    
    protected void OnDisplayMessageRequest(obj sender, byte[] data)
    {
        String message;
        
        // Get the message. 
        if (data != NULL)
        {
        message = System.Text.Encoding.UTF8.GetString(data);
        }
    
        // A data size of 0 is an instruction to clear the display. 
        if (data.Length == 0)
        {
            // Clear the display.
        }
    }

    EMV Tag and CAPK Update Instructions

    REGISTERED TO ISO 9001:2015

    Copyright © 2006 - 2025 MagTek, Inc. Printed in the United States of America

    INFORMATION IN THIS PUBLICATION IS SUBJECT TO CHANGE WITHOUT NOTICE. MAGTEK CANNOT BE HELD LIABLE FOR ANY USE OF THE CONTENTS OF THIS DOCUMENT. ANY CHANGES OR IMPROVEMENTS MADE TO THIS PRODUCT WILL BE INCLUDED IN THE NEXT PUBLICATION RELEASE. IF YOU HAVE QUESTIONS ABOUT SPECIFIC FEATURES AND FUNCTIONS OR WHEN THEY WILL BECOME AVAILABLE, PLEASE CONTACT YOUR MAGTEK REPRESENTATIVE.

    MagTek®, MagnePrint®, and MagneSafe® are registered trademarks of MagTek, Inc. Magensa™ is a trademark of MagTek, Inc.

    DynaPro™ and DynaPro Mini™, are trademarks of MagTek, Inc.

    AAMVA™ is a trademark of AAMVA.

    American Express® and EXPRESSPAY FROM AMERICAN EXPRESS® are registered trademarks of American Express Marketing & Development Corp.

    D-PAYMENT APPLICATION SPECIFICATION® is a registered trademark to Discover Financial Services CORPORATION MasterCard® is a registered trademark and PayPass™ and Tap & Go™ are trademarks of MasterCard International Incorporated. Visa® and Visa payWave® are registered trademarks of Visa International Service Association.

    ANSI®, the ANSI logo, and numerous other identifiers containing "ANSI" are registered trademarks, service marks, and accreditation marks of the American National Standards Institute (ANSI).

    ISO® is a registered trademark of the International Organization for Standardization. UL™ and the UL logo are trademarks of UL LLC.

    PCI Security Standards Council® is a registered trademark of the PCI Security Standards Council, LLC.

    EMV® is a registered trademark in the U.S. and other countries and an unregistered trademark elsewhere. The EMV trademark is owned by EMVCo, LLC. The Contactless Indicator mark, consisting of four graduating arcs, is a trademark owned by and used with permission of EMVCo, LLC.

    The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc. and any use of such marks by MagTek is under license.

    Google Play™ store, Google Wallet™ payment service, and Android™ platform are trademarks of Google Inc.

    Apple Pay®, iPhone®, iPod®, Mac®, and OS X® are registered trademarks of Apple Inc., registered in the U.S. and other countries. iPad™ is a trademark of Apple. Inc. App StoreSM is a service mark of Apple Inc., registered in the U.S. and other countries. IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used by Apple Inc. under license.

    Microsoft®, Windows®, and .NET® are registered trademarks of Microsoft Corporation. All other system names and product names are the property of their respective owners.

    Table 0-1 - Revisions

    Rev Number

    Date

    Notes

    100

    January 30, 2025

    Initial Release

    Sample Flow Code: Android (Java)

    Sample Flow Code: iOS

    // #6
    
    protected void OnTransactionResult(obj sender, byte[] data)
    {
        /* data[0]	– Signature Required 
        data[1..2] – Batch Data length
        data[3..n] – remainder contains the Batch Data TLV object */
    
        // Parse the TLV from data[].
        .
        // Abstract Approval status from TLV tag “DFDF1A”.
        .
        // Abstract Signature Required status from TLV tag data[0].
        .
    }
    
    // #1
    m_MTSCRA = new MTSCRA(this, m_scraHandler);
    
    // Assign parameters. 
    byte timeLimit = 0x3C; 
    byte cardType = 0x07; 
    byte option = 0x00;
    byte[] amount = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }; 
    byte transactionType = 0x00; // Purchase
    byte[] cashBack = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 
    byte[] currencyCode = new byte[] { 0x08, 0x40 };
    byte reportingOption = 0x02; // All Status Changes
    
    // Start transaction. 
    m_MTSCRA.startTransaction( 
    timeLimit,
    cardType, 
    option, 
    amount,
    transactionType, 
    cashBack, 
    currencyCode, 
    reportingOption);
    
    int result = m_MTSCRA.getResultCode();
    // #2
    
    protected void onDisplayMessageRequest(byte[] data)
    {
        String message;
        
        // Get the message. 
        if (data != NULL)
        {
        message = TLVParser.getTextString(data, 0);
        }
    
        // A data size of 0 is an instruction to clear the UI display. 
        if (data.Length == 0)
        {
            // Clear the display.
        }
    }
    // #3
    
    protected void onUserSelectionRequest(byte[] data)
    {
        /* data[0]	– selection type 
        data[1]	– timeout
        data[2..n] – remainder contains user selection strings delimited by “\0”.
        */
        
        // display/retrieve status and user selection. 
        byte status;
        byte selection;
        .
        .
        // set status and selection result. 
        m_MTSCRA.setUserSelectionResult(status, selection);
    
    }
    // #4
    protected void onARQCReceived(byte[] data)
    {
        /* data[0..1] – ARQC length
        data[2..n] – remainder contains the ARQC TLV object */
    
        // #4a Forward ARQC to Processor.
    
        /* An application function to forward the ARQC 
            to a Processor for approval. */
        proccesorResponse = sendARQCToProcesor(data);
    
        /* No need to send ARQC Response if transaction option had enabled Quick Chip mode. */
        if (isQuickChipEnabled())
        {
        return;
        }
    
    
    
        // #4b Set Acquirer Response.
        // An application function to build Acquirer Response. 
        byte[] response = buildAcquirerResponse(processorResponse);
        // Set Acquirer Response.
         m_MTSCRA.setAcquirerResponse(response);
    
    }
    // #5
    
    protected void onDisplayMessageRequest(byte[] data)
    {
        String message;
    
        // Get the message. 
        if (data != NULL)
        {
            message = TLVParser.getTextString(data, 0);
        }
    
        // A data size of 0 is an instruction to clear the UI display. 
        if (data.Length == 0)
        {
            // Clear the display.
        }
    }
    // #6
    
    protected void onTransactionResult(byte[] data)
    {
        /* data[0]	– Signature Required 
        data[1..2] – Batch Data length
        data[3..n] – remainder contains the Batch Data TLV object */
    
        // Parse the TLV from data.
        .
        // Abstract Approval status from TLV tag “DFDF1A”.
        .
        // Abstract Signature Required status from TLV tag data[0].
        .
    }
    // #1
    self.mtSCRALib = [[MTSCRA new];
    
    // Delegate the MTSCRA Events.
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onDisplayMessageRequest:) name:@" onDisplayMessageRequest" withObject:obj];
    .
    .
    
    // Assign parameters. 
    Byte timeLimit = 0x3C; 
    Byte cardType = 0x07; 
    Byte option = 0x00;
    Byte amount[6] = { 0x00, 0x00, 0x00, 0x00, 0x15, 0x00 }; 
    Byte transactionType = 0x00; // Purchase
    Byte cashBack[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; 
    Byte currencyCode[2] = { 0x08, 0x40 };
    Byte reportingOption = 0x02; // All Status Changes
    
    // Start transaction.
    [self.mtSCRALib startTransaction:timeLimit cardType:cardType 
    option:option amount:amount transactionType:transactionType 
    cashBack:cashBack currencyCode:currencyCode 
    reportingOption:reportingOption];
    // #2
    
    -(void)OnDisplayMessageRequest:(NSData *)data
    {
        // Get the message.
        NSString* message = [HexUtil stringFromHexString:[self 
        getHexString:data]];
    
        // A data size of 0 is an instruction to clear the display. 
        if (message.Length == 0)
        {
            // Clear the display.
        }
    }
    // #3
    -(void)OnUserSelectionRequest:(NSData *)data
    {
        /* data[0]	– selection type 
        data[1]	– timeout
        data[2..n] – remainder contains zero-terminated string items */
    
        // display/retrieve user selection.
        .
        // set status and selection result. 
        [self.mtSCRALib.setUserSelectionResult:(Byte)status
    selection(Byte)userSelection];
    
    }
    // #4
    -(void)OnARQCReceived:(NSData *)data
    {    
        /* data[0..1] – ARQC length
        data[2..n] – remainder contains the ARQC TLV object */
    
        // #4a Forward ARQC to Processor.
    
        /* An application function to forward the ARQC 
        to a Processor for approval. */
        proccesorResponse = sendARQCToProcesor(data);
    
        /* No need to send ARQC Response if transaction option 
        had enabled Quick Chip mode. */
        if (isQuickChipEnabled())
        {
            return;
        }
    
        // #4b Set Acquirer Response.
    
        // An application function to build Acquirer Response. 
        NSData* response = buildAcquirerResponse(processorResponse);
    
        // Set Acquirer Response. 
        [self.mtSCRALib.setAcquirerResponse:(unsigned char *)response
        length:(int)response.length];
    
    }
    // #5
    
    -(void)OnDisplayMessageRequest:(NSData *)data
    {
    
        // Get the message.
        NSString* message = [HexUtil stringFromHexString:[self 
    getHexString:data]];
    
        // A data size of 0 is an instruction to clear the display. 
        if (message.Length == 0)
        {
            // Clear the display.
        }
    }
    // #6
    
    -(void)OnTransactionResult:(NSData *)data
    {
        /* data[0]	– Signature Required 
        data[1..2] – Batch Data length
        data[3..n] – remainder contains the Batch Data TLV object */
    
        // Parse the TLV from data[].
        .
        // Abstract Approval status from TLV tag “DFDF1A”.
        .
        // Abstract Signature Required status from TLV tag data[0].
        .
    }

    Electrical Integration

    Overview

    This document describes how to use oDynamo safely and securely. Using the device in any way other than the approved methods described in this document invalidates the PCI PTS approval of the device.

    Not following the guidelines in this section could damage the device, render it inoperable, and/or violate the conditions of the warranty.

    This section provides information and guidelines for designing the electrical aspects of a solution that incorporates oDynamo. MagTek strongly recommends vetting and testing solution designs before finalizing and deploying them, to make sure the design meets all requirements (e.g., functional, legal, security, certification, safety, and so on).

    When designing the electrical portions of a solution that incorporates oDynamo, consider the following:

    • Review section 1.6 About oDynamo Components for an overall introduction to the device’s physical features and what they are called.

    • Review Appendix A Technical Specifications.

    • See all the subsections below for options and constraints involving cable design, signals, power, and other aspects of electrical integration. To coordinate with the solution’s mechanical design team about cables, see section 3.6 Cabling.

    • Consider additional factors that may affect the electrical aspects of the solution design. See section

    • Review safe handling practices in section 1.9 Handling to make sure the logistical aspects of the solution design meet the device’s handling requirements.

    • Review recommended installation practices in section 4 Installation. The steps provided in that section depend on the solution design team to customize the steps or fill in solution-specific details before distribution to installation technicians.

    • Review section 6 Maintenance. When installed in the solution-specific enclosure, the maintenance procedures may require modifications, or the solution may require additional maintenance not covered in the general guidelines provided here.

    To guard against ground loops and to protect the device against electrostatic discharge (ESD), it is important that solution designs ground the device correctly. MagTek strongly recommends checking whether the host’s communication ports provide earth ground, and whether the cables carry that ground all the way to the corresponding ports on the device’s board. This will help make an informed decision about proper grounding. There are three paths to provide earth ground to the device; MagTek recommends all solution designs bring in earth ground to the device using one and only one of the possible paths:

    • Bring in earth ground through pin 10 of the RS-232 and Power Port [J1]

    • Bring in earth ground through pin 1 and pin 2 of the Alternative Earth Grounding Port [J9]

    • Bring in earth ground from the host through the USB cable’s metal connector shell to the USB Device Port [J3]

    If it is not practical to connect earth ground using only one of the available paths (for example, if the solution uses multiple shielded cables that provide earth ground from the host), then the solution design must ensure that every source of external earth ground is at the same electrical potential, to prevent damaging ground loop currents from occurring. MagTek also recommends using an earth ground isolated power supply (i.e., with the power supply’s negative output not connected to earth ground) like the one shown in Figure 2-1, because a non-isolated supply would connect digital ground to earth ground, defeating the separation of digital ground from earth ground on the device’s PCBs.

    Figure 2-1 - Example Earth Ground Isolated 24V Regulated Power Supply

    In addition, solutions that incorporate devices with a metal bezel must ground the bezel to the same earth ground potential as the point chosen above. This provides an additional path to protect the device from electrostatic discharge during card insertion and provides additional protection for the device’s electronics. MagTek recommends this earth grounding cable comprise two 18AWG stranded wires twisted together to form a Y cable. Figure 2-2 shows a prototype example of a Y cable that could be included in a standard installation kit.

    MagTek recommends using shielded cables to provide noise immunity and to prevent radiated emissions. The device itself has been tested by an FCC lab for Class B radiated susceptibility and has no special shielding requirements. For details, see the FCC information provided at the beginning of this document.

    MagTek also recommends that all communication cabling (i.e., USB, Ethernet, RS-232) should be draped together where possible, and isolated from the earth grounding cable to oDynamo and any other unrelated wiring at the installation site that could potentially couple noise into the device and degrade the low-level MagnePrint head signals.

    The device has no special requirements for power conditioning or signal conditioning.

    oDynamo provides the following connections (see Figure 1-1 - oDynamo Major Components):

    • ·An RS-232 and Power port, which must be connected to a power source and may be connected to an RS-232 host for bidirectional communication. For details, see section 2.5 RS-232 and Power Port.

    • A USB Device port, which can be connected to a USB-capable host for bidirectional communication. For details, see section 2.6 USB Device Port [J3].

    • An Ethernet port, which can be connected to an Ethernet-capable host for bidirectional communication. For details, see section 2.7 Ethernet Port [J4].

    The RS-232 and Power port must be connected to a power source and may be connected to an RS-232 host for bidirectional communication. It is a Pancon MTSS100-10-CB header designed to mate with a Pancon MAS-CON CE100F22-10-CB connector or equivalent. Pinouts and a schematic excerpt are shown in Figure 2-3 and Table 2-1. Pin 1 is located nearest the front bezel, as shown in Figure 2-4.

    Figure 2-3 - oDynamo RS-232 and Power Port J1

    Figure 2-4 - oDynamo J1 Pin 1 Location

    The Vin and Digital Ground (SG) pins must be connected across the terminals of a power supply. Vin is protected by an internal (non-serviceable) 3A fuse, shown in Figure 2-3.

    oDynamo should be powered by a regulated isolated power supply having a fixed output between 9VDC

    ±5% to 24VDC ±5%, with worst-case output ripple voltage not exceeding 100mV RMS. See section 2.2 Grounding / ESD Protection for additional important information about sourcing an appropriate power supply. For optimal performance, solutions using less than 24VDC must configure the device to disable the card latch, because below 24V the latch behavior is not reliable.

    The maximum current draw required from the power supply depends on the selected power supply voltage and the device features used in the solution design. To calculate the maximum required current, use the information in Table 2-2. For example, using a 24V power supply, with card latch function enabled, the maximum total current draw is 417 mA + 170 mA = 587 mA @ 24V.

    MagTek recommends 22AWG wires for all signal and power lines. The connector contacts must have a minimum of 15µ" of selective gold plating over nickel. MagTek also recommends filling the pin 7 hole on the cable connector with a Pancon PK100-D polarizing key or equivalent to guarantee the cable will mate with the device in the correct position and orientation.

    For oDynamo solutions that use the RS-232 interface, MagTek recommends enclosing all wires in a shielded earth-grounded jacket, and a maximum length for the combination RS-232/power cable of 6 feet. See Figure 2-5 for an example of this RS-232 / Power cable, part number 1000004111.

    For oDynamo solutions that do not use RS-232 communication, oDynamo can be powered using a simple power cable using 22AWG wires. See Figure 2-6 for an example power cable, part number 1000003906.

    Programmers should see section 8 Developing Host Software for cross-references to programming tools and documentation for communicating through the port and configuring the device.

    The factory default communication settings for the RS-232 port are shown in Table 2-3. The host must begin communication with those settings, then can use that connection (or the USB port) to reconfigure the port and switch to the new settings. Programmers should see section 8 Developing Host Software for cross-references to programming tools and documentation for communicating through the port and configuring the device.

    The USB Device port J3 can be used to provide bidirectional communication with a USB-capable host. It is a USB 2.0 Type B receptacle designed to mate with a standard USB Type B connector found on the peripheral end of commercially available USB peripheral cables. Pinouts and a schematic excerpt are shown in Figure 2-7.

    Figure 2-7 - Pinouts for oDynamo USB Device Port J3

    Because the device relies exclusively on RS-232 and Power Port [J1] for power, it draws negligible current from the USB Device Port.

    Programmers should see section 8 Developing Host Software for cross-references to programming tools and documentation for communicating through the port.

    The Ethernet Port can be used to provide bidirectional communication with an Ethernet-capable host. It is an RJ45 receptacle designed to mate with a standard RJ45 connector found on commercially available Ethernet cables. Pinouts and a schematic excerpt are shown in Figure 2-7.

    Figure 2-8 - Pinouts for oDynamo Ethernet Port J4

    The RJ45 connector contains integrated magnetics, and supports standard 10/100 speeds. The green LED on the port provides Ethernet Link Status, and the amber LED shows Ethernet Activity.

    MagTek recommends using CAT5 cables for the Ethernet connection: Connecting the device to an Ethernet switch or router requires a “straight” Ethernet cable; connecting the device directly to a host’s Ethernet port requires a crossover Ethernet cable.

    The Alternative Earth Grounding port J9 can be used in solutions that need a connection for attaching external earth ground (see section 2.2 Grounding / ESD Protection). It is a 2-pin TE Connectivity 3-641126-2 header, compatible with a Pancon MAS-CON CE100F22-2-CB connector or equivalent. If the solution uses J9 , both pins should be connected directly to earth ground.

    If the solution design calls for custom cables, use 22 AWG wire or thicker. The contact must have a minimum of 15µ" of selective gold plating over nickel.

    Review any additional requirements from other agencies, such as PCI certification requirements, building codes, and so on, which may introduce additional constraints to the solution design.

    An Alternative Earth Grounding port, which can be used in solutions that need a connection for attaching external earth ground. For details, see section 2.2 Grounding / ESD Protection and section 2.8 Alternative Earth Grounding Port [J9].

    TXD (To host)

    4

    RXD (From host)

    5

    Vin

    6

    Polarizing Key

    7 (no pin present)

    Float

    8

    Digital Ground (SG)

    9

    Optional Earth Ground (see section 2.2)

    10

    =

    Maximum current draw

    12V ±5%

    Do not use card latch

    +

    338 mA

    =

    Maximum current draw

    9V ±5%

    Do not use card latch

    +

    433 mA

    =

    Maximum current draw

    1) Card latch solenoid is energized for 0.5 seconds.

    Start bit

    1 bit

    Data Length

    8 bits (Bit 7: MSB, Bit 0: LSB)

    Parity

    No Parity

    Stop bit

    1 bit

    Transmission Speed (Baud rate)

    9600 Baud

    RS-232 Signal

    Connector Pin

    Digital Ground (SG)

    1

    Float

    2

    Float

    3

    Power Supply Voltage

    Card Latch Enabled?

    Maximum Steady State Current

    Total

    24V ±5%

    No: 0 mA

    Yes: 417 mA1

    +

    Parameter

    Specification

    Transmission Protocol

    Asynchronous

    Communication Method

    Half Duplex

    Flow Control

    None

    Miscellaneous Considerations.

    Grounding / ESD Protection

    Shielding and Conditioning

    About the Connectors

    RS-232 and Power Port [J1]

    Table 2-1 - Connector Pin Specifications for RS-232 Device Cable

    Table 2-2 - oDynamo Maximum Current Draw Calculations

    Table 2-3 - RS-232 Communication Settings Factory Defaults

    USB Device Port [J3]

    Ethernet Port [J4]

    Alternative Earth Grounding Port [J9]

    170 mA

    Programmer's Manual (Commands)

    REGISTERED TO ISO 9001:2015

    MagTek I 1710 Apollo Court I Seal Beach, CA 90740 I Phone: (562) 546-6400 I Technical Support: (888) 624-8350 www.magtek.com

    Copyright © 2006 - 2025 MagTek, Inc. Printed in the United States of America

    INFORMATION IN THIS PUBLICATION IS SUBJECT TO CHANGE WITHOUT NOTICE AND MAY CONTAIN TECHNICAL INACCURACIES OR GRAPHICAL DISCREPANCIES. CHANGES OR IMPROVEMENTS MADE TO THIS PRODUCT WILL BE UPDATED IN THE NEXT PUBLICATION RELEASE. NO PART OF THIS DOCUMENT MAY BE REPRODUCED OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, ELECTRONIC OR MECHANICAL, FOR ANY PURPOSE, WITHOUT THE EXPRESS WRITTEN PERMISSION OF MAGTEK, INC. SOME FEATURES AND FUNCTIONS MAY BE DOCUMENTED, BUT NOT AVAILABLE WITH THE CURRENT RELEASE OF THE PRODUCT. PLEASE CONTACT YOUR MAGTEK REPRESENTATIVE FOR QUESTIONS ABOUT SPECIFIC FEATURES AND FUNCTIONS AND WHEN THEY ARE SCHEDULED TO BECOME AVAILABLE.

    MagTek® is a registered trademark of MagTek, Inc. MagnePrint® is a registered trademark of MagTek, Inc. MagneSafe® is a registered trademark of MagTek, Inc. Magensa™ is a trademark of MagTek, Inc.

    AAMVA™ is a trademark of AAMVA.

    American Express® and EXPRESSPAY FROM AMERICAN EXPRESS® are registered trademarks of American Express Marketing & Development Corp.

    Apple Pay® is a registered trademark to Apple Inc.

    D-PAYMENT APPLICATION SPECIFICATION® is a registered trademark to Discover Financial Services CORPORATION

    MasterCard® is a registered trademark and PayPass™ and Tap & Go™ are trademarks of MasterCard International Incorporated.

    Visa® and Visa payWave® are registered trademarks of Visa International Service Association.

    ANSI®, the ANSI logo, and numerous other identifiers containing "ANSI" are registered trademarks, service marks, and accreditation marks of the American National Standards Institute (ANSI).

    ISO® is a registered trademark of the International Organization for Standardization.

    PCI Security Standards Council® is a registered trademark of the PCI Security Standards Council, LLC. EMVCo™ and EMV™ are trademarks of EMVCo and its licensors.

    UL™ and the UL logo are trademarks of UL LLC.

    Bluetooth® is a registered trademark of Bluetooth SIG.

    iPhone®, iPod®, and Mac® are registered trademarks of Apple Inc., registered in the U.S. and other countries. App StoreSM is a service mark of Apple Inc., registered in the U.S. and other countries. iPad™ is a trademark of Apple, Inc. IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used by Apple Inc. under license.

    CRYPTERA® is a registered trademark of CRYPTERA A/S.

    Microsoft® and Windows® are registered trademarks of Microsoft Corporation.

    All other system names and product names are the property of their respective owners.

    MagTek warrants that the products sold pursuant to this Agreement will perform in accordance with MagTek’s published specifications. This warranty shall be provided only for a period of one year from the date of the shipment of the product from MagTek (the “Warranty Period”). This warranty shall apply only to the “Buyer” (the original purchaser, unless that entity resells the product as authorized by MagTek, in which event this warranty shall apply only to the first repurchaser).

    During the Warranty Period, should this product fail to conform to MagTek’s specifications, MagTek will, at its option, repair or replace this product at no additional charge except as set forth below. Repair parts and replacement products will be furnished on an exchange basis and will be either reconditioned or new. All replaced parts and products become the property of MagTek. This limited warranty does not include service to repair damage to the product resulting from accident, disaster, unreasonable use, misuse, abuse, negligence, or modification of the product not authorized by MagTek. MagTek reserves the right to examine the alleged defective goods to determine whether the warranty is applicable.

    Without limiting the generality of the foregoing, MagTek specifically disclaims any liability or warranty for goods resold in other than MagTek’s original packages, and for goods modified, altered, or treated without authorization by MagTek.

    Service may be obtained by delivering the product during the warranty period to MagTek (1710 Apollo Court, Seal Beach, CA 90740). If this product is delivered by mail or by an equivalent shipping carrier, the customer agrees to insure the product or assume the risk of loss or damage in transit, to prepay shipping charges to the warranty service location, and to use the original shipping container or equivalent. MagTek will return the product, prepaid, via a three (3) day shipping service. A Return Material Authorization (“RMA”) number must accompany all returns. Buyers may obtain an RMA number by contacting Technical Support at (888) 624-8350.

    EACH BUYER UNDERSTANDS THAT THIS MAGTEK PRODUCT IS OFFERED AS IS. MAGTEK MAKES NO OTHER WARRANTY, EXPRESS OR IMPLIED, AND MAGTEK DISCLAIMS ANY WARRANTY OF ANY OTHER KIND, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    IF THIS PRODUCT DOES NOT CONFORM TO MAGTEK’S SPECIFICATIONS, THE SOLE REMEDY SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE. MAGTEK’S LIABILITY, IF ANY, SHALL IN NO EVENT EXCEED THE TOTAL AMOUNT PAID TO MAGTEK UNDER THIS AGREEMENT. IN NO EVENT WILL MAGTEK BE LIABLE TO THE BUYER FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE, SUCH PRODUCT, EVEN IF MAGTEK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR ANY CLAIM BY ANY OTHER PARTY.

    LIMITATION ON LIABILITY

    EXCEPT AS PROVIDED IN THE SECTIONS RELATING TO MAGTEK’S LIMITED WARRANTY, MAGTEK’S LIABILITY UNDER THIS AGREEMENT IS LIMITED TO THE CONTRACT PRICE OF THIS PRODUCT.

    MAGTEK MAKES NO OTHER WARRANTIES WITH RESPECT TO THE PRODUCT, EXPRESSED OR IMPLIED, EXCEPT AS MAY BE STATED IN THIS AGREEMENT, AND MAGTEK DISCLAIMS ANY IMPLIED WARRANTY, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

    MAGTEK SHALL NOT BE LIABLE FOR CONTINGENT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES TO PERSONS OR PROPERTY. MAGTEK FURTHER LIMITS ITS LIABILITY OF ANY KIND WITH RESPECT TO THE PRODUCT, INCLUDING ANY NEGLIGENCE ON ITS PART, TO THE CONTRACT PRICE FOR THE GOODS.

    MAGTEK’S SOLE LIABILITY AND BUYER’S EXCLUSIVE REMEDIES ARE STATED IN THIS SECTION AND IN THE SECTION RELATING TO MAGTEK’S LIMITED WARRANTY.

    This device complies with Part 15 of the FCC Rules. Operation is subject to the following two conditions: (1) This device may not cause harmful interference, and (2) This device must accept any interference received, including interference that may cause undesired operation.

    Note: This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:

    · Reorient or relocate the receiving antenna.

    · Increase the separation between the equipment and receiver.

    · Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.

    · Consult the dealer or an experienced radio/TV technician for help.

    Caution: Any changes or modifications not expressly approved by the party responsible for compliance could void the user’s authority to operate this equipment. RF Exposure: A distance of 20 cm shall be maintained between the antenna and users, and the transmitter may not be co-located with any other transmitter or antenna.

    This product is recognized per Underwriter Laboratories and Canadian Underwriter Laboratories 1950.

    This digital apparatus does not exceed the Class B limits for radio noise from digital apparatus set out in the Radio Interference Regulations of the Canadian Department of Communications.

    Le présent appareil numérique n’émet pas de bruits radioélectriques dépassant les limites applicables aux appareils numériques de la classe B prescrites dans le Réglement sur le brouillage radioélectrique édicté par le ministère des Communications du Canada.

    This Class B digital apparatus complies with Canadian ICES-003.

    Cet appareil numérique de la classe B est conformé à la norme NMB-003 du Canada.

    Testing for compliance with CE requirements was performed by an independent laboratory. The unit under test was found compliant with standards established for Class B devices.

    This product is recognized per UL 60950-1, 2nd Edition, 2011-12-19 (Information Technology Equipment - Safety - Part 1: General Requirements), CSA C22.2 No. 60950-1-07, 2nd Edition, 2011-12 (Information Technology Equipment - Safety - Part 1: General Requirements).

    When ordered as RoHS compliant, this product meets the Electrical and Electronic Equipment (EEE) Reduction of Hazardous Substances (RoHS) Directive (EU) 2015/863 amending Annex II to Directive 2011/65/EU. The marking is clearly recognizable, either as written words like “Pb-free,” “lead-free,” or as another clear symbol ( ).

    IMPORTANT: YOU SHOULD CAREFULLY READ ALL THE TERMS, CONDITIONS AND RESTRICTIONS OF THIS LICENSE AGREEMENT BEFORE INSTALLING THE SOFTWARE PACKAGE. YOUR INSTALLATION OF THE SOFTWARE PACKAGE PRESUMES YOUR ACCEPTANCE OF THE TERMS, CONDITIONS, AND RESTRICTIONS CONTAINED IN THIS AGREEMENT. IF YOU DO NOT AGREE WITH THESE TERMS, CONDITIONS, AND RESTRICTIONS, PROMPTLY RETURN THE SOFTWARE PACKAGE AND ASSOCIATED DOCUMENTATION TO THE ADDRESS IN THIS DOCUMENT, ATTENTION: CUSTOMER SUPPORT.

    TERMS, CONDITIONS, AND RESTRICTIONS

    MagTek, Incorporated (the "Licensor") owns and has the right to distribute the described software and documentation, collectively referred to as the "Software."

    LICENSE: Licensor grants you (the "Licensee") the right to use the Software in conjunction with MagTek products. LICENSEE MAY NOT COPY, MODIFY, OR TRANSFER THE SOFTWARE IN WHOLE OR IN PART EXCEPT AS EXPRESSLY PROVIDED IN THIS AGREEMENT. Licensee

    may not decompile, disassemble, or in any other manner attempt to reverse engineer the Software. Licensee shall not tamper with, bypass, or alter any security features of the software or attempt to do so.

    TRANSFER: Licensee may not transfer the Software or license to the Software to another party without the prior written authorization of the Licensor. If Licensee transfers the Software without authorization, all rights granted under this Agreement are automatically terminated.

    COPYRIGHT: The Software is copyrighted. Licensee may not copy the Software except for archival purposes or to load for execution purposes. All other copies of the Software are in violation of this Agreement.

    TERM: This Agreement is in effect as long as Licensee continues the use of the Software. The Licensor also reserves the right to terminate this Agreement if Licensee fails to comply with any of the terms, conditions, or restrictions contained herein. Should Licensor terminate this Agreement due to Licensee's failure to comply, Licensee agrees to return the Software to Licensor. Receipt of returned Software by the Licensor shall mark the termination.

    LIMITED WARRANTY: Licensor warrants to the Licensee that the disk(s) or other media on which the Software is recorded are free from defects in material or workmanship under normal use.

    THE SOFTWARE IS PROVIDED AS IS. LICENSOR MAKES NO OTHER WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

    Because of the diversity of conditions and hardware under which the Software may be used, Licensor does not warrant that the Software will meet Licensee specifications or that the operation of the Software will be uninterrupted or free of errors.

    IN NO EVENT WILL LICENSOR BE LIABLE FOR ANY DAMAGES, INCLUDING ANY LOST PROFITS, LOST SAVINGS, OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE, OR INABILITY TO USE THE SOFTWARE. Licensee's sole remedy in

    the event of a defect in material or workmanship is expressly limited to replacement of the Software disk(s) if applicable.

    GOVERNING LAW: If any provision of this Agreement is found to be unlawful, void, or unenforceable, that provision shall be removed from consideration under this Agreement and will not affect the enforceability of any of the remaining provisions. This Agreement shall be governed by the laws of the State of California and shall inure to the benefit of MagTek, Incorporated, its successors or assigns.

    ACKNOWLEDGMENT: LICENSEE ACKNOWLEDGES THAT LICENSEE HAS READ THIS AGREEMENT, UNDERSTANDS ALL OF ITS TERMS, CONDITIONS, AND RESTRICTIONS, AND AGREES TO BE BOUND BY THEM. LICENSEE ALSO AGREES THAT THIS AGREEMENT SUPERSEDES ANY AND ALL VERBAL AND WRITTEN COMMUNICATIONS BETWEEN LICENSOR AND LICENSEE OR THEIR ASSIGNS RELATING TO THE SUBJECT MATTER OF THIS AGREEMENT.

    QUESTIONS REGARDING THIS AGREEMENT SHOULD BE ADDRESSED IN WRITING TO MAGTEK, INCORPORATED, ATTENTION: CUSTOMER SUPPORT, AT THE ADDRESS LISTED IN THIS DOCUMENT, OR E-MAILED TO

    DEMO SOFTWARE / SAMPLE CODE: Unless otherwise stated, all demo software and sample code are to be used by Licensee for demonstration purposes only and MAY NOT BE incorporated into any production or live environment. The PIN Pad sample implementation is for software PIN Pad test purposes only and is not PCI compliant. To meet PCI compliance in production or live environments, a third-party PCI compliant component (hardware or software-based) must be used.

    12

    Aug 31, 2017

    Refresh from master rev 12 version 36 draft:

    Add (sections removed in Rev 20); Update key IDs in response of Command 0x02::0x0B - Get Challenge; Remove DF50 Device State from Data Object F1 - Device Status and update Data Object DF51 Device Status; Deprecate Application Group 0x09 and move activation commands to (section removed in Rev 20); Misc. clarifications and corrections

    13

    Jun 14, 2018

    Refresh from master rev 12 release:

    Remove placeholder information about EMV L1, which device doesn’t support; Remove Command 0x08::0x01 - Pre-Activate Device; Remove Command 0x08::0x03 - Re-Activate Device; Complete rewrite of Command 0x02::0x58 - Request Device Certificate; Add Command 0x03::0x70 - Set Chip Card Support; Remove mention of fixed PIN keys, mutual authentication key, login / logout; Remove all reference to being able to read PCI Hardware ID; Clarify MSR and EMV data behavior based on device MSR Whitelist; Add Data Object DFDF0B Primitive - Message Data Information throughout; Misc. clarifications and corrections.

    14

    Aug 6, 2018

    Refresh from master rev 13 release:

    Clarify whitelist and encryption / clear text behavior throughout; Remove MagTek Custom EMV Tags Appendix and roll into complete rewrite of Appendix E; Clarify purpose / usage of Command 0x05::0x01 - Read PAN; Clean up result code list in Result Code Data Object (Tag C3); Clarify Byte 8 of Data Object F1 - Device Status; Add Appendix H Licenses and Copyright Disclosures; Misc. clarifications and corrections

    Rev Number

    Date

    Notes

    10

    May 10, 2017

    Initial release derived from master rev 10 release

    11

    Jul 5, 2017

    Rev Number

    Date

    Notes

    15

    Mar 22, 2019

    Refresh from master rev 15 release:

    Add Notification 0x01::0x10 - Big Block Device Data, clarify response to Command 0x02::0x0E - Get Key / Certificate Information is wrapped in that construct; Add supporting details about Quick Chip function in Command 0x07::0x00 - EMV L2 Start Transaction; Add

    Notification 0x07::0x8A - EMV L2 Transaction Status and clarify status reporting behavior throughout document; Add Command 0x04::0x09 - Read MSR Data; Update Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration and Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration; Update tags 9F40 and DFDF20 in EMV Contact Terminal Settings and Defaults; Update supported languages in Terminal Language Codes; Update Notification 0x07::0x82 - EMV L2 User Selection Request; Document Command 0x07::0x0B - EMV L2 Get Kernel Base Checksum; Add EMV Configuration Security setting, MSR Unmask Service Code setting to (section removed in Rev 20); Add several customer-facing commands in Application Group 0x07 - EMV L2 Contact Messages (Chip Card L2 Mode Only); Misc. clarifications and corrections.

    16

    Sep 3, 2020

    Rev Number

    Date

    Notes

    20

    Nov 11, 2021

    Refresh from master rev 20 release:

    FIRMWARE REVISION C CHANGES:

    Update copyright page; Add Software License Agreement; Delete commands and other information about removal detection feature and activation, including Command 01:53 Activate Device, Command 01:60 Read Activation Log, and change byte 8 Dismount Switch status of Data Object DF51 Device Status to always show Activated; Appendix E.2.2 Table 4-145 increase number of application slots to 32; Make Command 0x00::0x16 - Get Firmware Version, Command 0x00::0x23 - Get Boot Loader Version, and Command 0x07::0x09 - EMV L2 Modify CA Public Key public; Add new Device Signing CSR/certificate options; Add Command 0x07::0x13 - EMV L2 Continue Action and Notification 0x07::0x8C - EMV L2 Continue Notification; Add Enhanced Application Selection behavior to Notification 0x07::0x82 - EMV L2 User Selection Request; Add Command 0x07::0x12

    - Read EMV L2 Configuration Check Values; Migrate EMV transaction flow to stand-alone section 4.7.1; Update RoHS Statement; Throughout, add definitions for MAC calculations; Change Command 0x07::0x00 - EMV L2 Start Transaction Byte 1 definition to Reserved.

    FIRMWARE REVISION D CHANGES:

    Add certified EMV configurations and update configuration identifier descriptions in Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration and Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration; Change terminal and application tags in EMV Contact Settings (Contact Only) to meet EMVCo 4.3j requirements; E.1 clarify number of available slots; For EPP integration, add Appendix G, add encrypted PAN option to Notification 0x04::0x11 - MSR Card Data Available and Command 0x05::0x01 - Read PAN and Notification 0x07::0x88 - EMV L2 Online PIN CVM Request, add Command 0x02::0x0A - EPP Pairing Certificate Exchange and Command 0x02::0x0C - EPP Pairing Load KEK and Command 0x02::0x0D - EPP Pairing Load Derivation Key, add EPP Info ID to response of Command 0x02::0x0E - Get Key / Certificate Information; For offline PIN support, add Command 0x07::0x14 - EMV L2 Offline PIN CVM Result, Notification 0x07::0x8B - EMV L2 Offline PIN CVM Request; Update output data tables in Notification 0x07::0x83 - EMV L2 ARQC Message, ARPC Response from Online Processing (EMV Only), and Transaction Result Message - Batch Data Format (EMV Only); Update and clarify Data Object F4 - Magnetic Stripe Reader Card Data; Add 2.5.1 Primitive Data Types; Misc. clarifications and corrections.

    Rev Number

    Date

    Notes

    200

    August 6, 2025

    Add Tags: DF34, DF35, DF36, DF37, DF38

    DF40, DF41, DF43, DF52,DF53, DF54, DF55, DF56, 9F4D,

    9F6E to Table 4-124 - Message Structure for Notification 0x07::0x8C - EMV L2 Continue Notification

    Add new ID Option 0x04 = Vendor Config ID oDynamo-OLEP to Table 4-99 - Message Structure for Command 0x07::0x10

    - Modify EMV L2 Terminal Capabilities Configuration; Revised description for Application selection Notification 0x07::0x82 - EMV L2 User Selection Request; Clarified that first menu item is index 0 - Command 0x07::0x02 - EMV L2 User Selection Result

    Revisions

    LIMITED WARRANTY

    FCC INFORMATION

    CUR/UR

    CANADIAN DOC STATEMENT

    CE STANDARDS

    UL/CSA

    ROHS STATEMENT

    SOFTWARE LICENSE AGREEMENT

    SUPPORT@MAGTEK.COM.

    Refresh from master rev 11 release:

    Update Table 1-1 - Device Features; Remove Set Factory Defaults command; Add whitelist functionality to Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist; Update values available for (section removed Rev 20); Remove PIN and Clear Text functions from Application Group 0x04 - Magnetic Stripe Reader (MSR) Messages; Add PAN and whitelist info to Notification 0x04::0x11 - MSR Card Data Available and Command 0x05::0x01 - Read PAN; Spec changed from using a connected EPP to providing PAN to an external device, which led to removing Application Group 9 EPP Commands, adding Command 0x05::0x01 - Read PAN; Add Notification 0x07::0x88 - EMV L2 Online PIN CVM Request; Misc. clarifications and corrections.

    Add POS Entry Mode and EMV Fallback tags to Data Object F4 - Magnetic Stripe Reader Card Data; Expand MSR Fallback to have automatic MSR Fallback on EMV failure based on DFDF67; Clarify mention of RSA OAEP is V2.0; Clarify using NULL in place of MAC data when issuing EMV command with MAC disabled; Correct MSR track status in tag F4; Update error code return for Command 0x07::0x06 - EMV L2 Get Contact Terminal Configuration; Update Command 0x03::0x00 - Card Latch Control response to show no C4 tag is being returned; Add Command 0x07::0x0E - EMV L2 Commit Configuration to customer documentation; Misc. clarifications and corrections.

    PbFreeSym

    Application Group 0x02 - Authentication Messages

    Command 0x02::0x0A - EPP Pairing Certificate Exchange

    This command starts the EPP pairing process on oDynamo using the results from the START_EXCHANGE command on the Encrypting PIN Pad (EPP). The host should use the oDynamo response as the parameters for the next EPP command GENERATE_KEK. For details about the pairing flow, see Appendix G How to Pair With a Cryptera Encrypting PIN Pad.

    Table - Message Structure for Command 0x02::0x0A - EPP Pairing Certificate Exchange

    Tag

    Len

    Value(s) / Description

    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:

    Command 0x02::0x0B - Get Challenge

    This command directs the device to send challenge data to the host, which the host can then use to perform a specific sensitive operation / modify a specific type of device setting. Information about how the host should pass the required challenge data to the device is included in the documentation for all commands that use this security mechanism.

    Upon providing the challenge to the host, the device sets an internal 5-minute countdown timer. When the time limit expires, the device will no longer accept the challenge. This binding of the command to a specific time period allows the device to detect and reject commands that have been captured/intercepted at one point in time and replayed later.

    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:

    Command 0x02::0x0C - EPP Pairing Load KEK

    This command is the second step in the EPP pairing process after Command 0x02::0x0A - EPP Pairing Certificate Exchange has completed successfully. This step loads a temporary key from the EPP that will be used during the third step of pairing (Command 0x02::0x0D - EPP Pairing Load Derivation Key). For details about the pairing flow, see Appendix G How to Pair With a Cryptera Encrypting PIN Pad.

    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:

    Command 0x02::0x0D - EPP Pairing Load Derivation Key

    This command is used for the third and final step of the EPP pairing process. It securely loads a key shared with the paired EPP. This key is used to derive keys that protect the PIN and PAN sent to/from the EPP.. For details about the pairing flow, see Appendix G How to Pair With a Cryptera Encrypting PIN Pad.

    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:

    Command 0x02::0x0E - Get Key / Certificate Information

    The host uses this command to get key or certificate information from the device.

    If an error occurs, the device terminates the command and reports 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 by immediately sending two or more instances of Notification 0x01::0x10 - Big Block Device Data, which the host should concatenate, then interpret as follows:

    Command 0x02::0x58 - Request Device Certificates

    The host uses this command to request the Device Certificate, which the host would generally pass to Magensa web services that generate signed byte sequences for remote configuration commands.

    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:

    The host should then wait (up to 90 seconds in some cases) for the device to respond synchronously with the requested data.

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0A EPP Certificate Exchange

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Provide this data as the parameter portion of the EPP GENERATE_KEK command.

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0B Get Challenge

    C4

    02

    Data Field Data Object (Tag C4 or E0) = Sub Operation:

    0xDF71 = MSR Initial Key for DUKPT 0xDF73 = MSR Key Loader Certificate

    0xDF75 = Device Authentication Request signed by MSR Key Loader Certificate 0xDF7B = Configuration signed by MSR Key Loader Certificate

    0xDF7C = Manufacturer Command

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0B Get Challenge

    C3

    01

    00

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

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) = Bytes 0..1 Sub Operation:

    0xDF71 = MSR Initial Key for DUKPT 0xDF73 = MSR Key Loader Certificate

    0xDF75 = Device Authentication Request signed by MSR Key Loader Certificate 0xDF7B = Configuration signed by MSR Key Loader Certificate

    0xDF7C = Manufacturer Command

    Bytes 2..13 Data Block:

    8 bytes device serial number 4 bytes random token

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0C Load KEK

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Use complete response from the EPP GENERATE_KEK command when the response code is OK (first 4 bytes should be 00020000).

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0C Load KEK

    C3

    01

    00

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

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0D Load Derivation Key

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    EPP response to the FETCH_KEY(LINK_KGK) command if the response code was

    OK starting with “B0080B0TX”

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0D Load Derivation Key

    C3

    01

    00

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

    C4

    03

    3 byte EPP Key KCV. This should be compared with the KCV read from the EPP to confirm that the pairing process is complete and correct.

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0E

    Command ID Data Object (Tag C2) = 0x0E Get Key / Certificate Information

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Byte 0 Info ID from Table 4-49

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0E

    Command ID Data Object (Tag C2) = 0x0E Get Key / Certificate Information

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Byte 0 Info ID from Table 4-49

    Byte 1 Key Status If Info ID < 0x80

    0x00 = Empty (default) 0x01 = OK

    0x02 = Exhausted If Info ID = 0x80:

    0x00 to 0x05 = KCV type from Table 4-49

    Byte 2 Data Length corresponding to the selected Info ID and shown in Table 4-49

    0x01,0x02

    2

    20

    KSN

    If no more keys

    0x02

    1

    20

    KSN

    MSR key

    0x04

    1

    calculated (<=59)

    SN & subject’s

    DN**

    If MSR cert exists

    0x07

    1

    Calculated (<=20)

    KCV & EPP SN

    length & EPP SN

    Data and KCV for EPP Paired Key

    0x80

    kcv_type=1

    4

    KCV value

    KCV for MSR key

    0x80

    kcv_type=2

    4

    KCV value

    KCV for AMK (signed by MSR cert)

    0x80

    kcv_type=5

    4

    Hash value

    Device Authentication Token signed by MSR Key Loader Certificate

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    58

    Command ID Data Object (Tag C2) = 0x58 Key Handling or Manufacturer Command

    E0

    02

    Data Field Data Object (Tag C4 or E0) =

    · 0xDF6E = Request Device Certificate, or

    · 0xDF72 = Request Device Signing Certificate

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    58

    Command ID Data Object (Tag C2) = 0x58 Key Handling or Manufacturer Command

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    X.509 Device certificate in DER format

    C0

    01

    01

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

    C1

    01

    02

    Application ID Data Object (Tag C1) = 0x02 Authentication Messages

    C2

    01

    0B

    Command ID Data Object (Tag C2) = 0x0A EPP Certificate Exchange

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Use complete response to the EPP START_EXCHANGE command when the response code indicates OK (first 4 bytes should be 00020000).

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Info ID

    Key Status

    Data Length

    Data

    Description

    0x00

    1

    Label length

    AMK (Acquirer Master Key) label

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Table - Response to Command 0x02::0x0A - EPP Pairing Certificate Exchange

    Table - Message Structure for Command 0x02::0x0B - Get Challenge

    Table - Response to Command 0x02::0x0B - Get Challenge

    Table - Message Structure for Command 0x02::0x0C - EPP Pairing Load KEK

    Table - Response to Command 0x02::0x0C - EPP Pairing Load KEK

    Table - Message Structure for Command 0x02::0x0D - EPP Pairing Load Derivation Key

    Table - Response to Command 0x02::0x0D - EPP Pairing Load Derivation Key

    Table - Message Structure for Command 0x02::0x0E - Get Key / Certificate Information

    Table - Response to Command 0x02::0x0E - Get Key / Certificate Information

    Table - Table of Info IDs and Data

    *: lbllen = auth key’s label length

    **: SN = serial number of cert

    DN = distinguished names of subject or issuer of cert

    Data length varies with SN and DN length; max length is 59

    ***: its corresponding CA cert

    ****: KCV = Key Check Value, where the lowest 6 digits are valid

    Table - Message Structure for Command 0x02::0x58 - Request Device Certificates

    Table - Response to Command 0x02::0x58 - Request Device Certificates

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    If AMK (Acquirer Master Key) exists

    C1

    C1

    Bytes 3.. Data corresponding to the selected Info ID, shown in Table 4-49

    Appendix C Transaction Result Message - Batch Data Format (EMV Only)

    This section gives the format of the data the device uses for Notification 0x07::0x84 - EMV L2 Transaction Result.

    • When the card does not match any rule in the device’s Account Data Whitelist, the TLV data object contains the data defined in Table 4-126.

    • When the card matches one or more rules in the device’s Account Data Whitelist, the TLV data object contains the data defined in Table 4-128.

    Table - EMV Batch Data, Account Data Not In Whitelist

    Application Group 0x01 - General Messages

    Command 0x01::0x02 - Clear Transaction Data

    The host uses this command to direct the device to clear all transaction data, including account data, encrypted PIN block, PAN, and amount, and return to the idle state.

    Table - Message Structure for Command 0x01::0x02 - Clear Transaction Data

    Tag

    Len

    Value(s) / Description

    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:

    Command 0x01::0xFF - Device Reset

    The host uses this command to direct the device to reset.

    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:

    Notification 0x01::0xFF - Device Reset

    The device sends this notification to the host to notify the host that it is about to perform a periodic automatic device reset, which it initiates after 23 hours of continuous operation to fulfill PCI requirements. MagTek recommends the host software pre-empt these automatic resets by initiating resets in advance of the 23 hour schedule, at times that are least disruptive to the solution design.

    Command 0x01::0x04 - Get Device Status

    The host uses this command to request the device status, such as Session State, Device State, and Status.

    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:

    Notification 0x01::0x04 - Send Device Status

    In addition to sending device status in response to Command 0x01::0x04 - Get Device Status, the device will automatically send the same data when the device powers up, restarts, or changes state.

    Command 0x01::0x10 - Send Big Block Command

    The host uses this command to send command messages to the device as a sequence of packets. The host should follow this sequence:

    • In local memory, compose the entire command message as documented by the desired command’s usage table (for example, Command 0x01::0x17 - Update Firmware).

    • Calculate the length of the fully-composed command message. Divide the fully-composed command message into packets that are shorter than the connection type’s maximum packet size.

      • When using the USB connection, the maximum packet size is 0x3F bytes.

    For every packet the host sends, if an error occurs (such as an out of order packet), the device will terminate the command, report the error using an ACK Response containing the result code, and will stop expecting to receive subsequent big block packets. The host should stop sending them. For a full list of error codes, see 2.4.4 Result Code Data Object (Tag C3).

    If no error occurs, the device responds to every packet as follows:

    Notification 0x01::0x10 - Big Block Device Data

    The device uses this notification to send data to the host as a sequence of packets. The host should process this notification as follows:

    • The host may receive this notification completely unsolicited or in response to a command (all commands that operate in this way say so in the command documentation). If the host has sent such a command to the device, it should start a timeout counter and begin listening for incoming notifications.

    • Parse the first incoming notification, which should be identified as Packet 0000, according to Table 4-32 below. Use the value of Total Message Length to allocate buffer space to begin concatenating all subsequent packets, which together form the complete message.

    • Continue receiving packets 0001 through nnnn, parsing them according to Table 4-33 below, concatenating the Packet Data from all notifications in order and adding the length of Packet Data in each packet, until the length of concatenated message data equals the Total Message Length.

    Command 0x01::0x17 - Update Firmware

    The host uses this command to update the device’s firmware. The host should first compose the entire message for this command, then transmit the entire message to the device in packets using Command 0x01::0x10 - Send Big Block Command.

    After the device receives the final packet of this command, the device will validate the firmware image, and if the validation passes, it will commit the image to the selected firmware storage location. In all cases, the device will also send an additional response:

    Although this command works on all connection types, for speed reasons, MagTek recommends using an

    Ethernet or USB connection to upgrade the device’s firmware.

    Notification 0x01::0x40 - Card Detected / Identified / Removed

    The device uses this notification to signal to the host that a cardholder has inserted or removed a card, and to identify the type of card. Upon insertion or removal of a card, the device sends this notification to provide a Card Present Indication (CPI). After the device finishes identifying the type of card, it sends this notification again to provide an ICC Present Indication (IPI). When the CPI indicates a card is present and the IPI reports it is a chip card, the host is free to begin an EMV transaction, or in the case of magnetic stripe cards, to prompt the cardholder to remove the card to swipe on exit.

    Command 0x01::0x50 - Subscribe to Notifications

    The host uses this command to specify which notifications the device should send to it (for example, Notification 0x01::0xFF - Device Reset). By default, the device does not send any notifications to the host.

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    02

    Command ID Data Object (Tag C2) = 0x02 Clear Transaction Data

    C3

    01

    00

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

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    FF

    Command ID Data Object (Tag C2) = 0xFF Device Reset

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    FF

    Command ID Data Object (Tag C2) = 0xFF Device Reset

    C3

    01

    00

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

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    FF

    Command ID Data Object (Tag C2) = 0xFF Device Reset

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    04

    Command ID Data Object (Tag C2) = 0x04 Get Device Status

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    04

    Command ID Data Object (Tag C2) = 0x04 Get Device Status

    C3

    01

    00

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

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Data Object F1 - Device Status

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    04

    Command ID Data Object (Tag C2) = 0x04 Get Device Status

    C3

    01

    00

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

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Data Object F1 - Device Status

    When using the Ethernet connection, the maximum packet size is 0x0400 bytes.

  • When using a serial connection, the maximum packet size is 0x0400 bytes.

  • Send command 0x01::0x10 to the device as “Packet 0.” Packet 0 is short and sets up how much data the device should expect across the whole big block operation. The C4 data object can be of varying length, and its value should be a 2-byte Packet Number equal to 00 00, plus a 2-byte Packet Length, plus Packet Data containing the Total Command Message Length, in bytes, the device should expect to receive when concatenating all subsequent packets (see Table 4-29).

  • Wait to receive a response from the device (see Table 4-31).

  • Continue sending Command 0x01::0x10 to send Packets 1 through n, incrementing the Packet Number by 1 each time, until the host has sent the fully-composed command message. After sending each packet, wait for the device’s response to reduce risk of packets arriving out of order. The C4 data object for packets 1 through n can be of varying length, and its value should be a 2-byte Packet Number that increments with each call to this command, plus a 2-byte Packet Data Length, plus the Packet Data (see Table 4-30).

  • Listen for a final response from the device acknowledging the completed command. This means after sending the final packet, the host should expect to receive two responses: One for the final packet sent with Command 0x01::0x10, and one after the device has finished processing all the uploaded data and responds to the fully-composed command message the host has sent (for example, Command 0x01::0x17 - Update Firmware).

  • 01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number = 00 00

    2-byte Packet Data Length, LSB first

    Packet Data = Total Command Message Length in bytes the device is sending using big block packets, LSB first

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number, LSB first

    2-byte Packet Data Length, LSB first Packet Data, LSB first

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Send Big Block Command Message

    C3

    01

    00

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

    If the complete message is a notification type, the host should parse it according to the notification’s documentation. If it is a response type, the host should parse it according to the corresponding command’s response table.

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Big Block Device Data

    C4

    08

    Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number = 00 00

    2-byte Packet Data Length, LSB first

    4-byte Total Message Length in bytes, LSB first

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Big Block Device Data

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = 2-byte Packet Number, LSB first

    2-byte Packet Data Length, LSB first Packet Data

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    17

    Command ID Data Object (Tag C2) = 0x17 Update Firmware

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Byte 1 Subcommand

    0x01 = Update boot loader 0x02 = Reserved

    0x03 = Update firmware image 0x04 = Reserved

    Bytes 2..n: Firmware image binary data

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    17

    Command ID Data Object (Tag C2) = 0x17 Update Firmware

    C3

    01

    Result Code Data Object (Tag C3): 0x00 = Update successful

    0x01 = Invalid firmware image loaded in buffer 0x02 = Signature error

    0x03 = Build version error 0x09 = Other error

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    40

    Command ID Data Object (Tag C2) = 0x40 Card Inserted/Identified/Removed

    C4

    02

    Data Field Data Object (Tag C4 or E0) = Byte 0: Card Present Indication (CPI)

    · 0x00 = Card was present and has been removed

    · 0x01 = Card was not present and is now present

    Byte 1: Card Type Present Indication (IPI)

    · 0x00 = Card is not a chip card (ICC card)

    · 0x01 = Card is a chip card (ICC card)

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    50

    Command ID Data Object (Tag C2) = 0x50 Subscribe to Notifications

    C4

    Calculated

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

    0x01 = Subscribe 0x02 = Unsubscribe

    Byte 1 Notifications to Subscribe To

    0x00 = Subscribe/unsubscribe to all notifications 0x01 = Subscribe/unsubscribe to specific notifications

    If Notifications to Subscribe To = 0x01:

    Bytes 2..n contain a list of two-byte notification IDs which specify the Application Group and Notification Number of each Notification the device should send to the host. For example, to subscribe to Notification 0x01::0xFF - Device Reset, the host would include 0x010F as two bytes in the list.

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    50

    Command ID Data Object (Tag C2) = 0x50 Subscribe to Notifications

    C3

    01

    Result Code Data Object (Tag C3)

    C0

    01

    01

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

    C1

    01

    01

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    02

    Command ID Data Object (Tag C2) = 0x02 Clear Transaction Data

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Table - Response to Command 0x01::0x02 - Clear Transaction Data

    Table - Message Structure for Command 0x01::0xFF - Device Reset

    Table - Response to Command 0x01::0xFF - Device Reset

    Table - Response to Notification 0x01::0xFF - Device Reset

    Table - Message Structure for Command 0x01::0x04 - Get Device Status

    Table - Response to Command 0x01::0x04 - Get Device Status

    Table - Message Structure for Notification 0x01::0x04 - Send Device Status

    Table - Message Structure for Command 0x01::0x10 - Send Big Block Command (Packet 0 Only)

    Table - Message Structure for Command 0x01::0x10 - Send Big Block Command (Packets 1 through n)

    Table - Response to Command 0x01::0x10 - Send Big Block Command

    Table - Message Structure for Notification 0x01::0x10 - Big Block Device Data (Packet 0 Only)

    Table - Message Structure for Notification 0x01::0x10 - Big Block Device Data (Packets 1 through n)

    Table - Message Structure for Command 0x01::0x17 - Update Firmware

    Table - Response to Command 0x01::0x17 - Update Firmware

    Table - Message Structure for Notification 0x01::0x40 - Card Detected / Identified / Removed

    Table - Message Structure for Command 0x01::0x50 - Subscribe to Notifications

    Table - Response to Command 0x01::0x50 - Subscribe to Notifications

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    /DFDF0B

    03

    Message Data Information Byte 0 Data Type

    · 0x00 = Reserved

    · 0x01 = EMV Contact L2 Data

    Byte 1 Encryption

    · 0x00 = Data is encrypted

    · 0x00 = Data is clear Text

    Byte 2 - Reserved

    B

    R

    /DFDF54

    var

    MAC KSN

    B

    R

    /DFDF55

    01

    MAC Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    R

    /DFDF25

    var

    Device Serial Number (IFD Serial Number)

    B

    R

    /FA

    var

    Container for generic data

    T

    R

    //F0

    var

    Transaction Results

    T

    R

    ///F1

    var

    Container for Status Data

    T

    R

    ////DFDF1 A

    01

    Transaction Status

    · 0x00 = Approved

    · 0x01 = Declined

    · 0x02 = Error

    · 0x10 = Canceled by Host

    · 0x1E = Manual Selection Canceled by Host

    · 0x1F = Mnanual Selection Timeout

    B

    R

    ///F8

    var

    Container for Encrypted Data

    T

    R

    ////DFDF59

    var

    Encrypted Data Primitive

    Decrypt the value of this TLV data object using the algorithm and variant specified in the Encrypted Transaction Data KSN (DFDF56) parameter and the Encrypted Transaction Data Encryption Type (DFDF57) parameter to read its contents. See Table 4-127 for the data structure as it should appear after decryption.

    B

    R

    ////DFDF56

    var

    Encrypted Transaction Data KSN

    B

    R

    ////DFDF57

    01

    Encrypted Transaction Data Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    R

    ////DFDF58

    01

    Number of Padding Bytes

    Number of bytes added to DFDF59 value to force its length to a multiple of 8 bytes.

    B

    R

    ///F7

    var

    Container for Merchant Data

    T

    R

    ////5F25

    03

    Application Effective Date

    N

    O

    ////5F24

    03

    Application Expiration Date

    N

    O

    ////5F2A

    02

    Transaction Currency Code

    N

    R

    ////9F02

    06

    Amount Authorized, numeric

    N

    R

    ////9F03

    06

    Amount Other, numeric

    N

    O

    ////9F06

    var

    Application AID

    B

    O

    ////9F12

    var

    Application Preferred Name

    AN

    O

    ////9F1C

    08

    Teminal ID

    AN

    O

    ////9F39

    01

    POS Entry Mode

    B

    O

    ////9C

    01

    Transaction Type

    B

    O

    ////9F34

    03

    CVM Results

    B

    O

    ////5F57

    01

    Account Type

    B

    O

    O

    ////DFDF4 D

    var

    Masked Track 2 ICC Data

    AN

    O

    R

    /DF4F

    var

    Issuer Script Results

    B

    O

    /DF8120

    05

    Terminal Action Code - Default

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /DF8121

    05

    Terminal Action Code - Denial

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /DF8122

    05

    Terminal Action Code - Online

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /F4

    var

    Container for encrypted MSR data

    See Data Object F4 - Magnetic Stripe Reader Card Data for details

    T

    O

    /F5

    var

    Container for encrypted PIN Data

    T

    O

    //99

    var

    Encrypted PIN Block Data

    B

    O

    //DFDF41

    var

    Encrypted PIN Block KSN

    B

    O

    //DFDF42

    var

    PIN Block Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant xxxx xx10 = MAC Variant

    B

    O

    R

    /DFDF0B

    03

    Message Data Information Byte 0 Data Type

    · 0x00 = Reserved

    · 0x01 = EMV Contact L2 Data

    Byte 1 Encryption

    · 0x00 = Data is encrypted

    · 0x00 = Data is clear Text

    Byte 2 - Reserved

    B

    R

    /DFDF54

    var

    MAC KSN

    B

    R

    /DFDF55

    01

    MAC Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    R

    /DFDF25

    var

    Device Serial Number (IFD Serial Number)

    B

    R

    /FA

    var

    Container for generic data

    T

    R

    //F0

    var

    Transaction Results

    T

    R

    ///F1

    var

    Container for Status Data

    T

    R

    ////DFDF1 A

    01

    Transaction Status

    · 0x00 = Approved

    · 0x01 = Declined

    · 0x02 = Error

    · 0x10 = Canceled by Host

    · 0x1E = Manual Selection Canceled by Host

    · 0x1F = Mnanual Selection Timeout

    · 0x21 = Waiting for Card, Canceled by Host

    · 0x22 = Waiting for Card, Timeout

    B

    R

    R

    ////var

    var

    List of Data Objects configured by terminal setting DFDF17 that can reported in the transaction

    ///F3

    var

    Container for Reversal Data

    T

    O

    ////var

    var

    List of Data Objects configured by terminal setting DFDF05 that can reported in the transaction

    ///F7

    var

    Container for Merchant Data

    T

    R

    ////5F25

    03

    Application Effective Date

    N

    O

    ////5F24

    03

    Application Expiration Date

    N

    O

    ////5F2A

    02

    Transaction Currency Code

    N

    R

    ////9F02

    06

    Amount Authorized, numeric

    N

    R

    ////9F03

    06

    Amount Other, numeric

    N

    O

    ////9F06

    var

    Application AID

    B

    O

    ////9F12

    var

    Application Preferred Name

    AN

    O

    ////9F1C

    08

    Teminal ID

    AN

    O

    ////9F39

    01

    POS Entry Mode

    B

    O

    ////9C

    01

    Transaction Type

    B

    O

    ////9F34

    03

    CVM Results

    B

    O

    ////5F57

    01

    Account Type

    B

    O

    ////5F20

    var

    Cardholder Name

    AN

    O

    ////DFDF4 D

    var

    Masked Track 2 ICC Data

    AN

    O

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    F9

    var

    Container for MAC structure and generic data

    T

    R

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    · 0x21 = Waiting for Card, Canceled by Host

    · 0x22 = Waiting for Card, Timeout

    · 0x23 = Canceled by Card Swipe

    · 0xFF = Unknown

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    ////5F20

    var

    Cardholder Name

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    FC

    var

    Decrypted Data Container

    Inside this container, the device inserts all EMV TLV data objects configured by TLV data object DFDF17 in EMV Contact Terminal Settings and Defaults. For definitions of possible values for standard EMV TLV data objects, see EMV 4.3 Book 3. MagTek custom TLV data objects not defined in that specification are defined in the following rows of this table.

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    F9

    var

    Container for MAC structure and generic data

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    ///F2

    var

    Container for Batch Data

    Padding to ensure the length of data, starting with the message length at the very beginning, and ending with any additional padding, is a multiple of 8 bytes. This is a requirement of using the CBC-MAC algorithm.

    Four byte CBC-MAC. Four byte CBC-MAC. To calculate the MAC include the F9 tag, length, and contents, and pad it with zeroes to make overall length a multiple of 8. Use the DUKPT MAC variant of the transaction key (DUKPT MAC variant constant = 0000 0000 0000 FF00 0000 0000 0000 FF00) with the CBC-MAC algorithm, and use the first 4 bytes of the 8.

    Table - EMV Batch Data DFDF59 Decrypted Contents

    Padding to force DFDF59 plus padding to be a multiple of 8 bytes

    Table - EMV Batch Data, Account Data In Whitelist

    Padding to ensure the length of data, starting with the message length at the very beginning, and ending with any additional padding, is a multiple of 8 bytes. This is a requirement of using the CBC-MAC algorithm.

    Four byte CBC-MAC. To calculate the MAC include the F9 tag, length, and contents, and pad it with zeroes to make overall length a multiple of 8. Use the DUKPT MAC variant of the transaction key (DUKPT MAC variant constant = 0000 0000 0000 FF00 0000 0000 0000 FF00) with the CBC-MAC algorithm, and use the first 4 bytes of the 8.

    AN

    T

    T

    T

    · 0x23 = Canceled by Card Swipe

    · 0xFF = Unknown

    Application Group 0x00 - Device Information Messages

    This section documents the full set of messages that can be exchanged between the device and the host.

    Command 0x00:0x10 - Get Product ID

    The host uses this command to get the device’s product ID.

    Table 4-1 - Message Structure for Command 0x00:0x10 - Get Product ID

    Tag

    Len

    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:

    Command 0x00::0x12 - Get Capability String

    The host uses this command to get the device’s Capability String.

    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:

    Command 0x00::0x13 - Get Manufacturer

    The host uses this command to get the device manufacturer.

    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:

    Command 0x00::0x14 - Get Product Name

    The host uses this command to get the device’s product name.

    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:

    Command 0x00::0x15 - Get Secure Tracking Number

    The host uses this command to get the device’s secure tracking number.

    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:

    Command 0x00::0x16 - Get Firmware Version

    The host uses this command to get the device’s firmware version.

    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:

    Command 0x00::0x18 - Get Network Information (Ethernet Only)

    The host uses this command to get information about the device’s network connection.

    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:

    Command 0x00::0x23 - Get Boot Loader Version

    The host uses this command to get the device’s boot loader version.

    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:

    Command 0x00::0x27 - Get CT-L2 Version

    The host uses this command to get the device’s EMV L2 version, if any.

    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:

    Command 0x00::0x28 - Get Serial Number

    The host uses this command to get the device’s serial number.

    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:

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Get Product ID

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Product ID, e.g., 5999

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    12

    Command ID Data Object (Tag C2) = 0x12 Get Capability String

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    12

    Command ID Data Object (Tag C2) = 0x12 Get Capability String

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Null-terminated string similar to

    “V=1,SC=1,SR=1,TR=1,MS2=1,PFK=1,UDE=2,CE=2,CLE=1,DR=1” where each of

    the comma-separated name-value pairs represents a device capability:

    V = Device Version

    SC = Signature Capture Support, 1=Supported, 0=Not Supported SR = SRED, 1=SRED, 0=NON-SRED

    TR = Token Reversal Support, 1=Supported, 0=Not Supported MS2 = MagneSafe 2.0 Support, 1=Supported, 0=Not Supported PFK = PIN Fixed Key Support, 1=Supported, 0=Not Supported

    UDE = User Data Entry Mode, 1=Encrypted Only, 2=Clear Text and Encrypted CE = Contact EMV Level Support, 1=L1, 2=L2

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    13

    Command ID Data Object (Tag C2) = 0x13 Get Manufacturer

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    13

    Command ID Data Object (Tag C2) = 0x13 Get Manufacturer

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Manufacturer, e.g., MagTek, Inc.

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    14

    Command ID Data Object (Tag C2) = 0x14 Get Product Name

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    14

    Command ID Data Object (Tag C2) = 0x14 Get Product Name

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Product Name, e.g., oDynamo

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    15

    Command ID Data Object (Tag C2) = 0x15 Get Secure Tracking Number

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    15

    Command ID Data Object (Tag C2) = 0x15 Get Secure Tracking Number

    C3

    01

    00

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

    C4

    26

    Data Field Data Object (Tag C4 or E0) = Bytes 0..25 Secure Tracking Number

    ASCII string. Example “B55984678901234567890123456”

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    16

    Command ID Data Object (Tag C2) = 0x16 Get Firmware Version

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    16

    Command ID Data Object (Tag C2) = 0x16 Get Firmware Version

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Firmware Version, e.g., 1000004854-B1-PCI

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    18

    Command ID Data Object (Tag C2) = 0x18 Get Network Information

    C4

    01

    Data Field Data Object (Tag C4 or E0) = Type of Information

    0x00 = Request Ethernet MAC Address 0x01 = Request Ethernet IP Address

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    18

    Command ID Data Object (Tag C2) = 0x18 Get Network Informations

    C3

    01

    00

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

    C4

    Calculated

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

    0x00 = Ethernet MAC Address 0x01 = Ethernet IP Address

    Bytes 1..n.Network Information String

    MAC Address in ASCII format, e.g., 112233445566 or IP Address e.g., 111.222.333.444

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    23

    Command ID Data Object (Tag C2) = 0x23 Get Boot Loader Version

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    23

    Command ID Data Object (Tag C2) = 0x23 Get Boot Loader Version

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Boot loader version, e.g., 1000004194-A0-PCI

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    27

    Command ID Data Object (Tag C2) = 0x27 Get CT-L2 Version

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    27

    Command ID Data Object (Tag C2) = 0x27 Get CT-L2 Version

    C3

    01

    00

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

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    ASCII string containing version info. For example “JIBE EMV L2 4.3j Version C”

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    28

    Command ID Data Object (Tag C2) = 0x28 Get Serial Number

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    28

    Command ID Data Object (Tag C2) = 0x28 Get Serial Number

    C3

    01

    00

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

    C4

    10

    Data Field Data Object (Tag C4 or E0) =

    Serial Number is 16 bytes long in ASCII., e.g., “1111000050123456”

    Value(s) / Description

    C0

    01

    01

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

    C1

    01

    00

    Application ID Data Object (Tag C1) = 0x00 Device Information

    C2

    01

    10

    Command ID Data Object (Tag C2) = 0x10 Get Product ID

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Table - Response to Command 0x00:0x10 - Get Product ID

    Table - Message Structure for Command 0x00::0x12 - Get Capability String

    Table - Response to Command 0x00::0x12 - Get Capability String

    Table - Message Structure for Command 0x00::0x13 - Get Manufacturer

    Table - Response to Command 0x00::0x13 - Get Manufacturer

    Table - Message Structure for Command 0x00::0x14 - Get Product Name

    Table - Response to Command 0x00::0x14 - Get Product Name

    Table - Message Structure for Command 0x00::0x15 - Get Secure Tracking Number

    Table - Response to Command 0x00::0x15 - Get Secure Tracking Number

    Table - Message Structure for Command 0x00::0x16 - Get Firmware Version

    Table - Response to Command 0x00::0x16 - Get Firmware Version

    Table - Message Structure for Command 0x00::0x18 - Get Network Information (Ethernet Only)

    Table - Response to Command 0x00::0x18 - Get Network Information (Ethernet Only)

    Table - Message Structure for Command 0x00::0x23 - Get Boot Loader Version

    Table - Response to Command 0x00::0x23 - Get Boot Loader Version

    Table - Message Structure for Command 0x00::0x27 - Get CT-L2 Version

    Table - Response to Command 0x00::0x27 - Get CT-L2 Version

    Table - Message Structure for Command 0x00::0x28 - Get Serial Number

    Table - Response to Command 0x00::0x28 - Get Serial Number

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    CLE = Contactless EMV Level Support, 0=Not Supported,1=L1, 2=L2 DR = Delayed Response Support, 1=Supported, 0=Not Supported SIGN = Device Signing Certificate support, 1=Supported

    Messages, Commands, Responses, and Notifications

    About Messages, Commands, Responses, and Notifications

    The host and the device communicate with each other by exchanging blocks of data called Messages, which can be either Commands, Responses to commands, or Notifications. For example, the host may send a command to the device to change a configuration setting, and the device may send a response that the command was successful; when a cardholder inserts a card, the device may send a notification to the host that a cardholder has initiated a transaction.

    The device can only service one command at a time, and sends each response within a pre-determined finite amount of time after receiving the command. After sending a command, the host must wait until the device returns a response before sending another command.

    The device sends notifications to the host if the device’s state changes or if an external event occurs, such as a cardholder inserting a card. The device can send a notification at any time, and does not expect a response or any specific action from the host.

    Although the wrappers for messages may be different depending on the connection type the host and device are using to communicate, the message payload format and contents are exactly the same. For example, apart from the wrapper differences defined in section 3 Connection Types, a message sent over an RS-232 connection will be exactly the same as a message sent over a USB-HID connection.

    About Big Block Commands and Notifications

    There are some cases where data transmitted from the host to the device or from the device to the host requires special treatment. For example, some commands require the host or the device to transmit large blocks of data that exceed the maximum packet size of the chosen data transport layer; other commands require transmitted data to be encrypted and/or encoded, fully received, then decrypted and/or decoded as a single piece. For commands, responses, and notifications that require this special treatment, the usage information in this document indicates that the data should be sent as Big Block Data.

    For commands from the host to the device that require big block messages, either because the message exceeds the current connection’s maximum packet size or because the message requires special treatment such as encryption, the host should first compose the full command message in local memory according to the usage table of the desired command, then transmit the message using Command 0x01::0x10 - Send Big Block Command. See that command’s documentation for details.

    The host should always anticipate the device could send responses or notifications that exceed the current connection’s maximum packet size, and that the device will transmit them using multiple instances of Notification 0x01::0x10 - Big Block Device Data. The host must count all instances and concatenate them to form a complete message. See that notification’s documentation for usage details.

    ACK Response

    After receiving a command that does not require the device to return data, the device sends a simple response to the host to acknowledge (“ACK”) the command. The response includes the Message Type Data Object (Tag C0) indicating it is a response, the Application ID Data Object (Tag C1) and the Command ID Data Object (Tag C2) identical to the command the device is acknowledging, and a Result Code Data Object (Tag C3) reporting the results of the command.

    Table 2-1 shows an example of an ACK Response from the device after the host has sent Command 0x01::0x02 - Clear Transaction Data, where the device is reporting “OK / Done.”

    Table 2-2 shows an example of an ACK Response from the device where the host has sent a command using an invalid message format (protocol violation) and the message is “Bad Message Format.”

    Messages exchanged between the host and the device consist of a required header, which consists of three or four specific tag-length-value (TLV) data objects, plus in many cases a fifth top-level TLV data object containing a data payload. Table 2-3 shows the header TLV data objects in the order the host should use when sending messages, and should expect when receiving messages. Details about each of the top-level data objects are provided in the following sections, and every command and notification in section 4 Command Set provides concrete usage tables that show byte-by-byte how the host software should compose or interpret the message.

    The TLV data objects are constructed using the Basic Encoding Rules (BER) for the industry standard format defined in ITU-T X.680|ISO/IEC 8824-1 and ITU-T X.690|ISO/IEC 8825-1. These standards are also the basis of EMV Integrated Circuit Card Specifications for Payment Systems 4.3, Part IV, Annex B Rules for BER-TLV Data Objects, so the latter can serve as a useful point of reference, especially for programmers who are familiar with the operation of chip cards. Summarizing those specifications, each TLV data object follows these basic rules:

    • The Tag portion is a single byte that identifies the TLV data object [such as 0xC0 in the case of

    Message Type Data Object (Tag C0)].

    · The Length portion is calculated as the total length of the Data portion that follows it. Lengths can be either one byte long from 0x00 to 0x7F, or multiple bytes starting with 0x80 or higher, in which case the lower 7 bits of the first byte specify how many subsequent bytes will indicate the length of the Data portion that follows. For example, in the case of Length 8201C3, 0x82 is greater than 0x7F, and the lower 7 bits equal 0x02, so the next 2 bytes 0x01C3 give the total length of the data block, 451 bytes.

    • The Data portion is the actual payload of the TLV data object.

    Message Type Data Object (Tag C0)

    The Message Type TLV data object specifies the message type: Either Command, Response, or Notification. Table 2-4 formally defines the TLV data object.

    For device operations that take a long time or an indefinite amount of time, the host usually sends a command that initiates the operation, and the device returns an ACK Response to indicate it has started the operation. When the operation completes, the device sends a Notification to the host.

    Application ID Data Object (Tag C1)

    The Application ID TLV data object specifies which Application ID the message belongs to. Each functional subsystem of the device has a unique Application ID, and contains a defined message set pertaining to that subsystem. For example, a device might contain an MSR application for its magnetic stripe reader and an EMV L2 Contact application for interacting with contact chip cards. Table 2-5 formally defines the TLV data object.

    Command ID Data Object (Tag C2)

    The Command ID TLV data object has a different meaning for each of the possible values in the

    Message Type Data Object (Tag C0):

    • For Commands, the Command ID defines the operation to be carried out by the device.

    • For Responses, the Command ID refers to the operation that was carried out by the device, and always contains the same value as the Command ID Data Object (Tag C2) from the originating command.

    • For Notifications, the Command ID specifies the event that has occurred in the device.

    Table 2-6 formally defines the TLV data object.

    Result Code Data Object (Tag C3)

    The Result Code TLV data object has different meaning for each of the possible values in the Message Type Data Object (Tag C0):

    • For Commands, the host should not send this data object to the device.

    • For Responses, the result code reports the result of the operation that was carried out by the device.

    • For Notifications, the result code reports the result of the event that has occurred in the device.

    The Table below formally defines the TLV data object.

    Data Field Data Object (Tag C4 or E0)

    If there is additional data associated with the message, it is contained in the Data Field TLV data object. The length of this field is equal to the length of the whole message minus the length of the message header [Message Type Data Object (Tag C0), Application ID Data Object (Tag C1), Command ID Data Object (Tag C2), and Result Code Data Object (Tag C3)].

    For Primitive data, the Data Field data object is identified with Tag C4. C4 is only used when the data portion of the message only contains raw data and will not include any embedded TLV data objects.

    Table 2-8 formally defines the C4 data object.

    For Constructed data, the Data Field data object is identified with Tag E0. E0 is used if the data portion of the message wraps additional TLV data objects. The TLV data objects that can be embedded in the Data Field are detailed in section 2.5 Data Field, or in the documentation in section 4 Command Set for messages that use them.

    The data inside an E0 (Constructed type) Data Field is also encoded using the BER TLV data object rules explained in section 2.4 Message Format. It becomes very important pay careful attention to the length of every data object to encode/decode correctly. Programmers way wish to recursively construct those data objects by “nesting” from the inside out.

    Table 2-9 formally defines the E0 data object.

    Linux Style Date-Time Stamps

    Some commands embed Linux-style date-time stamps in their responses. To decode the time embedded in these commands, use a Linux shell to enter a command sequence similar to this:

    This section specifies the data objects that can be embedded in the Data Field Data Object (Tag C4 or E0) when it contains Constructed data tagged with type E0.

    Primitive Data Types

    Throughout this document, the tables that describe tag-length-value (TLV) data structures use the following primitive data types:

    • A = Alphabetic (string, no numbers).

    • AN = Alphanumeric (string).

    • B = Binary value, which includes bit combinations (“OR” types).

    Data Object F1 - Device Status

    The device uses a data object identified by tag F1 to send the device status:

    Hardware errors will cause the device to not respond to any command, except for device status inquiry.

    Data Object F4 - Magnetic Stripe Reader Card Data

    The device uses TLV Data Object F4 wrapped in Data Object F9 - MACed Message to transmit magnetic stripe data to the host. To find commands, responses, and notifications that use this data object, search this documentation for this section name.

    The parent data object F9 contains additional tags alongside data object F4 that indicate the conditions and events that produced the magnetic stripe data:

    • POS Entry Mode (9F39) is included by the device automatically every time the host calls Command 0x04::0x12 - Request MSR Card Data, and is included in Notification 0x07::0x83 - EMV L2 ARQC Message if the host has configured the device to include it by adding 9F39 to data object list DFDF02 in EMV Contact Terminal Settings and Defaults. It contains one of the following based on the card’s service code:

      • 0x80 = The card data came from a chip card (service code 2xx or 6xx).

      • 0x90 = The card data came from a magnetic stripe card.

    If the card’s PAN does not match any entry in the device’s configured Account Data whitelist (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist), data object F4 contains the tags shown in Table 2-13. If the card is in the device’s configured Account Data whitelist, data object F4 contains the tags shown in Table 2-14.

    TLV data object F8 is an encrypted data object wrapping the encrypted track data and MagnePrint Data nested within data object DFDF59, plus supporting information as clear text in other tags.

    The device encrypts the value inside data object DFDF59 using the current MSR DUKPT working key used in the relevant transaction. The device uses either the PIN variant or data variant of the key, depending on the current MSR Encryption Variant setting (see Command 0x03::0x72 - Get Device Configuration).

    As a requirement for using the DUKPT TDES encryption algorithm, the device pads it so the length of its value is a multiple of 8 bytes. The device uses tag DFDF58 to report how many bytes of tag DFDF59 are padding. DFDF59 contains the following after the host decrypts it:

    The MAC value is calculated based on the padded <F9 TLV for MACed MSR data> (the MACing operation requires MACed data length to be multiple of 8). However, after MACing calculation, the padding bytes should not be included in the F9 TLV. The receiving end is responsible for padding the F9 TLV when verifying the corresponding MAC. The MAC is stored in the DFDF6C TLV. <E0 TLV len> is the total of the <F9 TLV for MACed MSR data> and <DFDF6C TLV for MAC value>.

    Encryption Type data object DFDF51 uses one byte to represent the key scheme, encryption algorithm and variant. Table 2-15 lists the possible values.

    Data Object F8 - Encrypted Data

    Data Object F9 - MACed Message

    The device only uses DFDF6C as the MAC container when it sends this data object in a response to

    Command 0x04::0x12 - Request MSR Card Data.

    To calculate the F9 MAC to authenticate the message, include the F9 tag, length, and contents, and pad it with zeroes to make overall length a multiple of 8. Use the DUKPT MAC variant of the transaction key (DUKPT MAC variant constant = 0000 0000 0000 FF00 0000 0000 0000 FF00) with the CBC-MAC algorithm, and use the first 4 bytes of the 8.

    Data object DFDF0B contains three bytes that indicate the nature of the data included in the FA container within Data Object F9 - MACed Message.

    Byte 0 is data type:

    0x00 = Reserved

    0x01 = EMV Contact L2 Data

    Byte 1 is encryption type 0x00 = Data is Encrypted

    0x01 = Data is Clear Text (account number found in device whitelist)

    Byte 2 is Reserved.

    0x00 = Reserved

    0x01 = Set to this value

    01

    01

    Application ID Data Object (Tag C1) =

    Application Group 0x01 - General Messages

    C2

    01

    02

    Command ID Data Object (Tag C2) =

    Command 0x01::0x02 - Clear Transaction Data

    C3

    01

    00

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

    01

    10

    Application ID Data Object (Tag C1) = 0x01 General Messages

    C2

    01

    10

    Command ID Data Object (Tag C2) =

    Command 0x01::0x10 - Send Big Block Command

    C3

    01

    FF

    Result Code Data Object (Tag C3) = Bad Message Format

    C3

    Result Code Data Object (Tag C3), sometimes abbreviated RC (not always included)

    C4

    Data Field Data Object (Tag C4 or E0), sometimes abbreviated DATA (not always included)

    Byte

    Value

    Definition

    Data

    1

    01

    Command message type

    Data

    1

    02

    Response message type

    Data

    1

    03

    Notification message type

    Byte

    Value

    Definition

    1

    00..08

    Application Group 0x00 - Device Information Messages Application Group 0x01 - General Messages Application Group 0x02 - Authentication Messages

    Application Group 0x03 - Device Configuration Messages Application Group 0x04 - Magnetic Stripe Reader (MSR) Messages

    Application Group 0x05 - PAN Messages

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

    Byte

    Value

    Definition

    Data

    1

    Command ID within specified Application Group

    Byte

    Value

    Definition

    Data

    1 (Result Code)

    00..FF

    0x00 = OK / Done 0x01 = Failure 0x02 = Warning

    0x03 = Cardholder Cancel 0x04 = Timeout

    0x05 = Host Cancel 0x06 = Verify fail

    0x07 = Bad Message Header 0x08 = Bad Application ID 0x09 = Bad Message ID 0x0A = Bad Parameter 0x0B = System State Error

    0x0F = Current Device Status Prohibits Command 0x10 = Command not supported

    0x11 = Requested item not available 0x12 = No card inserted

    0x13 = Wrong card inserted 0x14 = Smart card not accessible

    0x15 = Application already running 0x16 = Requested item expired

    CN = Compressed numeric, as defined by
    EMV 4.3 Book 3
    , section
    Data Element Format Conventions
    .
  • N = Numeric, as defined by EMV 4.3 Book 3, section Data Element Format Conventions.

  • T = TLV Constructed data object (TLV Value contains additional layers of TLV-encoded data the parser should continue to process).

  • UCI

    Error 0 =

    Normal 1 =

    Error

    TRNG

    Error

    0 = Normal

    1 = Error

    Crypto Engine Error

    0 = Normal

    1 = Error

    Byte 1 Reserved

    Battery voltage:

    0 = Normal

    1 = Low, which indicates the device is close to end of life. Voltage can drop off drastically at any time and the device is considered tampered if that occurs.

    Byte 2 Reserved

    Byte 3 Reserved

    Byte 4 Security Status

    Real Time Clock Status Setting

    0 = RTC

    has been set to current time.

    1 = RTC

    has not been set to current time.

    SYSTEM- CLEARED

    Tamper occurred: 0 = Device not tampered 1 = Device tampered

    Tamper activated:

    0 = Activated

    1 = Not activated

    Byte 5 One-Time-

    Programmable (OTP) Memory Status

    MAC

    Address Status:

    0 = MAC

    has been written to OTP

    1 = MAC

    has not been written to OTP

    Serial Number Status:

    0 = SN has been written to OTP

    1 = SN has been NOT written to OTP

    Byte 6 Reserved

    Byte 7 Reserved

    Byte 8 Reserved

    Byte 9 Reserved

    Byte 10 Reserved

    Byte 11 Reserved

    PIN CRL

    MSR

    Keyloader Cert

    PIN

    Keyloader Cert

    Device Cert

    MSR

    Sub CA Cert

    PIN Sub CA Cert

    Device CA

    Cert

    CA

    Unbind Cert

    Byte 1 Device Certificate Status

    Device Signing Cert

    MSR CRL

    Byte 2 Device Key Status

    MSR DUKP T KEY

    Byte 3 Reserved

    MSR Fallback (DFDF53) which contains one of the following based on the card’s service code and the state the device was in at the time it read the card:

    • 0x00 = The host did not start an EMV transaction after the card was inserted. The device is returning MSR data from a magnetic stripe card.

    • 0x01 = The host did not start an EMV transaction after the card was inserted. The device is returning MSR data from a chip card (service code 2xx or 6xx).

    • 0x81 = The host started an EMV transaction using Command 0x07::0x00 - EMV L2 Start Transaction, the device detected a chip card but reported a transaction failure.

      • If EMV application setting DFDF67 is configured to MSR Fallback Not Supported, the device did not perform an MSR fallback operation on its own. The host performed host-driven MSR fallback using Command 0x04::0x09 - Read MSR Data, and the device read the magnetic stripe data during card removal.

      • If EMV application setting DFDF67 is set to MSR Fallback Supported, the device performed an MSR fallback operation automatically, used Notification 0x07::0x82 - EMV L2 User Selection Request to prompt the cardholder to remove the card, and the device read the magnetic stripe data during card removal. In this case:

        • The transaction failure occurred before the GENAC1 phase. If a failure occurs after the GENAC1 phase, the device does not perform automatic MSR fallback.

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

    Message Type Data Object (Tag C0) = Response

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

    Message Type Data Object (Tag C0) = Response

    Tag

    Data Value / Data Object(s)

    C0

    Message Type Data Object (Tag C0), sometimes abbreviated MTYP (always included)

    C1

    Application ID Data Object (Tag C1), sometimes abbreviated APPID (always included)

    C2

    Command ID Data Object (Tag C2), sometimes abbreviated CMDID (always included)

    TAG

    1 Byte

    C0

    Message Type (MTYP) Tag

    LEN

    1 Byte

    01

    For this data object, Length is always 1 byte

    TAG

    1 Byte

    C1

    Application ID (APPID)

    LEN

    1 Byte

    01

    Length is Always 1

    TAG

    1 Byte

    C2

    CMDID

    LEN

    1 Byte

    01

    Length is Always 1

    TAG

    1 Byte

    C3

    Result Code (RC)

    LEN

    1 Byte

    01

    Length is Always 1

    80..FF

    This range is for custom result codes. A custom result code has a unique meaning for a particular application.

    0x80 = Device Error. A device error or tamper has been detected, the Device Certificate is missing or has been changed, or signature is not correct.

    0x81 = Device not Idle

    0x82 = Data Error or Bad Parameter(s). The command contains bad parameters. For example, in a big block command transfer, the parameters in any packet 1 through n don’t match (or don’t follow) the previous data packet’s parameters; it may also indicate a bad CBC- MAC ACKSTS, wrong serial number, or a bad key.

    0x83 = Length Error or OID error. The data size is 0 or is larger than the available buffer size, or a data packet is incomplete, or MagTek device OID of the certificate doesn’t match the predefined OID

    0x8A = Device not Available, Device Status is not OK, Touchscreen is not connected or doesn’t exist, or Mutual Authentication challenge token has timed out (i.e. is not used within 5 minutes)

    0x90 = Certificate or associated CA doesn’t exist. For unbind/rebind/key injection, the associated certificate doesn’t exist

    0x91 = Expired (Certificate/Certificate Revocation List) 0x92 = Invalid (Certificate/Certificate Revocation List/Message)

    0x93 = Revoked (Certificate/Certificate Revocation List) 0x94 = Associated Certificate or Certificate Revocation List doesn’t exist

    0x95 = Certificate exists

    0x96 = Duplicate KSN/Key. The key already exists.

    TAG

    C4

    Primitive tag, for raw data with no encryption

    LEN

    XX

    Length of Data

    Data

    Value (Hex)

    TAG

    E0

    E0 = Constructed tag, meaning Data contains other tags

    LEN

    XX

    Length of Data

    Data

    Value (Hex)

    # Convert the hex RTC value to a decimal number
    # and assign it to ‘RTC_VAL’:
    
    $ RTC_VAL=1502981285
    
    # Run the Linux ‘date’ command with format below:
    $ date +"%F %T %z" -d "1970-01-01 UTC + $RTC_VAL seconds" # Tamper occurred at:
    2017-08-17 07:48:05 -0700

    Tag

    Len

    Value(s) / Description

    F1

    Calculated

    Device Status <DF51><len><val> (see Table 2-11)

    Device Certificate Status <DF52 ><len><val> (see Table 2-12) Reserved <DF53>..<DF5F><len><val>

    Value

    Bit 7

    6

    5

    4

    3

    2

    1

    0

    Value

    Bit 7

    6

    5

    4

    3

    2

    1

    0

    9F39<len><POS Entry Mode> 
    DFDF53<len><MSR Fallback> 
    F4<len>
        DFDF31<len><Masked Track 1 Data> 
        DFDF33<len><Masked Track 2 Data> 
        DFDF35<len><Masked Track 3 Data>
        DFDF36<len><Track 1 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = 
    Empty, 0x03 = PAN Error, 0x04 = Disabled>
        DFDF38<len><Track 2 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = 
    Empty, 0x03 = PAN Error, 0x04 = Disabled>
        DFDF3A<len><Track 3 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = 
    Empty, 0x03 = PAN Error, 0x04 = Disabled>
        DFDF43<len><MagnePrint Status Data>
        DFDF4F<len><Encode type,0x00 = Other, 0x01 = ISO, 0x02 = AAMVA >
    
        F8<len> /* container tag for encryption */ 
            DFDF59<len><encrypted data> 
            DFDF51<len><encryption type> 
            DFDF56<len><KSN>
            DFDF58<len><val> /* # of padding bytes added to DFDF59 
    value to force length to a multiple of 8 bytes */
            DFDF25<len><Device Serial Number>
                    FA <len>
                                    DF41<len><Clear text Data for track 1> 
                                    DF42<len><Clear text Data for track 2> 
                                    DF43<len><Clear text Data for track 3> 
                                    DF44<len><Magneprint Data>
     9F39<len><POS Entry Mode> 
    DFDF53<len><MSR Fallback> 
    F4<len>
                    DFDF31<len><Clear text Data for track 1> 
                    DFDF33<len><Clear text Data for track 2> 
                    DFDF35<len><Clear text Data for track 3>
                    DFDF36<len><Track 1 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = 
    Empty, 0x03 = PAN Error, 0x04 = Disabled>
                    DFDF38<len><Track 2 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = 
    Empty, 0x03 = PAN Error, 0x04 = Disabled>
    DFDF3A<len><Track 3 Status, 0x00 = OK, 0x01 = Data Error, 0x02 = Empty, 0x03 = PAN Error, 0x04 = Disabled>
                    DFDF4F<len><Encode type, 0x00 = Other, 0x01 = ISO, 0x02 = AAMVA >

    Tag

    Description

    DFDF51

    MSR Encryption Type: 1xxx xxxx = DUKPT key xx00 xxxx = TDES

    xx01 xxxx = AES128 xx10 xxxx - AES256 xxxx xx00 = Data variant xxxx xx01 = PIN variant xxxx xx10 = MAC variant

    F8<len> /*container tag for encryption */
        DFDF59<len><val> /* Encrypted Data Primitive; decrypt data to 
    read tags */
        DFDF56<len><val> /* Encrypted Transaction Data KSN */> 
        DFDF57<len><val> /* Encrypted Transaction Data Encryption Type */ 
        DFDF58<len><val> /* # of padding bytes added to DFDF59 value to
    force length to a multiple of 8 bytes */
    F9<len> /* container for MAC structure and generic data */ DFDF0B(Message Data Information Primitive)<len><val> DFDF54(MAC KSN)<len><val>
    DFDF55(MAC Encryption Type)<len><val> DFDF25(IFD Serial Number)<len><val> FA<len>/* container for generic data */
    …
    
    <Padding to make F9 plus padding be a multiple of 8 bytes>
    
    <Four byte CBC-MAC> or DFDF6C<len><MAC>
    

    About Responses

    Table - Example ACK Response “OK / Done”

    Table -Example ACK Response “Bad Message Format”

    Message Format

    Table - Message Format

    Table - Message Type TLV Data Object (Tag C0)

    Table - Application ID TLV Data Object (Tag C1)

    Table - Command ID TLV Data Object (Tag C2)

    Table - Result Code TLV Data Object (Tag C3)

    Table - Primitive Data Field TLV Data Object (Tag C4)

    Table - Constructed Data Field TLV Data Object (Tag E0)

    Data Field Content Objects

    Table - Contents of Data Object F1 Device Status

    Data Object DF51 Device Status

    Table - Contents of Data Object DF51 Device Status

    Data Object DF52 Device Certificate & Key Status

    Table - Contents of Data Object DF52 Device Certificate & Key Status

    Table - Contents of TLV Data Object F9 - MSR Card Data (PAN Does Not Match Account Data Whitelist)

    Table - Contents of TLV Data Object F9 - MSR Card Data (PAN Matches Account Data Whitelist)

    Table - Contents of Encryption Type Data Object DFDF51

    Data Object DFDF0B Primitive - Message Data Information

    C1

    C1

    DATA

    DATA

    DATA

    Value of Data

    Other tags are present in data section

    Byte 0 Hardware

    Byte 0 Device Certificate Status

  • The device returns MSR data in the ARQC data in Notification 0x07::0x83 - EMV L2 ARQC Message in TLV data object F4.

  • If terminal setting DFDF17 specifies F4 should be included in batch data, the device also includes MSR data in the batch data of Notification 0x07::0x84 - EMV L2 Transaction Result.

  • If the card is in the Account Data Whitelist (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist) the device includes F4 in TLV data object 70.

  • If the card is not in the Account Data Whitelist, the device includes F4 in encrypted TLV data object F8.

  • The device returns tags DFDF53 and 9F39 in the ARQC message in TLV data object 70.

  • DATA

    0x17 = Configuration locked, modification prohibited 0x18 = Error state

    0x19 = No encryption keys available 0xFF = Bad Message Format

    Application Group 0x03 - Device Configuration Messages

    The host uses commands in this application to get and set the configuration of the device. Every configuration setting has a command to get the setting and a command to change the setting. When using get commands, the host should not include Data Field Data Object (Tag C4 or E0). The device responds with the current configuration values in Data Field Data Object (Tag C4 or E0).

    Command 0x03::0x00 - Card Latch Control

    The host uses this command to lock or unlock the card latch. The host can choose to lock the card during EMV transactions to limit the possibility of the cardholder prematurely removing the card. The lock can also be enabled while the card is out of the system to block cardholders from inserting a card.

    Table - Message Structure for Command 0x03::0x00 - Card Latch Control

    Tag

    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:

    Command 0x03::0x60 - Set/Get Ethernet Configuration (Ethernet Only)

    The host uses this command and its subcommands to set and get configuration settings for the device’s Ethernet connection.

    To change the device’s Ethernet configuration, the host should follow these steps:

    • Call the command with the Set Ethernet IP Address Mode subcommand to select DHCP or Static.

    • If using Static, call the command with each Set subcommand for all remaining settings. If the host selected DHCP, the device ignores the remaining settings and further Set calls are unnecessary.

    • Call the command again with the Apply Changes subcommand. The device will begin using the new configuration immediately, and the settings will persist through subsequent power cycles and restarts.

    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:

    Command 0x03::0x70 - Set Chip Card Support

    The host uses this command to enable or disable support for chip cards. When disabled, the device will ignore chip cards and will only read magnetic stripe cards. When enabled, the device checks whether an inserted card has an EMV chip, and will try to communicate with the chip and notify the host first, before falling back to reading the magnetic stripe. This changes the value of tag DFDFDF12 in the device configuration (see Command 0x03::0x72 - Get Device Configuration).

    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:

    Command 0x03::0x72 - Get Device Configuration

    The host uses this command to get the device’s configuration. If the host uses the Data Field Data Object (Tag C4 or E0) to specify a single configuration setting to retrieve, the device returns that setting in the format shown in Table 4-59. If the host omits the Data Field Data Object (Tag C4 or E0), the device returns a list of all configuration values as shown in Table 4-60.

    Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist

    The host uses this command to read the device’s PAN Whitelist or Account Data Whitelist, which are loaded securely by the manufacturer and allow the device to relax security for cards that match the criteria specified in the lists.

    The first 6 digits of a card’s Primary Account Number (PAN) are called the Issuer Identification Number (IIN), previously known as bank identification number (BIN). The IIN identifies the institution that issued the card to the cardholder. Before the device transmits certain types of card data to the host, it compares the card’s IIN to the rules stored in the two whitelist tables, and changes the data it sends accordingly:

    • The device’s PAN Whitelist affects the behavior of Command 0x05::0x01 - Read PAN. This whitelist is specifically designed to support solutions that use an external Encrypting PIN Pad (EPP), where the host would typically need an unencrypted PAN to create an encrypted PIN block.

    • The device’s Account Data Whitelist affects the behavior of MSR transactions in Notification 0x04::0x11 - MSR Card Data Available, Command 0x04::0x12 - Request MSR Card Data, and the corresponding Data Object F4 - Magnetic Stripe Reader Card Data.

    • The device’s Account Data Whitelist affects the behavior of EMV transactions in Notification 0x07::0x83 - EMV L2 ARQC Message, Notification 0x07::0x84 - EMV L2 Transaction Result, and the corresponding Transaction Result Message - Batch Data Format (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:

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    00

    Command ID Data Object (Tag C2) = 0x00 Card Latch Control

    C3

    01

    00

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

    To get information about the device’s Ethernet configuration, the host should call this command with one of the Get subcommands, and interpret the device’s response based on which subcommand it selected.

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    60

    Command ID Data Object (Tag C2) = 0x60 Set/Get Ethernet Configuration

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 Subcommand. Set Commands are below 0x80, Gets are 0x80 and above. 0x00 = Apply Changes

    0x01 = Set Ethernet Static IP Address (if Ethernet IP Address Mode is set to Static) 0x02 = Reserved

    0x03 = Set Ethernet IP Address Mode (DHCP vs. Static) 0x04 = Set Ethernet Gateway Address

    0x05 = Set Ethernet Netmask 0x80 = Reserved

    0x81 = Get Ethernet IP Address 0x82 = Get Ethernet MAC Address

    0x83 = Get Ethernet IP Address Mode (DHCP vs. Static) 0x84 = Get Ethernet Gateway Address

    0x85 = Get Ethernet Netmask

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    60

    Command ID Data Object (Tag C2) = 0x60 Set/Get Ethernet Configuration

    C3

    01

    Result Code Data Object (Tag C3) =

    0x00 = OK / Done

    0xFE = Invalid IP Address 0xFD = Invalid Netmask

    0xFC = Invalid Gateway Address 0xFB = Gateway/IP Mismatch

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 Subcommand. Set Commands are below 0x80, Gets are 0x80 and above. 0x00 = Apply Changes

    0x01 = Set Ethernet IP Address (only if Ethernet IP Address Mode is set to Static) 0x02 = Reserved

    0x03 = Set Ethernet IP Address Mode (DHCP vs. Static) 0x04 = Set Ethernet Gateway Address

    0x05 = Set Ethernet Netmask 0x80 = Reserved

    0x81 = Get Ethernet IP Address 0x82 = Get Ethernet MAC Address

    0x83 = Get Ethernet IP Address Mode (DHCP vs. Static) 0x84 = Get Ethernet Gateway Address

    0x85 = Get Ethernet Netmask

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    70

    Command ID Data Object (Tag C2) = 0x70 Set Chip Card Support

    C4

    01

    Data Field Data Object (Tag C4 or E0) = 0x00 = Disable chip card processing

    0x01 = Enable chip card processing

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    0x70

    Command ID Data Object (Tag C2) = 0x70 Set Chip Card Support

    C3

    01

    00

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

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    72

    Command ID Data Object (Tag C2) = 0x72 Get Device Configuration.

    C4

    04

    Data Field Data Object (Tag C4 or E0) =

    DFDFDFXX Tag for the desired setting. See Table 4-61 on page 79 for a list of settings.

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    72

    Command ID Data Object (Tag C2) = 0x72 Get Device Configuration

    C3

    01

    00

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

    C4

    02

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

    0x00 = Requested value not found 0x01 = Requested value found

    Byte 1 Requested configuration value. See Table 4-61.

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    72

    Command ID Data Object (Tag C2) = 0x72 Get Device Configuration

    C3

    01

    00

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

    E0

    var

    Data Field Data Object (Tag C4 or E0) =

    TLV formatted list of all available configuration settings. See Table 4-61.

    DFDFDF14

    1

    MSR nonstandard ISO decode enable:

    · 0x00 = Disable non-standard ISO decoding

    · 0x01 = Enable nonstandard ISO decoding (default)

    Standard ISO encoding is 7-bit ISO encoding on track 1 and 5-bit ISO encoding on tracks 2 and 3. Financial cards use standard ISO encoding.

    Nonstandard ISO encoding is considered any other combination of 7-bit ISO or 5-bit ISO encoding on any track.

    AAMVA encoding is also considered nonstandard ISO encoding because it is encoded as 7-bit ISO on track 1, 5-bit ISO on track 2, and 7-bit ISO on track 3.

    DFDFDF15

    1

    MSR Track 1 Enable / Disable

    · 0x00 = Disable

    · 0x01 = Enable

    DFDFDF16

    1

    MSR Track 2 Enable / Disable

    · 0x00 = Disable

    · 0x01 = Enable

    DFDFDF17

    1

    MSR Track 3 Enable / Disable

    · 0x00 = Disable

    · 0x01 = Enable

    DFDFDF18

    1

    MSR mask character (any printable ASCII character, typically set to “0” or “*”). The device uses this mask character in Data Object F4 - Magnetic Stripe Reader Card Data and in Notification 0x07::0x83 - EMV L2 ARQC Message.

    DFDFDF19

    1

    MSR number of leading unmasked digits (0 to 6)

    DFDFDF1A

    1

    MSR number of trailing unmasked digits (0 to 4)

    DFDFDF1C

    1

    Reserved

    DFDFDF27

    1

    RS-232 CRC setting

    · 0x00 = Do not include CRC

    · 0x01 = Include CRC

    DFDFDF31

    1

    Device Configuration Lock

    · 0x00 = Unlock

    · 0x01 = Lock

    DFDFDF32

    1

    MSR Mask Check Digit Correction

    · 0x00 = Disable

    · 0x01 = Enable (default)

    When enabled, the device masks the PAN with ASCII “0” regardless of the MSR mask character setting, and one mask digit will be modified so the PAN check digit is correct.

    DFDFDF33

    1

    EMV Terminal Capabilities Configuration

    This setting performs exactly the same function as Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration. This version is used for device configuration.

    · 0x00 = ICS Online PIN CVM

    · 0x01 = ICS No PIN CVM

    · 0x02 = ICS Online / Offline PIN CVM

    · 0x03 = ICS ATM

    DFDFDF34

    1

    MSR Unmask Service Code

    · 0x00 = Disable (default)

    · 0x01 = Enable

    When enabled, the device unmasks the Service Code in Track 1 and Track 2 of MSR data returned from Command 0x04::0x09 - Read MSR Data.

    The PAN Whitelist table contains eight rows / entries; each entry follows the format specified in Table 4-62. The Account Data Whitelist table contains

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    80

    Command ID Data Object (Tag C2) = 0x80 Read PAN / Account Data Whitelist

    C4

    01

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

    0x80 = Read PAN Whitelist

    0x81 = Read Account Data Whitelist

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    80

    Command ID Data Object (Tag C2) = 0x80 Read PAN / Account Data Whitelist

    C3

    01

    Result Code Data Object (Tag C3) =

    0x00 = OK / Done

    Len

    Value(s) / Description

    C0

    01

    01

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

    C1

    01

    03

    Application ID Data Object (Tag C1) = 0x03 Device Configuration Messages

    C2

    01

    00

    Command ID Data Object (Tag C2) = 0x00 Card Latch Control

    C4

    01

    Data Field Data Object (Tag C4 or E0) =

    0x00 = Latch (ICC is locked in slot or blocked from entering slot) 0x01 = Unlatch (ICC can freely move in/out of slot)

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    DFDFDF11

    1

    MSR Encryption Variant, used to encrypt MSR data:

    · 0x00 = Data Variant

    · 0x01 = PIN Variant

    DFDFDF12

    1

    Tag

    Len

    Value(s) / Description

    DFDFDF28

    1

    RS-232 starting character Default is 0x00 = None

    DFDFDF29

    1

    Tag

    Len

    Value(s) / Description

    DFDFDF35

    1

    EMV Configuration Security

    0x00 = OEM Behavior (no MAC required)

    0x01 = Standard behavior (default, AMK MAC required)

    This setting changes the security behavior of a subset of the device’s EMV configuration commands. The non-default setting allows OEMs, acquirers, and field technicians to update EMV configuration settings that change frequently, without requiring access to the device UIK key, or network connectivity to request a signed command from a remote service, or pre-generated signed commands.

    When the device is configured for OEM Behavior, the host should transmit NULL (0) in place of the MAC when it invokes any of the affected commands, which are:

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

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

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

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

    DFDFDF36

    1

    Name of Value

    Description of Value

    Length

    1 byte ASCII value specifying the number of characters from this whitelist row that the device will compare to the card’s PAN, when deciding whether the card should be treated as whitelisted. The device ignores any row that begins with a length outside the following meaningful values:

    · “0” = If any row uses this length, all cards are considered whitelisted, because 0

    characters of the card PAN always match 0 characters of the whitelist entry.

    · “1” through “6” = Usual range of characters to compare.

    · 0x7F = Special value specifying the device should ignore this entry in the whitelist table. This can be used for testing, or for completely disabling the whitelist by starting every entry with this.

    PAN

    6 byte string specifying the value the device should compare to the card’s PAN. The value must be 6 bytes long, but the device will only compare the number of characters specified by Length above.

    PAN Flag

    1 byte ASCII value specifying how the device should process the PAN if it finds the card matches this whitelist entry.

    · “0” = Device sends only the 12 digits required by an external EPP

    · “1” = Device sends complete PAN

    Name of Value

    Description of Value

    Length

    1 byte ASCII value specifying the number of characters from this whitelist row that the device will compare to the card’s PAN, when deciding whether the card should be treated as whitelisted. The device ignores any row that begins with a length outside the following meaningful values:

    · “0” = If any row uses this length, all cards are considered whitelisted, because 0

    characters of the card PAN always match 0 characters of the whitelist entry.

    · “1” through “6” = Usual range of characters to compare.

    · 0x7F = Special value specifying the device should ignore this entry in the whitelist table. This can be used for testing, or for completely disabling the whitelist by starting every entry with this.

    PAN

    6 byte string specifying the value the device should compare to the card’s PAN. The value must be 6 bytes long, but the device will only compare the number of characters specified by Length above.

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C4

    Calculated

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

    0x80 = Read PAN Whitelist

    0x81 = Read Account Data Whitelist

    For subcommand 0x80, Bytes 0..63 contain the 8 entries in the PAN whitelist at 8 bytes per entry (see Table 4-62).

    For subcommand 0x81, Bytes 0..55 contain the 8 entries in the Account Data whitelist at 7 bytes per entry (see Table 4-63).

    Table - Response to Command 0x03::0x00 - Card Latch Control

    Table - Message Structure for Command 0x03::0x60 - Set/Get Ethernet Configuration (Ethernet Only)

    Table - Response to Command 0x03::0x60 - Set/Get Ethernet Configuration (Ethernet Only)

    Table - Message Structure for Command 0x03::0x70 - Set Chip Card Support

    Table - Response to Command 0x03::0x70 - Set Chip Card Support

    Table - Message Structure for Command 0x03::0x72 - Get Device Configuration

    Table - Response to Command 0x03::0x72 - Get Device Configuration, Single Value Retrieved

    Table - Response to Command 0x03::0x72 - Get Device Configuration, All Values Retrieved

    Table - Tags, Lengths, and Values for Configuration Settings

    Table - Format for Each Entry In PAN Whitelist Table

    Table - Format for Each Entry In Account Data Whitelist Table

    Table - Message Structure for Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist

    Table - Response to Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    Device Reader Mode. This value can be changed using

    Command 0x03::0x70 - Set Chip Card Support.

    · 0x00 = Disable ICC reader

    · 0x01 = Enable ICC reader

    RS-232 ending character Default is 0x0A = LF

    Terminal INL File Version Number

    This value indicates what version of the EMV database is included in the firmware. If new versions of firmware include a change to the database format, this number will change and the device overwrites the old database with the new factory defaults.

    C1

    C1

    C4

    Calculated

    Bytes 1..n.Network Configuration Data

    Depends on the value the host selected in the Subcommand byte: Apply Changes uses 0 bytes

    Set Ethernet Static IP Address uses 4 bytes MSB first, e.g., 0xAABBCCDD Set Ethernet IP Address Mode uses 1 byte, 0x00 = DHCP, 0x01 = Static Set Ethernet Gateway Address uses 4 bytes MSB first e.g., 0xAABBCCDD Set Ethernet Netmask uses 4 bytes MSB first e.g., 0xAABBCCDD

    C4

    Calculated

    Bytes 1..n.Network Configuration Data

    Depends on the value the host selected in the Subcommand byte: Set commands use 1 byte equal to 0x00

    Get Ethernet MAC Address uses 6 bytes MSB first, e.g., 0xAABBCCDDEEFF Get Ethernet IP Address uses 4 bytes MSB first, e.g., 0xAABBCCDD

    Get Ethernet IP Address Mode uses 1 byte, 0x00 = DHCP, 0x01 = Static Get Ethernet Gateway Address uses 4 bytes MSB first e.g., 0xAABBCCDD Get Ethernet Netmask uses 4 bytes MSB first e.g., 0xAABBCCDD

    Appendix H Licenses and Copyright Disclosures

    The information in this section requires no action on the part of the consumer, and is included to comply with various disclosure requirements governing the use of components used in the development of this device’s firmware.

    GNU GENERAL PUBLIC LICENSE

    From https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt

    GNU GENERAL PUBLIC LICENSE

    Version 2, June 1991

    Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

    Preamble

    The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.

    When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

    To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

    For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

    We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

    Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

    Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary.

    To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow.

    GNU GENERAL PUBLIC LICENSE

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

    0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

    1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

    2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

    c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

    3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

    The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

    4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

    5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

    6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

    7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

    8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

    9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

    10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

    NO WARRANTY

    11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

    12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

    END OF TERMS AND CONDITIONS

    How to Apply These Terms to Your New Programs

    If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author>

    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

    Also add information on how to contact you by electronic and paper mail.

    If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author

    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.

    This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details.

    The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.

    You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

    Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker.

    <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice

    This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.

    Submit feedback

    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.

    • 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.

    • 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.

    • 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 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.

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

    The host uses this command to start an EMV L2 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:

    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.

    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:

    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.

    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:

    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.

    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:

    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 .

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

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

    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 .

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

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

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

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

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

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

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

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

    Command 0x07:0x0D - Get Date Time

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

    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:

    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.

    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.

    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).

  • 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 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 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.

  • 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.

  • 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

    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).

    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

    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.

    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

    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)

    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

    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

    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

    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

    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

    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

    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

    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.

    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>

    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

    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

    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

    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

    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

    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

    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.

    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

    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.

    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

    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

    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

    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>

    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

    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

    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

    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

    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

    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

    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

    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

    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:

    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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C2

    01

    07

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C3

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C4

    13

    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

    C4

    Calculated

    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.

    C4

    Calculated

    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.

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

    C4

    Calculated

    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.

    C4

    Calculated

    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.

    C4

    Calculated

    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.

    C4

    Calculated

    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.

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

    C4

    07

    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.

    C4

    Calculated

    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.

    Application Group 0x07 - EMV L2 Contact Messages (Chip Card L2 Mode Only) - 16 - 30

    Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration

    The host uses this command to read the device’s EMV L2 Terminal Capabilities Configuration set by Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration. Descriptions of the tags can be found in EMV Integrated Circuit Card Specifications for Payment Systems v4.3 .

    Table - Message Structure for Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration

    Tag

    Len

    Value(s) / Description

    Command 0x07::0x12 - Read EMV L2 Configuration Check Values

    The host can use this command to retrieve check values (CVs) for a number of device configuration settings. Use this command after finishing configuring a device to obtain baseline values, then use it again at any time and compare the check values to the baseline values to quickly determine whether any changes have occurred. A changed Master CV indicates a configuration change has occurred. The individual check values can help determine which configuration section has changed. Merchant data in tags 9F16, 9F1C, and 9F4E are not included in any check value calculations.

    Command 0x07::0x13 - EMV L2 Continue Action

    If the host has called Command 0x07::0x00 - EMV L2 Start Transaction with the Transaction Options specifying Continue Mode Enabled, Wait, the host uses this command to tell the device how to proceed with the transaction after receiving Notification 0x07::0x8C - EMV L2 Continue Notification. The host can cancel the transaction or modify the transaction amount here.

    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:

    Command 0x07::0x14 - EMV L2 Offline PIN CVM Result

    The host uses this command to send offline PIN data to the device in response to Notification 0x07::0x8B - EMV L2 Offline PIN CVM Request. The response from the EPP when reading the PIN includes the PIN block and sequence number needed for this command (DF53 and DFDF41).

    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:

    Command 0x07::0x80 - EMV L2 Transaction Status

    The host uses this command to get the ongoing status of a transaction it has initiated using Command 0x07::0x00 - EMV L2 Start Transaction. The host may opt to call this command during an EMV transaction to monitor progress, or it may subscribe to notifications using Command 0x01::0x50 - Subscribe to Notifications and the device will send status reports proactively using Notification 0x07::0x8A - EMV L2 Transaction Status.

    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:

    Notification 0x07::0x81 - EMV L2 Display Message Request

    The device sends this notification to request that the host display a message to the operator or cardholder. The host should display the message exactly as received. If the message is too long to fit on a single line it may be split to multiple lines if the host wishes. Messages are limited to 1024 bytes. If the message is zero length, this is a request for the host to clear the display.

    Notification 0x07::0x82 - EMV L2 User Selection Request

    The device uses this notification to inform the host that a cardholder must enter a selection before the device can continue with the transaction. This can include:

    • The host needs the cardholder to select a language.

    • The host and card have more than one mutually supported application in common.

    • The host and card have only one mutually supported application in common, but the host called Command 0x07::0x00 - EMV L2 Start Transaction with the Transaction Options parameter specifying Enhanced App Select Mode Enabled.

    In response, the host should prompt the cardholder to select an item from the menu, then send Command 0x07::0x02 - EMV L2 User Selection Result to provide the selection result and inform the device to continue the transaction.

    Notification 0x07::0x83 - EMV L2 ARQC Message

    The device uses this notification to send ARQC data for the host to process. After the host processes the ARQC data, it should send Command 0x07::0x03 - EMV L2 Online Processing Result / Acquirer Response to inform the device it can proceed with the transaction.

    If the card matches one or more rules in the device’s Account Data Whitelist (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist), the ARQC Message is a TLV data object with the following contents:

    Notification 0x07::0x84 - EMV L2 Transaction Result

    The device sends this notification to provide the host with final information from the transaction. It will usually include batch data and an indication of whether a signature is required.

    Notification 0x07::0x87 - EMV L2 PIN Entry Show Prompt Request

    The device uses this notification to request that the host display a PIN entry related prompt on the host’s display.

    Notification 0x07::0x88 - EMV L2 Online PIN CVM Request

    The device uses this notification to request a online PIN block from the host.

    Notification 0x07::0x89 - EMV L2 Language Selection Result

    The device uses this notification to notify host the language selection result.

    Notification 0x07::0x8A - EMV L2 Transaction Status

    The host can use Command 0x01::0x50 - Subscribe to Notifications to subscribe to this notification to receive notifications of ongoing progress of an EMV transaction it has initiated using Command 0x07::0x00 - EMV L2 Start Transaction. It may also request some of this status information on demand using Command 0x07::0x80 - EMV L2 Transaction Status.

    Notification 0x07::0x8B - EMV L2 Offline PIN CVM Request

    The device uses this notification to request am offline PIN block from the host. The host must request PIN entry from a paired Cryptera EPP, get the sequence number and encrypted PIN block, and send the data to the oDynamo using Command 0x07::0x14 - EMV L2 Offline PIN CVM Result.

    Notification 0x07::0x8C - EMV L2 Continue Notification

    If the host has called Command 0x07::0x00 - EMV L2 Start Transaction with the Transaction Options parameter specifying Continue Mode Enabled, Wait or Continue Mode Enabled, Continue, the device uses this notification to provide data to the host after state EMV Read Application Data (status progress code = 8) is complete. If the value of the Notification Flag TLV data object indicates Transaction Paused, the host should call Command 0x07::0x13 - EMV L2 Continue Action to proceed with the transaction.

    01

    07

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

    C2

    01

    11

    Command ID Data Object (Tag C2) = 0x11 Read EMV L2 Terminal Capabilities Configuration

    C3

    01

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

    0x95 = Failure, invalid Database Selector field 0x9A = Internal Error, Database Corruption 0x9C = Invalid Configuration Identifier

    C4

    15

    Byte 0: Configuration Identifier

    One byte field containing the Configuration Identifier parameter the host set using

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

    Bytes 1..21: Current Configuration SHA-1 value, a 20 byte SHA-1 hash of the configuration

    required in the devices device’s Implementation Conformance Statement (ICS).

    01

    07

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

    C2

    01

    0E

    Command ID Data Object (Tag C2) = 0x12 Read EMV L2 Configuration Check Values

    01

    07

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

    C2

    01

    0E

    Command ID Data Object (Tag C2) = 0x12 EMV L2 Configuration Check Values

    C3

    01

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

    Check Values (CV)

    Bytes 0..3 Master CV, combines all individual CVs (captures any changes)

    Bytes 4..7 EMV Terminal Configuration CV

    · Read the corresponding configurations using Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration and Command 0x07::0x06 - EMV L2 Get Contact Terminal Configuration

    · Modify the corresponding configurations using Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration and Command 0x07::0x05 - EMV L2 Modify Contact Terminal Configuration

    Bytes 8..11 EMV Application Configuration CV Includes all non-empty EMV Application slots

    01

    07

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

    C2

    01

    02

    Command ID Data Object (Tag C2) = 0x13 EMV L2 Continue Action

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) = (optional - No tags mean proceed)

    Action <DF45> <1><value>

    · 0x00 = Proceed with transaction

    · 0x01 = Cancel transaction

    New Transaction Amount <9F02><06><value>

    This optional parameter changes the transaction amount. The value is in EMV format.

    01

    07

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

    C2

    01

    88

    Command ID Data Object (Tag C2) = 0x13 EMV L2 Continue Action

    C3

    01

    Result Code Data Object (Tag C3) =

    0x00 = OK / Done

    0x02 = Invalid Parameter 0x08 = Not in Continue state

    01

    07

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

    C2

    01

    02

    Command ID Data Object (Tag C2) = 0x14 EMV L2 Offline PIN CVM Result

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    <DF45(operation result)> <1><value> DF45 indicates the operation result as: 0x00 = Operation successful

    0x01 = General failure

    0x02 = User canceled operation. 0x03 = Operation timed out 0x04 = CVM failed

    0x05 = PIN Bypass selected

    <DF53><8><Offline encrypted PIN Block>

    <DFDF41><8><EPP PIN Sequence Number>

    01

    07

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

    C2

    01

    88

    Command ID Data Object (Tag C2) = 0x14 EMV L2 Offline PIN CVM Result

    C3

    01

    Result Code Data Object (Tag C3) =

    0x00 = OK / Done

    0x02 = Invalid Parameter

    0x08 = No offline PIN CVM in progress

    01

    07

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

    C2

    01

    80

    Command ID Data Object (Tag C2) = 0x80 EMV L2 Transaction Status

    01

    07

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

    C2

    01

    80

    Command ID Data Object (Tag C2) = 0x80 EMV L2 Transaction Status

    C3

    01

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

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 indicates the current major state of the transaction:

    0x00 = No events since start of transaction 0x01 = Card Inserted

    0x02 = Card Error

    0x03 = Transaction Progress Change 0x04 = Waiting for User Response 0x05 = Timed Out

    0x06 = Transaction Terminated 0x07 = Host Canceled Transaction 0x08 = Card Removed

    Byte 1 indicates the remaining time available, in seconds, for the indicated operation to complete. The timeout is set by the host when calling Command 0x07::0x00 - EMV L2 Start Transaction.

    01

    07

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

    C2

    01

    81

    Command ID Data Object (Tag C2) = 0x81 Display Message Request

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    A string of data up to 1024 bytes containing message to be displayed on the host

    01

    07

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

    C2

    01

    82

    Command ID Data Object (Tag C2) = 0x82 EMV L2 User Selection Request

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 Selection Type specifies what kind of selection request this is: 0x00 = Payment Brand Application Selection

    0x01 = Language Selection

    Byte 1 Timeout specifies the maximum time, in seconds, allowed to complete the selection process. If this time is exceeded, the host should send Command 0x07::0x02 - EMV L2 User Selection Result with the Selection Status field set to 0x02 (User Selection Request aborted, timeout), after which the transaction will be aborted and an appropriate Transaction Status will be available. Value 0 (User Selection Request completed) is not allowed in this case.

    Bytes 2..n Menu Items is a variable length a collection of null-terminated strings (maximum 16 strings). The maximum length of each string is 64 characters. The first string is a title and should not be considered for selection. It is expected that the host will display the menu items to the cardholder, then, after the cardholder makes a selection, call Command 0x07::0x02 - EMV L2 User Selection Result to return the number of the item the cardholder selected.

    01

    07

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

    C2

    01

    83

    Command ID Data Object (Tag C2) = 0x83 ARQC Message

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Bytes 0..1 ARQC Data Length. Two byte binary, most significant byte first. This gives the total length of the ARQC Data message that follows, excluding padding and CBC-MAC.

    Bytes 2..n ARQC Message

    If the card does not match any rule in the device’s Account Data Whitelist (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist), the ARQC Message is a TLV data object with the contents shown in Table 4-114 - EMV ARQC Type - Account Data Not In Whitelist, otherwise the ARQC message is a TLV data object with the contents shown in Table 4-116 - EMV ARQC Type Account Data in Whitelist.

    R

    /DFDF0B

    03

    Message Data Information Byte 0 Data Type

    · 0x00 = Reserved

    · 0x01 = EMV Contact L2 Data

    Byte 1 Encryption

    · 0x00 = Data is encrypted

    · 0x00 = Data is clear Text

    Byte 2 - Reserved

    B

    R

    /DFDF54

    var

    MAC KSN

    B

    R

    /DFDF55

    01

    MAC Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    R

    R

    /FA

    var

    Container for generic data

    T

    R

    //70

    var

    Container for ARQC

    T

    R

    ///DFDF53

    01

    Fallback Indicator

    · 0x00 = No Fallback

    · 0x01 = Technical Fallback

    · 0x81 = MSR Fallback

    B

    R

    ///5F20

    var

    Cardholder Name

    AN S

    O

    ///5F30

    02

    Service Code

    B

    O

    ///DFDF4D

    var

    Masked Track 2 ICC Data

    If the payment method presented by the cardholder provides it

    AN

    O

    ///DFDF52

    01

    Card Type

    · 0x00 = Other

    · 0x01 = Magnetic Stripe ISO/ABA Financial (MSR)

    · 0x02 = Magnetic Stripe AAMVA (MSR)

    · 0x03 = Manual Entry

    · 0x04 = Unknown

    · 0x05 = Contact Chip Card (ICC)

    · 0x06 = Contactless Chip Card (PICC), EMV

    · 0x07 = MSR Financial and Contact Chip Card (ICC)

    B

    R

    ///F8

    var

    Container for Encrypted Data

    T

    R

    ////DFDF59

    var

    Encrypted Data Primitive

    Decrypt the value of this TLV data object using the algorithm and variant specified in the Encrypted Transaction Data KSN (DFDF56) parameter and the Encrypted Transaction Data Encryption Type (DFDF57) parameter to read its contents. See Table 4-115 for the data structure as it should appear after decryption.

    B

    R

    ////DFDF56

    var

    Encrypted Transaction Data KSN

    B

    R

    ////DFDF57

    01

    Encrypted Transaction Data Encryption Type

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    B

    R

    ////DFDF58

    01

    Number of Padding Bytes

    Number of bytes added to DFDF59 value to force its length to a multiple of 8 bytes for TDES.

    B

    R

    R

    /DF8120

    05

    Terminal Action Code - Default

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /DF8121

    05

    Terminal Action Code - Denial

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /DF8122

    05

    Terminal Action Code - Online

    For a list of possible values, see EMV 4.3 Book 3 values for TLV object 95 Terminal Verification Results.

    B

    O

    /F4

    var

    Container for encrypted MSR data

    See Data Object F4 - Magnetic Stripe Reader Card Data for details

    T

    O

    /F5

    var

    Container for encrypted PIN Data

    T

    O

    //99

    var

    Encrypted PIN Block Data

    B

    O

    //DFDF41

    var

    Encrypted PIN Block KSN

    B

    O

    //DFDF42

    var

    PIN Block Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    O

    R

    /DFDF0B

    03

    Message Data Information Byte 0 Data Type

    · 0x00 = Reserved

    · 0x01 = EMV Contact L2 Data

    Byte 1 Encryption

    · 0x00 = Data is encrypted

    · 0x00 = Data is clear Text

    Byte 2 - Reserved

    B

    R

    /DFDF54

    var

    MAC KSN

    B

    R

    /DFDF55

    01

    MAC Encryption Type

    · 0xxx xxxx = Fixed Key (Not used)

    · 1xxx xxxx = DUKPT Key

    · xx00 xxxx = TDES

    · xx01 xxxx = AES128

    · xx10 xxxx = AES 256

    · xxxx xx00 = Data Variant

    · xxxx xx01 = PIN Variant

    · xxxx xx10 = MAC Variant

    B

    R

    /DFDF25

    var

    Device Serial Number (IFD Serial Number)

    B

    R

    /FA

    var

    Container for generic data

    T

    R

    //70

    var

    Container for ARQC

    T

    R

    ///DFDF53

    01

    Fallback Indicator

    · 0x00 = No Fallback

    · 0x01 = Technical Fallback

    · 0x81 = MSR Fallback

    B

    R

    ///5F20

    var

    Cardholder Name

    AN S

    O

    ///5F30

    02

    Service Code

    B

    O

    ///DFDF4D

    var

    Masked Track 2 ICC Data

    If the payment method presented by the cardholder provides it

    AN

    O

    R

    var

    var

    List of Data Objects configured by terminal setting DFDF02 that can reported in the transaction

    01

    07

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

    C2

    01

    84

    Command ID Data Object (Tag C2) = 0x84 EMV L2 Transaction Result

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 Signature Required. This field indicates whether a cardholder signature is required to complete the transaction:

    0x00 = No signature required

    0x01 = Signature required. If a signature is required, the host should acquire the signature from the cardholder as part of the transaction data.

    Bytes 1..2 Batch Data Length. Two byte binary, most significant byte first. This gives the total length of the Batch Data message that follows, excluding padding and CBC- MAC.

    Byte 3 Batch Data:

    See Appendix C Transaction Result Message - Batch Data Format (EMV Only). It is expected that the host will save this data as a record of the transaction.

    01

    07

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

    C2

    01

    87

    Command ID Data Object (Tag C2) = 0x87 EMV L2 PIN Entry Show Prompt Request

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 Prompt ID specifies which prompt the device want the secure host to display: 0x01 = AMOUNT

    0x02 = AMOUNT OK?

    0x03 = APPROVED

    0x04 = CALL YOUR BANK

    0x05 = CANCEL OR ENTER

    0x06 = CARD ERROR

    0x07 = DECLINED

    0x08 = ENTER AMOUNT

    01

    07

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

    C2

    01

    88

    Command ID Data Object (Tag C2) = 0x88 PIN CVM Request Notification

    C4

    01

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 PAN status (see Command 0x03::0x80 - Read PAN Whitelist / Account Data Whitelist)

    0x00 = The card does not match any rule in the PAN whitelist. No PAN is available.

    0x01 = The card matches one or more rules in the PAN whitelist. Full cleartext PAN for PIN block construction is available.

    0x02 = The card matches one or more rules in the PAN whitelist. Partial cleartext PAN for PIN block construction is available.

    0x03 = The card does not match any rule in the PAN whitelist, but an encrypted PAN is available for use with a paired Cryptera EPP.

    01

    07

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

    C2

    01

    88

    Command ID Data Object (Tag C2) = 0x88 PIN CVM Request Notification

    C3

    01

    Result Code Data Object (Tag C3) =

    0x00 = OK / Done

    E0

    Calculated

    Data Field Data Object (Tag C4 or E0) =

    <DF45(operation result)> <1><value> DF45 indicates the operation result as: 0x00 = Operation successful

    0x01 = General failure

    0x02 = User canceled operation. 0x03 = Operation timed out 0x04 = CVM failed

    0x05 = PIN Bypass selected

    <DF53><len><Encrypted Online PIN block>

    <DFDF41><len><PIN Encryption KSN>

    01

    07

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

    C2

    01

    89

    Command ID Data Object (Tag C2) = 0x89 PIN CVM Request Notification

    C4

    02

    Data Field Data Object (Tag C4 or E0) = 2-byte language ID

    0x656E = English 0x6465 = German

    01

    07

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

    C2

    01

    8A

    Command ID Data Object (Tag C2) = 0x8A EMV L2 Transaction Status

    Data Field Data Object (Tag C4 or E0) =

    Byte 0 indicates the current major state of the transaction:

    · 0x00 = No events since start of transaction

    · 0x01 = Card Inserted

    · 0x02 = Card Error

    · 0x03 = Transaction Progress Change

    · 0x04 = Waiting for User Response

    · 0x05 = Timed Out

    01

    07

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

    C2

    01

    8B

    Command ID Data Object (Tag C2) = 0x8B EMV L2 Offline PIN CVM Request

    01

    07

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

    C2

    01

    8C

    Command ID Data Object (Tag C2) = 0x8C EMV L2 Continue Notification

    C4

    Calculated

    Data Field Data Object (Tag C4 or E0) = Notification Flag <DF45><1><value>

    · 0x00 = Transaction Continuing, no response required

    · 0x01 = Transaction Paused, waiting for Command 0x07::0x13 - EMV L2 Continue Action

    The device includes the following EMV TLV data objects as a block of bytes if found on the card: 0x9F06, 0x5A, 0x57, 0x9F02, 0x50, 0x5F24, 0x9F11, 0x9F12, 0xDF30, 0xDF32, 0xDF34, 0xDF35, 0xDF36, 0xDF37, 0xDF38, 0xDF40, 0xDF41, 0xDF43,

    0xDF52, 0xDF53, 0xDF54, 0xDF55, 0xDF56, 0x9F4D, 0x9F6E. For example: DF4501015F24032410019F0206000000012345

    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

    11

    Command ID Data Object (Tag C2) = 0x11 Read EMV L2 Terminal Capabilities Configuration

    C4

    Calculated

    Byte 0: Database Selector 0x00 = EMV Contact L2

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    01

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Example of data the device sends to the host:
    C0 01 03 C1 01 07 C2 01 82 C4 4C 64 53 65 6C 65 63 74 20 41 70 70 6C
    69 63 61 74 69 6F 6E 00 41 30 30 30 30 30 30 30 30 33 7C 56 49 53 41
    20 43 52 45 44 49 54 00 41 30 30 30 30 30 30 30 39 38 30 38 34 30 7C
    56 49 53 41 20 43 4F 4D 4D 4F 4E 20 44 45 42 49 54 00
    
    Decoded message:
    Select Application<NULL>A0 00 00 00 03 | VISA CREDIT<NULL>A0 00 00 00
    98 08 40|VISA COMMON DEBIT<NULL>

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    F9

    var

    Container for MAC structure and generic data

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    /DFDF25

    var

    Device Serial Number (IFD Serial Number)

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    FC

    var

    Decrypted Data Container

    Inside this container, the device inserts all EMV TLV data objects specified by TLV data object DFDF02 in EMV Contact Terminal Settings and Defaults. For definitions of possible values for standard EMV TLV data objects, see EMV 4.3 Book 3. MagTek custom TLV data objects not defined in that specification are defined in the following rows of this table.

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    F9

    var

    Container for MAC structure and generic data

    Tag

    Len

    Value / Description

    Typ

    Req

    Default

    ///DFDF52

    01

    Card Type

    · 0x00 = Other

    · 0x01 = Magnetic Stripe ISO/ABA Financial (MSR)

    · 0x02 = Magnetic Stripe AAMVA (MSR)

    · 0x03 = Manual Entry

    · 0x04 = Unknown

    · 0x05 = Contact Chip Card (ICC)

    · 0x06 = Contactless Chip Card (PICC), EMV

    · 0x07 = MSR Financial and Contact Chip Card (ICC)

    · 0x08 = Contactless PICC, Magnetic Stripe Data (MSD)

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    02

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

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Tag

    Len

    Value(s) / Description

    C0

    01

    03

    Message Type Data Object (Tag C0) = 0x03 Notification

    Table - Response to Command 0x07::0x11 - Read EMV L2 Terminal Capabilities Configuration

    Table - Message Structure for Command 0x07::0x12 - Read EMV L2 Configuration Check Values

    Table - Response to Command 0x07::0x12 - Read EMV L2 Configuration Check Values

    Table - Message Structure for Command 0x07::0x13 - EMV L2 Continue Action

    Table - Response to Command 0x07::0x13 - EMV L2 Continue Action

    Table - Message Structure for Command 0x07::0x14 - EMV L2 Offline PIN CVM Result

    Table - Response to Command 0x07::0x14 - EMV L2 Offline PIN CVM Result

    Table - Message Structure for Command 0x07::0x80 - EMV L2 Transaction Status

    Table - Response to Command 0x07::0x80 - EMV L2 Transaction Status

    Table - Message Structure for Notification 0x07::0x81 - EMV L2 Display Message Request

    Table - Message Structure for Notification 0x07::0x82 - EMV L2 User Selection Request

    Table - Message Structure for Notification 0x07::0x83 - EMV L2 ARQC Message

    Table - EMV ARQC Type - Account Data Not In Whitelist

    Padding to ensure the length of data, starting with the message length at the very beginning, and ending with any additional padding, is a multiple of 8 bytes. This is a requirement of using the CBC-MAC algorithm.

    Four byte CBC-MAC. To calculate the MAC include the F9 tag, length, and contents, and pad it with zeroes to make overall length a multiple of 8. Use the DUKPT MAC variant of the transaction key (DUKPT MAC variant constant = 0000 0000 0000 FF00 0000 0000 0000 FF00) with the CBC-MAC algorithm, and use the first 4 bytes of the 8.

    Table - EMV ARQC DFDF59 Decrypted Contents

    Padding to force DFDF59 plus padding to be a multiple of 8 bytes

    Table - EMV ARQC Type Account Data in Whitelist

    Padding to ensure the length of data, starting with the message length at the very beginning, and ending with any additional padding, is a multiple of 8 bytes. This is a requirement of using the CBC-MAC algorithm.

    Four byte CBC-MAC. To calculate the MAC include the F9 tag, length, and contents, and pad it with zeroes to make overall length a multiple of 8. Use the DUKPT MAC variant of the transaction key (DUKPT MAC variant constant = 0000 0000 0000 FF00 0000 0000 0000 FF00) with the CBC-MAC algorithm, and use the first 4 bytes of the 8.

    Table - Message Structure for Notification 0x07::0x84 - EMV L2 Transaction Result

    Table - Message Structure for Notification 0x07::0x87 - EMV L2 PIN Entry Show Prompt Request

    Table - Message Structure for Notification 0x07::0x88 - EMV L2 Online PIN CVM Request

    Table - Response to Notification 0x07::0x88 - EMV L2 Online PIN CVM Request

    Table - Message Structure for Notification 0x07::0x89 - EMV L2 Language Selection Result

    Table - Message Structure for Notification 0x07::0x8A - EMV L2 Transaction Status

    Table - Message Structure for Notification 0x07::0x8B - EMV L2 Offline PIN CVM Request

    Table - Message Structure for Notification 0x07::0x8C - EMV L2 Continue Notification

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    T

    B

    T

    T

    B

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C1

    C4

    14

    · Read the corresponding configurations using Command 0x07::0x08 - EMV L2 Get Contact Application Configuration

    · Modify the corresponding configurations using Command 0x07::0x07 - EMV L2 Modify Contact Application Configuration

    Bytes 12..15 Device Configuration CV

    · Read the corresponding configurations using Command 0x03::0x72

    - Get Device Configuration · Modify the corresponding configurations using Command 0x07::0x10 - Modify EMV L2 Terminal Capabilities Configuration and Command 0x03::0x70 - Set Chip Card Support

    Bytes 16..19 CAPK CV

    Includes all non-empty CAPK slots

    · Read the corresponding configurations using Command 0x07::0x0A - EMV L2 Get CA Public Key

    · Modify the corresponding configurations using Command 0x07::0x09 - EMV L2 Modify CA Public Key

    C4

    05

    Byte 2 indicates the progress within the major transaction state: 0x00 = No transaction in progress

    0x01 = Waiting for cardholder to insert card 0x02 = Powering up the card

    0x03 = Selecting the application

    0x04 = Waiting for user language selection

    0x05 = Waiting for user application selection

    0x06 = Initiating application

    0x07 = Reading application data

    0x08 = Offline data authentication 0x09 = Process restrictions

    0x0A = Cardholder verification 0x0B = Terminal risk management 0x0C = Terminal action analysis

    0x0D = Generating first application cryptogram 0x0E = Card action analysis

    0x0F = Online processing

    0x10 = Waiting online processing response 0x11 = Transaction complete

    0x12 = Transaction error 0x13 = Transaction approved 0x14 = Transaction declined

    0x15 = Transaction canceled by MSR swipe 0x16 = EMV error - Conditions Not Satisfied 0x17 = EMV error - Card Blocked

    0x18 = Application selection failed 0x19 = EMV error - Card Not Accepted 0x1A = Empty Candidate List

    0x1B = Application Blocked

    Bytes 3..4 are reserved

    C4

    Calculated

    When using the Selection Type Payment Brand Application Selection, each string below the list title includes the Application Identifier (AID) in ASCII and the Application Name. The format for the strings is as follows:

    Select Application<NULL>

    <ASCII AID Value 1>|<Application Name 1><NULL>

    <ASCII AID Value 2>|<Application Name 2><NULL> If the host has enabled Enhanced App Selection mode using the Transaction Options parameter of Command 0x07::0x00 - EMV L2 Start Transaction, the device adds tags (in ASCII form) found on the card after the application name to allow the host to make informed decisions about application selection. If the device finds any of tags 5F55, 5F56, 42, 50, 87, or 9F0C on the card, it includes them here. The device also sends this notification even if only one application selection is available.

    <ASCII AID Value 1>|<Application Name 1>|<TLV>|<TLV>|..<NULL

    <ASCII AID Value 2>|<Application Name 2>|<TLV>|<TLV>|..<NULL

    e.g. A0000000000010|VISA|5F55025555|4203480110|870101

    · 0x08 = Contactless PICC, Magnetic Stripe Data (MSD)

    C4

    01

    0x09 = ENTER PIN

    0x0A = INCORRECT PIN

    0x0B = INSERT CARD

    0x0C = NOT ACCEPTED

    0x0D = PIN OK

    0x0E = PLEASE WAIT

    0x0F = PROCESSING ERROR

    0x10 = REMOVE CARD

    0x11 = USE CHIP READER

    0x12 = USE MAG STRIPE

    0x13 = TRY AGAIN

    <DFDF42><len><PIN Encryption type>

    C4

    05

    · 0x06 = Transaction Terminated

    · 0x07 = Host Canceled Transaction

    · 0x08 = Card Removed

    Byte 1 indicates the remaining time available, in seconds, for the indicated major transaction state to complete. For information about specifying the timeout for cardholder interactions, see Command 0x07::0x00 - EMV L2 Start Transaction. For major states that do not involve cardholder interaction, the device sends 0x00.

    Byte 2 indicates the progress within the major transaction state:

    · 0x00 = No transaction in progress

    · 0x01 = Waiting for cardholder to insert card

    · 0x02 = Powering up the card

    · 0x03 = Selecting the application

    · 0x04 = Waiting for user language selection

    · 0x05 = Waiting for user application selection

    · 0x06 = Initiating application

    · 0x07 = Reading application data

    · 0x08 = Offline data authentication

    · 0x09 = Process restrictions

    · 0x0A = Cardholder verification

    · 0x0B = Terminal risk management

    · 0x0C = Terminal action analysis

    · 0x0D = Generating first application cryptogram

    · 0x0E = Card action analysis

    · 0x0F = Online processing

    · 0x10 = Waiting online processing response

    · 0x11 = Transaction complete

    · 0x12 = Transaction error

    · 0x13 = Transaction approved

    · 0x14 = Transaction declined

    · 0x15 = Transaction canceled by MSR swipe

    · 0x16 = EMV error - Conditions Not Satisfied

    · 0x17 = EMV error - Card Blocked

    · 0x18 = Application selection failed

    · 0x19 = EMV error - Card Not Accepted

    · 0x1A = Empty Candidate List

    · 0x1B = Application Blocked

    · 0x20 = Waiting for Continue Response

    · 0x21 = Waiting for Offline PIN

    Bytes 3..4 Reserved