This document, as well as the software and hardware described in it, is furnished under license
and may be used or copied online in accordance with the terms of such license. The content of
this document is furnished for information use only, is subject to change without notice, and
should not be construed as a commitment by ID TECH. Reasonable effort has been made to
ensure the accuracy of information provided herein. However, ID TECH assumes no responsibility
or liability for any unintentional errors or inaccuracies that may appear in this document.
Except as permitted by such license, no part of this publication may be reproduced or
transmitted by electronic, mechanical, recording, or otherwise, or translated into any language
form without the express written consent of ID TECH. ID TECH and ViVOpay are trademarks or
registered trademarks of ID TECH.
Warranty Disclaimer: The services and hardware are provided "as is" and "as-available" and the
use of the services and hardware is at its own risk. ID TECH does not make, and hereby disclaims,
any and all other express or implied warranties, including, but not limited to, warranties of
merchantability, fitness for a particular purpose, title, and any warranties arising from a course
of dealing, usage, or trade practice. ID TECH does not warrant that the services or hardware will
be uninterrupted, error-free, or completely secure.
Status Codes for Protocol 1 ................................................................................................................... 13
Status Codes for Protocol 2 ................................................................................................................... 13
RROR CODES
E
TATE CODES
RF S
3.0 SERIAL COMMUNICATION INTERFACES ....................................................................................... 20
RS232 S
USB HID I
ERIAL INTERFACE
Port Settings .......................................................................................................................................... 20
Basic Communication ............................................................................................................................ 20
HID Report Format ................................................................................................................................ 21
Sample Single Report Command and Response .................................................................................... 22
Data Frames .......................................................................................................................................... 23
Sample Single Report Command with Multiple Report Response ......................................................... 23
Error Handling at Report Level .............................................................................................................. 24
Error Handling at Command Level ........................................................................................................ 25
Special Frames ...................................................................................................................................... 27
5.0 TAG AND DATA SET CONFIGURATION ......................................................................................... 45
ONFIGURABLE
C
System AIDs .......................................................................................................................................... 48
User AIDs ............................................................................................................................................... 48
Reader Default TLV Group .................................................................................................................... 49
PayPass Default Group ......................................................................................................................... 49
User-defined TLV Groups ...................................................................................................................... 49
Configurable AID Reader Memory Requirement................................................................................... 50
Proprietary Tag List ............................................................................................................................... 89
Data Output ........................................................................................................................................ 288
Tag DFEF4B ......................................................................................................................................... 336
Tag DFEF4C ......................................................................................................................................... 338
Tag DFEF4D ........................................................................................................................................ 338
16.0 SAMPLE SCENARIOS AND FRAME FLOW ............................................................................... 344
ONTACTLESS MAGSTRIPE TRANSACTIONS IN AUTO POLL MODE
C
ONTACTLESS MAGSTRIPE TRANSACTIONS IN POLL ON DEMAND MODE
C
EMV (M/C
APPENDIX A.1: USER EXPERIENCE ILLUSTRATION ............................................................................... 351
APPENDIX A.2: AUDIBLE USER INTERFACE ......................................................................................... 353
APPENDIX A.3: CONFIGURABLE AID USE EXAMPLES ........................................................................... 354
APPENDIX A.4: DEMO UTILITIES AND SAMPLE CODE .......................................................................... 358
Table 61: PCD Single Command Exchange Data Field for Response ............................... 256
Table 62: Halt a Command Exchange Between Terminal/PC and Reader ...................... 257
Table 63: Enhanced Pass-Through Data Field ................................................................. 259
Table 64: Mifare Authentication Block Data Field........................................................... 267
Table 65: Mifare Read Block Data Field ........................................................................... 269
Table 66: Mifare Write Block Data Field .......................................................................... 271
Table 67: ePurse Value Block Format .............................................................................. 272
Table 68: Mifare ePurse Command Data Field ................................................................ 273
Table 69: Mifare ePurse Data Field for Debit/Credit Function Block .............................. 273
Table 70: Mifare ePurse Data Field for Backup Function Block ...................................... 274
Table 71: NFC Command Set List ..................................................................................... 277
Table 72: NFC Command Set Response Data List ............................................................ 279
Set White List Data Field .................................................................................................. 282
Table 73: Summary of LCD Messages .............................................................................. 351
xii
NEO Interface Developers Guide
1.0 Introduction
This document is intended to provide application developers and integrators with the detailed
information necessary to integrate ViVOpay readers with point of sale terminals (POS). It
specifies the interfaces that terminals can use to communicate with a ViVOpay reader to carry
out contactless EMV transactions.
Historical Background
Before the introduction of contactless EMV, the ViVOpay reader usually worked in standalone
mode, which did not require a terminal to initiate a transaction. In this mode, the reader reads
cards and sends transaction data independently. This mode is commonly referred to as “Auto
Poll Mode”.
ViVOpay readers can also function in an intelligent mode to provide EMV functionality and fast
processing of contactless EMV cards. This approach minimizes the time a cardholder needs to
hold a contactless EMV card in front of a reader. However, support for contactless EMV cards
requires that terminals set certain parameters and perform intelligent processing to complete a
transaction.
While contactless EMV transactions require control commands from a terminal, it is sometimes
desirable for the ViVOpay reader to function in standalone mode. This is especially useful for
test environments where a terminal may not be available or where all transactions are going to
be with contactless MagStripe cards. The EMV serial interface specified in this document
addresses the requirements of contactless EMV support, while maintaining backward
compatibility to standalone operation.
MasterCard Contactless (PayPass) Capability
ViVOpay readers support MasterCard Contactless technology (PayPass 3.02). You will see
numerous references to “PayPass” throughout this guide. MasterCard has officially deprecated the name “PayPass” (although not the technology). This version of the guide continues to use
“PayPass” to refer to MasterCard Contactless technology. Future versions of this guide will likely
drop the name “PayPass” altogether.
Protocol 1 Deprecated
Historically, ID TECH readers have used two serial protocols (Protocol 1 and Protocol 2).
Protocol 1 is no longer supported. For historical reasons, you may see references to Protocol 1 in
this guide. They will eventually be removed.
Organization of this Guide
This document provides the details of how to communicate with ViVOpay readers, including the
physical connections, the ViVOpay command protocols, and the actual serial commands. The
document is organized into major sections that contain increasing levels of detail:
The Quick Reference section includes tables of commands, error and status codes. It is
intended to be a quick index into the Protocol Command Reference sections (Protocol 1
and Protocol 2), or a quick reference for decoding serial commands and responses.
1
NEO Interface Developers Guide
The Serial Communication Interfaces section discusses the serial interfaces available.
The ViVOpay Communication Protocols section provides information on the various
protocols and modes of communication. It describes the frame formats used by each of
the protocols.
The Tag and Data Set Configuration discusses the method for configuring AIDs and
groups (parameter/data sets).
The Card Application Selection section discusses the method for selecting a particular
card application and how selection of a particular AID may be controlled.
The section on Card Application Specific Behavior discusses information specific to
particular card applications and the ViVOpay implementation.
The Protocol Command Reference sections (Protocol 1 and Protocol 2) describe each of
the commands available, their frame formats, and the response formats
The Special Reader Features section discusses additional features that may optionally be
used in conjunction with ViVOpay readers. Some of these are specific to a particular
ViVOpay reader hardware platform.
Many useful examples of serial communication flows can be found in the various
Appendices at the back of this guide. Also, the Appendices contain examples of how to
parse data payloads received during transactions. In future editions of this guide, we
will continue to add examples.
Notational Conventions
Many of the tables used in this document describe data objects as TLV (tag, length, value)
elements. The details of how TLVs are encoded and explained in the BER-TLV rules. These
rules may be found in EMV 4.2 Book 3, Annex B (available from
https://www.emvco.com/specifications.aspx?id=223).
The format of the value fields are described in EMV 4.2, Book 3, “Data Element Format
Conventions”.
Hexadecimal numbers are expressed in one of two ways:
With an “h” after the number, e.g. 2Ah
With a “0x” preceding the number, e.g. 0x2A
Reader Interface Capabilities
ViVOpay readers can be generally categorized by their capabilities to interact with the host
terminal. ViVOpay readers fall into one of the following categories according to the available
transaction interfaces:
Contactless Only
2
NEO Interface Developers Guide
Kiosk III ●
Vendi ● ● ●
Contactless and MSR
Contactless and LCD Display
Contactless, MSR, and LCD Display
Contactless, MSR and Line Display
The following table categorizes ViVOpay readers by available interfaces.
Table 1: Hardware Cross Reference
Reader Contactless
MSR LCD Display Line Display
Generally, the commands and parameters related to the LCD display only work on the
ViVOpay readers with a display. However, there is an option to use an external display.
Refer to the Set/Get Source for RTC/LCD/Buzzer/LED command.
3
NEO Interface Developers Guide
Activate Transaction Command
√ √ √ √ √ 2 02
01
√ √ √ √ √ 2 02
40
√ √ √ √ √ 2 84
09
√ √ √ √ √ 2 84
04
√ √ √ √ √ 2 28
01
√ √ √ √ √ 2 14
01
Buzzer Control Long
√ √ √ √ √ 2 0B
02
√ √ √ √ √ 2 0B
01
√
n/a √ 2
F0
FE
a
√ √ √ √ √ 2 05
01
√ √ √ √ √ 2 81
04
√ √ √ √ √ 2 81
02
√ √ √ √ √ 2 84
0F
Clear White List
√ √ √ √ √ 2 2C
52
√ √ √ 2 F0
F4
a
√ √ √ 2 60
12
√ √ √ 2 60
11
Host)
√ √ √ 2 60
02
b
√ √ √ 2 60
09
b
√ √ √ 2 60
0D
b
√ √ √ 2 60
05
b
Contact Retrieve AID List
√ √ √ 2 60
07
b
√ √ √ 2 60
01
b
√ √ √ 2 60
0A
b
√ √ √ 2 60
0B
b
√ √ √ 2 60
0C
b
2.0 Quick Reference
This section contains tables for looking up commands, status codes and error
codes.
Command Tables
The tables in this section organize the commands by their names and by their command number.
Commands Sorted by Command Name
Table 2: Commands Sorted by Command Name
Command C’less
or
C’less
+ MSR
Activate Transaction Command
Add Entry to EMV Exception List
Add Entry to EMV Revocation List
Antenna Control
Boot up Notification
Buzzer Control Short
Buzzer On/Off Command
Cancel Transaction Command
Check DUKPT Key
Check DUKPT Keys
Clean Torn Transaction Log
Configure Buttons Command
Contact Apply Host Response
Contact Authenticate Transaction
Contact Get MSR Data Control (Reader send
to Host)
Contact Get PIN Control (Reader send to
Host)
√ √ √ 2 61 03
√ √ √ 2 61 02
LCD Line US EMV Protocol CMD SUB
CMD
Notes
Contact Get Reader Status
Contact LCD Display Control (Reader send to
Contact Remove Application Data
Contact Remove CA Public Key
Contact Remove Certification Revocation List
Contact Remove Terminal Data
Contact Retrieve Application Data
Contact Retrieve CA Public Key
Contact Retrieve CA Public Key List
Contact Retrieve Certification Revocation List
4
√ √ √ 2 60 14
√ √ √ 2 61 01
NEO Interface Developers Guide
√ √ √ 2 60
04
b
√ √ √ 2 60
13
b
√ √ √ 2 60
03
b
√ √ √ 2 60
0A
b
Contact Set Certification Revocation List
√ √ √ 2 60
0E
b
√ √ √ 2 60
06
b
√ √ √ 2 60
10
b
√ √ √ 2 60
15
b
√ √ √ 2 60
0F
b
√ √ √ 2 60
16
b
√ √ √ 2 01
02
√ √ √ √ √ 2 04
04
c
√ √ √ √ √ 2 04
05
c
Delete Entry from EMV Exception List
√ √ √ √ √ 2 84
0A
√ √ √ √ 2 F0
F6
√ √ √ 2 F0
F7
a
√ √ √ √ √ 2 2C
0C
Exchange APDU Data
√ 2C
13
√ √ √ √ √ 2 2C
03
√ √ √ √ √ 1 17
02
√ √ √ √ √ 2 C7
33
√ √ √ √ √ 2 03
05
c
√ √ √ √ √ 2 D0
06
√ √ √ √ √ 2 03
07
c
√ √ √ √ √ 2 09
00
√ 2C
12
Get Button Configuration Command
√ √ √ 2 F0
F5
c
√ √ √ √ √ 2 32
01
√ √ √ √ √ 2 D0
02
√ √ √ √ √ 2 D0
01
√ √ √ √ √ 2 03
0C
√ √ √ √ √ 2 03
04
c
√ √ √ √ √ 2 03
06
c
√ √ √ √ √ 2 03
02
√ √ √ √ √ 2 29
08
Get Contact EMV L2 Kernel Version
√ √ √ √ √ 2 29
06
√ √ √ √ √ 2 29
07
Command C’less
or
C’less
+ MSR
Contact Retrieve Terminal Data
Contact Retrieve Transaction Result
Contact Set Application Data
Contact Set CA Public Key
Contact Set Terminal Data
Contact Start Transaction
Contact Get ICS Identification
Contact Remove Transaction Amount Log
Contact Set ICS Identification
Control User Interface
Delete All CA Public Keys Protocol 1
Delete All CA Public Keys Protocol 2
Delete All Entries for Single Index in EMV
Revocation List
Delete All Entries from EMV Exception List
Delete All Entries from EMV Revocation List
Delete CA Public Key Protocol 1
Delete CA Public Key Protocol 2
Delete Configurable AID
Delete Configurable Group (DCG)
Disable Blue LED Sequence
Enable Blue LED Sequence Command
√ √ √ √ 1 24 03
√ √ √ √ 2 D0 05
√ √ √ √ 2 84 05
√ √ √ √ 2 84 0B
√ √ √ √ 2 84 06
√ √ √ √ 1 24 02
√ √ √ √ 2 D0 04
LCD Line US EMV Protocol CMD SUB
CMD
Notes
Enhanced Pass-Through Command
Enhanced Poll for Token
Exchange Contactless Data
Flush Track Data
Get Data encryption Key Encryption Type
Get All AIDs
Get All CA Public RIDs Protocol 2
Get All Groups (GAG)
Get ALL Reader Variables
Get ATR
Get Cable Type
Get CA Public Key Hash Protocol 2
Get CA Public Key Protocol 2
Get Cash Transaction Reader Risk Parameters
Get Cashback Transaction Reader Risk
Parameters
Get Configurable AID
Get Configurable Group
Get Configuration
Get Contact EMV L2 Kernel Checksum
Get Contact EMV L2 Kernel Version Detail
√ √ √ √ √ 2 2C 0B
√ √ √ √ √ 2 03 0D
5
NEO Interface Developers Guide
√ √ √ √ √ 2 03
0E
√ √ √ √ √ 2 84
0C
Get EMV Exception Log Status
√ √ √ √ √ 2 84
08
√ √ √ √ √ 2 84
07
√ √ √ √ √ 2 84
03
√ √ √ √ √ 1 29
00
√ √ √ √ √ 1 17
CD
Get Hardware Information
√ √ √ √ √ 2 09
14
√√√√2C7
37
√ √ √ √ 2 C7
30
√ √ √ √ √ 2 81
0A
√ √ √ √ √ 2 03
11
√ √ √ √ √ 2 09
20
√ √ √ √ √ 2 2C
05
√ √ √ 2 12
01
√ √ √ √ √ 2 03
00
Get Transaction Result
√ √ √ √ √ 2 03
40
Get UID of MCU
√ √ √ √ √ 2 29
17
√ √ √ √ √ 2 29
04
e
√ √ √ √ √ 2 2C
51
√ √ √ √ √ 2 2C
09
√
n/a √ 2
F0
F9
a
√
n/a √ 2
F0
FC
a
LCD Display Line 2 Message Command
√
n/a √ 2
F0
FD
a
√ √ √ √ √ 2 0A
02
√ √ √ √ √ 2 D0
07
√ √ √ √ √ 2 2C
06
√ √ √ √ √ 2 2C
0A
Mifare Read Blocks
√ √ √ √ √ 2 2C
07
√ √ √ √ √ 2 2C
08
√ √ √ √ √ 2 2C
40
√ √ √ √ √ 2 2C
01
√ √ √ √ √ 2 2C
04
√ √ √ √ √ 2 C7
9A
√ √ √ √ √ 2 C7
9B
RTC Get Date
√ √ √ √ √ 2 C7
32
Command C’less
or
C’less
+ MSR
Get Contact EMV L2 Terminal Configuration
Checksum
Get DRL Reader Risk Parameters
Get EMV Exception List
Get EMV Revocation List
Get EMV Revocation Log Status
Get Firmware Full Version
Get Full Track Data
Get Data Encryption Enable Flag
Get Data Encryption Key Variant Type
Get DUKPT Key Serial Number (KSN)
Get Merchant Record
Get Module Version Information
Get Main Firmware Version
Get MSR Secure Parameters
Get PCD and PICC Parameters
Get Processor Type
Get Product Type
Get Remote Key Injection Timeout
Get Serial Number
Get Transaction Result
Get USB Boot Loader Version
Get White List
High Level Halt Command
LCD Display Clear Command
LCD Display Line 1 Message Command
LED Control
List CA Public Key IDs or RID Protocol 2
Mifare Authenticate Block
Mifare ePurse Command
Mifare Write Blocks
NFC Commands
Pass-through Mode Start/Stop
PCD Single Command Exchange
Peer To Peer Send A Message
Peer To Peer Receive A Message
Reset Torn Transaction Log
RTC Get Time
RTC Set Date
RTC Set Time
Set Data encryption Key Encryption Type
√ √ √ √ √ 2 29 09
√ √ √ √ √ 2 09 03 a
√ 2 C7 39 a
√ √ √ √ √ 2 09 02
√ √ √ √ √ 2 09 01 a
√ √ √ √ √ 2 C7 2E
√ √ √ √ √ 2 84 0E
√ √ √ √ 1 25 04 d
√ √ √ √ 1 25 02 d
√ √ √ √ 1 25 03 d
√ √ √ √ 1 25 01 d
LCD Line US EMV Protocol CMD SUB
CMD
Notes
6
NEO Interface Developers Guide
√ √ √ √ √ 2 30
01
√ √ √ √ √ 2 32
02
√ √ √ √ √ 2 04
02
c
√ √ √ √ √ 2 04
03
c
Set Configuration
√ √ √ √ √ 2 04
00
√ √ √ √ √ 2 04
0E
√√√√√2C7
36
Set Data Encryption Key Variant Type
√ √ √ √ √ 2 C7
2F
√ √ √ √ √ 2 04
11
C7 38
2 04
09
√ √ √ √ √ 2 01
01
√ √ √ √ √ 2 C7
2D
√ √ √ √ √ 1 17
03
Set Serial Number
√ √ √ 2 12
02
√ √ √ √ √ 2 01
05
√ √ √ √ √ 2 30
02
√ √ √ √ √ 2 2C
50
√ √ √ √ √ 2 05
02
√
n/a √ 2
F0
FA
a
√
n/a √ 2
F0
FB
a
√ √ √ √ 2 03
03
CMD
MSR
01
01
√ √ √ √ √ 2
01
02
√ √ √ 2
Command C’less
or
C’less
+ MSR
Set Baud Rate
Set CA Public Key Protocol 1
Set CA Public key Protocol 2
Set Cash Transaction Reader Risk Parameters
Set Cashback Transaction Reader Risk
Parameters
Set Cable Type
Set Configurable AID
Set Configurable Group
Set Configuration Defaults and Keep
Encryption Key
Set DRL Reader Risk Parameters
Set Data Encryption Enable Flag
√ √ √ √ 1 24 01
√ √ √ √ 2 D0 03
√ √ √ √ √ 2 04 0C
√ √ √ √ √ 2 04 0D
√ √ √ √ √ 2 04 0A
Set Merchant Record
Set MSR Secure Parameters
Set Parameter Defaults
Set Poll Mode
Set Remote Key Injection Timeout
Set RF Error Reporting
Set/Get Source for RTC/LCD/Buzzer/LED
Set Temporary Baud Rate
Set White List
Stop Transaction
Turn Off Yellow LED Command
Turn On Yellow LED Command
Update Balance Command
√
a ViVOpay Vendi reader only
b Contact EMV products only
c Not in Global Reader Lite (GRL)
d Real Time Clock only
e Only applies to devices with USB
LCD Line US EMV Protocol CMD SUB
CMD
2
Notes
a
Commands Sorted by Command Number
All commands in the following table use Protocol 2 formats (see Protocol 2 Formats) except for
Get Full Track Data, Set RF Error Reporting, and Get ViVOpay Firmware Version.
Table 3: Commands Sorted by Command Number
CMDSUB
7
CommandC’less or C’less +
Set Poll Mode
Control User Interface
LCDLineUSEMVProtocolNotes
NEO Interface Developers Guide
√ √ √ √ √ 2
02
01
√ √ √ √ √ 2
02
40
√ √ √ √ √ 2
03
00
√ √ √ √ √ 2
03
40
Get Transaction Result
√ √ √ √ √ 2
03
02
√ √ √ √ √ 2
03
03
√ √ √ √ 2
03
04
√ √ √ √ √ 2 c
03
05
√ √ √ √ √ 2 c
03
06
√ √ √ √ √ 2 c
03
07
Get All Groups
√ √ √ √ √ 2 c
√ √ √ √ √ 2
Parameters
√ √ √ √ √ 2
03
0E
√ √ √ √ √ 2
03
11
√ √ √ √ √ 2
03
40
√ √ √ √ √ 2
04
00
√ √ √ √ √ 2
04
02
√ √ √ √ √ 2 c
04
03
√ √ √ √ √ 2 c
04
04
Delete Configurable AID
√ √ √ √ √ 2 c
04
05
√ √ √ √ √ 2 c
04
09
2
Encryption Key
√ √ √ √ √ 2
√ √ √ √ √ 2
Parameters
√ √ √ √ √ 2
04
0E
√ √ √ √ √ 2
√ √ √ √ √ 2
05
01
√ √ √ √ √ 2
05
02
√ √ √ √ √ 2
09
00
√ √ √ √ √ 2
09
01
√ √ √ √ √ 2
09
02
Get Processor Type
√ √ √ √ √ 2
09
03
√ √ √ √ √ 2
09
14
√ √ √ √ √ 2
09
20
√ √ √ √ √ 2
0A
02
√ √ √ √ √ 2
0B
01
Buzzer Control Short
√ √ √ √ √ 2
0B
02
√ √ √ √ √ 2
12
01
√ √ √ √ √ 2
12
02
√ √ √ √ √ 2
14
01
√ √ √ √ √ 2
17
02
√ √ √ √ √ 1
17
03
Set RF Error Reporting
√ √ √ √ √ 1
17
CD
√ √ √ √ √ 1
18
01
√ √ √ √ √ 2
√ √ √ √ 1
√ √ √ √ 1
CM
SUB
D
01 05
CommandC’less or C’less +
CMD
Set/Get Source for
RTC/LCD/Buzzer/LED
MSR
LCDLineUSEMVProtocolNotes
Activate Transaction Command
Activate Transaction Command
Get Transaction Result
Get Configuration
Update Balance Command
Get Configurable AID
Get All AIDs
Get Configurable Group
03 0C
03 0D
Get Cash Transaction Reader Risk
Parameters
Get Cashback Transaction Reader Risk
Get DRL Reader Risk Parameters
Get Merchant Record
Get Transaction Result
Set Configuration
Set Configurable AID
Set Configurable Group
Delete Configurable Group
Set Parameter Defaults
04 0A
04 0C
04 0D
Set Configuration Defaults and Keep
Set Cash Transaction Reader Risk
Parameters
Set Cashback Transaction Reader Risk
Set DRL Reader Risk Parameters
04 11
Set Merchant Record
Cancel Transaction Command
Stop Transaction
Get ALL Reader Variables
Get Product Type
Get Main Firmware Version
Get Hardware Information
Get Module Version Information
LED Control
Buzzer Control Long
Get Serial Number
Set Serial Number
Boot up Notification
Flush Track Data
Get Full Track Data
Ping
24 01
24 02
Set CA Public Key
Delete CA Public Key
8
NEO Interface Developers Guide
Delete All CA Public Keys
√ √ √ √ 1
RTC Set Time
√ √ √ √ 1 d
√ √ √ √ 1 d
√ √ √ √ 1 d
√ √ √ √ 1 d
28
01
√ √ √ √ √ 2
29
00
Get Version Protocol 2
√ √ √ √ √ 2
29
00
√ √ √ √ √ 1
29
04
√ √ √ √ √ 2 e
29
06
√ √ 2
√ √ 2
29
08
Get Contact EMV L2 Kernel Checksum
√ √ 2
√ √ 2
29
17
√ √ 2
32
01
Get Cable Type
√ √ √ √ √ 2
32
02
√ √ √ √ √ 2
2C
01
√ √ √ √ √ 2
2C
02
√ √ √ √ √ 2
2C
03
√ √ √ √ √ 2
2C
04
√ √ √ √ √ 2
2C
05
√ √ √ √ √ 2
2C
06
Mifare Authenticate Block
√ √ √ √ √ 2
2C
07
√ √ √ √ √ 2
2C
08
√ √ √ √ √ 2
2C
09
√ √ √ √ √ 2
2C
0A
√ √ √ √ √ 2
2C
0B
Enhanced Pass-Through Command
√ √ √ √ √ 2
2C
0C
√ √ √ √ √ 2
2C
12
√ 2
2C
13
√ 2
2C
40
√ 2
2C
50
√√√√√2
2C
51
Get White List
√√√√√2
2C
52
√√√√√2
30
01
√ √ √ √ √ 2
30
02
√ √ √ √ √ 2
60
01
√ √ √ 2
60
02
√ √ √ 2
60
03
√ √ √ 2
60
04
Contact Retrieve Terminal Data
√ √ √ 2
60
05
√ √ √ 2
60
06
√ √ √ 2
60
07
√ √ √ 2
60
08
√ √ √ 2
60
09
Contact Remove CA Public Key
√ √ √ 2
60
0A
√ √ √ 2
60
0B
√ √ √ 2
√ √ √ 2
CM
SUB
D
24 03
25 01
25 02
25 03
25 04
CommandC’less or C’less +
CMD
RTC Get Time
RTC Set Date
RTC Get Date
MSR
LCDLineUSEMVProtocolNotes
Antenna Control
Get Firmware Full Version
Get USB Boot Loader Version
Get Contact EMV L2 Kernel Version
29 07
Get Contact EMV L2 Kernel Version
Detail
29 09
Get Contact EMV L2 Terminal
Configuration Checksum
Get UID of MCU
Set Cable Type
Pass-Through Mode Start/Stop
Poll for Token
Exchange Contactless Data
PCD Single Command Exchange
Get PCD and PICC Parameters
Mifare Read Blocks
Mifare Write Blocks
High Level Halt Command
Mifare ePurse Command
Enhanced Poll for Token
Get ATR
Exchange APDU Data
NFC Commands
Set White List
Clear White List
Set Baud Rate
Set Temporary Baud Rate
Contact Retrieve Application Data
Contact Remove Application Data
Contact Set Application Data
60 0C
9
Contact Remove Terminal Data
Contact Set Terminal Data
Contact Retrieve AID List
Contact Retrieve CA Public Key
Contact Set CA Public Key
Contact Retrieve CA Public Key List
Contact Retrieve Certification
Revocation List
NEO Interface Developers Guide
√ √ √ 2
60
0E
√ √ √ 2
Log
√ √ √ 2
60
10
√ √ √ 2
60
11
√ √ √ 2
60
12
√ √ √ 2
60
13
√ √ √ 2
60
14
√ √ √ 2
60
15
√ √ √ 2
60
16
Contact Set ICS Identification
√ √ √ 2
√ √ √ 2
√ √ √ 2
√ √ √ 2
81
02
√ √ √ √ √ 2
81
04
√ √ √ √ √ 2
81
0A
√ √ √ √ √ 2
84
03
√ √ √ √ √ 2
84
04
Add Entry to EMV Revocation List
√ √ √ √ √ 2
√ √ √ √ √ 2
Revocation List
√ √ √ √ √ 2
84
07
√ √ √ √ √ 2
84
08
√ √ √ √ √ 2
84
09
√ √ √ √ √ 2
84
0A
√ √ √ √ √ 2
Delete All Entries from EMV Exception
√ √ √ √ √ 2
84
0C
√ √ √ √ √ 2
List
√ √ √ √ √ 2
84
0E
√ √ √ √ √
2
84
0F
√ √ √ √ √
2
C7
2D
√ √ √ √ √ 2
C7
2E
√ √ √ √ √ 2
C7
2F
√ √ √ √ √ 2
C7
30
Get Data Encryption Key Variant Type
√ √ √ √ √ 2
√ √ √ √ √ 2
Type
√ √ √ √ √ 2
C7
36
Set Data Encryption Enable Flag
√ √ √ √ √ 2
C7
37
√ √ √ √ √ 2
C7
38
√ 2
C7
39
√ 2
C7
9A
√√√√√2
C7
9B
√√√√√2
D0
01
√√√√√2
CM
SUB
D
CMD
60 0D
60 0F
CommandC’less or C’less +
MSR
Contact Remove Certification
Revocation List
Contact Set Certification Revocation List
Contact Remove Transaction Amount
Contact Start Transaction
Contact Authenticate Transaction
Contact Apply Host Response
Contact Retrieve Transaction Result
Get Contact Reader Status
Contact Get ICS Identification
LCDLineUSEMVProtocolNotes
61 01
61 02
61 03
84 05
84 06
84 0B
84 0D
Contact LCD Display Control (Reader
send to Host)
Contact Get PIN Control (Reader send
to Host)
Contact Get MSR Data Control (Reader
send to Host)
Check DUKPT Keys
Check DUKPT Key
Get DUKPT Key Serial Number (KSN)
Get EMV Revocation Log Status
Delete All Entries for Single Index in
EMV Revocation List
Delete All Entries from EMV
Get EMV Revocation List
Get EMV Exception Log Status
Add Entry to EMV Exception List
Delete Entry from EMV Exception List
List
Get EMV Exception List
Delete an Entry from EMV Revocation
Reset Torn Transaction Log
Clean Torn Transaction Log
Set Remote Key Injection Timeout
Get Remote Key Injection Timeout
Set Data Encryption Key Variant Type
C7 32
C7 33
10
Set Data encryption Key Encryption
Type
Get Data encryption Key Encryption
Get Data Encryption Enable Flag
Set MSR Secure Parameters
Get MSR Secure Parameters
Peer To Peer Send A Message
Peer To Peer Receive A Message
Get CA Public Key Protocol 2
NEO Interface Developers Guide
D0
02
Get CA Public Key Hash Protocol 2
√ √ √ √ √ 2
D0
03
√ √ √ √ √ 2
D0
04
√ √ √ √ √ 2
D0
05
√ √ √ √ √ 2
D0
06
√ √ √ √ √ 2
√ √ √ √ √ 2
√ √ √ √ √ 2
F0
01
√ √ √ √ √ 2
F0
02
√ √ √ √ √ 2
F0
0F
√ √ √ √ √ 2
F0
F4
Configure Buttons Command
√ √ √ 2 a
F0
F5
√ √ √ 2 a
F0
F6
√
n/a √ 2
a
F0
F7
√
n/a √ 2
a
F0
F9
√
n/a √ 2
a
F0
FA
√
n/a √ 2
a
F0
FB
Turn On Yellow LED Command
√
n/a √ 2
a
F0
FC
√
n/a √ 2
a
F0
FD
√
n/a √ 2
a
F0
FE
√
n/a √ 2
a
√ √ √ √ √ 2 28
01
√ √ √ √ √ 2 0B
02
Buzzer Control Short
√ √ √ √ √ 2 0B
01
√ √ √ √ √ 2 2C
0B
√ √ √ √ √ 2 2C
0C
Exchange Contactless Data
√ √ √ √ √ 2 2C
03
√ √ √ √ √ 2 2C
05
√ √ √ √ √ 2 2C
09
√ √ √ √ √ 2 0A
02
Mifare Authenticate Block
√ √ √ √ √ 2 2C
06
√ √ √ √ √ 2 2C
0A
√ √ √ √ √ 2 2C
07
√ √ √ √ √ 2 2C
08
CM
SUB
D
D0 07
F0 00
CommandC’less or C’less +
CMD
Set CA Public Key Protocol 2
Delete CA Public Key Protocol 2
Delete All CA Public Keys Protocol 2
Get All CA Public RIDs Protocol 2
List CA Public Key IDs or RID
Protocol 2
Set PMC Status
Get PMC Status
Get Battery Level
Shut Off the Power
Get Button Configuration Command
Disable Blue LED Sequence
Enable Blue LED Sequence Command
LCD Display Clear Command
Turn Off Yellow LED Command
LCD Display Line 1 Message Command
LCD Display Line 2 Message Command
Buzzer On/Off Command
MSR
LCDLineUSEMVProtocolNotes
a ViVOpay Vendi reader only
c Not in Global Reader Lite (GRL)
d Real Time Clock only
e Only applies to devices with USB
Pass-Through Command Table
All commands in the following table use Protocol 2 formats (see Protocol 2 Formats).
Table 4: Pass-Through Command Table
Command C’less or
C’less + MSR
Antenna Control
Buzzer Control Long
Enhanced Pass-Through
Command
Enhanced Poll for Token
Get PCD and PICC
Parameters
High Level Halt Command
LED Control
Pass-Through Mode
Start/Stop
PCD Single Command
Exchange
Poll for Token
Set White List
Get White List
Clear White List
EMV Key Manager Command Tables
The preferred method of accessing the Certificate Authority public keys is to
use the following commands in the Protocol 2 format: (see Protocol 2)
Table 5: EMV Key Management – Protocol 2
Command C’less or
C’less +
MSR
Get CA Public Key
LCD Line US EMV
Protocol
CMD SUB
CMD
Notes
Delete CA Public Key
Delete All CA Public Keys
Get All CA Public RIDs
List CA Public Key IDs for
All commands in the following table use Protocol 1 formats (see Protocol 1). These commands
are included for backward compatibility. New development should use Protocol 2 commands
listed above.
Table 6: EMV Key Management - Protocol 1
CommandC’less or
C’less +
MSR
Delete All CA Public Keys
Delete CA Public Key
Set CA Public Key
LCDLineUSEMV
Protocol
CMD SUB
CMD
Notes
12
NEO Interface Developers Guide
00h
OK
01h
Incorrect Frame Tag
02h
Incorrect Frame Type
03h
Unknown Frame Type
04h
Unknown Command
05h
Unknown Sub-Command
06h
CRC Error
07h
Failed
08h
Timeout
0Ah
Incorrect Parameter
0Bh
Command Not Supported
0Ch
Sub-Command Not Supported
0Dh
Parameter Not Supported / Status Abort Command
0Eh
Command not Allowed
0Fh
Sub-Command Not Allowed
00h
OK
01h
Incorrect Header Tag
02h
Unknown Command
03h
Unknown Sub-Command
04h
CRC Error in Frame
05h
Incorrect Parameter
06h
Parameter Not Supported
07h
Mal-formatted Data
08h
Timeout
0Ah
Failed / NACK
0Bh
Command not Allowed
0Ch
Sub-Command not Allowed
Status Codes
The tables in this section define status codes for Protocol 1 and Protocol 2. Note that Protocol 1
is deprecated.
Status Codes for Protocol 1
Table 7: Protocol 1 Status Codes
Status Code Status
Status Codes for Protocol 2
Table 8: Protocol 2 Status Codes
Status Code Status
13
NEO Interface Developers Guide
0Dh
Buffer Overflow (Data Length too large for reader buffer)
0Eh
User Interface Event
10h
Need clear firmware(apply in boot loader only)
11h
Communication type not supported, VT-1, burst, etc.
Need encrypted firmware (apply in boot loader only)
12h
Secure interface is not functional or is in an intermediate state.
13h
Data field is not mod 8
14h
Pad 0x80 not found where expected
15h
Specified key type is invalid
16h
Could not retrieve key from the SAM (InitSecureComm)
17h
Hash code problem
18h
Could not store the key into the SAM (InstallKey)
19h
Frame is too large
1Ah
Unit powered up in authentication state but POS must resend the
1Bh
The EEPROM may not be initialized because SecCommInterface does not
make sense
1CH
Problem encoding APDU
20h
Unsupported Index (ILM)
21h
Unexpected Sequence Counter in multiple frames for single bitmap (ILM)
Length error in data returned from the SAM (Key Mgr)
22h
Improper bit map (ILM)
23h
Request Online Authorization
24h
ViVOCard3 raw data read successful
25h
Message index not available (ILM)
26h
Version Information Mismatch (ILM)
27h
Not sending commands in correct index message index (ILM)
28h
Time out or next expected message not received (ILM)
29h
ILM languages not available for viewing (ILM)
2Ah
Other language not supported (ILM)
31h
Request Online PIN
41h – 4Fh
Module-specific errors for Key Manager
50h
Auto-Switch OK
51h
Auto-Switch failed
60h
Data not exist
61h
Data Full
62h
Write Flash Error
63h
Ok and have next command
70h
Antenna Error
Status Code Status
InitSecureComm command
Module-Specific Status Codes1
SAM Transceiver error – problem communicating with the SAM (Key Mgr)
ViVOcomm activate transaction card type (ViVOcomm)
1
Status codes in this range are “module-specific” so that their values can be re-used by different modules. The
meaning of these codes may depend on which command is being issued. An exception is 23h, which is used generally.
14
NEO Interface Developers Guide
80h
Use another card
81h
Insert or swipe card
90h
Data encryption Key does not exist
91h
Data encryption Key KSN exhausted
00h
No Error
None.
Out of Sequence
Command
Reader did not receive commands in the correct order. Correct the Terminal
application to send serial commands in the correct sequence.
The contactless transaction failed.
If the transaction amount is zero and the terminal is “an offline only terminal”
The transaction has failed.
transaction on the other interface.
Status Code Status
Note for Kiosk III:
If antenna is disconnected when Activate Transaction(02-01)
command is not received, reader will keep beeping until the
antenna is connected correctly.
If Activate Transaction(02-01) command is received, and
during the polling time, antenna is disconnected, reader will
waiting to the end of polling time, and return status code
08h(Time Out), then keep beeping until the antenna is
connected correctly.
Reader will response 70h as status code once Activate
Transaction(02-01) command is received when antenna is
disconnected.
Error Codes
Table 9: Error Codes
Error
Code
01h
02h
03h
04h
Description Reason for Error and Suggested Error Handling
Go to Contact
Interface
Transaction
Amount is Zero
Go To Other
Interface
If the reader supports a contact interface, advise the user to complete the
transaction on the contact interface.
Previously, this error code was used if the reader supported another
interface (beside the contact interface). Integrators should use error code
04h Go to Other Interface instead. The previous use has been deprecated.
then reader needs to terminate the transaction.
If the reader supports another interface, advise the user to complete the
15
NEO Interface Developers Guide
The transaction has failed.
interface.
The transaction has failed.
Card returned SW1SW2 not equal to 9000 hex. Value of the SW1SW2 bytes from
21h
Collision Error
There was more than one contactless card in the reader’s range.
Amount Over
Maximum Limit
The Transaction Amount is greater than Terminal Contactless Transaction Limit
(FFF1).
If the Transaction Amount is greater than the Balance on the card but is less
acquirer to format an online authorization request.
Card
Error
If the card is not supported by the reader according to the value of parameter
This error code is sent to the terminal if the current date of the reader is
qVSDC cards.
Card presented to the reader is of a type that is not supported by the reader.
gnized by the
reader.
Error
Code
05h
06h
20h
Description Reason for Error and Suggested Error Handling
Go To Nearby
Interface
Go To MagStripe
Interface
Card returned
Error Status
If there is another nearby contact interface, advise the user to complete the
transaction on the nearby contact interface. This situation might be a case
where there are multiple pay stations, but only one of them has a contact
If the reader has a MagStripe interface, advise the user to complete the
transaction using the MagStripe interface.
the Card is returned in the Data portion of the Response Frame. Details of what
the SW1SW2 codes mean for each RF State are Card dependent and are out of
the scope of this document.
How the terminal handles this error depends on when the error occurs in the
transaction flow. The RF State Code (see section on RF State Codes) indicates
the transaction state when the error occurred. Suggested error handling for
individual RF State Codes is given below:
RF State Code = PPSE:
If RF State Code = SELECT:
If RF State Code = GPO:
If RF State Code = READ RECORD:
If RF State Code = GET DATA (Ticket):
If RF State Code = GET DATA (Ticketing Profile):
If RF State Code = GET DATA (Balance):
If RF State Code = PUT DATA (Ticket):
The terminal can retry the transaction or abandon it.
If RF State Code = GEN AC:
For Credit transactions:
The terminal can retry the transaction or abandon it.
22h
23h
24h
25h Card Blocked
26h Card Expired
27h
Request Online
Authorization
Communication
Unsupported
Card
than the Terminal Contactless Transaction Limit (FFF1), the reader sends this
error code back to the terminal along with other information needed by the
A communication error occurred while interacting with the card. An example
might be the card was removed from the field.
Application Capability (FFF3) this error code is sent to the terminal.
greater than the expiration date of the card. This status code is only valid for
This could be due to presenting a card with an AID that is not reco
16
NEO Interface Developers Guide
Card was removed from the field or there was a Communication Error
Data Element
Missing
A mandatory/required data element was missing from the card.
Card Generated
The card declined the transaction by sending an AAC instead of a TC.
This error code would be returned if the card generated an ARQC and the
DECLINED.
Card did not indicate support for the correct authentication method and date
SDA/DDA/CDDA
Public Key)
Data Authentication failed due to missing CA Public Key.
Key problem is corrected via Key Management commands.
Data Authentication failed due to a problem in recovering the Issuer Public Key
SDA Failed
(SSAD)
Data Authentication failed during SSAD. Retrying the transaction does not
correct the error.
DDA/CDDA
Data Authentication failed during attempted recovery of ICC Public Key.
DDA/CDDA
Data Authentication failed during Dynamic Signature Verification. Retrying the
Processing
The Processing Restrictions step as defined in EMV Specifications failed. This
Error
Code
30h
41h
42h
Description Reason for Error and Suggested Error Handling
preventing the card response from reaching the reader. How the terminal
handles this error depends on when in the transaction the error occurred. The
RF State Code (see section on RF State Codes) indicates the transaction state
when the error occurred. Suggested error handling for each RF State Code is
given below:
RF State Code = PPSE:
The terminal can retry the transaction or abandon it.
If RF State Code = SELECT:
Card did not
respond
AAC
The terminal can retry the transaction or abandon it.
If RF State Code = GPO:
The terminal can retry the transaction or abandon it.
If RF State Code = READ RECORD:
The terminal can retry the transaction or abandon it.
If RF State Code = GEN AC:
For Credit transactions:
The terminal can retry the transaction or abandon it.
If RF State Code = GET DATA (Ticket):
If RF State Code = GET DATA (Ticketing Profile):
If RF State Code = GET DATA (Balance):
If RF State Code = PUT DATA (Ticket):
43h
44h
50h
51h
52h
53h
54h
55h
Card Generated
ARQC
SDA/DDA Failed
(Not Supported
by Card)
Failed (CA
SDA/DDA/CDDA
Failed (Issuer
Public Key)
Failed (ICC
Public Key)
Failed (Dynamic
Signature
Verification)
Restrictions
Failed
terminal/reader was configured as “Offline Only”; therefore the card was
authentication failed. For Visa, when DDA is required, the card must indicate
support for DDA in AIP. If this support is not indicated then the transaction fails
and this error code is returned.
Retrying the transaction does not correct the error until the missing CA Public
from the card data. Data on the card may be incorrect or the reader has the
wrong CA Public Key.
The transaction continues to fail until the Issuer Public Key and the CA Public
Key are correct.
Retrying the transaction does not correct the error.
transaction does not correct the error:
At this point, the amount has been deducted from the Card Balance.
could be due to incorrectly set configuration. Retrying the transaction does not
correct the error until the EMV configuration is corrected.
17
NEO Interface Developers Guide
Terminal Risk
(TRM) Failed
The Terminal Risk Management step as defined in EMV Specifications failed.
does not correct the error until the EMV configuration is corrected.
Cardholder
Failed
The Cardholder Verification step as defined in EMV Specifications failed. This
correct the error until the EMV configuration is corrected.
Terminal Action
The Terminal Action Analysis step as defined in EMV Specifications failed. This
SD Memory Error
This error is reported only when trying to retrieve Transaction Logs. This error
is never reported during a transaction.
This is a generic / general error that is reported when a more specific reason
Torn
An error occurred while attempting to clean the torn transaction log. This
No Merchants
configured
This error usually occurred while MerchantID is empty.
TLV Parse
This error usually occurred while fail to TLV parsing card response data.
Merchant Data
Error
This error usually occurred while no merchant data returned from card.
System Memory
This error usually occurred while fail to read or write system memory.
Application Skip
This error usually occurred while configuration isn’t consistent on whether or
Application
Version Error
This error usually occurred while application version number is incorrect.
Error
Code
56h
57h
58h
61h
62h Generic Error
73h
80h
81h
82h
Description Reason for Error and Suggested Error Handling
Management
Verification
Analysis (TAA)
Failed
Transaction Log
Error
have been
Failure
This could be due to incorrectly set configuration. Retrying the transaction
could be due to incorrectly set configuration. Retrying the transaction does not
could be due to incorrectly set configuration. Retrying the transaction does not
correct the error until the EMV configuration is corrected.
for the error is not known.
might occur if the reader could not read the time and date from the real time
clock.
83h
84h
85h
Error
Error
not to skip payment application
If an error occurs during a transaction and the terminal determines that the reader must
perform exception processing, then the terminal must retry the transaction until the transaction
has been completed successfully or the terminal decides to abort it. The retries must be
continued even if successive transactions fail with conditions that do not require exception
processing. This must be done to allow the reader to complete exception processing (even if
there are failures during exception processing).
Under certain conditions, such as when a customer walks away or there is a problem with the
card, the terminal may want to abort the retries even if the reader has not been able to
complete exception processing. How and when the terminal stops retrying is out of the scope of
this document.
RF State Codes
For some Error Codes, the RF State Code indicates the exact Reader-Card command that failed.
This helps determine the exact place where the failure occurred.
18
NEO Interface Developers Guide
00h
None
RF State Code not available
01h
PPSE
Error occurred during PPSE command
02h
SELECT
Error occurred during SELECT command
03h
GPO
Error occurred during GET PROCESSING OPTIONS command
04h
READ RECORD
Error occurred during READ RECORD command
05h
GEN AC
Error occurred during GEN AC command
06h
CCC
Error occurred during CCC command
07h
IA
Error occurred during IA command
08h
SDA
Error occurred during SDA processing
09h
DDA
Error occurred during DDA processing
0ah
CDA
Error occurred during CDA processing
0bh
TAA
Error occurred during TAA processing
0ch
UPDATE RECORD
Error occurred during UPDATE RECORD command
Error occurred during GET DATA command to retrieve the
Ticket
Error occurred during GET DATA command to retrieve the
Error occurred during GET DATA command to retrieve the
13h
GET DATA (All)
Error occurred during GET DATA command to retrieve all data
Error occurred during PUT DATA command to retrieve the
Ticket
Table 10: RF State Codes
State
Code
10h GET DATA (Ticket)
11h GET DATA (Ticketing Prof)
12h GET DATA (Balance)
20h PUT DATA (Ticket)
RF State Description
Ticketing Profile
Balance
19
NEO Interface Developers Guide
Baud Rate
19200 bps (default value for all but Vendi)
Data Bits
8
Stop Bits
1
Parity
None
Out CTS Flow
Disabled
Out DSR Flow
Disabled
DTR Control
Disabled
RTS Control
Disabled
XON/XOFF
Disabled
Flow Control
None
3.0 Serial Communication Interfaces
This section discusses the physical interfaces through which the terminal
communicates with the ViVOpay reader. All of the readers have an RS232/ USB
Serial Interface.
Note: Please don't plug in/out serial communication interfaces during the device power on,
that might cause unstable behavior, The reader is not certified to work properly.
RS232 Serial Interface
Port Settings
To communicate with the ViVOpay reader, set the terminal’s serial communication parameters
to the values listed below.
Table 11: Serial Port Settings
Parameter Value
9600 bps (default value for Vendi)
Basic Communication
The ViVOpay reader and the POS terminal communicate by exchanging Command-Response
Frames. The terminal always initiates communication by sending a Command Frame and
ViVOpay responds by sending a Response Frame. What frames are exchanged depends on the
command and the protocol used. There are two command/response protocols. Protocol 1 uses
separate Data Frames and ACK/NACK responses. Protocol 2 is simplified by including data within
the Command/Response Frames.
Timeouts
The ViVOpay reader does not timeout while trying to receive a command. There is no maximum
inter-character delay. As a result, command frames with length errors may appear to “hang”.
A subsequent command that does not contain a length error can be received successfully.
20
NEO Interface Developers Guide
Once the ViVOpay reader has received a command, the time required to respond to the terminal
varies from command to command, depending on what processing is required.
During a transaction, the Activate (02-01) command may specify a timeout value. The reader
will continue to poll until it starts to process a transaction, or the specified timeout period has
elapsed. The transaction may not complete within the timeout period.
USB HID Interface
ViVOpay readers can communicate with the terminal using a RS232 Serial link and/or a USB HID
link.
All ViVOpay commands sent over the USB HID interface are encapsulated in the following
protocol.
Note: The maximum length for any command or response is 1500 bytes since this is the size
of the command FIFO.
HID Report Format
All HID reports sent to or received from the ViVOpay are 64 bytes long. The first byte of the
frame is a single byte Report ID number. The remaining 63 bytes carry the report payload. Any
reports with less than 63 bytes of command or response data are padded with NULL bytes (00h)
to make them 63 bytes long.
ViVOpay commands and responses are sent over the USB bus in 63-byte frames. Byte ordering in
the USB frame is the same as if the command were sent over the serial port. In other words, the
“ViVOtech2” command tag always starts in the second byte of the first report containing the
command, just after the Report ID.
There are four defined report IDs used in this protocol: 1, 2, 3, and 4. Undefined report IDs are
silently ignored.
3.1.1.1 Report ID 1
ID 1 frames are used when a complete command or response is 63 bytes or less. As soon as the
host or device receives a Report ID 1 frame, it should parse the report data to extract the
command or response.
3.1.1.2 Report ID 2
ID 2 frames are used when a complete command or response is more than 63 bytes long and
cannot fit in a single report. The Report ID 2 frame contains the first 63 bytes of the command.
So the “ViVOtech2” command tag is only present in Report IDs 1 or 2. The Report ID 2 frames
always contain 63 bytes of valid data with no padding bytes since the command is more than 63
bytes long.
21
NEO Interface Developers Guide
01
“V”
“i”
“V”
“O”
“t”
“e”
“c”
“h”
“2”
00
18
01
00
00
B3
CD
01
“V”
“i”
“V”
“O”
“t”
“e”
“c”
“h”
“2”
00
18
00
00
00
FA
83
3.1.1.3 Report ID 3
ID 3 frames are continuation frames. For any command or response that is more than 126 bytes
long, the middle frames of the response are sent with a report ID of 3. Any frame received with
a report ID 3 is ignored unless it is preceded by a report with an ID of 2 or 3. The Report ID 3
frames should always contain 63 bytes of valid data with no padding bytes.
3.1.1.4 Report ID 4
ID 4 frames mark the end of multi-report commands. Any padding needed to make the command
a multiple of 63 bytes should be placed in this report. Any frame received with a report ID 4 is
ignored unless it is preceded by a report with an ID of 2 or 3. As soon as the host or device
receives a valid Report ID 4 frame, it should parse the report data to extract the command or
response.
The exception to the rule of only adding pad bytes to reports with ID of 1 or 4 is debug test
frames. Surrounding a command with pad bytes to make the command span multiple reports is
valid for testing the multi-report handling of the host and device software. This must be avoided
in deployed code since it slows command processing times.
Sample Single Report Command and Response
Ping Command Report
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
The pad bytes are marked with blue text in this example.
Ping Response Report
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
The pad bytes are marked with blue text in this example.
The serial port version of this command and response would be: (Data bytes in Hex format)
1. Any report with ID of 1 is processed as soon as it is received. All other unprocessed reports
are discarded.
2. Any report with an ID of 2 causes all other unprocessed reports to be discarded.
3. Any report with an ID of 3 is discarded unless the previous report had an ID of 2 or 3. If the
previous report ID 3 was discarded then this report also is discarded.
4. Any report with an ID of 4 is discarded unless the previous report had an ID of 2 or 3. If the
previous report had an ID of 3 and was discarded then this report also is discarded. If the
report ID 4 frame is retained, then all retained reports are processed.
Processing of reports means passing the concatenated Data Frames contained in the reports to
the command handler. The report ID bytes must be discarded when concatenating the report
Data Frames.
An alternate way to handle the rules for report IDs 3 and 4 is to set a flag when a report with an
ID of 2 is received and reset the flag when a report with an ID of 1 is received or an ID of 4 is
finished processing. Reports with IDs of 3 or 4 are only kept when the flag is set.
24
NEO Interface Developers Guide
Error Handling at Command Level
The error handling at the command level remains as it is currently implemented for serial port
commands.
Incomplete commands are silently ignored when the reception times out. This does not occur for
commands received over the USB HID interface unless a complete report is dropped, resulting in
missing data for the command. The normal USB handshaking is expected to prevent this.
A bad CRC value for the encapsulated command returns a bad CRC response to the command.
An unknown command or subcommand code results in an unknown command or unknown
subcommand Response Frame.
If the host does not receive any response to a command it should retry the command.
If the host receives a bad CRC response to a command it should retry the command. This is not
expected to occur when using USB since it includes a layer of error handling.
25
NEO Interface Developers Guide
Frame
Sub-
See
Commands
See
Commands
See
Commands
See
Commands
Frame
Type
4.0 ViVOpay Communication Protocols
There are two main types of protocols: Protocol 1 and Protocol 2. Protocol 2 is the preferred
method of communicating between the terminal/POS and a ViVOpay reader. Protocol 1 is
retained for backward compatibility with older terminal/POS applications.
In addition to the two main protocols, there are modes of communication that are extensions of
the protocols. These modes provide flexibility in the control of the ViVOpay reader:
Pass-through mode allows the terminal/POS application to interact directly with the
contactless ISO 7816 cards.
Burst Mode is a legacy mode intended for use with MagStripe cards.
Protocol 1 (Deprecated)
Protocol 1 is retained for backwards compatibility with existing terminal applications.
Whenever possible, Protocol 2 should be used.
Protocol 1 is not supported by Kiosk III/ Vendi.
Communication between ViVOpay and the terminal uses command-response pairs. The terminal
sends one or more Command Frames to the reader and waits for one or more response frames. A
simple command requires a single Command Frame with a single Response Frame. More complex
commands may involve a number of Command/Response Frames being exchanged. This subsection defines the different types of frames and their format.
Details of specific commands and the order in which different frames are exchanged are
documented in a later sub-section.
There are five types of frames – Command, Data, ACK, NACK and Special Frames. The format of
each type of frame is given below.
A NACK Frame has the same fields as an ACK Frame unless specified differently for a specific
command. The only difference between a NACK and ACK Frame is that the NACK Frame always
contains an Error Status. When ViVOpay returns a NACK Frame, the terminal must consider the
command terminated. The Data1 and Data2 fields are not used with a NACK, unless specified
differently by a command.
Special Frames
Frame Tag
Frame
Type
ViVOtech\0 ‘S’
Data1 Data2 Data3 Data4
Individual
Individual
Individual
Individual
MSB if from
ViVOpay.
LSB if from
Terminal.
LSB if from
ViVOpay.
MSB if from
Terminal.
Direction: Both ways (depending on command).
Protocol 2
There are two types of frames for Protocol 2: Command Frames and Response Frames. The
general format of these frames is given below.
Command Frames
Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13
& Protocol
Version
Command
Sub-
Command
Length
(MSB)
Length
(LSB)
Data CRC (LSB) CRC (MSB)
Byte 14+n Byte 15+n
27
NEO Interface Developers Guide
Byte 14 … Byte
Header Tag
Data
Data
ViVOtech2\0
Response Frames
Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13
& Protocol
Version
Command
Status
Code
Length
(MSB)
Length
(LSB)
14+n-1
Data CRC (MSB) CRC (LSB)
Byte 14+n Byte 15+n
Pass-Through Mode (Protocol 2)
Some versions of ViVOpay firmware provide a Pass-Through mode which can be used by a
terminal to communicate directly with an RF card. This feature allows a terminal to add support
for RF cards that are not directly supported by the ViVOpay firmware. Pass-through is actually a
special mode of the ViVOPay Protocol 2.
This section describes the Pass-Through protocol and frames for the ViVOpay Serial Interface
Protocol.
Note: Pass-Through commands could only be executed in Pass-Through Mode. Other
commands (non-pass-through) will return an error in Pass-Through Mode with the exception
of Ping, Get Version, and Get Serial Number commands, which will work in both modes.
Basic Pass-Through Operation
Pass-Through mode allows a terminal to communicate directly with an ISO 14443 Type A or Type
B Proximity Integrated Circuit Card (PICC) without the ViVOpay firmware knowing the specifics
of the application or data present on the PICC. The Pass-Through mode supports a set of basic
commands that allow polling and selection of a PICC and sending/receiving low level
information to/from the PICC. This allows a terminal to communicate with (and support) cards
with applications and data that are not supported by a System AID. Individual Pass-Through
commands are described in the sections that follow.
The Pass-Through Mode subcommands are grouped into three categories
General Pass-Through Set Up Commands
These commands have to be used whether you are using high level communication with the
PICC or low level communication. These commands include:
Pass-Through Mode Start/Stop
Poll for Token
High Level PICC Communication Commands
If a PICC supports ISO 14443-4 Protocol, then these high level commands can be used to send
application level APDUs to the PICC and receive the PICC responses. The Send / Receive
commands must always be used in pairs, unless the send command returns an error. The
high level commands include: Exchange Contactless Data and commands to interact with
Mifare cards.
28
NEO Interface Developers Guide
Byte 14 …
Byte
Byte
Header Tag
Data
Data
See
Commands
See
Commands
See
Commands
See
Commands
See
Commands
Byte 14 …
Byte 14+n-1
Byte
15+n
Header Tag
Data
Data
See
Commands
See
Commands
See
Commands
See
Commands
Low Level PICC Communication Commands
These low level commands can be used to send raw ISO 14443-3 data to the PICC and
receive the PICC responses. The Send/Receive commands must always be used in pairs,
unless the send command returns an error. In addition to this, these commands can also be
used to get and set some PCD and PICC parameters. The low level commands include.
PCD Single Command Exchange
Get PCD and PICC Parameters
The terminal must periodically instruct the ViVOpay reader to poll for cards. Whenever the
ViVOpay reader detects a card in the RF field, it tries to carry out ISO 14443 Layer 3 and Layer 4
negotiations and report the card type found. In the Pass-Through mode, ViVOpay does not
attempt to check whether the card application is one that it supports.
Once a card is detected, the terminal may use one of the Pass-Through commands to
communicate with the card at the application level and read the data.
Additional Pass-Through commands allow a terminal to use low-level features provided by the
ViVOpay reader, such as controlling the RF antenna (field).
Pass-Through Command Frame
Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13
& Protocol
Version
ViVOtech2\0
Command
Individual
SubCommand
Individual
Length
(MSB)
Individual
Length
(LSB)
Individual
Byte 14+n-1
Data
Individual
14+n
CRC
(MSB)
CRC
(LSB)
Note: The Byte 14+n and Byte 15+n CRCs are the reverse of standard Protocol 1 Format and
Protocol 2 Format Command Frames. Within each Pass-Through Frame Type, the CRC is
stored as big-endian number i.e. higher byte (MSB) first.
Pass-Through Response Frame
Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13
& Protocol
Version
ViVOtech2\0
Command
Individual
Status
Code
Individual
Length
(MSB)
Individual
Length
(LSB)
Individual
Data CRC (MSB)
See Individual
Commands
Byte 14+n
CRC
(LSB)
15+n
Suggested Sequence for Pass-Through Commands
Put the ViVOpay reader in Pass-Through Mode by sending a Start Pass-Through Mode command.
29
NEO Interface Developers Guide
Periodically request ViVOpay to poll for cards by sending the Poll for Token command. If no
card is found within the time specified, the reader ViVOpay indicates this with a timeout error.
If a card is found, it returns the card type and serial number.
At this point ViVOpay already has gone through the anti-collision, selection and
activation (if required) sequence as per ISO 14443 A/B, and the card is ready for
communication. Depending on the Card Type, use the appropriate Pass-Through
commands to communicate with the card. Card Types and the applicable
commands are given below.
For ISO 14443-4 Compliant Type A or Type B Cards
Use the Exchange Contactless Data command to communicate with the Card at the
application level.
For ISO I4443 Type A or Type B Cards that are not ISO 14443-4 Compliant (i.e.
ISO 14443-3 Compliant Cards), Mifare Type A, and Mifare Ultralight Type A
Low Level Commands: Use the PCD Single Command Exchange command to communicate
with the Card. If required, use the Get PCD and PICC Parameters command for greater
control.
High Level Commands (For Mifare Cards Only): Or use the Mifare Authenticate Block, Mifare
Read Blocks, and Mifare Write Blocks commands to communicate with a Mifare Standard (1K)
or Mifare Ultralight Card.
For Card Type None
The Card has either been removed from the Field, or there was an error in trying to connect
to the card, or the card is not ISO 14443-3 or 14443-4 compliant. No need to communicate
with the card.
When done communicating with the card, the terminal is responsible for handling the
termination sequence. The terminal may use the Antenna Disable/Antenna Enable commands to
turn the RF field off and then on again.
The terminal can instruct the ViVOpay reader to terminate the Pass-Through Mode and start
normal polling for cards by sending a Stop Pass-Through Mode command.
Note: If the terminal communicates with the card in the Pass-Through mode and finds that it
does not support the card, then the terminal is responsible for handling the termination
sequence with the card. The terminal may keep sending Poll for Token commands to the
ViVOpay reader until the card has been removed from the field, replaced by another card
(different serial number), or a timeout has occurred before it terminates the Pass-Through
mode. The terminal may choose to terminate the Pass-Through mode as soon as it is reading
is complete.
Care should be taken to ensure that the ViVOpay reader is operating in the correct mode
(Auto-Poll or Poll on Demand) when returning from Pass-Through mode. If the card is not
removed from the field fast enough, and the reader is in Auto Poll mode, the terminal may
end up doing multiple reads of the same card.
Auto-Switch to Pass-Through Mode
The reader can be set to switch automatically out of polling (either Poll on Demand or Auto-Poll)
and enter Pass-Through Mode. This allows the POS application to send Pass-Through Mode
commands directly to the card APDU without explicitly setting the reader in Pass-Through Mode.
30
NEO Interface Developers Guide
Byte 14 …
Auto-Switch can be enabled globally and for configurable User AIDs. This feature is not
supported for System AIDs.
If the Auto-Switch feature is enabled, the reader switches to Pass-Through Mode under the
following conditions:
Card application is not recognized – Global Auto-Switch is enabled
Card AID is not recognized – Global Auto-Switch is enabled
Mifare card is recognized but fails – Global Auto-Switch is enabled
DesFire card is recognized but fails – Global Auto-Switch is enabled
Card AID is recognized – User AID Auto-Switch is enabled
There are two ways to use the auto-switch feature: Global Auto-Switch or User AID Auto-Switch.
The DF7C TLV sets the feature globally using the Set Configuration command (Global AutoSwitch) and the Set Configurable AID sets the feature for user AIDs (User AID Auto-Switch). You
can use both at the same time if you wish, but they do different things so do not confuse the
two. In general, one is used for MiFare, DesFire or unrecognized cards. The second is ONLY used
for a specific User AID. The Auto-Switch setting in a User AID overrides the Global Auto-Switch
setting.
Once the Auto-Switch feature is activated, the POS application must handle error recovery and
exit Pass-Through Mode with the Pass-Through Mode Start/Stop command (2C-01) when done.
The reader returns to previous polling mode or idle state. For example, if you were exiting PassThrough mode and resuming Auto Poll mode, the POS must make sure the PICC has left the field
before terminating Pass-Through mode. Otherwise Auto Poll will start and the PICC will be read
by the reader again as a brand new transaction!
Auto-Switch is invoked if Global Auto-Switch is enabled AND one of the above cards is tapped on
the reader during a transaction.
If successful, the reader returns a Response Frame containing some of the following items:
Error or Status condition
UID
PICC card type detected
Byte 0-9 Byte 10 Byte 11 Byte 12 Byte 13
Byte 14+n-1
Byte 14+n Byte 15+n
31
NEO Interface Developers Guide
Header Tag
Version
Data
(MSB)
Data
(LSB)
See Status
Code Table
Card
1
Type of Card Found (or No Card Found).
07h ISO 14443 Type A and Mifare (NFC phone)
Serial
0 or
Serial Number (or the UID) of the PICC. Length depends on the Card
& Protocol
ViVOtech2\0 50h or 51h
Command Status Code
Length
Length
Data CRC (MSB)
Table 12: Poll for Token Data Field for Response Frame (Status Code is OK)
Data Field Length
(bytes)
Number
Variable
Description
00h None (Card Not Detected or Could not Activate)
01h ISO 14443 Type A (Supports ISO 14443-4 Protocol)
02h ISO 14443 Type B (Supports ISO 14443-4 Protocol)
03h Mifare Type A (Standard)
04h Mifare Type A (Ultralight)
05h ISO 14443 Type A (Does not support ISO 14443-4 Protocol)
06h ISO 14443 Type B (Does not support ISO 14443-4 Protocol)
Detected. If no card was detected, then a Serial Number is not returned.
CRC
(LSB)
The Response Frame is returned asynchronously if the reader is in Auto Poll.
Once Auto-Switch is invoked the reader remains in Pass-Through Mode with the RF antenna on.
The POS application must handle error recovery and exit Pass-Through Mode when done with the
Pass-Through Mode Start/Stop command (2C-01). The reader returns to previous polling mode or
idle state.
To enable Global Auto-Switch, send the Set Configuration command (04-00) with a 01h value for
the DF7C TLV.
4.1.1.2 User AID Auto-Switch
You can use User AID Auto-Switch to process:
a recognized User AID that is selected during PPSE
a recognized User AID that is selected during Trial & Error
Auto-Switch is invoked if User AID Auto Switch is enabled for an AID and a PICC is initiating a
transaction with this AID selected.
If successful, the reader returns a response frame containing some of the following items:
Error or Status condition
AID
PICC card type detected
The response frame is returned asynchronously if the reader is in Auto Poll.
32
NEO Interface Developers Guide
Once Auto-Switch is invoked the reader remains in Pass-Through Mode with the RF antenna on.
The POS application must handle error recovery and exit Pass-Through Mode when done with the
Pass-Through Mode Start/Stop command (2C-01). The reader returns to previous polling mode or
idle state.
To enable Global Auto-Switch, send the Set Configurable AID command (04-02) with a 01h value
for the DF7C TLV.
RF On/Off States for Pass-through Commands
Sending a Stop Pass-through command will turn off the RF Antenna. Otherwise,
the antenna is under the direct control of the POS/Terminal in Pass-through
mode.
Burst Mode
In Burst Mode, a Data Frame is sent from the ViVOpay reader to the terminal each time a card is
read successfully. The ViVOpay keeps polling for the supported RF Cards. Whenever the ViVOpay
reader detects a card in the RF Field, it tries to read the card data. If the read operation is
successful, the ViVOpay reader sends a “Card Payload” frame that contains the Status,
Application Type, Card Data and CRC to the terminal through its serial port. Detailed
information on the frame format is given in the sections ahead. The terminal does not have to
send any command or data to the ViVOpay reader.
Note: The reader must be in Auto Poll mode for Burst Mode to be used successfully. Setting
Burst Mode on for other configurations can lead to unexpected results.
Burst mode is intended to be used with magnetic stripe card data only.
Burst Mode is enabled using the Set Configuration command and the FFF7 tag. There are two
options for Burst Mode: Always On (FFF7 = 01) and Auto Exit (FFF7 = 02). When the reader is in
Burst Mode Always On, it ignores Activate Transaction and Get Full Track Data commands and
remains in Burst Mode. When Burst Mode Auto Exit is enabled, the reader ends Burst Mode (FFF7
= 00) and processes these command. Burst Mode then remains off until it is reactivated with a
new Set Configuration command with tag FFF7 set to 01 or 02.
When the Burst Mode is enabled, the standard ViVOpay Serial Interface is not disabled entirely.
Commands not related to transactions, such as Ping, can still be sent to the ViVOpay reader. In
the Command-Response Mode, the terminal sends a command to the ViVOpay reader and the
ViVOpay reader responds in a pre-defined manner. These commands allow a terminal to use
features provided by the ViVOpay reader, such as checking for the presence of the ViVOpay
reader by pinging it, retrieving the firmware version number, etc.
Burst mode is not allowed when MSR/MSD or EMV encryption is enabled and Data encryption Key
exists.
When MSR/MSD or EMV encryption is enabled and Data encryption Key exists, burst mode is
always OFF. In this condition, reader will turn the burst mode to be OFF automatically. If user
wants to make burst mode to be ON/AUTO EXIT through “Set Configuration (04-00)” command,
reader will keep burst mode to be OFF.
Note: Burst mode is disabled for SRED devices.
33
NEO Interface Developers Guide
01h
Payload Frame
02h
Status Frame
03h
Payload Frame for VISA MSD 202 CVN17 type transaction
55h
NACK
0Eh
Asynchronous Event Frame
Byte 0
Byte 1
Byte 2
Byte n-1
Byte n
Frame Type
=01h
Status
=00h
Application
Type
Track 1 Field
(if found)
Track 2 Field
(if found)
CRC
(MSB)
CRC
(LSB)
ViVOpay Burst Mode Frames
The table below describes the Burst Mode frame types. The frame type appears
in Byte 0 of a Burst Mode packet.
Table 13: Burst Mode Frames
Frame type Description
4.1.1.3 Payload Frame (On Successful Read)
On successful read ViVOpay sends a Card Payload frame to the terminal that always contains
Frame Type, Status and Application Type. The Status always shows Success (=00). The
Application Type can have any of the values defined in the “Data Definitions” section. This is
followed by the track data. Only those tracks the reader was able to read from the Card are
sent. Each Track begins and ends with its Start and End Sentinel. After the Track Data, the
reader sends two CRC bytes. The details of the CRC algorithm used are given in the “CRC
Calculation” section.
Example 1: Payload, Card Read Successfully, Application Type Visa, Both Track 1 and Track 2
Present
If Track 1 is available, then this field gives the length of the Track 1
data that follows. If Track 1 is not available, then a Length of 00h is
Format: Binary
Track 1 Data
Variable
Track 1 Data (if available).
Track 2 Length
1
If Track 2 is available, then this field gives the length of the Track 2
ength of 00h is
Track 2 Data
(MagStripe card)
Variable
Track 2 Data (if available).
Format: ASCII (no null terminator)
DE055 (Clearing
1
If a Clearing Record (DE 055) field is available, then this field is 01h.
TLV DE 055 (Clearing
Variable up to
DE 055 data (if available) as a TLV data object encoded with Tag
‘E1’. The DE 055 data is the same data as is included in the Clearing
Tag: E1 Format: b1...126 variable.
TLV App PAN
Variable, up to
Application Primary Account Number (PAN) as a TLV object. This
TLV PAN Seq Number
4
PAN Sequence Number as a TLV object.
TLV Application
6
Application Expiration Date as a TLV object.
Tag: 5F24 Format: n6, BCD encoded on 3 bytes (YYMMDD)
TLV Application
Variable, up
Application Label as a TLV object.
Tag: 50 Format: an variable length up to 16 bytes
4.1.1.4 Payload Frame for CVN17 Enabled Readers
For MSD-only readers that require an online cryptogram (i.e. TTQ = ‘80 80 00 00’) MSD v1.4.2
and v2.0.2 transactions return the burst mode payload frame is described as follows (please
refer to Visa Contactless Payment V. 2.0.2 Including Additions and Clarifications 3.0 – August
2007):
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4
Frame
Type
03h
Status
Code
below
Applicatio
n Type
Applicatio
n Type
Length
(MSB)
See Data Tables
Length
(LSB)
5+n-1
Data CRC (MSB)
Byte 5+n Byte6+n
CRC
(LSB)
If Status Code is OK then the format and contents of the data field in the Response Frame are
given in the following table. All TLV lengths in the TLV include the Tag and Length bytes.
Table 14: Payload Frame with Cryptogram Data Format and Content When Status OK
Data Item Length (bytes) Description
returned.
(MagStripe card)
Format: ASCII (no null terminator)
data that follows. If Track 2 is not available, then a L
returned.
Format: Binary
Record) Present
Record)
Expiration Date
Label
128
12
to 18
If there is no Clearing Record (DE 055) field, then this field is 00h.
Record.
field is present only if the DE 055 object is present.
Tag: 5A Format: cn variable length up to 19 (10 bytes)
This field is present only if the DE 055 object is present.
Tag: Format: n2, BCD encoded on 1 bytes
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
35
NEO Interface Developers Guide
TLV CVM Results
6
Cardholder Verification Method (CVM) Results as a TLV object.
TLV Data
5
Data Authentication Code as a TLV object.
TLV ICC Dynamic
11
ICC Dynamic Number as a TLV object.
Tag: 9F4C Format: b8
TLV Track 1
(M/Chip card)
81
Track 1 Equivalent Data as a TLV object.
Tag: 56 Format: b79
TLV Transaction
4
Transaction Status Information as a TLV object.
Tag: 9B Format: b2
Cardholder Name
29
Cardholder Name as a TLV object.
Application Usage
5
Application Usage Control as a TLV object.
Issuer Action
8
Issuer Action Code (Online) as a TLV object.
Tag: 9F0D Format: b5
Issuer Action
8
Issuer Action Code (Denial) as a TLV object.
Tag: 9F0E Format: b5
Issuer Action
8
Issuer Action Code (Default) as a TLV object.
Tag: 9F0F Format: b5
TLV Auth Code
9
Authorization Code as a TLV object
Tag: E300 Format: b8
TLV Track 2
21
Track 2 Equivalent Data as a TLV object.
VLP Issuer Auth Code
9
VLP Issuer Authorization Code as a TLV object
Tag: 9F74 Format: b6
Application Identifier
Variable up
AID as a TLV object
Available Offline
(Balance)
9
Available Offline Spending Amount as a TLV object
TLV Application
6
Application Effective Date as a TLV object.
Data Item Length (bytes) Description
This field is present only if the DE 055 object is present.
Tag: 9F34 Format: b3
Authentication Code
Number
Equivalent Data
Status Information
Control
Code(Default)
Code(Denial)
Code(Online)
This field is present only if the DE 055 object is present.
Tag: 9F45 Format: b2
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
Tag: 5F20 Format: b26
This field is present only if the DE 055 object is present.
Tag: 9F07 Format: b2
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
This field is present only if the DE 055 object is present.
Equivalent Data
to 19
Spending Amount
Effective Date
This field is present only if the DE 055 object is present or
Authorization Code is present.
Tag: 57 Format: b19
Tag: 9F06 Format: variable b5...16
Tag: 9F5D Format: variable b6
Tag: 5F25 Format: n6, BCD encoded on 3 bytes (YYMMDD)
36
NEO Interface Developers Guide
Form Factor
Data
F: b 32
Indicates the form factor of the consumer payment device and the
Proprietary Data b 1 to 28 bytes
Customer Exclusive
F: b
Contains data for transmission to the Issuer in
command.
Byte 0
Frame Type =0x55h
Data Item Length (bytes) Description
Indicator
PayPass Third Party
Data (CED)
T: ‘9F6E’
L: 4-bytes
F: b
T ‘9F6E’
L: 5-32 bytes
T: ‘9F7C’
L: Var. up
to 32-bytes
type of contactless interface over which the transaction was
conducted. The Form Factor Indicator is both an implementation
and Issuer option.
Inclusion of the Form Factor Indicator in online messages
(and clearing records for offline capable readers) is an option for
qVSDC and MSD readers.
Priority information from a third party in the following format:
Country Code according to ISO 3166-1 n3, 2 bytes
Unique ID assigned by MasterCard b, 2 bytes
MSD transactions with a cryptogram. Customer
Exclusive Data is both an implementation and Issuer option.
Inclusion of the Customer Exclusive Data in online messages is an
option for MSD readers compliant to this specification.
Customer Exclusive Data shall be updateable via an Issuer script
4.1.1.5 NACK Frame
If the terminal fails to receive the card payload data, it can send a NACK frame and request the
ViVOpay reader to resend the card payload data. To ensure that the reader resends the card
payload data, the NACK frame must be received by the reader within 500ms after it sends the
original card payload. If the reader receives the NACK frame within this time period, it resends
the card payload data to the terminal. If the reader receives the NACK Frame after 500ms of
sending the original card payload, or if a new card has been detected, the reader ignores the
NACK frame and does not resend the payload data. Each payload data is only resent once.
The NACK frame is a 1-Byte code with value of 0x55.
37
NEO Interface Developers Guide
Example 1: ViVOpay receives NACK frame from terminal within 500ms after sending the original
payload data, ViVOpay resends the card payload data.
Example 2: Reader receives NACK frame from terminal after 500ms of sending
the original payload data, the reader does not resend the card payload data.
Asynchronous message event is used by the reader to indicate specific events to the terminal.
These frames are only sent when LCD and LED are sent to external source.
In synchronizing with the transaction, the reader can send asynchronous user interface (UI)
message event to the terminal to specify the required user experience on the terminal.
Following is the format definition of Asynchronous UI Message Event:
Byte 0 Byte 1 Byte 2 Byte 3 Byte 4
Frame
Type
45h, E
Status
=00h
Event
Type
55h,
Scheme,
tag ‘FF F8’
Length
Byte
& 6
2 Byte
UI
Event
… Bn-3 Bn-2 Bn-1
2 Byte UI
Events
Null
Character
Null
Character
CRC
(MSB)
Bn
CRC (LSB)
39
NEO Interface Developers Guide
LED
01h
Higher nibble: LED #
Buzzer
02h
Higher nibble:
LCD
03h
LCD message index
STATUS_OK
00h
Card Read completed successfully.
Byte 3 is the UI Scheme # that allows the user to have different user interfaces (LCD display
message table, and buzzer/LED profiles).
Byte 4 is the length of the remainder of the frame, less CRC.
Bytes 5 & 6 are the UI Event consisting of component (LCD, LED, or Buzzer) and acts as defined
below.
Table 15: Asynchronous UI Message Event
Component UI Type UI Status Definition
00: LED0
01: LED1
02: LED2
03: LED3
FF: all
Lower nibble:
00: Off
01: On
11: No change
1: short beeps
2: long beeps
Lower nibble, short beep:
0: No change
1: Single beep
2: Double beep
3: Triple beep
Lower nibble, long beep:
0: 200ms
1: 400ms
2: 600ms
List of messages and the message flow for one user experience are given in Appendix A.1.
4.1.1.7 Data Definitions
4.1.1.7.1 Status
The Status is a 1-Byte code that indicates the Success or contains an Error Code. This can have
any value from 0 – 255. A list of valid Status codes is given below.
Table 16: Asynchronous UI Message Event Status
Status Value Description
40
NEO Interface Developers Guide
STATUS_EC_CARD_REMOVED
01h
A timeout occurred, card no longer present
STATUS_EC_COMM_ERROR
02h
Some communication error occurred
STATUS_EC_PROTOCOL_ERROR
03h
Protocol not respected
STATUS_EC_MULTIPLE_CARDS
04h
Collisions were detected
STATUS_EC_CARD_NOT_ACCEPTED
05h
Errors found in card information
STATUS_EC_BAD_DATA
06h
Errors found in card information format
STATUS_EC_UNKNOWN_ERROR
FFh
Internal error
Unknown
00h
MasterCard
01h
Visa
02h
American Express
03h
Discover
04h
SpeedPass
05h
Gift Card
06h
Diners Club
07h
EnRoute
08h
JCB
09h
ViVOcard Diagnostic
0Ah
HID card
0Bh
MSR – Physical MSR, Application type unknown
0Ch
Reserved for future use
0Dh
DesFire (ViVOCard3) Track Data
0Eh
DesFire (ViVOCard3) Raw Data
0Fh
RBS
11h
ViVOcomm
14h
The Status never has a value that matches the Track 1 and Track 2 Start/End Sentinels.
4.1.1.7.2 Application Type
The Application Type is a 1 byte code that indicates the Application Type detected. This can
have any value from 0 – 255. A list of currently defined Application Types is given below.
Table 17: Asynchronous UI message Event Application Type
Application Type Value
The Application Type never has a value that matches the Track 1 and Track 2 Start/End
Sentinels.
4.1.1.7.3 Track 1 Field
This is a variable length field consisting of Track 1 data as ASCII characters. This field starts with
the Track 1 Start Sentinel ‘%’ and ends with the Track 1 End Sentinel ‘?’. If any Track 1 data is
available, it is present between the Start and End Sentinel. For example
41
NEO Interface Developers Guide
%B123456789^ABCDEF^12345678?
4.1.1.7.4 Track 2 Field
This is a variable length field consisting of Track 2 data as ASCII characters. This field starts with
the Track 2 Start Sentinel ‘;’ and ends with the Track 2 End Sentinel ‘?’. If any Track 2 data is
available, it is present between the Start and End Sentinel. For example
The 16-bit CRC value is based on CRC-16/CCITT and calculated based on the following
parameter set.
Width: 16-bits
Polynomial: x16 + x12 + x5 + 1
Truncated Polynomial: 1021 hex
Initial Value: FFFF hex
Input Data: Not Reflected
Output CRC: Not Reflected
XOR of Output CRC: Not Done
The CRC-16 is calculated for the entire frame inclusive of Frame Tags, unused bytes, etc.
For Protocol 1 and Protocol 2: The CRC of the Command Frames is little-endian, i.e. lower
byte first (LSB). The CRC of the Response Frames is big-endian i.e. higher byte first (MSB).
42
NEO Interface Developers Guide
For Pass-through Frames, both Command and response frames have the CRC stored in bigendian order (MSB first).
For Pass-through frames, the CRC is stored as big-endian number i.e. higher byte first.
Some test values that can be used to test an implementation of this algorithm are given below.
The following code snippet is an example of the CRC Calculation. The returned CRC would be
stored in big-endian or little-endian form, depending on whether the Protocol 1, Protocol 2 or
Pass-through Mode was being used. This code has been written in Microsoft Visual C++ 6.0.
43
NEO Interface Developers Guide
// --------------------------------------------------------------------------------------// ID TECH
// ID TECH reserves the right to make changes without notice at any time. ID TECH makes no
// warranty, expressed, implied or statutory, including but not limited to any implied
// warranty of merchantability or fitness for any particular purpose, or that the use will
// not infringe any third party patent, copyright or trademark. ID TECH must not be liable
// for any loss or damage arising from its use.
// ---------------------------------------------------------------------------------------
Tags are configured in the ViVOpay reader ahead of time so that when a card is
selected, a “data set” (group) may be instantiated for use in a transaction.
The following illustration shows the basic approach to instantiating the tag
database for a transaction. Global variables (configured through the Set
Configuration command) are instantiated when the reader is reset or powered
up. When a card is in the field, an AID is selected and its tags are added to the
database. The selection of the AID will cause a “data set” (group) to be
selected and its tags are added to the database. As the transaction proceeds,
card tags will be added to the database, possibly overwriting or updating some
tags that were already in the database.
The specification of MasterCard PayPass M/Chip 3.0 required some additional
features in the Tag Database, including:
The ability to have tags that were “not present” in the database.
The ability to handle 3-byte tags.
The specific details of changes for M/Chip 3.0 are covered in the following
sections.
45
NEO Interface Developers Guide
Configurable AIDs and Groups
This section explains how you can create and modify Application Identifiers (AIDs) and associate
them with TLV Groups in the reader’s memory for specific transaction handling. Detailed
descriptions of the Configurable Application Identifier commands are also included.
Each AID uniquely identifies a payment application. The reader has default AIDs that are
preconfigured to support common payment applications such as VISA and MasterCard. These
AIDs are called the System AIDs and they can be modified or disabled but not deleted. The
reader also supports up to eight user-defined AIDs called User AIDs. Each AID must be associated
with a TLV Group that defines transaction processing for that payment application. The System
AIDs are initially associated with a default TLV Group, which can be modified but not deleted.
User AIDs can be associated to the default TLV Group or any of seven other user-defined TLV
Groups.
With the implementation of M/Chip 3.0, an additional default TLV Group (Group 1) has been
added. M/Chip 3.0 does not use the Reader Default Group (Group 0).
All AIDs must be unique. The reader’s default configuration is System AIDs and two default
groups. All of the System AIDs (except PayPass AIDs, as noted above) initially refer to the
default TLV Group 0. The diagram below shows the default reader AID configuration.
The Configurable Application Identifiers feature of the ViVOpay readers allows you to create and
customize AIDs and the TLV Groups associated with them. Each AID may have characteristics
that are unique and different from the reader’s default System AIDs and TLV Group
configuration.
To create a new configurable AID you need to send the AID and the TLV Group you wish to use to
the reader. If the AID already exists in the reader’s memory, it will modify the AID accordingly.
If you send a new AID, the reader creates and saves the new AID. Multiple AIDs can be
associated with the same TLV Group or they may refer to unique TLV Groups. You may also
redefine the functionality for an existing AID by linking it to a new configuration Group or you
46
NEO Interface Developers Guide
may disable an AID if you do not want the reader to process transactions from that payment
application. You may delete an AID by communicating to the reader the AID number with no
parameters.
As you add or modify AIDs and TLV Groups, the reader remembers all changes on subsequent
boot up.
The diagram below shows an example of a reader’s AID configuration after it has been modified
with Configurable AID commands.
In this example, ten System AIDs have been disabled and four User AIDs and three new TLV
Groups have been configured. The new AID User AID – 1 has been linked to the Reader Default
Configuration (TLV Group 0) so that it functions as the other System AID 1 functions. The
Maestro AID has been linked to the user-defined TLV Group – 2. User AID – 2 functions as defined
in the new TLV Group – 3. Both User AID – 3 and User AID – 4 point to the new TLV Group – 4 and
function accordingly. Also notice that the other System AIDs have been disabled by removing
their link to a configuration group.
Use the Configurable AID Commands to create new AIDs or change configuration values for an
AID. Use the Configurable Group commands to create new groups or configuration values for a
group.
47
NEO Interface Developers Guide
American Express
A0 00 00 00 25 01
MasterCard
A0 00 00 00 04 10 10
QUICPay
A0 00 00 00 65 90 01
Maestro
A0 00 00 00 04 30 60
Visa
A0 00 00 00 03 10 10
Visa Electron
A0 00 00 00 03 20 10
Visa Interlink
A0 00 00 00 03 30 10
Visa Plus
A0 00 00 00 03 80 10
J/Speedy
A0 00 00 00 65 10 10
MXI
A0 00 00 00 02 30 60 D1 58 00
Discover
A0 00 00 03 24 10 10
Discover
A0 00 00 01 52 30 10
STAR
A0 00 00 04 17 01 01
Interac
A0 00 00 02 77 10 10
CUP Debit (Kiosk III only)
A0 00 00 03 33 01 01 01
CUP Credit(Kiosk III only)
A0 00 00 03 33 01 01 02
CUP Semi Credit(Kiosk III only)
A0 00 00 03 33 01 01 03
CUP Electronic Cash(Kiosk III only)
A0 00 00 03 33 01 01 06
SmartTap2.1
A0 00 00 04 76 D0 00
System AIDs
A System AID is an AID preloaded for a specific application using a known AID value. Examples
include MasterCard, American Express, and Visa. The table below shows all the System AIDs.
Table 18: System AIDs
Application Name Application Identifier
The terminal:
May disable a System AID
May ONLY modify some of the System AID properties
May NOT delete a System AID
User AIDs
A User AID is an optional AID that is added and/or configured by the user. These AIDs are used
for servicing transactions that are not defined by one of the System AIDs. This determination
needs to be made by the integrator.
The terminal:
May modify ANY User AID property
May delete a User AID
There is no equivalent to the System AID disable; the User AID either exists, and it is used for its
associated transactions, or the User AID is not present.
48
NEO Interface Developers Guide
Reader Default TLV Group
The reader is provided with a default TLV Group (Group 0) that defines all the properties (with
TLVs) required for a basic transaction. By default, all of the System AIDs except PayPass System
AIDs (MasterCard and Maestro) use TLV Group 0 to define their transaction processing. By
default, MasterCard PayPass System AIDs will use Group 1.
The user:
MUST ALWAYS include the Group Number TLV as the FIRST TLV in the Set Configurable
Group message.
MUST define AT LEAST ONE TLV in addition to the Group Number TLV (in a Set
Configurable Group command)
May modify ANY TLVs in TLV Group 0
May NEVER delete TLV Group 0
Unlike all other groups, the TLVs in the Default TLV Group (TLV Group 0) are constant. The
reader ALWAYS uses the latest copy of the TLV. If you issue a Set Configurable Group command
that only updates some TLVs in TLV Group 0, the reader continues to use older versions of the
TLVs that were not updated.
After each transaction, the reader reloads the default values from TLV Group 0, prior to the
next transaction. For this reason, TLV Group 0 maintains a copy of ALL TLVs that can be entered
into a TLV Group structure2.
Warning:Changing values in TLV Group 0 should be done with EXTREME CAUTION, since this
affects the default configuration that most (not PayPass) transactions use.
PayPass Default Group
The PayPass default group is Group 1. PayPass M/Chip 3.0 does not use Group 0
tag definitions (not even for default values). The process of instantiating a
PayPass database is slightly different from other applications:
Group 0 tags are not loaded.
28 default tags defined in the EMV Contactless Book C-2 Kernel 2 Spec
v2.3 are initialized with their specified default values. See PayPass Group
Configuration TLVs with Hard-Coded Values in Kernel.
PayPass Group tags are loaded. (Group 1 is the default group for PayPass
applications).
Tags sent in the Activate Command are loaded into the database.
User-defined TLV Groups
There are seven undefined TLV Groups in the reader at startup. These groups can be used for
any purpose.
2
PayPass specific tags are an exception to this rule. Those are maintained in Group 1.
49
NEO Interface Developers Guide
The user:
MUST ALWAYS include the Group Number TLV as the FIRST TLV in the message.
MUST include AT LEAST ONE TLV other than the Group Number TLV (in a Set
Configurable Group command)
May modify ANY TLV in the TLV Group
May ALWAYS delete a TLV Group 1 through 7
SHOULD NEVER include the TDOL TLV if its length = zero (i.e., only include the TDOL if
it has a value)
User-defined TLV Groups differ from the default TLV Group 0 in two important ways. First, these
groups only need to contain TLVs that are different than the TLVs in the default TLV Group 0.
Thus they are normally a sub-set of the TLVs in the default group.
For American Express Transaction limit(FFF1), CVM limit(FFF5), Floor limit(9F1B):
For Discover Transaction limit(FFF1), CVM limit(FFF5), Floor limit(9F1B), Risk flags(FFF4):
if user-defined TLV Group is used, user should set these above TLVs in the user-defined Group. If
not set, these above TLVs will be regard as not exist.
For American Express, Terminal Capabilities (9F33) and Enhanced Expresspay Terminal
Capabilities (9F6E) are expected to be set consistently. For example, if Byte 2 bit 7 of ‘9F6E’
is set to 1(b) to indicate ‘Online PIN Supported’ then ‘9F33’ byte 2 bit 7 should also be set to
1(b).
For American Express, Kiosk III reader is always capable of CVM processing, and CVM items in
terminal capabilities are supported (9F33 byte2 bit5-8 =1, 9F6E byte2 bit5-8 =1).
Secondly, the TLVs in TLV Groups 1 through 7 are not permanent. If you configure a TLV Group
and then issue a second Set Configurable Group command on the same TLV Group, the second
Set Configurable Group command overwrites EVERY change to the TLV Group made by the first
command.
Warning:Changing values in TLV Groups 1 through 7 overwrites all content in the TLV Group,
including deleting TLVs not in the update.
Except for MasterCard PayPass transactions, when one of these user-defined TLV Groups is
selected during a transaction, the reader uses the TLVs included in the group AND any other
TLVs required for the transaction are taken from the default Group 0. Once the reader has
finished transaction processing, it reloads TLV Group 0 values for all TLVs. It is now ready to
commence the next transaction.
There are some guidelines for setting and deleting TLV Groups listed below. Most of these
guidelines are intuitive (i.e., you may not delete a TLV Group if an AID exists that currently uses
it).
Configurable AID Reader Memory Requirement
The Configurable AIDs feature requires memory to store TLV groups and User AIDs. ViVOpay
readers use 64K flash memory to support the Configurable AID feature. Refer to the reader’s
user documentation for more information on reader memory.
50
NEO Interface Developers Guide
ViVOpay Proprietary TLVs
TLVs may be either standard TLVs or proprietary TLVs. Standard TLVs are defined by EMV and
the Payment Association Requirements and recognized by everyone. Proprietary TLVs are
created by individual payment associations and reader manufacturers for specific functions.
Proprietary TLVs must be handled in a manner that isolates them from other proprietary TLVs.
ViVOpay proprietary TLVs can be present with standard TLVs without encapsulation when the
command is processed exclusively by ViVOpay firmware or software. If the TLVs will be
processed by other devices, ViVOpay proprietary TLVs must be encapsulated to prevent conflicts
with proprietary TLVs from other organizations.
ViVOPay TLV Group Tag FFEE01 is used to encapsulate ViVOpay proprietary TLVs.
EXAMPLE
The following example is for an encapsulated Terminal Capabilities – CVM Required TLV.
The TLV string “FFEE0106DF29030101” is broken down as follows:
FFEE01 ViVOpay TLV Group Tag
06 Length of all encapsulated TLVs
DF29 Tag Terminal Capabilities – CVM Required – ViVOpay Proprietary
03 Length of Transaction CVM
00 01 00 Value: Actual Transaction CVM
Card Application Proprietary Tag List (FF69)
For some applications, there may be a requirement to define a list of
proprietary tags that may be returned in Data Object Lists (DOLs). To
accomplish this, the reader allows each user-defined group (except Group 0) to
define a list of proprietary tags that can be inserted into the tag database. The
maximum size of this list is 32 bytes. The new tag that is used for encapsulating
the proprietary tag list is FF69.
A tag in this list may be configured in one of two ways:
Constant Value – the TLV contains a non-zero length and a value. The
reader will not modify this value, but it can be provided when requested
(as in a DOL).
Updateable – the TLV contains a length of zero and no value. The tag is
then “defined” but has no value, so it may be updated during the
51
NEO Interface Developers Guide
Require Heartbeat frame to stay in Idle mode (EMEA
01: Heartbeat frame required
Unsupported cards display option (EMEA User
Enable/Disable Stop Command processing
Enable Communication Error Recovery
transaction. At the end of a transaction, the reader will send any
updated proprietary tags back in the Activate Response frame.
Configuration Tag Tables
Global Configuration Tags
The following table contains TLVs that are configurable using the Set
Configuration (04-00) command. These TLVs are global within in the reader.
Table 19: Global Configuration TLVs
Tag Data Object Name and Description Format
Transaction Date (YYMMDD)
9A
9F21
DF65
DF66
This value is used to set the Real Time Clock.
Note: The terminal/POS application should perform
range checking on this value to ensure it is within
acceptable limits.
Transaction Time (HHMMSS)
This value is used to set the Real Time Clock.
Note: The terminal/POS application should perform
range checking on this value to ensure it is within
acceptable limits.
User Experience only). If this feature is enabled, then
to stay in the Idle mode, a valid frame must be
[1]
received by the reader every 15 seconds or it returns
to Not Working state.
00: Heartbeat frame not required
Experience only). If an unsupported card is detected,
then display a message based on this setting.
[1]
00: Display a “Fail” message
01: Display an “Insert/ Swipe” message if the reader
is configured to indicate support for Contact cards,
otherwise display a “Fail” message.
n6 3 Reader Date
n6 3 Reader Time
b 1 00
b 1 00
Length
(Bytes)
Default Value
DF68
DF6A
0 = Disable (default)
1 = Enable
Enables the reader to poll again and return to
discovery after a communication error (e.g. tear or
“no tag” error)
00: Disabled
01: Enabled (default)
52
b 1 00
b 1 01
NEO Interface Developers Guide
Communication Error Delay time
seconds)
Auto-Switch to Pass-Through Mode.
Track 1 and Track 2 Data Format
Improved Collision Detection (see special features
Application Capability(1:Support,0:Not Support):
Tag Data Object Name and Description Format
Delay between the time a communication error first
occurs and the time when the reader will issue an
DF75
indication of an error to the reader. If a tear
occurs, but the card comes back into the field during
this time, then no error indication is issued. Time is
expressed in milliseconds (default is 3000ms, or 3
DF7C
Refer to Auto-Switch to Pass-Through Mode
00: Disable (default)
01: Enable
Sets the format of data returned from Activate
DF7D
Transaction and Get Transaction Results commands.
00: No start/end sentinels or LRC (default)
01: Add start/end sentinel and LRC
Improved Collision Detection.) RF signal locked to a
specified card only after a specified number of
DF7F
polling attempts without an EMV collision.
00h = Improved Collision Detection Disabled.
02h-FFh = Number of successful polling attempts
required.
Byte 1: (Leftmost)
b8 b7 b6 b5 b4 b3 b2 b1
X Normal J/Speedy support
X ViVOpay Mifare for NFC
X Interac support
X CUP support
X SmartTap support
X X X RFU
Byte 2:
FFF3
[1]
b8 b7 b6 b5 b4 b3 b2 b1
- - - - - - - X MasterCard Credit support
- - - - - - X - American Express support
- - - - - X - - Visa support
- - - - X - - - Mobile J/Speedy support
- - - X - - - - ViVOwallet support
- - X - - - - - RBS support
- X - - - - - - MasterCard Cash support
X - - - - - - - Discover support
Example: 0009 means reader support both
MasterCard and Mobile J/Speedy applications
Meaning (0 = disable, 1 =
enable)
Meaning (0 = disable, 1 =
enable)
n
(BCD)
Length
(Bytes)
3 00 30 00
Default Value
b 1 00
b
1
b 1 00
b 2
(0F FF for Kiosk
00
07 FF
III)
53
NEO Interface Developers Guide
Enable/Disable Burst Mode:
received (Sections 6 and 14 of this document)
LCD Font Size:
LCD delay time (ms) – default is 1000ms.
Language Option for LCD display:
Value = 05: English & French display
9F15
Merchant Category Code
merchant, see ISO 8583:1993.
n4 2 00 00
9F16
Merchant Identifier
ans
15
00 00 00 00 00
00 00 00 00 00
9F1C
Terminal Identification
an 8 00 00 00 00 00
9F40
Additional Terminal Capabilities
the terminal.
b 5 60 00 00 10 01
9F4E
Merchant Name and Location
ASCII
<=30
00 00 00 00 00
9F7C
Merchant Custom Data
b
<=20
00 00 00 00 00
FFF2
Interface Device Serial Number
an 8 30 30 30 30 30
Tag Data Object Name and Description Format
Value = 00: Disable Burst Mode
Value = 01: Enable Burst Mode
[1]
FFF7
Value = 02: Burst Mode Auto Exit. Burst mode is
b 1 02
turned off as soon as a transaction command is
[1]
FFF9
[2] [3]
FFFA
[2]
FFFB
Value = 02: Large
Value = 03: Extra Large (default)
[1]
If the device has no LCD, then the value will be 0.
Value = 00: English only display (default)
Value = 01: Chinese only display
[1]
Value = 02: English & Chinese display
Value = 03: French only display
Value = 04: Other Language (if ILM present)
b 1 03
b 2
[2]
[2]
[4]
[2]
b 1 00
Poll Mode
DF891B
Value = 00 : Auto-Poll
Value = 01 : Poll on Demand
b100
Note: Only used for Vendi.
Classifies the type of business being done by the
Length
(Bytes)
Default Value
03 E8
or
00 00
Indicates the data input and output capabilities of
Allows the reader to be configured with the
Merchants Name and Location (VCPS 2.1.1 and
M/Chip 3.0)
This is equivalent to tag 9F1E. They refer to the same
parameter.
Value = 00:ViVOpay User Interface (default)
Value = 02:Visa Wave User Interface
Value = 03:EMEA User Interface
Note: LCD Messages need to be configured
separately.
Warning: EMEA UI is intended for use in the EMV or
European environment, where the reader Vend is not
allowed to poll continuously (e.g., operate in Auto
Poll Mode). The reader Vend does NOT support Auto
Poll while in EMEA UI mode. The reader is not
certified to work properly in this situation.
The reader Vendi supports Auto Poll while in EMEA UI
mode.
Indicate type of transaction being performed,
Byte 1: (Leftmost)
b8 b7 b6 b5 b4 b3 b2 b1
X CL Media Arrival Reproting
X CL Media Removal Reproting
X X X X X X RFU
Meaning (0 = disable, 1 =
enable)
Byte 2:
b8 b7 b6 b5 b4 b3 b2 b1 Notes
- - - - - - - X
- - - - - - X -
- - - - - X - -
- - - - X - - -
- - - X - - - -
-X X- X - - - - - RFU
0 - RF Antenna Off
1 - RF Antenna On
0 - RF Field Deactiated
1 - RF Field Activated
0 - No event
1 - RF Field Activated
0 - No event
1 - CL Midia Arrival Detected
0 - No event
1 - CL Media Removal
Detected.
Byte 3: RFU
Byte 2: RFU
Length
(Bytes)
Default Value
b 4 00 00 00 00
FFEE1C UN range
Masked Output Data Parameter
FFEE1D
55
b504 04 2A 0C 31
NEO Interface Developers Guide
Group 0 Initialize Flag:
Tag Data Object Name and Description Format
Value = 00: not initialized.(If the tag is not found or
Value is not 1, reader will initialize group 0 with
FFEE1E
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with
other proprietary TLVs.
[2]
These objects only work on the ViVOpay graphic reader.
[3]
Only applies to non-index messages. The default size for the LCD Font is 3. The Lookup table for all the messages are
hard coded with the Font Size 3. The Font Size = 2 is treated only when the three messages are displayed on the screen.
When the user wants to use the LCD Font size = 2, A store LCD message command can be used to configure the string by
prefixing the %F2.
[4]
These objects only work on the Vendi.
default setting automatically when the power cycle
is on)
Value = 01: Initialized
Only used for Kiosk III.
b101
Length
(Bytes)
Default Value
Group Configuration Tags
The following table contains tags that may be configured within a Configurable
Group. For Group 0, default values exist. Except for groups associated with a
PayPass AID, if a group does not define some of these TLVs, then the values in
Group 0 will be used. The Set Configurable Group command should be used to
set the TLVs in this section.
Table 20: Group Configuration TLVs
56
The PayPass configuration tags are documented separately. To configure a group that will be
associated with a PayPass AID, refer to PayPass Group Configuration TLVs.
Tag Description Format Length
Merchant Type Indicator
9F58
9F59
9F5D
Provides Merchant Type Indicator used by the card for
risk management. Five values are valid: 01, 02, 03, 04
and 05. (Interac)
Terminal Transaction Information (TTI)
Provides Terminal Transaction Information for the
current transaction. (Interac)
Note: Vendi default values are B4 07 00.
Terminal Contactless Receipt Required Limit
Limit Amount used to compare against Transaction
amount to automatically print a transaction record.
(Interac)
n1 1 03
b 3 DC 80 00
n12 6 00 00 00 00 50 00
Default Value in
Group 0
NEO Interface Developers Guide
Terminal (Reader) Contactless Floor Limit
Threshold Value for Biased Random Selection
Target Percentage for Random Selection
ExpressPay Terminal Capabilities
Enable/Disable Visa Wave cards
Default Transaction Certificate Data Object List (TDOL)
Transaction Type
Code. (default = purchase goods or services)
Tag Description Format Length
Terminal Option Status
Options supported by the terminal. (Interac)
9F5E
Note: Vendi default values are 00 00.
b 2 E0 00
9F5F
Floor limit amount used to compare against
n12 6 00 00 00 00 80 00
Transaction amount. (Interac)
Enable/Disable Certificate Revocation list
0 = disable
DF26
1 = enable (default)
b 1 01
M/Chip 3.02 can make use of the Certificate
Revocation list.
Note: Vendi default value is not present.
DF2A
Value used in terminal risk management for random
n12 6 00 00 00 00 50 00
transaction selection. (Interac)
DF2B
Maximum Target Percentage for Biased Random
Selection
Value used in terminal risk management for random
transaction selection. (Interac)
b
1 32
Default Value in
Group 0
DF2C
DF51
DF64
97
9C
Value used in terminal risk management for random
transaction selection. (Interac)
Used to create the ExpressPay Terminal Capabilities
[1]
TLV, 9F6D for Amex ExpressPay applications.
Note: Vendi default value is not present.
Enables the use of Visa Wave cards (not the Visa Wave
[1]
protocol).
00: Reject Visa Wave cards
01: Accept Visa Wave cards
List of TLV data objects to be used by the terminal to
generate the TC Hash Value in case the TDOL is not
returned by the card.
Note: Vendi default value is not present.
In Group 0, this tag must be encapsulated in
another tag, FF67. FF67 encapsulates all “variable
length” tags in group 0.
Indicates the type of financial transaction, represented
by the first two digits of ISO 8583:1987 Processing
b 1 0A
b 1 80
b 1 00
b <=64 Zero length
n2 1 00
57
NEO Interface Developers Guide
Transaction Currency Code
AIDs. (default = US Dollars)
Transaction Currency Exponent
9F01
Acquirer ID
n 6 Not present
9F02
Amount Authorized (Numeric)
n12
6
00 00 00 00 00 01
9F03
Amount Other (Numeric)
n12
6
00 00 00 00 00 00
Application Version Number
Amex (Value = 00 01)
Terminal Country Code
represented according to ISO 3166. Default = US
Terminal Floor Limit
Terminal Identification
Terminal Capabilities
CDA supported
Terminal Type
Terminal Transaction Qualifier (TTQ)
supported.
Tag Description Format Length
Indicates the currency code of the transaction
5F2A
5F36
9F09
9F1A
according to ISO 4217. Note: make sure you use the
same Transaction Currency Code for all configurable
Indicates the implied position of the decimal point
from the right of the transaction amount represented
according to ISO 4217. (decimal is two places from
right of the transaction amount)
Indicates the environment of the terminal, its
communications capability, and its operational control
Note: Vendi default value is 25.
Determine the type of transaction (MSD, qVSDC, and
Contactless VSDC) and whether online processing is
b 4 00 00 17 70
an 8
b 3 00 08 E8
n2 1 22
b 4
00 00 00 00 00 00
00 00
80 00 40 00
(27 00 40 80 for
CUP)
58
NEO Interface Developers Guide
Application Version Number (MagStripe)
Terminal Capabilities – No CVM Required
DF28 Byte
PayPass Tag Equivalent
2
DF8119
Terminal Capabilities – CVM Required
DF29 Byte
PayPass Tag Equivalent
2
DF8118
Group Number
Terminal Contactless Transaction Limit
Tag Description Format Length
9F6D
PayPass MagStripe (Value = 00 01)
b 2 00 01
Note: Vendi default value is not present.
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount, Authorized <
CVM Required Limit. Formatted as Terminal
Capabilities (tag ‘9F 33’)
DF28
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 08 E8
Note: Vendi default value is not present.
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount, Authorized >=
CVM Required Limit. Formatted as Terminal
Capabilities (tag ‘9F 33’)
DF29
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 68 E8
Note: Vendi default value is not present.
Default Value in
Group 0
The group number assigned to this group of
parameters. AIDs may be associated with the group
number.
[1]
FFE4
This tag is mandatory when getting or setting group
parameters and it must be the 1st TLV in Data Field.
It is used as the “key” for the group parameter set.
[1]
FFF1
Indicates the terminal limit for this AID for Contactless
transactions.
for zero amount (only used
with zero amount check
enabled)
b 3 00 06 01
FFF4
b
b
b
b
b
8
7
6
- - - - - - - X Transaction Limit Check
- - - - - - X - CVM Required Limit Test
- - - - - X - - Terminal Floor Limit Check
- - - - X - - -
- - - X - - - - Cashback Reader Risk (RR)
- - X - - - - -
[1]
X X - - - - - - RFU
Byte 3
b
b
b
8
7
6
- - - - - - - X
- - - - - - X - 1 = perform zero amount check
X X X X X X - - RFU
b
5
4
3
b
b
b
5
4
3
For example:
0x00 = Zero Amount check disabled.
0x01 = Zero Amount check is disabled and online
cryptogram required bit will not be checked.
(default)
0x02 = Zero Amount check enabled.
0x03 = Zero Amount check enabled and Option 1,
online Cryptogram Required
Default Value in
Group 0
Note: Vendi default values are 01 00 01.
60
NEO Interface Developers Guide
D-PAS Reader Risk Flags:
X
-
1 = online cryptogram required for
CVM Required Limit
associated AIDs.
PayPass Profile (also used for Amex)
Terminal Action Code (Online)
analysis of the TVR.
Terminal Action Code (Default)
Terminal Action Code (Denial)
Tag Description Format Length
Byte 1
b
b
b
b
b
8
7
6
5
4
Meaning
b
b
b
3
2
1
(0 = disable, 1 = enable)
- - - - - - - X RFU
X X X X X X
1=Status Check Support
RFU
Byte 2:
b
b
b
b
b
b
8
7
6
5
4
3
Meaning
b
b
2
1
(0 = disable, 1 = enable)
b 3
X X X X X X X X RFU
Byte 3
b
b
b
b
b
b
8
7
6
5
4
3
- - - - - - - X
X X X X X X X - RFU
Meaning
b
b
2
1
(0 = disable, 1 = enable)
zero amount
Default Value in
Group 0
[1]
FFF5
Indicates the CVM required limit in the terminal for the
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly differently:
87654321
-------X
[1]
FFFC
------X-
-----X--
XXXXX---
The default value is 0x01 – support MagStripe only.
Note: Vendi default value is not present.
[1]
FFFD
Reflect the acquirer-selected action to be taken upon
[1]
FFFE
Reflect the acquirer-selected action to be taken upon
analysis of the TVR.
Bit Meaning Value
MagStripe Only
M/Chip Only
On Device CVM
RFU
0 = normal transaction
1 = MagStripe only
transaction allowed
0 = normal transaction
1 = M/Chip only
transaction allowed
0 = not supported
1 = supported
n12 6 00 00 00 00 80 00
b 1 01
b 5 F8 50 AC F8 00
b 5 F8 50 AC A0 00
[1]
FFFF
61
Reflect the acquirer-selected action to be taken upon
analysis of the TVR.
b 5 00 00 00 00 00
NEO Interface Developers Guide
Specific Feature Switch
Byte 3: RFU
9F5A
Terminal Transaction Type (Interac)
b 1
00
Counter maintained by the terminal that is
Tag Description Format Length
Used with Visa VCPS 2.1.1/2.1.2. It controls Visa CVN17
support and Track 1 & 2 data in the transaction
response.
Byte 1
b8 b7 b6 b5 b4 b3 b2 b1
- - - - - - - X RFU (Deprecated)
FFF0
[1]
- - - - - - X -
- - - - - X - -
- - - - X - - -
X X X X - - - - RFU
1 = Visa CVN17 supported
0 = Visa CVN17 disabled
1 = Remove Track 1 data in
Visa response
1 = Remove Track 2 data in
Visa response
b302 00 00
Byte 2: RFU
• 0x00 = Purchase
• 0x01 = Refund
Masked Output Data Parameter
When there is a PAN to be output in masked format,
this parameter gives the key points of the format.
Byte 1: PrePAN, value scope is [0, 6],
Byte 2: PosPAN, value scope is [0, 4],
FFEE1D
Byte 3: MaskAscii, value scope is [20h, 7Eh],
Byte 4: MaskHex, value scope is [0Ah, 0Fh]
b 504 04 2A 0C 31
Byte 5: Expire date output option,
0x30=Mask, 0x31=NotMask, default 0x31
For detailed rules, please refer to "ID-Tech Encypt Data
Format In Command / Response Specification for ICC
Communication".
Default Value in
Group 0
9F41
incremented by one for each transaction
Note: Vendi default value is not present.
“Interac Retry Limit”
Configured value for the total number of tap
DF891C
attempts during an Interac Mobile Debit (NFC) application
transaction.
Note: Vendi default value is not present.
62
n 4 4 Not Present
n1 1 Not Present
NEO Interface Developers Guide
CUP Risk and Configuration Flag
Byte 4: RFU
Tag Description Format Length
DFEF2F
Byte 1
b8 b7 b6 b5 b4 b3 b2 b1
- - - - - - - X Status Check
- - - - - - X - Transaction Limit Check
- - - - - X - - CVM required Limit Check
- - - - X - - - Terminal Floor Limit Check
- - - X - - - - Zero Amount Check
X X X - - - - - RFU
Byte 2:
b8 b7 b6 b5 b4 b3 b2 b1
- - - - - - - X RFU
- - - - - - X - Exception File Support
- - - - X X - - RFU
- - - X - - - -
- - X - - - - - RFU
- X - - - - - - UPI Support
X - - - - - - -
Online Authentication
Support
Cardholder Credential
Support
Byte 3:
b8 b7 b6 b5 b4 b3 b2 b1
- - - - - - - X Encrypt Keyboard Support
- - - - - - X - Reversal Support
qUICS Online ODA Fail
- - - - - X - -
X X X X X - - - RFU
Decision:
1 = Go Online
0 = Decline
Default Value in
Group 0
b 4 Not Present
DFEE3F Default TDOL
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with
other proprietary TLVs.
[2]
Not used by M/Chip 3.0 because M/Chip 3.0 redefines this as a card tag that passes Application Capability Information.
[3]
These objects only work on the Vendi.
[4]
These objects only work on the ViVOpay graphic reader.
b var Not Present
63
NEO Interface Developers Guide
Default Transaction Certificate Data Object List
Transaction Date (YYMMDD)
Transaction Type
Transaction Currency Code
PayPass Group Configuration TLVs
If a PayPass AID will be assigned to a group, then the table in this section should
be used to configure the group. The Set Configurable Group command should
be used to set the TLVs in this section.
The following PayPass Group TLVs should not be configured for Group 0. The default PayPass
group is Group 1. That is, when the reader is configured from the factory, the PayPass
System AIDs will be associated with Group 1.
If there are tags in a PayPass group that should be set, they must all be set explicitly, since
the absent values are not filled in with Group 0 or Group 1 defaults.
PayPass Group tags are instantiated a little differently than other groups.
Group 0 is never used as a default. Refer to the section on PayPass Default
Group for an explanation of how the tag database is instantiated for PayPass.
Table 21: PayPass Default Group Configuration TLVs
Tag Description Format Length
97
9A
9C
(TDOL)
List of TLV data objects to be used by the
terminal to generate the TC Hash Value in case
the TDOL is not returned by the card
Indicates local date that the transaction was
authorized.
Note: The reader does not perform range checking
on this value. The POS application should perform
range checking on this value to ensure it is within
acceptable limits.
Default value = FF FF FF (use the RTC for date and
time.)
When this value is set in a PayPass group, it
should generally be set to FF FF FF (use the
RTC). Setting this value to something other
than FF FF FF may have unexpected results.
The transaction date and time may be
overridden by the terminal if the 9A and 9F21
TLVS are supplied in an Activate command.
Indicates the type of financial transaction,
represented by the first two digits of ISO
8583:1987 Processing Code (default = purchase
goods or services)
Default Value in
Group 1
b <=64 Not present
n6 3 FF FF FF
n2 1 00
Indicates the currency code of the transaction
5F2A
according to ISO 4217. Note: make sure you use
the same Transaction Currency Code for all
configurable AIDs. Default = US Dollars(08 40)
64
n3 2 08 40
NEO Interface Developers Guide
Transaction Currency Exponent
last digit of the transaction amount.
Amount Authorized (Numeric)
Application Version Number (M/Chip)
Amex (Value = 00 01)
Merchant Category Code
merchant, see ISO 8583:1993.
9F16
Merchant Identifier
ans
15
Not present
Terminal Country Code
represented according to ISO 3166.
Terminal Floor Limit
Terminal Identification
Interface Device Serial Number
Transaction Time (HHMMSS)
authorized. Default = use RTC.
Terminal Capabilities
Tag Description Format Length
Default Value in
Group 1
Indicates the implied position of the decimal point
5F36
from the right of the transaction amount
represented according to ISO 4217.
n1 1 02
Default = decimal is two places to the right of the
This tag is equivalent to MasterCard tag DF8123
Reader Contactless Floor Limit.
b 4 00 00 17 70
9F1C
Note: Vendi default values are 00 00 00 00 00
an 8 zero length
00 00 00.
This is intended to be the serial number of the
9F1E
terminal/POS. It is configured by the POS and is
unique to the terminal.
an 8
30 30 30 30 30 30
30 30
Note: KioskIII/Vendi default value is not present.
9F21
Indicates local time that the transaction was
n6 3 FF FF FF
Indicates the card data input, CVM, and security
capabilities of the terminal.
This tag (9F33) only configures bytes 1 and 3 of the
terminal capabilities. Byte 2 of the terminal
9F33
capabilities actually comes from DF28 or DF29
during the transaction. Refer to tags DF28 and DF29
for details.
Note: Byte 1 of 9F33 is the same as DF8117 Card
Data Inpput Capability defined in PayPass 3.0.2 and
Byte 3 of 9F33 is the same as DF811F Security
Capability.
b 3 00 08 E8
65
NEO Interface Developers Guide
Terminal Type
Additional Terminal Capabilities
Merchant Name and Location
M/Chip 3.0)
Transaction Category Code
Terminal Transaction Qualifier (TTQ)
processing is supported.
Application Version Number (MagStripe)
PayPass MagStripe (Value = 00 01)
9F6E
Third Party Data
Not present
00 00 00 00 00 00
00 00
Mobile Support Indication. (PayPass only)
DF28 Byte
PayPass Tag Equivalent
2
DF8119
Tag Description Format Length
Indicates the environment of the terminal, its
communications capability, and its operational
9F35
control
n2 1 22
Note: Vendi default value is 25.
Indicates the data input and output capabilities of
9F40
9F4E
the terminal
Note: Vendi default values are 60 00 00 10 01.
Allows the reader to be configured with the
Merchants Name and Location (VCPS 2.1.1 and
b 5 60 00 00 30 00
ASCII 30 Not present
This is a data object defined by MasterCard which
indicates the type of transaction being performed,
9F53
and which may be used in card risk management.
an 1 01
Note: Vendi default value is 00.
Default Value in
Group 1
9F66
9F6D
Determine the type of transaction (MSD, qVSDC,
and Contactless VSDC) and whether online
b 4 Not present
b 2 00 01
9F7C Merchant Custom Datab <=20
9F7E
Note: Vendi default value is 00.
b 1 Zero length
Terminal Capabilities – No CVM Required
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount, Authorized
< CVM Required Limit. Formatted as Terminal
DF28
Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 08 E8
00 00 00 00 00 00
00 00 00 00 00 00
66
NEO Interface Developers Guide
DF29 Byte
PayPass Tag Equivalent
2
DF8118
Pre Gen-AC Balance Read
Post Gen-AC Balance Read
be read after Gen-AC.
Default UDOL
the “Unpredictable Number”.
Maximum Lifetime of Torn Transaction Record
Maximum Number of Torn Transaction Records
MagStripe CVM Required Capability
Required Limit.
Reader Contactless Transaction Limit, No On-
Tag Description Format Length
Terminal Capabilities – CVM Required
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount,
Authorized >= CVM Required Limit. Formatted as
DF29
Terminal Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 68 E8
If this tag is defined, a transaction will read the
DF8104
balance before Gen-AC. This tag may also be sent
n12 6 Not present
in the Activate to indicate that the balance should
be read prior to Gen-AC.
If this tag is defined, a transaction will read the
DF8105
balance after Gen-AC. This tag may also be sent
n12 6 Not present
in the Activate to indicate that the balance should
DF811A
Used for calculating the CCC if no UDOL is present
in the card. The default is the tag and length of
b 3 9F 6A 04
Default Value in
Group 1
DF811C
DF811D
DF811E
DF8124
This is the maximum time a torn record can exist
in the log before it expires. It is expressed in
seconds.
While the transaction log is global to the reader,
the MasterCard application is the only application
that supports it.
Due to storage limitations, the maximum number
of records that may be configured is 2. There
may be 0, 1, or 2 torn transaction records
configured. If 0 records are configured, the torn
transaction recovery facility is effectively
disabled.
While the transaction log is global to the reader,
the MasterCard application is the only application
that supports it.
Indicates the CVM capability of the
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized (Numeric) is greater than the Reader CVM
Device CVM
When there is no On-Device CVM available (e.g.
with a phone), then this is the transaction limit
that will be used. Default = $300.00
b 2 Not Present
b 1 Not Present
b 1 10
n12 6 00 00 00 03 00 00
67
NEO Interface Developers Guide
Reader Contactless Transaction Limit, On-Device
MagStripe No CVM Required Capability
Required Limit.
Message Hold Time
requirement.
RF Hold Time Value
Phone Message Table
Proprietary Tag List
tag list.
Group Number
Tag Description Format Length
CVM
When On-Device CVM is available (e.g. with a
phone) then this is the transaction limit that will
DF8125
be used.
n12 6 Not Present
Note: Vendi default values are 00 00 00 03 00
00. KioskIII default values are 00 00 00 05 00
00.
Indicates the CVM capability of the
DF812C
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized
b 1 00
(Numeric) is less than or equal to the Reader CVM
Indicates the default delay for the processing of
the next MSG signal. The Message Hold Time is an
DF812D
integer in units of 100ms.
n6 3 Not Present
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
Indicates the time that the field is to be turned
off after the transaction is completed if requested
DF8130
to do so by the cardholder device. The Hold Time
Value is in units of 100ms.
b 1 Not Present
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
Default Value in
Group 1
Defines for the selected AID the message and
status identifiers as a function of the POS
Cardholder Interaction Information. The Phone
Message Table is a variable length list with 8-byte
entries. Each entry in the Phone Message Table
DF8131
contains the following fields:
PCII Mask (3 bytes, binary)
PCII Value (3 bytes, binary)
Message Identifier (1 byte, binary)
Status (1 byte, binary)
The last entry in the phone message table must
always have the PCII Mask and PCII Value set to
‘000000’.
FF69
Proprietary tags that are not otherwise configured
may be configured by encapsulating them in this
The group number that contains the
characteristics for this AID
[1]
FFE4
This tag is mandatory when getting or setting group
parameters and it must be the 1st TLV in Data Field.
68
B Var No Present
b <=32 Not present
n2 1 --
NEO Interface Developers Guide
Terminal Contactless Transaction Limit
Contactless transactions.
CVM Required Limit
UI Scheme:
Language Option for LCD display:
PayPass Profile
only.
Tag Description Format Length
[1]
FFF1
FFF5
Indicates the terminal limit for this AID for
Indicates the CVM required limit in the terminal
[1]
for the associated AIDs. Default = $80.00
This is equivalent to MasterCard tag DF8126.
n12 6 00 00 00 01 00 00
n12 6 00 00 00 00 80 00
Value = 00:ViVOpay User Interface (default)
Value = 02:Visa Wave User Interface
Value = 03:EMEA User Interface
Note: LCD Messages need to be configured
separately.
Warning: EMEA UI is intended for use in the EMV
or European environment, where the reader is not
FFF8
Poll Mode). The reader does NOT support Auto
b 1 00
allowed to poll continuously (e.g., operate in Auto
[1]
Poll while in EMEA UI mode. The reader is not
certified to work properly in this situation.
Note: Vendi default value is not present.
For PayPass M/Chip, this value should be set to 03
(EMEA). It defaults to ViVOpay for backward
compatibility with MagStripe applications.
Default Value in
Group 1
FFFB
FFFC
Value = 00: English only display (default)
Value = 01: Chinese only display
Value = 02: English & Chinese display
[1]
Value = 03: French only display
Value = 04: Other Language (if ILM present)
Value = 05: English & French display
[2]
[2]
[3]
Note: Vendi default value is not present.
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly
differently:
87654321
-------X
[1]
------X-
-----X--
XXXXX---
Bit Meaning Values
MagStripe
Only
M/Chip Only
On Device
CVM
RFU
0 = normal transaction
1 = MagStripe only
transactions allowed
0 = normal transaction
1 = M/Chip only
Transactions allowed
0 = not supported
1 = supported
The default value is 0x01 – support MagStripe
[2]
b 1 00
b 1 01
69
NEO Interface Developers Guide
Terminal Action Code (Online)
Terminal Action Code (Default)
Terminal Action Code (Denial)
FFF2
Interface Device Serial Number
same parameter.
an
8
30 30 30 30 30 30
Tag Description Format Length
Reflect the acquirer-selected action to be taken
[1]
FFFD
FFFE
FFFF
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with
other proprietary TLVs.
[2]
These objects only work on the ViVOpay graphic reader.
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8122.
Reflect the acquirer-selected action to be taken
[1]
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8120.
Reflect the acquirer-selected action to be taken
[1]
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8121.
This is equivalent to tag 9F1E. They refer to the
b 5 F8 50 AC F8 00
b 5 F8 50 AC A0 00
b 5 00 00 00 00 00
Default Value in
Group 1
30 30
[3]
These objects only work on the Vendi
PayPass Group Configuration TLVs with Hard-Coded Values in Kernel
PayPass transactions do not use Group 0 at all. If a TLV data item has not been
defined in a PayPass group (Group 1 or higher), then the default value is not
picked up from Group 0 as for other card types.
There is a minimal sub-set of TLV data items that must be present for a PayPass
transaction to be performed. If any of the data items from this sub-set are not
present, a PayPass transaction cannot be performed.
To allow PayPass transactions to be performed even if these critical data items
are missing from the PayPass group, The PayPass Kernel keeps a set of hardcoded default values for these data items. If any of these data items are not
present in the PayPass Group then the kernel uses the hard-coded value for the
missing data item.
A list of data items that have a hard-coded value and the default value are
given in the following table.
70
NEO Interface Developers Guide
Transaction Type
Application Version Number (Reader)
PayPass M/Chip 3.0
Terminal Country Code
represented according to ISO 3166.
Terminal Floor Limit
Terminal Capabilities
Terminal Type
control
Additional Terminal Capabilities
the terminal
Application Version Number (MagStripe)
If any of these data items is “not present” in the PayPass group, then a Get Group command
will not return the values for these data items even though the PayPass kernel will use the
hard-coded default values for these data items.
Table 22: PayPass Group Configuration TLVs with Hard-Coded Default Values in Kernel
Indicates the floor limit in the terminal in
conjunction with the AID (hex).
This tag is equivalent to MasterCard tag DF8123
Reader Contactless Floor Limit.
Indicates the card data input, CVM, and security
capabilities of the terminal.
This tag (9F33) only configures bytes 1 and 3 of the
terminal capabilities. Byte 2 of the terminal
capabilities actually comes from DF28 or DF29
during the transaction. Refer to tags DF28 and DF29
for details.
Note: Byte 1 of 9F33 is the same as DF8117 Card
Data Input Capability defined in PayPass 3.0.2 and
Byte 3 of 9F33 is the same as DF811F Security
Capability.
Indicates the environment of the terminal, its
communications capability, and its operational
b 2 00 02
n3 2 00 00
b 4 00 00 17 70
b 3 00 00 00
n2 1 00
9F40
9F6D
Indicates the data input and output capabilities of
PayPass MagStripe (Value = 00 01)
71
b 5 00 00 00 00 00
b 2 00 01
NEO Interface Developers Guide
DF28 Byte
PayPass Tag Equivalent
2
DF8119
DF29 Byte
PayPass Tag Equivalent
2
DF8118
Default UDOL
Maximum Lifetime of Torn Transaction Record
Maximum Number of Torn Transaction Records
MagStripe CVM Required Capability
Reader Contactless Transaction Limit, No On-
that will be used.
Hard-Coded
Tag Description Format Length
Default Value in
PayPass Kernel
Terminal Capabilities – No CVM Required
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount, Authorized
< CVM Required Limit. Formatted as Terminal
DF28
Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 00 E8
Terminal Capabilities – CVM Required
M/Chip v2.0 element indicating the Terminal
Capabilities to be used when Amount,
Authorized >= CVM Required Limit. Formatted as
DF29
Terminal Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
b 3 00 00 E8
DF811A
DF811C
DF811D
DF811E
DF8124
Used for calculating the CCC if no UDOL is present
in the card. The default is the tag and length of
the “Unpredictable Number”.
This is the maximum time a torn record can exist
in the log before it expires. It is expressed in
seconds.
While the transaction log is global to the reader,
the MasterCard application is the only application
that supports it.
Due to storage limitations, the maximum number
of records that may be configured is 2. There
may be 0, 1, or 2 torn transaction records
configured. If 0 records are configured, the torn
transaction recovery facility is effectively
disabled.
While the transaction log is global to the reader,
the MasterCard application is the only application
that supports it.
Indicates the CVM capability of the
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized
(Numeric) is greater than the Reader CVM
Required Limit.
Device CVM
When there is no On-Device CVM available (e.g.
with a phone), then this is the transaction limit
b 3 9F 6A 04
b 2 01 2C
b 1 00
b 1 F0
n12 6 00 00 00 00 00 00
72
NEO Interface Developers Guide
Reader Contactless Transaction Limit, On-Device
be used.
MagStripe No CVM Required Capability
Required Limit.
Message Hold Time
RF Hold Time Value
Phone Message Table
‘000000’.
CVM Required Limit
Hard-Coded
Tag Description Format Length
Default Value in
PayPass Kernel
CVM
DF8125
When On-Device CVM is available (e.g. with a
n12 6 00 00 00 00 00 00
phone) then this is the transaction limit that will
Indicates the CVM capability of the
DF812C
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized
b 1 F0
(Numeric) is less than or equal to the Reader CVM
Indicates the default delay for the processing of
the next MSG signal. The Message Hold Time is an
DF812D
integer in units of 100ms.
n6 3 00 00 13
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
Indicates the time that the field is to be turned
off after the transaction is completed if requested
DF8130
to do so by the cardholder device. The Hold Time
Value is in units of 100ms.
b 1 0D
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
DF8131
[1]
FFF5
Defines for the selected AID the message and
status identifiers as a function of the POS
Cardholder Interaction Information. The Phone
Message Table is a variable length list with 8-byte
entries. Each entry in the Phone Message Table
contains the following fields:
PCII Mask (3 bytes, binary)
PCII Value (3 bytes, binary)
Message Identifier (1 byte, binary)
Status (1 byte, binary)
The last entry in the phone message table must
always have the PCII Mask and PCII Value set to
Indicates the CVM required limit in the terminal
for the associated AIDs.
This is equivalent to MasterCard tag DF8126.
See next table
‘Phone Message
b Var.
Table Hard-
Coded Default
Value in Kernel’.
n12 6 00 00 00 00 00 00
73
NEO Interface Developers Guide
PayPass Profile
Terminal Action Code (Online)
Terminal Action Code (Default)
Terminal Action Code (Denial)
Hard-Coded
Tag Description Format Length
Default Value in
PayPass Kernel
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly
differently:
FFFC
[1]
87654321
-------X
------X-
-----X--
XXXXX---
Bit Meaning Values
MagStripe
Only
M/Chip Only
On Device
CVM
RFU
0 = normal transaction
1 = MagStripe only
transactions allowed
0 = normal transaction
1 = M/Chip only
Transactions allowed
0 = not supported
1 = supported
b 1 00
Reflect the acquirer-selected action to be taken
[1]
FFFD
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8122.
b 5 CC 00 00 00 00
Reflect the acquirer-selected action to be taken
[1]
FFFE
FFFF
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with
other proprietary TLVs.
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8120.
Reflect the acquirer-selected action to be taken
[1]
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8121.
b 5 CC 00 00 00 00
b 5 00 00 00 00 00
Table 23: Phone Message Table – Hard-Coded Default Value in Kernel
PCI Mask PCII Value Message Identifier Status
000800 000800
000400 000400
20 (SEE PHONE) 00 (NOT READY)
20 (SEE PHONE) 00 (NOT READY)
000100 000100 20 (SEE PHONE) 00 (NOT READY)
000200 000200
000000 000000
20 (SEE PHONE) 00 (NOT READY)
20 (SEE PHONE) 00 (NOT READY)
74
NEO Interface Developers Guide
Transaction Currency Code
American Express Group Configuration TLVs
American Express use Group 2 as default Group. The Set Configurable Group command should be
used to set the TLVs in this section. The following table in this section shows TLVs in American
Express Configuration Group.
Kiosk III rulefor American Express Configuration Group:
If a TLV value is absent in American Express Group, reader will use the value in Group 0, except
3 TLVs below:
For Transaction limit(FFF1), CVM limit(FFF5), Floor limit(9F1B): if user-defined TLV Group is
used, user should set these above TLVs in the user-defined Group. If not set, these above TLVs
will be regard as not present.
Vendi rule for American Express Configuration Group:
The following American Express Group TLVs should not be configured for Group 0. The
default American Express group is Group 2. That is, when the reader is configured from the
factory, the American Express System AIDs will be associated with Group 2.
If there are tags in a American Express group that should be set, they must all be set
explicitly, since the absent values are not filled in with Group 0 or Group 1 defaults.
American Express Group tags are instantiated a little differently than other groups. Group 0 is
never used as a default. Refer to the section on American Express Default Group for an
explanation of how the tag database is instantiated for American Express.
Table 24: American Express Default Group 2 Configuration TLVs
Tag Description Format Length
Indicates the currency code of the transaction
according to ISO 4217.
n3 2 08 40
Note: make sure you use the same
5F2A
Transaction Currency Code for all
configurable AIDs. (default = US Dollars)
Note: Kiosk III default value is “09 01”
Default Value in
Group 2
75
NEO Interface Developers Guide
Transaction Date (YYMMDD)
FF FF FF
Transaction Type
n12
6
Application Version Number
b 2 00 01
Terminal Country Code
n3 2 08 40
Terminal Floor Limit
b 4 00 00 17 70
Transaction Time (HHMMSS)
n6 3 FF FF FF
Tag Description Format Length
n6 3
This value is used to set the Real Time
Clock. Note: The terminal/POS
application should perform range checking
9A
on this value to ensure it is within
acceptable limits.
Note: Kiosk III default value is “not
present”
Indicates the type of financial transaction,
9C
9F03 Amount Other (Numeric)
9F09
represented by the first two digits of ISO
8583:1987 Processing Code. (default = purchase
goods or services)
Indicates the country code of the terminal,
represented according to ISO 3166. Default = US
Note: Kiosk III default value is “01 58”
ndicates the floor limit in the terminal for the AID(s) associated with this group.
Note: The value is the decimal limit amount given in
binary represented in Hex in the
command/response. (60 limit = 6000 decimal =
1770h).
This value is used to set the Real Time Clock.
Note: The terminal/POS application
should perform range checking on this
value to ensure it is within acceptable
limits.
Note: Kiosk III default value is not
present”
76
NEO Interface Developers Guide
Terminal Capabilities
b 3 00 08 E8
Terminal Type
Environment
Operational Control
Provided By:
Financial
Institution
Merchant
Cardholder
Attended
Offline with
Offline only
13
23
Unattended
ine with
n2
1
25
Terminal Transaction Capabilities
b 4 D8 E0 00 00
ExpressPay Terminal Capabilities
UN range
Tag Description Format Length
Indicates the card data input, CVM, and security
capabilities of the terminal
Default =
• No CVM required
9F33
• SDA supported
• DDA supported
• Card Capture
• CDA supported
Note: Kiosk III default value is “00 00 A8”
Indicates the environment of the terminal, its
communications capability, and its operational
control
9F35
Online only
online
capability
11
12
21
22
Default Value in
Group 2
9F6E
DF51
FFEE1C
Online only
Offl
online
capability
Offline only
14
15
16
24
25
26
34
35
36
Note: Kiosk III default value is 22
Note: Kiosk III default value is “not
present”
Used to create the ExpressPay Terminal
Capabilities TLV, 9F6D for Amex ExpressPay
applications.
Note: Kiosk III default value is 80
Note: Kiosk III default value is “not
present”
b 1 C0
b 4 00 00 00 3C
77
NEO Interface Developers Guide
Terminal Contactless Transaction Limit
n12 6 00 00 00 01 50
CVM Required Limit
n12 6 00 00 00 00 50
Terminal Action Code (Online)
b 5 00 00 00 00 00
Terminal Action Code (Default)
b 5 00 00 00 00 00
Terminal Action Code (Denial)
b 5 00 00 00 00 00
Tag Description Format Length
Indicates the terminal limit for this AID for
Contactless transactions.
FFF1[1]
Note: Kiosk III default value is 00 00 00 01
00 00
Indicates the CVM required limit in the terminal
for the associated AIDs.
FFF5[1]
Note: Kiosk III default value is 00 00 00 00
80 00
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
FFFD[1]
Note: Kiosk III default value is F8 50 AC F8
00
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
FFFE[1]
Note: KioskIII default value is F8 50 AC A0
00
Default Value in
Group 2
00
00
FFFF[1]
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with
other proprietary TLVs.
[2]
These objects only work on the ViVOpay graphic reader.
[3]
These objects only work on the Vendi
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
AID Configuration Tags
In this table, the “Usage” column indicates when the tag is used. In some cases,
the use may depend on whether a system AID or a user AID is being configured.
The possible usages are:
MAND – this is a mandatory tag when configuring an AID
OPT – this is an optional tag when configuring an AID
NEVER – this tag should never be used for configuring this type of AID (e.g.
“System”)
DEP – this tag is Mandatory depending on how another tag is configured.
For default values of the AID configuration TLVs for each System AID, refer to
the System AID Default Configuration TLVs table in the appendix.
78
NEO Interface Developers Guide
Automatically switch to Pass-Through Mode
01h = enabled
Identifies the payment system to which the
Tells the reader to allow partial selection
1 (01h) – MasterCard MagStripe Application
Enables or disables selection features. For
87654321
Selection Feature
Deprecated / RFU
Extended Selection
Cardholder Confirmation Not
API (application priority
Invalid AID Allowed
Duplicate AID Allowed
Enable Kernel ID
RFU
Table 25: AID Configuration TLVs
Data
Tag
Object
Usage Description
Name
Application
9F06
DF7C Auto-Switch OPT
FFE0
FFE1
FFE2
[1]
[1]
[1]
Identifier
(AID)
Registered
Application
Provider
Identifier
(RID)
Partial
Selection
Allowed
Application
Flow
MAND
Sys =
NEVER
User =
OPT
OPT
(Visa
MAND)
Sys =
NEVER
User =
MAND
Identifies the application as described in
ISO/IEC 7816-5.
This must be the 2nd TLV in the data field.
when PICC is unknown.
00h = disabled (default)
Certification Authority Public Key is
associated. If this Tag is not provided the
first five bytes from the AID are used.
during the initial select process. 01 =
Allowed, 00 = Disabled
Note: Required for Visa application flow,
this value is set to 01 Allowed and cannot
be changed.
M/Chip 3.0, this value will default to 74h.
Please refer to the Selection Features
section for a detailed description of this
tag.
-------x
------x-
Supported
-----x--
Supported
----x---
indicator) required
---x----
--x-----
-x-----x-------
b 1
NEO Interface Developers Guide
The TLV Group number that contains the
This value must be <= 16.
1 = This AID will not be added to
This list defines 3-byte triplets, where the
Byte
Description
1- Kernel ID
Kernel ID as defined by
2-
Supported transaction
3- Group
The group that should
ID.
characteristics for this AID
This must be the 1st TLV in Data Field.
For MasterCard PayPass and any
applications that use the Combined
FFE4
[1]
TLV Group
Number
MAND
Selection Feature, this tag represents
the fallback group if the TLV FFE9
n2 1
transaction type list is empty, or the
kernel ID is disabled (see tag FFE3).
For MasterCard PayPass, this tag may
NOT be Group 0
.
For Visa application flow, this value is set
FFE5
[1]
Maximum AID
Length
DEP
to 16 and cannot be changed.
Note: This tag must be included if the
b 1
FFE1 Partial Select TLV is included.
[1]
FFE6
AID Disabled OPT
FFE8
FFE9
Exclude from
Processing
Transaction
Type List
Used to disable a System AID (has no effect
on a User AID). 80h = disabled and 00h =
b 1
enabled
This byte is formatted as follows:
Meaning (0 = disable, 1 =
enable)
Exclude from PPSE processing.
the candidate list during PPSE.
Exclude from Trial and Error
processing. 1 = This AID may
not be added to the candidate
list during Trial and Error
(sometime referred to as “List
of AIDs” processing.
RFU
b 1
OPT
87654321
-------x
------x-
xxxxxx--
Kernel ID and transaction type may be used
to identify the group that will be used to
instantiate the dataset for the transaction.
A maximum of 8 entries may appear in this
list. The format of each triplet entry is as
follows:
OPT
Transaction
Type
Number
EMV first byte only.
types may be:
Payment(00), Cash(01),
Cashback(09) or
Refund(20)
be used for this
transaction and Kernel
b
Variable
<= 24
Group 0 may not be used in this list.
80
NEO Interface Developers Guide
This Kernel Identifier will be used if the
Card Application
Default KID
MasterCard
2
Visa
3
American Express
4
JCB Quickpay
5
All others
0
DF810C.
Tells the reader to allow Terminal AID List
card does not supply a valid Kernel ID
(9F2A). If this tag is not provided, then
default kernel identifiers will be used
depending on the application:
Configurable
FFEA
Kernel
Identifier
OPT
b 1
This tag is equivalent to MasterCard tag
DFEF2C
Terminal AID
List
OPT
support during the initial select process. 01
= Allowed, 00 = Disabled
b 1
Setting the FFE6 tag may disable an AID. However, the preferred method to disable an AID is
to issue a “Delete Configurable AID” command (04-04). For a system AID, the command will
set the disable bit in FFE6.
The following table lists the System AIDs and the default values for their TLVs
Table 26: System AID Default Configuration TLVs
Name Tag Length
Group
AID
Partial Selection
Application Flow
Max AID Length
Group
AID
Partial Selection
Application Flow
Max AID Length
Selection Features
Transaction Type
List
Kernel ID
FF E4
9F 06
FF E1
FF E2
FF E5
FF E4
9F 06
FF E1
FF E2
FF E5
FF E3
FF E9
FF EA
(Hex)
01
06
01
01
01
01
07
01
01
01
01
0C
01
Value (Hex) Card Application
02
A0 00 00 00 25 01
01
02
10
01
A0 00 00 00 04 10 10
01
03
10
74
02 00 01
02 20 01
02 01 01
02 09 01
02
American Express
MasterCard
PayPass
Application
81
NEO Interface Developers Guide
Name Tag Length
(Hex)
Group
AID
Partial Selection
Application Flow
Max AID Length
Selection Features
Group
AID
Partial Selection
Application Flow
Max AID Length
Selection Features
Transaction Type
List
Kernel ID
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
FF E4
9F 06
FF E1
FF E2
FF E5
FF E3
FF E4
9F 06
FF E1
FF E2
FF E5
FF E3
FF E9
FF EA
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
01
07
01
01
01
01
01
07
01
01
01
01
0C
01
01
07
01
01
01
01
01
07
01
01
01
01
01
07
01
01
01
01
Value (Hex) Card Application
00
A0 00 00 00 65 90 01
01
0E
08
14
Note: Vendi default value,
FF E6 = 80
01
A0 00 00 00 04 30 60
01
03
10
74
02 00 01
02 20 01
02 01 01
02 09 01
02
00
A0 00 00 00 03 10 10
06
01
10
14
00
A0 00 00 00 03 20 10
06
01
10
14
00
A0 00 00 00 03 30 10
06
01
10
14
JCB (QUICPay)
Application
MasterCard
PayPass
Application
Visa Application
Visa Application
(Visa Electron)
Visa Application
(Visa Interlink)
82
NEO Interface Developers Guide
Name Tag Length
(Hex)
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
Group
AID
Application Flow
Partial Selection
Max AID Length
Selection Features
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
FF E4
9F 06
FF E2
FF E1
FF E5
FF E3
01
07
01
01
01
01
01
07
01
01
01
01
01
0A
01
01
01
01
Value (Hex) Card Application
00
A0 00 00 00 03 80 10
06
01
10
14
00
A0 00 00 00 65 10 10
06
01
10
14
Note: Vendi default value,
FF E2 = FF
00
A0 00 00 00 02 30 60 D1 58 00
10
01
10
74
Visa Application
(Visa Plus)
Visa Application
(J/Speedy)
MXI Application
Group
AID
Application Flow
Partial Selection
Max AID Length
Group
AID
Application Flow
Partial Selection
Max AID Length
Group
AID
Partial selection
Application Flow
Max AID Length
Selection Features
FF E4
9F 06
FF E2
FF E1
FF E5
FF E4
9F 06
FF E2
FF E1
FF E5
FF E4
9F 06
FF E1
FF E2
FF E5
FF E3
01
07
01
01
01
01
07
01
01
01
01
07
01
01
01
01
Note: Vendi default value,
FF E2 = FF
00
A0 00 00 03 24 10 10
0D
01
10
00
A0 00 00 01 52 30 10
0D
01
10
00
A0 00 00 04 17 01 01
01
0F
08
08
Discover
(ZIP)Application
Discover (D-PAS)
Application
STAR Application
83
NEO Interface Developers Guide
Name Tag Length
(Hex)
Group
AID
Partial selection
Application Flow
Max AID Length
Group
AID
Partial selection
Application Flow
Max AID Length
FF E4
9F 06
FF E1
FF E2
FF E5
FF E4
9F 06
FF E1
FF E2
FF E5
01
07
01
01
01
01
07
01
01
01
Value (Hex) Card Application
00
A0 00 00 02 77 10 10
01
15
10
Note: Vendi default value,
FF E2 = 15
00
A0 00 00 04 76 D0 00
01
17
10
Interac
Application
SmartTap
84
NEO Interface Developers Guide
87654321
Feature Name
Description
Deprecated/RFU
Reserved for Future use.
Extended Selection
Allow the Extended Selection value optionally provided by the
Cardholder Confirmation
0 = Cardholder Confirmation is allowed for this AID and if API bit
API Required
0 = the API is not required for this AID and the application may
added to the candidate list if the API is missing.
Invalid AID Allowed
0 = any invalid AID will cause this AID to terminate the
Duplicate AID Allowed
0 = a duplicate AID, whether extended or not, is not allowed and
may be added to the candidate list.
Enable Kernel ID
1 = allow the evaluation of the Kernel ID.
0 = if a Kernel ID is provided by the card it is ignored.
RFU
Reserved for Future Use.
6.0 Card Application Selection
Combined Selection
The selection of a card application may be based on a Kernel ID, transaction
type and other requirements. The Selection Features tag directs the flow
through the selection logic in the firmware. In addition, the selection of an AID
may be based on a list of transaction types that it supports. Depending on the
transaction type, the AID may be mapped to a different Configurable Group.
This entire process is referred to as “Combined Selection”.
Selection Features (FFE3)
The following table defines each of the bits in the Selection Features tag (FFE3)
and describes how they control the logic flow:
-------x
------x-
-----x--
----x---
---x----
--x-----
Supported
Not Supported
card in PPSE to be added to the AID for final selection. The
resulting AID must be less than or equal to 16 bytes or the
candidate will not be added to the candidate list.
0 = the Extended Selection value, if provided by the card, will
not be appended to the AID value for final select.
1 = the Extended Selection value, if provided by the card, will
be appended to the AID value, if it fits (AID + ES <= 16), for use
in final select.
8 (Cardholder Confirmation) is true, the application will not be
added to the candidate list.
1 = Customer Cardholder Confirmation is not allowed for this
AID, API bit 8 (Cardholder Confirmation) will be ignored.
be added to the candidate list if the API is missing.
1 = the API is required for this AID; the application will not be
transaction.
1 = any invalid AID will be ignored as related to this AID.
will not be added to the candidate list.
1 = a duplicate AID, whether extended or not, is allowed and
-x------
x-------
85
NEO Interface Developers Guide
Value
Description
Partial selection is
0 = This AID does not participate in partial selection
RFU
Reserved for Future Use
87654321
Process to be Excluded
Description
Exclude from PPSE
0 = This AID may be added to the candidate list during PPSE.
Exclude from Trial &
0 = This AID may be added to the candidate list during T&E.
RFU
Reserved for Future Use
Refer to the System AID Defaults for the configuration of Selection features for
each of the AIDs. If no Selection Features tag (FFE3) is specified, then no
selection features are specified.
Partial Selection (FFE1)
For some applications, an AID on the card may be longer than an AID configured
in the reader. If partial selection is allowed, the AID will be considered a match
if all of the AID configured in the reader matches the first portion of an AID in
the card.
Table 1: Partial Selection (FFE1)
87654321
-------x
allowed
xxxxxxx-
1 = This AID will participate in partial selection (default)
For M/Chip 3.0, this value should be set to “allowed”
Historically, Partial Selection has been a separate tag. However, it is an integral part of the
selection process, and may be used in conjunction with combined selection features.
AID Participation in Selection Processes (FFE8)
In some cases, applications/AIDs may not be able to participate in some of the
selection processes. For example, some cards/applications do not support PPSE.
The following table describes the bits in tag FFE8 that may be used to exclude
an AID from selection processes.
Table 2: Exclude from Processing (FFE8)
-------x
Processing
------x-
Error Processing
xxxxxx--
1 = This AID will not be added to the candidate list during PPSE.
1 = This AID will not be added to the candidate list during T&E.
“Trial & Error” is sometimes referred to as “List of AIDs”. It is a process by which the reader
will attempt to select an AID by going through its list, hoping for a successful selection.
For M/Chip 3.0, tag FFE8 should be set to 0x00.
86
NEO Interface Developers Guide
87654321
Value
Description
Terminal AID List is
0 = Terminalwill not send out terminal AID data
RFU
Reserved for Future Use
Terminal AID List (DFEF2C)
The Terminal AID List Tag DFEF2C is associated with each Terminal AID which
set by the 04-02 (Load AID) command. This tag can control which Terminal AID
should be sent to the card, if the Select AID Command (with PPSE) get “Select
AID Failed”(response SW1/SW2 not 9000 or format error), or the AID list
returned by the card cannot matched by any Terminal AID. One by one, the
terminal will check each Tag DFEF2C associated with the Terminal AID, if the
Tag DFEF2C value is ‘01’, the terminal will send out that Terminal AID data to
the card, contactless transaction can be continued if any Terminal AID matched
by the card; if the Tag DFEF2C value is ‘00’, that terminal AID data will not be
sent.
Table 3: Terminal AID List (DFEF2C)
-------x
allowed
xxxxxxx-
1 = Terminal will send out terminal AID data
Note: The Terminal AIDs can be modified by 04-02 Load AID
command.
87
NEO Interface Developers Guide
7.0 Card Application Specific Behavior
This section contains information specific to a particular card application.
MasterCard PayPass M/Chip
The implementation of MasterCard M/Chip 3.0 is the EMV mode transaction flow.
This includes support for Mag Stripe, but does not include Data Exchange
functionality.
The M/Chip 3.0 implementation incorporates new functionality for:
Balance reading before and after GenAC
Recovery of torn transactions
Support for Certificate Revocation List functions
STOP command processing
Support for defining proprietary tags that are not otherwise handled or
defined in the tag database.
PayPass Default Group
The PayPass implementation required a new data model in which data objects
could be “not present” or “not defined”. As a result, the historical method of
using Group 0 to define default tags could not be used.
Group 0 is no longer used by the PayPass application. The default group for
PayPass applications is Group 1.
In addition to the PayPass default group, the PayPass Kernel also keeps hardcoded values for a sub-set of the group parameters that are essential for a
transaction. If one of these data items is not available via Activate Transaction
or via Get Configurable Group, then the kernel uses its own hard-coded value
for the ‘Not Present’ data item.
Balance Read Function
The balance may be read from cards that support balance reading. The balance
may be read before or after the Generate AC process. In order to enable
balance reading, the tags for balance read must be defined in the tag database.
This may be accomplished through the Set Configurable Group command or by
including the balance TLVs (DF8104, DF8105) in the Activate command.
For example, if DF8104 is included in the Activate Command, and the card
supports balance reading, then the balance read prior to Generate AC will be
returned in the DF8104 TLV in the Activate response.
88
Loading...
+ hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.