Download: | |
Mirror Download [FCC.gov] | |
Document ID | 3704675 |
Application ID | B+ud7P7LmYSyq4o/rlATEA== |
Document Description | Users Manual |
Short Term Confidential | No |
Permanent Confidential | No |
Supercede | No |
Document Type | User Manual |
Display Format | Adobe Acrobat PDF - pdf |
Filesize | 407.04kB (5088010 bits) |
Date Submitted | 2018-01-07 00:00:00 |
Date Available | 2018-01-08 00:00:00 |
Creation Date | 2017-12-15 16:21:36 |
Producing Software | ç¦æ˜•PDF打å°æœº 版本 8.3.1.0522 |
Document Lastmod | 2017-12-15 16:21:36 |
Document Title | Users Manual |
NEO Interface Developers Guide
80139403-001 Rev.116
8 Sep 2017
ID TECH. 10721 Walker St., Cypress, CA 90630
Email: support@idtechproducts.com URL: http://www.idtechproducts.com
Confidential
NEO Interface Developers Guide
Copyright
Copyright © 2017, ID TECH. All rights reserved.
ID TECH
10721 Walker St.
Cypress, CA 90630
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.
ii
NEO Interface Developers Guide
Table of Contents
1.0
INTRODUCTION .......................................................................................................................... 1
HISTORICAL BACKGROUND .................................................................................................................. 1
MasterCard Contactless (PayPass) Capability ........................................................................................ 1
Protocol 1 Deprecated ............................................................................................................................ 1
ORGANIZATION OF THIS GUIDE ............................................................................................................................ 1
NOTATIONAL CONVENTIONS ............................................................................................................................... 2
READER INTERFACE CAPABILITIES ......................................................................................................................... 2
2.0
QUICK REFERENCE ...................................................................................................................... 4
COMMAND TABLES ........................................................................................................................................... 4
Commands Sorted by Command Name .................................................................................................. 4
Commands Sorted by Command Number ............................................................................................... 7
Pass-Through Command Table ............................................................................................................. 11
EMV Key Manager Command Tables.................................................................................................... 12
STATUS CODES ............................................................................................................................................... 13
Status Codes for Protocol 1 ................................................................................................................... 13
Status Codes for Protocol 2 ................................................................................................................... 13
ERROR CODES ................................................................................................................................................ 15
RF STATE CODES ............................................................................................................................................ 18
3.0
SERIAL COMMUNICATION INTERFACES .......................................................................................20
RS232 SERIAL INTERFACE ................................................................................................................................ 20
Port Settings.......................................................................................................................................... 20
Basic Communication............................................................................................................................ 20
Timeouts ............................................................................................................................................... 20
USB HID INTERFACE....................................................................................................................................... 21
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
4.0
VIVOPAY COMMUNICATION PROTOCOLS ...................................................................................26
PROTOCOL 1 (DEPRECATED) ............................................................................................................................. 26
Command Frames ................................................................................................................................. 26
ACK Frames ........................................................................................................................................... 26
NACK Frames ........................................................................................................................................ 27
Special Frames ...................................................................................................................................... 27
PROTOCOL 2.................................................................................................................................................. 27
Command Frames ................................................................................................................................. 27
Response Frames .................................................................................................................................. 28
PASS-THROUGH MODE (PROTOCOL 2) ............................................................................................................... 28
iii
NEO Interface Developers Guide
Basic Pass-Through Operation .............................................................................................................. 28
Pass-Through Command Frame ............................................................................................................ 29
Pass-Through Response Frame ............................................................................................................. 29
Suggested Sequence for Pass-Through Commands .............................................................................. 29
Auto-Switch to Pass-Through Mode ..................................................................................................... 30
RF On/Off States for Pass-through Commands..................................................................................... 33
BURST MODE ................................................................................................................................................ 33
ViVOpay Burst Mode Frames ................................................................................................................ 34
CRC CALCULATION ......................................................................................................................................... 42
5.0
TAG AND DATA SET CONFIGURATION .........................................................................................45
CONFIGURABLE AIDS AND GROUPS.................................................................................................................... 46
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
ViVOpay Proprietary TLVs ..................................................................................................................... 51
CARD APPLICATION PROPRIETARY TAG LIST (FF69) .............................................................................................. 51
CONFIGURATION TAG TABLES ........................................................................................................................... 52
Global Configuration Tags .................................................................................................................... 52
Group Configuration Tags ..................................................................................................................... 56
PayPass Group Configuration TLVs ....................................................................................................... 64
PayPass Group Configuration TLVs with Hard-Coded Values in Kernel ................................................ 70
American Express Group Configuration TLVs ........................................................................................ 75
AID Configuration Tags ......................................................................................................................... 78
6.0
CARD APPLICATION SELECTION ..................................................................................................85
COMBINED SELECTION ..................................................................................................................................... 85
Selection Features (FFE3) ...................................................................................................................... 85
PARTIAL SELECTION (FFE1) .............................................................................................................................. 86
AID PARTICIPATION IN SELECTION PROCESSES (FFE8) ........................................................................................... 86
TERMINAL AID LIST (DFEF2C) ......................................................................................................................... 87
7.0
CARD APPLICATION SPECIFIC BEHAVIOR .....................................................................................88
MASTERCARD PAYPASS M/CHIP....................................................................................................................... 88
PayPass Default Group ......................................................................................................................... 88
Balance Read Function.......................................................................................................................... 88
Torn Transaction Recovery.................................................................................................................... 89
EMV Certificate Revocation List ............................................................................................................ 89
Stop Transaction Command .................................................................................................................. 89
Proprietary Tag List ............................................................................................................................... 89
PayPass Personalization Limits ............................................................................................................. 89
8.0
PROTOCOL COMMAND REFERENCE: PROTOCOL 1 .......................................................................91
TRANSACTION RELATED COMMANDS.................................................................................................................. 91
Flush Track Data (17-02) ....................................................................................................................... 91
Get Full Track Data (17-CD) .................................................................................................................. 91
Get ViVOpay Firmware Version (29-00) ................................................................................................ 94
KEY MANAGER COMMANDS PROTOCOL 1 ........................................................................................................... 95
Set CA Public Key (24-01) Protocol 1 ..................................................................................................... 96
Delete CA Public Key (24-02) Protocol 1.............................................................................................. 100
iv
NEO Interface Developers Guide
Delete All CA Public Keys (24-03) Protocol 1 ....................................................................................... 102
MISCELLANEOUS PROTOCOL 1 COMMANDS....................................................................................................... 103
Set RF Error Reporting (17-03) ............................................................................................................ 103
RTC (REAL TIME CLOCK) SET UP COMMANDS ................................................................................................... 103
RTC Set Time (25-01) ........................................................................................................................... 104
RTC Get Time (25-02) .......................................................................................................................... 105
RTC Set Date (25-03) ........................................................................................................................... 105
RTC Get Date (25-04) .......................................................................................................................... 107
9.0
PROTOCOL COMMAND REFERENCE: PROTOCOL 2 ..................................................................... 109
GENERAL COMMANDS ................................................................................................................................... 109
Ping (18-01)......................................................................................................................................... 109
Set Poll Mode (01-01) ......................................................................................................................... 109
Control User Interface (01-02) ............................................................................................................ 110
Set/Get Source for RTC/LCD/Buzzer/LED (01-05)................................................................................ 112
Set Configuration Defaults Command (04-09) .................................................................................... 114
Set Configuration Defaults and Keep Encrypt Key Command (04-0A) ................................................ 116
Set Configuration (04-00).................................................................................................................... 116
Get Configuration (03-02) ................................................................................................................... 117
Get Version Protocol 2 (29-00) ............................................................................................................ 118
Get USB Boot Loader Version (29-04) ................................................................................................. 119
Get Contact EMV L2 Kernel Version (29-06) ....................................................................................... 119
Get Contact EMV L2 Kernel Version Detail (29-07) ............................................................................. 120
Get Contact EMV L2 Kernel Checksum (29-08) ................................................................................... 120
Get Contact EMV L2 Terminal Configuration Checksum (29-09) ........................................................ 121
Get UID of MCU (29-17) ...................................................................................................................... 122
Set Baud Rate (30-01) ......................................................................................................................... 122
Set Temporary Baud Rate (30-02)....................................................................................................... 123
Set Baud Rate and Audio Level (30-03) – UniPay 1.5 & UniPay III ...................................................... 124
Set Cable Type (32-02) ........................................................................................................................ 125
Get Cable Type (32-01) ....................................................................................................................... 125
Set Serial Number (12-02) ................................................................................................................... 126
Get Serial Number (12-01) .................................................................................................................. 126
Bootup Notification Command (14-01) ............................................................................................... 127
CONFIGURABLE AID AND GROUP COMMANDS ................................................................................................... 128
Set Configurable AID (04-02) .............................................................................................................. 128
Set Configurable Group (04-03) .......................................................................................................... 130
Get Configurable AID (03-04) .............................................................................................................. 131
Get Configurable Group (03-06) ......................................................................................................... 131
Delete Configurable AID (04-04) ......................................................................................................... 132
Delete Configurable Group (04-05) ..................................................................................................... 133
Get All AIDs (03-05) ............................................................................................................................. 134
Get All Groups (03-07) ........................................................................................................................ 135
TRANSACTION RELATED COMMANDS: CONTACT ................................................................................................. 135
Setting transaction parameters .......................................................................................................... 136
Contact EMV L2 Transaction Flow ...................................................................................................... 137
Contact Retrieve Application Data (60-01) ......................................................................................... 138
Contact Remove Application Data (60-02) ......................................................................................... 138
Contact Set Application Data (60-03) ................................................................................................. 139
Contact Retrieve Terminal Data (60-04) ............................................................................................. 140
Contact Remove Terminal Data (60-05) ............................................................................................. 141
Contact Set Terminal Data (60-06) ..................................................................................................... 142
Contact Retrieve AID List (60-07) ........................................................................................................ 148
NEO Interface Developers Guide
Contact Retrieve CA Public Key (60-08) ............................................................................................... 149
Contact Remove CA Public Key (60-09) ............................................................................................... 150
Contact Set CA Public Key (60-0A) ...................................................................................................... 151
Contact Retrieve CA Public Key List (60-0B) ........................................................................................ 152
Contact Retrieve Certification Revocation List (60-0C) ....................................................................... 152
Contact Remove Certification Revocation List (60-0D) ....................................................................... 153
Contact Set Certification Revocation List (60-0E)................................................................................ 154
Contact Remove Transaction Amount Log (60-0F) ............................................................................. 155
Contact Start Transaction (60-10) ...................................................................................................... 155
Contact Authenticate Transaction (60-11).......................................................................................... 161
Contact Apply Host Response (60-12) ................................................................................................. 164
Contact Retrieve Transaction Result (60-13) ...................................................................................... 167
Contact Get Reader Status (60-14) ..................................................................................................... 169
Contact Get ICS Identification (60-15) ................................................................................................ 169
Contact Set ICS Identification (60-16) ................................................................................................. 170
Contact LCD Display Control (61-01) (Reader send to Host) ............................................................... 171
Contact Get PIN Control (61-02) (Reader send to Host) ...................................................................... 173
Contact Get MSR Data Control (Reader send to Host)(61-03) ............................................................ 176
TRANSACTION RELATED COMMANDS: CONTACTLESS ........................................................................................... 178
Activate Transaction Command, Contactless (02-01 and 02-40) ........................................................ 178
Get Transaction Result (03-00 and 03-40) .......................................................................................... 202
Update Balance Command (03-03) ..................................................................................................... 207
Cancel Transaction Command (05-01) ................................................................................................ 208
MASTERCARD M/CHIP 3.0 TRANSACTION COMMANDS ...................................................................................... 209
Stop Transaction (05-02)..................................................................................................................... 209
Reset Torn Transaction Log (84-0E) .................................................................................................... 210
Clean Torn Transaction Log (84-0F) Command ................................................................................... 211
VISA VCPS TRANSACTION COMMANDS ............................................................................................................ 212
Set Cash Transaction Reader Risk Parameters (04-0C) ....................................................................... 212
Get Cash Transaction Reader Risk Parameters (03-0C) ...................................................................... 213
Set Cashback Transaction Reader Risk Parameters (04-0D) ............................................................... 214
Get Cashback Transaction Reader Risk Parameters (03-0D) .............................................................. 215
Set DRL Reader Risk Parameters (04-0E) ............................................................................................ 216
Get DRL Reader Risk Parameters (03-0E)............................................................................................ 217
KEY MANAGEMENT COMMANDS ..................................................................................................................... 218
Get CA Public Key (D0-01) ................................................................................................................... 219
Get CA Public Key Hash (D0-02) .......................................................................................................... 220
Set CA Public Key (D0-03) .................................................................................................................... 221
Delete CA Public Key (D0-04) .............................................................................................................. 221
Delete All CA Public Keys (D0-05) ........................................................................................................ 222
Get All CA Public RIDs (D0-06) ............................................................................................................. 222
List CA Public Key IDs or RID (D0-07) ................................................................................................... 223
MODULE VERSIONING ................................................................................................................................... 223
Get Product Type (09-01) .................................................................................................................... 225
Get Processor Type (09-02) ................................................................................................................. 226
Get Main Firmware Version (09-03) ................................................................................................... 227
Get Hardware Information (09-14) ..................................................................................................... 228
Get Module Version Information (09-20) ............................................................................................ 229
INTERNATIONAL LANGUAGE SUPPORT............................................................................................................... 230
Other Language .................................................................................................................................. 231
Bitmap Conversion Completed by POS ................................................................................................ 231
ILM Header Format ............................................................................................................................. 231
Language Version Information ........................................................................................................... 232
vi
NEO Interface Developers Guide
EMV CERTIFICATE REVOCATION LIST COMMANDS .............................................................................................. 233
Get EMV Revocation Log Status (84-03) ............................................................................................. 234
Add Entry to EMV Revocation List (84-04) .......................................................................................... 234
Delete All Entries for Single Index in EMV Revocation List (84-05) ..................................................... 235
Delete All Entries from EMV Revocation List (84-06) .......................................................................... 235
Get EMV Revocation List (84-07) ........................................................................................................ 236
Delete an Entry from EMV Revocation List (84-0D) ............................................................................ 237
EMV EXCEPTION LOG LIST COMMANDS ........................................................................................................... 238
Get EMV Exception Log Status (84-08) ............................................................................................... 238
Add Entry to EMV Exception List (84-09) ............................................................................................ 238
Delete Entry from EMV Exception List (84-0A) .................................................................................... 239
Delete All Entries from EMV Exception List (84-0B) ............................................................................ 240
Get EMV Exception List (84-0C)........................................................................................................... 240
GENERIC PASS-THROUGH COMMANDS ............................................................................................................. 241
Pass-Through Mode Start/Stop (2C-01) .............................................................................................. 241
Get PCD and PICC Parameters (2C-05) ................................................................................................ 242
Poll for Token (2C-02) ......................................................................................................................... 243
Enhanced Poll for Token (2C-0C) ......................................................................................................... 245
Get ATR (2C-12)................................................................................................................................... 248
Antenna Control (28-01) ..................................................................................................................... 250
PASS-THROUGH UI CONTROL.......................................................................................................................... 250
LED Control (0A-02)............................................................................................................................. 250
Buzzer Control (0B-xx) ......................................................................................................................... 251
PASS-THROUGH DATA EXCHANGE .................................................................................................................... 252
Exchange Contactless Data (2C-03) .................................................................................................... 252
PCD Single Command Exchange (2C-04) Protocol 2............................................................................ 253
High Level Halt Command (2C-09) ...................................................................................................... 257
Enhanced Pass-Through Command (2C-0B) ....................................................................................... 257
Single Shot Commands........................................................................................................................ 261
Exchange APDU Data (2C-13) ............................................................................................................. 265
Contact Card Power Off (2C-18) .......................................................................................................... 266
HIGH LEVEL PASS-THROUGH COMMANDS FOR MIFARE CARDS.............................................................................. 267
Mifare Authenticate Block (2C-06)...................................................................................................... 267
Mifare Read Blocks (2C-07) ................................................................................................................. 268
Mifare Write Blocks (2C-08) ................................................................................................................ 270
Mifare ePurse Command (2C-0A) ....................................................................................................... 271
HIGH LEVEL PASS-THROUGH COMMANDS FOR NFC CARDS .................................................................................. 277
NFC Commands (2C-40) ...................................................................................................................... 277
SECURE PASS-THROUGH FUNCTION ................................................................................................................. 280
10.0
SECURE COMMUNICATION .................................................................................................. 288
Burst mode .......................................................................................................................................... 288
Data Output ........................................................................................................................................ 288
Encryption Algorithms......................................................................................................................... 288
Secure Data Exchange ........................................................................................................................ 289
Padding of Data Fields ........................................................................................................................ 289
Set Data Encryption Key Variant Type (C7-2F) .................................................................................... 290
Get Data Encryption Key Variant Type (C7-30) ................................................................................... 290
Set DUKPT Key Encryption Type (C7-32) ............................................................................................. 291
Get DUKPT Key Encryption Type (C7-33) ............................................................................................. 291
Set Data Encryption Enable Flag (C7-36) ............................................................................................ 292
Get Data Encryption Enable Flag (C7-37)............................................................................................ 294
Set MSR Secure Parameters (C7-38) ................................................................................................... 294
vii
NEO Interface Developers Guide
Get MSR Secure Parameters (C7-39) .................................................................................................. 295
KEY INJECTION AND RELATED COMMANDS ........................................................................................................ 296
Set Remote Key Injection Timeout (C7-2D) ......................................................................................... 296
Get Remote Key Injection Timeout (C7-2E) ......................................................................................... 296
Check DUKPT Keys (81-02) .................................................................................................................. 297
Check DUKPT Key (81-04).................................................................................................................... 298
Get DUKPT Key Serial Number (KSN) (81-0A)...................................................................................... 299
11.0
IMPROVED COLLISION DETECTION ....................................................................................... 301
Issues with Standard Collision Detection ............................................................................................ 301
Collision Detection Modes................................................................................................................... 302
12.0
KIOSK III BOOT LOADER ....................................................................................................... 305
DESCRIPTION ............................................................................................................................................... 305
BOOT PROCEDURE ........................................................................................................................................ 305
COMMUNICATION PROTOCOL ......................................................................................................................... 306
FIRMWARE DOWNLOADER FILE NAME FORMAT ................................................................................................. 306
FIRMWARE DOWNLOADER DATA FORMAT ........................................................................................................ 307
DOWNLOAD FIRMWARE STEPS ........................................................................................................................ 308
FIRMWARE DOWNLOADER COMMANDS............................................................................................................ 308
Enter Boot Loader Process from Main Application (C7-41)................................................................. 308
Get Boot Loader Version (C7-10) ........................................................................................................ 308
Start Update Process (C7-11) .............................................................................................................. 309
Erase Boot/Application Space(C7-12) ................................................................................................. 309
Send Encrypted Firmware Check Value(C7-13) ................................................................................... 310
Send Firmware Data (C7-14) ............................................................................................................... 311
End Update Process (C7-15) ................................................................................................................ 311
Start Application (C7-16)..................................................................................................................... 312
Firmware Downloader Command Processing Flow ............................................................................ 312
13.0
UNIPAY 1.5 & UNIPAY III COMMANDS .................................................................................. 314
Set PMC Status (F0-00) ....................................................................................................................... 314
Get PMC Status (F0-01) ....................................................................................................................... 315
Get Battery Level (F0-02) .................................................................................................................... 315
Shut Off the Power (F0-0F).................................................................................................................. 316
14.0
VIVOPAY VENDI READER COMMANDS.................................................................................. 318
Configure Buttons (F0-F4) ................................................................................................................... 318
Get Button Configuration (F0-F5) ....................................................................................................... 318
Disable Blue LED Sequence (F0-F6) ..................................................................................................... 319
Enable Blue LED Sequence (F0-F7) ...................................................................................................... 320
LCD Display Clear (F0-F9) .................................................................................................................... 321
Turn Off Yellow LED (F0-FA) ................................................................................................................ 321
Turn On Yellow LED (F0-FB)................................................................................................................. 322
Buzzer On/Off (F0-FE) ......................................................................................................................... 322
LCD Display Line 1 Message (F0-FC).................................................................................................... 323
LCD Display Line 2 Message (F0-FD) ................................................................................................... 323
15.0
APPLEPAY VAS AND OTHER SPECIAL FUNCTIONS .................................................................. 325
APPLEPAY VAS FUNCTIONALITY ...................................................................................................................... 325
Set Merchant Record (04-11) .............................................................................................................. 331
Get Merchant Record (03-11) ............................................................................................................. 332
PEER TO PEER FUNCTIONALITY ........................................................................................................................ 333
viii
NEO Interface Developers Guide
Peer To Peer Send A Message (C7-9A) ................................................................................................ 333
Peer To Peer Receive A Message (C7-9B) ............................................................................................ 333
ASYNCHRONOUS MEDIA TRACKING (ONLY FOR KIOSK III)..................................................................................... 334
DETERMINE CARD PRESENCE (ONLY FOR KIOSK III) ............................................................................................. 335
Detect Card Presence Command (02-05) ............................................................................................ 335
MSR EQUIVALENT DATA FUNCTION................................................................................................................. 336
Tag DFEF4B ......................................................................................................................................... 336
Tag DFEF4C ......................................................................................................................................... 338
Tag DFEF4D ........................................................................................................................................ 338
16.0
SAMPLE SCENARIOS AND FRAME FLOW ............................................................................... 344
CONTACTLESS MAGSTRIPE TRANSACTIONS IN AUTO POLL MODE .......................................................................... 344
CONTACTLESS MAGSTRIPE TRANSACTIONS IN POLL ON DEMAND MODE ................................................................. 346
EMV (M/CHIP) TRANSACTION IN POLL ON DEMAND MODE ................................................................................ 348
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
APPENDIX A.5: FIRMWARE FAQ ........................................................................................................ 359
APPENDIX A.6: TDES DATA ENCRYPTION EXAMPLES........................................................................... 363
APPENDIX A.7: AES DATA ENCRYPTION EXAMPLES ............................................................................ 374
APPENDIX A.8: TRANSACTION RESULTS FOR MSD2.0.2 AC3.0 CRYPTOGRAM17 ................................... 386
APPENDIX A.9: PREPARING BITMAPS FOR USE WITH ILM ................................................................... 387
APPENDIX A.10: DEFAULT CONFIGURATION ...................................................................................... 393
APPENDIX A.11: ENHANCED ENCRYPTED MSR DATA OUTPUT FORMAT............................................... 401
APPENDIX A.12: ENCRYPTED DATA FORMAT, TLV-BASED ................................................................... 405
Using Length Byte to Flag Mask and Encryption (IDTech Enhanced TLV): .......................................... 405
ENCRYPTED/MASKED TAG NOTE .................................................................................................................... 406
TRACK 1 (TAG 56) & 2 (TAG 9F6B) MASK CONFIGURATION NOTE ....................................................................... 408
OTHER TAG VALUE MASK CONFIGURATION NOTE .............................................................................................. 408
DETAILED – TLV ENCRYPTED RESPONSE FORMAT ............................................................................................... 409
Example of Encrypting a TLV ............................................................................................................... 409
Command Format ............................................................................................................................... 411
Response Formats ............................................................................................................................... 411
APPENDIX A.13: ENHANCED ENCRYPTED MSR DATA OUTPUT WHEN ENCRYPTION IS TURNED ON WITH
C7-38 COMMAND ............................................................................................................................. 413
APPENDIX A.14: GLOSSARY ............................................................................................................... 415
APPENDIX A.15: REVISION HISTORY .................................................................................................. 417
ix
NEO Interface Developers Guide
NEO Interface Developers Guide
List of Tables
Table 1: Hardware Cross Reference .................................................................................... 3
Table 2: Commands Sorted by Command Name ................................................................ 4
Table 3: Commands Sorted by Command Number ............................................................. 7
Table 4: Pass-Through Command Table ............................................................................ 11
Table 5: EMV Key Management – Protocol 2 .................................................................... 12
Table 6: EMV Key Management - Protocol 1..................................................................... 12
Table 7: Protocol 1 Status Codes ....................................................................................... 13
Table 8: Protocol 2 Status Codes ....................................................................................... 13
Table 9: Error Codes .......................................................................................................... 15
Table 10: RF State Codes ................................................................................................... 19
Table 11: Serial Port Settings ............................................................................................. 20
Table 12: Poll for Token Data Field for Response Frame (Status Code is OK) ................... 32
Table 13: Burst Mode Frames............................................................................................ 34
Table 14: Payload Frame with Cryptogram Data Format and Content When Status OK . 35
Table 15: Asynchronous UI Message Event ....................................................................... 40
Table 16: Asynchronous UI Message Event Status ............................................................ 40
Table 17: Asynchronous UI message Event Application Type ........................................... 41
Table 18: System AIDs ....................................................................................................... 48
Table 19: Global Configuration TLVs ................................................................................. 52
Table 20: Group Configuration TLVs .................................................................................. 56
Table 21: PayPass Default Group Configuration TLVs ....................................................... 64
Table 22: PayPass Group Configuration TLVs with Hard-Coded Default Values in Kernel 71
Table 23: Phone Message Table – Hard-Coded Default Value in Kernel .......................... 74
Table 24: American Express Default Group 2 Configuration TLVs .................................... 75
Table 25: AID Configuration TLVs ...................................................................................... 79
Table 26: System AID Default Configuration TLVs ............................................................. 81
Table 27: Get Full Track Data Error Codes ......................................................................... 92
Table 28: EMV Key Management Commands Error Codes – Protocol 1........................... 96
Table 29: Set CA Public Key Data Field .............................................................................. 99
Table 30: Error Codes for RTC Management Commands ................................................ 104
Table 31: Control User Interface Data ............................................................................. 111
Table 32: Activate Transaction Command Frame Data Format ...................................... 179
Table 33: Activate Command TLVs .................................................................................. 179
Table 34: Activate Transaction Response Frame Data Format ....................................... 181
Table 35: Activate Response TLVs ................................................................................... 182
Table 36: Activate Transaction Clearing Record TLVs ..................................................... 186
Table 37: Activate Transaction Cause of Failure When Not Request Online Authorization
................................................................................................................................. 188
Table 38: Activate Transaction Cause of Failure When Request Online Authorization .. 188
Table 39: Activate Transaction Response Frame Format, Failed Transaction ................ 189
xi
NEO Interface Developers Guide
Activate Transaction Response Frame Encrypted Data Format ...................................... 194
Table 40: Get Transaction Result Format and Content ................................................... 203
Table 41: Update Balance Format and Contents............................................................. 207
Table 42: Update Balance Format and Contents When Status OK ................................. 208
Table 43: Update Balance Format and Contents When Status Not OK .......................... 208
Table 44: Cash Transaction TLVs ..................................................................................... 212
Table 45: DRL TLVs ........................................................................................................... 216
Table 46: EMV Key Manager Status Codes – Protocol 2 ................................................. 219
Table 47: Language Version Information ........................................................................ 232
Table 48: Exception List Record Format .......................................................................... 241
Table 49: Get PCD and PICC Parameters Data Field ........................................................ 243
Table 50: Poll for Token Data Field for Command Frame ............................................... 244
Table 51: Poll for Token Timeout .................................................................................... 244
Table 52: Poll for Token Data Field for Response Frame (Status Code is OK) ................. 245
Table 53: Enhanced Poll for Token Data Field for Command Frame .............................. 246
Table 54: Enhanced Poll for Token Timeout.................................................................... 247
Table 55: Enhanced Poll for Token Data Field for Response Frame ............................... 247
Table 56: LED Control Data Field ..................................................................................... 251
Table 57: Buzzer Control Data Field ................................................................................ 252
Table 58: PCD Single Command Exchange Data Field Protocol 2.................................... 253
Table 59: PCD Commands Protocol 2 .............................................................................. 254
Table 60: PCD Channel Redundancy Register Protocol 2 ................................................ 255
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.
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
NEO Interface Developers Guide
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
Kiosk III
●
Vendi
●
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.
NEO Interface Developers Guide
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 LCD Line
or
C’less
+ MSR
√
√
√
√
√
√
√
√
√
√
Protocol
CMD
SUB Notes
CMD
√
√
√
√
√
√
√
√
n/a
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
02
02
84
84
28
14
0B
0B
F0
05
81
81
84
2C
F0
60
60
01
40
09
04
01
01
02
01
FE
01
04
02
0F
52
F4
12
11
√
√
√
61
03
Contact Get PIN Control (Reader send to
Host)
√
√
√
61
02
Contact Get Reader Status
√
√
√
60
14
√
√
√
61
01
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
60
60
60
60
60
60
60
60
60
02
09
0D
05
07
01
0A
0B
0C
Contact LCD Display Control (Reader send to
Host)
Contact Remove Application Data
Contact Remove CA Public Key
Contact Remove Certification Revocation List
Contact Remove Terminal Data
Contact Retrieve AID List
Contact Retrieve Application Data
Contact Retrieve CA Public Key
Contact Retrieve CA Public Key List
Contact Retrieve Certification Revocation List
√
√
√
√
√
√
√
√
EMV
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Activate Transaction Command
Activate Transaction Command
Add Entry to EMV Exception List
Add Entry to EMV Revocation List
Antenna Control
Boot up Notification
Buzzer Control Long
Buzzer Control Short
Buzzer On/Off Command
Cancel Transaction Command
Check DUKPT Key
Check DUKPT Keys
Clean Torn Transaction Log
Clear White List
Configure Buttons Command
Contact Apply Host Response
Contact Authenticate Transaction
Contact Get MSR Data Control (Reader send
to Host)
√
√
√
√
√
√
√
√
US
NEO Interface Developers Guide
Command
C’less LCD Line
or
C’less
+ MSR
√
√
√
√
√
√
√
√
√
√
US
Protocol
CMD
SUB Notes
CMD
Delete All CA Public Keys Protocol 1
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Delete All CA Public Keys Protocol 2
√
√
√
√
D0
05
Delete All Entries for Single Index in EMV
√
√
√
√
84
05
Delete All Entries from EMV Exception List √
Delete All Entries from EMV Revocation List√
√
√
√
84
0B
√
√
√
84
06
Delete CA Public Key Protocol 1
√
√
√
√
24
02
Delete CA Public Key Protocol 2
Delete Configurable AID
Delete Configurable Group (DCG)
Delete Entry from EMV Exception List
Disable Blue LED Sequence
Enable Blue LED Sequence Command
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
D0
04
04
84
F0
F0
04
04
05
0A
F6
F7
Enhanced Pass-Through Command
√
√
√
√
√
2C
0B
√
Enhanced Poll for Token
√
Exchange APDU Data
√
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 Button Configuration Command
√
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
Get Contact EMV L2 Kernel Version Detail √
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
2C
2C
2C
17
C7
03
D0
03
09
2C
F0
32
D0
D0
03
0C
13
03
02
33
05
06
07
00
12
F5
01
02
01
0C
√
√
√
√
03
0D
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
03
03
03
29
29
29
04
06
02
08
06
07
Contact Retrieve Terminal Data
Contact Retrieve Transaction Result
Contact Set Application Data
Contact Set CA Public Key
Contact Set Certification Revocation List
Contact Set Terminal Data
Contact Start Transaction
Contact Get ICS Identification
Contact Remove Transaction Amount Log
Contact Set ICS Identification
Control User Interface
√
√
√
√
√
√
√
√
√
√
√
EMV
60
60
60
60
60
60
60
60
60
60
01
24
04
13
03
0A
0E
06
10
15
0F
16
02
03
Revocation List
NEO Interface Developers Guide
Command
Get Contact EMV L2 Terminal Configuration
Checksum
Get DRL Reader Risk Parameters
Get EMV Exception List
Get EMV Exception Log Status
Get EMV Revocation List
Get EMV Revocation Log Status
Get Firmware Full Version
Get Full Track Data
Get Hardware Information
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
C’less LCD Line
or
C’less
+ MSR
US
EMV
Protocol
CMD
SUB Notes
CMD
√
√
√
√
√
29
09
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
03
84
84
84
84
29
17
09
C7
C7
81
03
09
09
0E
0C
08
07
03
00
CD
14
37
30
0A
11
20
03
C7
2C
09
39
05
02
√
√
√
√
Get Processor Type
√
√
√
√
√
√
√
√
√
√
√
Get Product Type
√
√
√
√
√
09
01
Get Remote Key Injection Timeout
Get Serial Number
Get Transaction Result
Get Transaction Result
Get UID of MCU
Get USB Boot Loader Version
Get White List
High Level Halt Command
LCD Display Clear Command
LCD Display Line 1 Message Command
LCD Display Line 2 Message Command
LED Control
List CA Public Key IDs or RID Protocol 2
Mifare Authenticate Block
Mifare ePurse Command
Mifare Read Blocks
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
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
n/a
n/a
n/a
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
C7
12
03
03
29
29
2C
2C
F0
F0
F0
0A
D0
2C
2C
2C
2C
2C
2C
2C
C7
C7
84
2E
01
00
40
17
04
51
09
F9
FC
FD
02
07
06
0A
07
08
40
01
04
9A
9B
0E
Get MSR Secure Parameters
Get PCD and PICC Parameters
Reset Torn Transaction Log
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
RTC Get Date
√
√
√
√
25
04
RTC Get Time
√
√
√
√
25
02
RTC Set Date
√
√
√
√
25
03
RTC Set Time
Set Data encryption Key Encryption Type
√
√
√
√
√
√
√
√
25
C7
01
32
√
NEO Interface Developers Guide
Command
C’less LCD Line
or
C’less
+ MSR
Set CA Public Key Protocol 1
√
√
√
√
√
√
Set CA Public key Protocol 2
√
√
√
Set Cash Transaction Reader Risk Parameters√
√
√
√
√
√
√
√
√
Set Baud Rate
Set Cashback Transaction Reader Risk
Parameters
Set Cable Type
Set Configurable AID
Set Configurable Group
Set Configuration
Set Configuration Defaults and Keep
Encryption Key
Set DRL Reader Risk Parameters
Set Data Encryption Enable Flag
Set Data Encryption Key Variant Type
Set Merchant Record
Set MSR Secure Parameters
US
Protocol
CMD
SUB Notes
CMD
√
√
30
24
01
01
√
D0
03
√
√
04
0C
√
√
√
04
0D
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
32
04
04
04
02
02
03
00
√
√
√
√
√
04
0A
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
04
C7
C7
04
C7
04
01
C7
17
12
01
30
2C
05
F0
F0
03
0E
36
2F
11
38
09
01
2D
03
02
05
02
50
02
FA
FB
03
Set Parameter Defaults
√
Set Poll Mode
√
Set Remote Key Injection Timeout
√
Set RF Error Reporting
√
Set Serial Number
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
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
EMV
√
√
√
√
√
√
√
√
√
√
n/a
n/a
√
√
√
√
√
√
√
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
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
CM SUB Command
C’less or C’less +
D CMD
01 01
01 02
Set Poll Mode
Control User Interface
LCD LineUS EMV Protocol Notes
MSR
√
√
√
√
√
√
√
√
NEO Interface Developers Guide
CM SUB Command
C’less or C’less +
D CMD
01 05
02
02
03
03
03
03
03
03
03
03
01
40
00
40
02
03
04
05
06
07
03 0C
03 0D
03
03
03
04
04
04
04
04
04
0E
11
40
00
02
03
04
05
09
04 0A
04 0C
04 0D
04
04
05
05
09
09
09
09
09
09
0A
0B
0B
12
12
14
17
17
17
18
24
0E
11
01
02
00
01
02
03
14
20
02
01
02
01
02
01
02
03
CD
01
01
24 02
LCD LineUS EMV Protocol Notes
MSR
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Set CA Public Key
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Delete CA Public Key
√
√
√
√
Set/Get Source for
RTC/LCD/Buzzer/LED
Activate Transaction Command
Activate Transaction Command
Get Transaction Result
Get Transaction Result
Get Configuration
Update Balance Command
Get Configurable AID
Get All AIDs
Get Configurable Group
Get All Groups
Get Cash Transaction Reader Risk
Parameters
Get Cashback Transaction Reader Risk
Parameters
Get DRL Reader Risk Parameters
Get Merchant Record
Get Transaction Result
Set Configuration
Set Configurable AID
Set Configurable Group
Delete Configurable AID
Delete Configurable Group
Set Parameter Defaults
Set Configuration Defaults and Keep
Encryption Key
Set Cash Transaction Reader Risk
Parameters
Set Cashback Transaction Reader Risk
Parameters
Set DRL Reader Risk Parameters
Set Merchant Record
Cancel Transaction Command
Stop Transaction
Get ALL Reader Variables
Get Product Type
Get Processor Type
Get Main Firmware Version
Get Hardware Information
Get Module Version Information
LED Control
Buzzer Control Short
Buzzer Control Long
Get Serial Number
Set Serial Number
Boot up Notification
Flush Track Data
Set RF Error Reporting
Get Full Track Data
Ping
NEO Interface Developers Guide
CM SUB Command
C’less or C’less +
D CMD
LCD LineUS EMV Protocol Notes
MSR
24 03
Delete All CA Public Keys
√
√
√
√
25 01
RTC Set Time
√
√
√
√
25 02
RTC Get Time
√
√
√
√
25 03
RTC Set Date
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
25
28
29
29
29
29
04
01
00
00
04
06
29 07
29 08
29 09
29
32
32
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
2C
30
30
60
60
60
60
60
60
60
60
60
60
60
17
01
02
01
02
03
04
05
06
07
08
09
0A
0B
0C
12
13
40
50
51
52
01
02
01
02
03
04
05
06
07
08
09
0A
0B
60 0C
RTC Get Date
√
Antenna Control
√
Get Version Protocol 2
√
Get Firmware Full Version
√
Get USB Boot Loader Version
Get Contact EMV L2 Kernel Version √
Get Contact EMV L2 Kernel Version √
Detail
Get Contact EMV L2 Kernel Checksum √
√
Get Contact EMV L2 Terminal
Configuration Checksum
√
Get UID of MCU
√
Get Cable Type
√
Set Cable Type
√
Pass-Through Mode Start/Stop
√
Poll for Token
√
Exchange Contactless Data
√
PCD Single Command Exchange
√
Get PCD and PICC Parameters
√
Mifare Authenticate Block
√
Mifare Read Blocks
√
Mifare Write Blocks
√
High Level Halt Command
√
Mifare ePurse Command
Enhanced Pass-Through Command √
√
Enhanced Poll for Token
√
Get ATR
√
Exchange APDU Data
√
NFC Commands
√
Set White List
√
Get White List
√
Clear White List
√
Set Baud Rate
√
Set Temporary Baud Rate
Contact Retrieve Application Data
Contact Remove Application Data
Contact Set Application Data
Contact Retrieve Terminal Data
Contact Remove Terminal Data
Contact Set Terminal Data
Contact Retrieve AID List
Contact Retrieve CA Public Key
Contact Remove CA Public Key
Contact Set CA Public Key
Contact Retrieve CA Public Key List
Contact Retrieve Certification
Revocation List
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
NEO Interface Developers Guide
CM SUB Command
D CMD
60 0D
60 0E
60 0F
60
60
60
60
60
60
60
10
11
12
13
14
15
16
61 01
61 02
61 03
81
81
81
84
84
02
04
0A
03
04
84 05
84 06
84
84
84
84
07
08
09
0A
84 0B
84 0C
84 0D
84
84
C7
C7
C7
C7
0E
0F
2D
2E
2F
30
C7 32
C7 33
C7
C7
C7
C7
C7
C7
D0
36
37
38
39
9A
9B
01
C’less or C’less +
LCD LineUS EMV Protocol Notes
MSR
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Contact Remove Certification
Revocation List
Contact Set Certification Revocation List
Contact Remove Transaction Amount
Log
Contact Start Transaction
Contact Authenticate Transaction
Contact Apply Host Response
Contact Retrieve Transaction Result
Get Contact Reader Status
Contact Get ICS Identification
Contact Set ICS Identification
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
Add Entry to EMV Revocation List √
√
Delete All Entries for Single Index in
EMV Revocation List
√
Delete All Entries from EMV
Revocation List
√
Get EMV Revocation List
√
Get EMV Exception Log Status
√
Add Entry to EMV Exception List
Delete Entry from EMV Exception List√
Delete All Entries from EMV Exception √
List
√
Get EMV Exception List
Delete an Entry from EMV Revocation √
List
√
Reset Torn Transaction Log
√
Clean Torn Transaction Log
√
Set Remote Key Injection Timeout
Get Remote Key Injection Timeout √
Set Data Encryption Key Variant Type √
Get Data Encryption Key Variant Type √
√
Set Data encryption Key Encryption
Type
√
Get Data encryption Key Encryption
Type
Set Data Encryption Enable Flag √
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
10
NEO Interface Developers Guide
CM SUB Command
C’less or C’less +
D CMD
D0
D0
D0
D0
D0
02
03
04
05
06
D0 07
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
00
01
02
0F
F4
F5
F6
F7
F9
FA
FB
FC
FD
FE
LCD LineUS EMV Protocol Notes
MSR
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
Set PMC Status
√
Get PMC Status
√
Get Battery Level
√
Shut Off the Power
Configure Buttons Command
Get Button Configuration Command
Disable Blue LED Sequence
Enable Blue LED Sequence Command
LCD Display Clear Command
Turn Off Yellow LED Command
Turn On Yellow LED Command
LCD Display Line 1 Message Command
LCD Display Line 2 Message Command
Buzzer On/Off Command
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
n/a
n/a
n/a
n/a
n/a
n/a
n/a
n/a
√
√
√
√
√
√
√
√
√
√
√
√
√
Get CA Public Key Hash Protocol 2
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
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
Antenna Control
Buzzer Control Long
Buzzer Control Short
Enhanced Pass-Through
Command
Enhanced Poll for Token
Exchange Contactless Data
Get PCD and PICC
Parameters
High Level Halt Command
LED Control
Mifare Authenticate Block
Mifare ePurse Command
Mifare Read Blocks
Mifare Write Blocks
C’less or
C’less + MSR
LCD
Line
US
EMV
Protocol
CMD
SUB
CMD
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
28
0B
0B
2C
01
02
01
0B
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
2C
2C
2C
0C
03
05
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
2C
0A
2C
2C
2C
2C
09
02
06
0A
07
08
11
NEO Interface Developers Guide
Pass-Through Mode
Start/Stop
PCD Single Command
Exchange
Poll for Token
Set White List
Get White List
Clear White List
√
√
√
√
√
2C
01
√
√
√
√
√
2C
04
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
√
2C
2C
2C
2C
02
50
51
52
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
EMV
Protocol
CMD
SUB
CMD
√
√
D0
01
√
√
√
D0
02
√
√
√
D0
03
√
√
√
√
D0
04
Delete All CA Public Keys
√
√
√
√
D0
05
Get All CA Public RIDs
√
√
√
√
D0
06
List CA Public Key IDs for
√
√
√
√
D0
07
Command
C’less or
C’less +
MSR
LCD
Line
Get CA Public Key
√
√
Get CA Public Key Hash
√
Set CA Public Key
√
Delete CA Public Key
US
Notes
RID
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
Command
US EMV Protocol CMD
LCD
Line
Delete All CA Public Keys√
Delete CA Public Key √
√
√
√
24
03
√
√
√
24
02
√
√
√
√
24
01
Set CA Public Key
C’less or
C’less +
MSR
SUB
CMD
Notes
12
NEO Interface Developers Guide
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
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
Status Codes for Protocol 2
Table 8: Protocol 2 Status Codes
Status Code
Status
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
13
NEO Interface Developers Guide
Status Code
Status
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
InitSecureComm command
1Bh
The EEPROM may not be initialized because SecCommInterface does not
make sense
1CH
Problem encoding APDU
Module-Specific Status Codes1
20h
Unsupported Index (ILM)
SAM Transceiver error – problem communicating with the SAM (Key Mgr)
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)
ViVOcomm activate transaction card type (ViVOcomm)
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 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
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.
80h
Use another card
81h
Insert or swipe card
90h
Data encryption Key does not exist
91h
Data encryption Key KSN exhausted
Error Codes
Table 9: Error Codes
Error
Code
Description
Reason for Error and Suggested Error Handling
00h
No Error
None.
01h
Out of Sequence Reader did not receive commands in the correct order. Correct the Terminal
Command
application to send serial commands in the correct sequence.
The contactless transaction failed.
02h
Go to Contact
Interface
03h
Transaction
Amount is Zero
04h
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.
If the transaction amount is zero and the terminal is “an offline only terminal”
then reader needs to terminate the transaction.
The transaction has failed.
If the reader supports another interface, advise the user to complete the
transaction on the other interface.
15
NEO Interface Developers Guide
Error
Code
Description
Reason for Error and Suggested Error Handling
05h
Go To Nearby
Interface
The transaction has failed.
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
interface.
06h
The transaction has failed.
Go To MagStripe
If the reader has a MagStripe interface, advise the user to complete the
Interface
transaction using the MagStripe interface.
Card returned SW1SW2 not equal to 9000 hex. Value of the SW1SW2 bytes from
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.
20h
Card returned
Error Status
21h
Collision Error
There was more than one contactless card in the reader’s range.
22h
Amount Over
Maximum Limit
The Transaction Amount is greater than Terminal Contactless Transaction Limit
(FFF1).
23h
Request Online
Authorization
If the Transaction Amount is greater than the Balance on the card but is less
than the Terminal Contactless Transaction Limit (FFF1), the reader sends this
error code back to the terminal along with other information needed by the
acquirer to format an online authorization request.
24h
Card
Communication
Error
A communication error occurred while interacting with the card. An example
might be the card was removed from the field.
25h
Card Blocked
If the card is not supported by the reader according to the value of parameter
Application Capability (FFF3) this error code is sent to the terminal.
26h
Card Expired
This error code is sent to the terminal if the current date of the reader is
greater than the expiration date of the card. This status code is only valid for
qVSDC cards.
27h
Unsupported
Card
Card presented to the reader is of a type that is not supported by the reader.
This could be due to presenting a card with an AID that is not recognized by the
reader.
16
NEO Interface Developers Guide
Error
Code
Description
Reason for Error and Suggested Error Handling
Card was removed from the field or there was a Communication Error
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:
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):
30h
Card did not
respond
41h
Data Element
Missing
42h
Card Generated The card declined the transaction by sending an AAC instead of a TC.
AAC
43h
This error code would be returned if the card generated an ARQC and the
Card Generated
terminal/reader was configured as “Offline Only”; therefore the card was
ARQC
DECLINED.
44h
Card did not indicate support for the correct authentication method and date
SDA/DDA Failed
authentication failed. For Visa, when DDA is required, the card must indicate
(Not Supported
support for DDA in AIP. If this support is not indicated then the transaction fails
by Card)
and this error code is returned.
50h
SDA/DDA/CDDA
Failed (CA
Public Key)
Data Authentication failed due to missing CA Public Key.
Retrying the transaction does not correct the error until the missing CA Public
Key problem is corrected via Key Management commands.
51h
SDA/DDA/CDDA
Failed (Issuer
Public Key)
Data Authentication failed due to a problem in recovering the Issuer Public Key
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.
52h
SDA Failed
(SSAD)
Data Authentication failed during SSAD. Retrying the transaction does not
correct the error.
53h
DDA/CDDA
Failed (ICC
Public Key)
Data Authentication failed during attempted recovery of ICC Public Key.
Retrying the transaction does not correct the error.
54h
DDA/CDDA
Data Authentication failed during Dynamic Signature Verification. Retrying the
Failed (Dynamic transaction does not correct the error:
Signature
At this point, the amount has been deducted from the Card Balance.
Verification)
55h
Processing
Restrictions
Failed
A mandatory/required data element was missing from the card.
The Processing Restrictions step as defined in EMV Specifications failed. This
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
Error
Code
Description
Reason for Error and Suggested Error Handling
56h
Terminal Risk
Management
(TRM) Failed
The Terminal Risk Management step as defined in EMV Specifications failed.
This could be due to incorrectly set configuration. Retrying the transaction
does not correct the error until the EMV configuration is corrected.
57h
Cardholder
Verification
Failed
The Cardholder Verification step as defined in EMV Specifications failed. This
could be due to incorrectly set configuration. Retrying the transaction does not
correct the error until the EMV configuration is corrected.
58h
Terminal Action The Terminal Action Analysis step as defined in EMV Specifications failed. This
Analysis (TAA)
could be due to incorrectly set configuration. Retrying the transaction does not
Failed
correct the error until the EMV configuration is corrected.
61h
SD Memory Error This error is reported only when trying to retrieve Transaction Logs. This error
is never reported during a transaction.
62h
Generic Error
73h
Torn
An error occurred while attempting to clean the torn transaction log. This
Transaction Log might occur if the reader could not read the time and date from the real time
Error
clock.
No Merchants
have been
configured
This error usually occurred while MerchantID is empty.
80h
81h
TLV Parse
Failure
This error usually occurred while fail to TLV parsing card response data.
82h
Merchant Data
Error
This error usually occurred while no merchant data returned from card.
83h
System Memory
Error
This error usually occurred while fail to read or write system memory.
84h
Application Skip This error usually occurred while configuration isn’t consistent on whether or
Error
not to skip payment application
85h
Application
Version Error
This is a generic / general error that is reported when a more specific reason
for the error is not known.
This error usually occurred while application version number is incorrect.
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
Table 10: RF State Codes
State
Code
RF State
Description
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0ah
0bh
0ch
None
PPSE
SELECT
GPO
READ RECORD
GEN AC
CCC
IA
SDA
DDA
CDA
TAA
UPDATE RECORD
10h
GET DATA (Ticket)
11h
GET DATA (Ticketing Prof)
12h
GET DATA (Balance)
13h
GET DATA (All)
20h
PUT DATA (Ticket)
RF State Code not available
Error occurred during PPSE command
Error occurred during SELECT command
Error occurred during GET PROCESSING OPTIONS command
Error occurred during READ RECORD command
Error occurred during GEN AC command
Error occurred during CCC command
Error occurred during IA command
Error occurred during SDA processing
Error occurred during DDA processing
Error occurred during CDA processing
Error occurred during TAA processing
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
Ticketing Profile
Error occurred during GET DATA command to retrieve the
Balance
Error occurred during GET DATA command to retrieve all data
Error occurred during PUT DATA command to retrieve the
Ticket
19
NEO Interface Developers Guide
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
Baud Rate
19200 bps (default value for all but Vendi)
9600 bps (default value for Vendi)
Data Bits
Stop Bits
Parity
None
Out CTS Flow
Disabled
Out DSR Flow
Disabled
DTR Control
Disabled
RTS Control
Disabled
XON/XOFF
Disabled
Flow Control
None
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
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
01
CD
“V”
“i”
“V”
“O”
“t”
“e”
“c”
“h”
“2”
00
18
01
00
00
B3
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
01
83
“V”
“i”
“V”
“O”
“t”
“e”
“c”
“h”
“2”
00
18
00
00
00
FA
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)
Command:
56 69 56 4F 74 65 63 68 32 00 18 01 00 00 B3 CD
Response:
56 69 56 4F 74 65 63 68 32 00 18 00 00 00 FA 83
22
NEO Interface Developers Guide
Data Frames
Byte 0-8
Byte 9
Byte 10
Byte 11
…
Byte n+10
Frame Tag
Frame
Type
Data 0
Data 1
…
Data n
ViVOtech\0
‘D’
Byte n+11
Byte n+12
CRC
CRC
MSB if from
ViVOpay.
LSB if from
Terminal.
LSB if from
ViVOpay.
MSB if from
Terminal.
…
Direction: Both Ways (depending on Command). Variable Length (n = 1 … 244).
Sample Single Report Command with Multiple Report Response
Get Configuration Command Report
01
91
“V”
“i”
“V”
“O”
“t”
“e”
“c”
“h”
“2”
00
03
02
00
00
5B
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.
Get Configuration response reports
1st Response Report
02
E4
00
00
“V”
01
00
DF
“i”
00
00
66
“V”
9F
00
01
“O”
02
00
00
“t”
06
DF
FF
“e”
00
63
F0
“c”
00
01
03
“h”
00
00
00
“2”
00
DF
00
00
00
64
00
03
01
01
FF
00
9F
01
F2
00
03
DF
08
C2
06
65
30
FF
00
01
30
30
FF
9C
08
30
FA
01
40
30
02
00
9F
FF
03
5F
1B
F3
E8
2A
04
02
9A
02
00
03
03
08
00
FF
00
40
17
FF
01
9F
70
F7
04
09
9F
01
9F
02
33
02
21
00
03
9F
00
00
FB
35
00
01
01
01
00
FF
00
22
FF
F5
FF
9F
F1
06
FC
40
06
00
01
05
00
00
00
60
00
00
FF
00
00
00
FD
00
01
80
05
30
00
00
F8
00
00
FF
50
2nd Response Report
03
FF
03
02
30
F9
05
9F
30
01
13
1A
30
03
54
02
3rd Response Report
03
9F
FF
F8
00
66
F4
01
08
04
03
00
E8
A0
01
FF
4th and Final Response Report
23
NEO Interface Developers Guide
04
00
AC
00
F8
00
00
00
FF
72
FE
56
05
F8
50
AC
A0
00
FF
FF
05
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.
Note: The response to this command changes each time the command is sent since it
includes the current time and date.
The serial port version of this command and response would be: (Data bytes in Hex format)
Command:
56 69 56 4F 74 65 63 68 32 00 03 02 00 00 5B 91
Response:
56 69 56 4F 74 65 63 68 32 00 03 00 00 C2 FF E4 01 00 9F 02
06 00 00 00 00 00 01 9F 03 06 00
00 00 00
00 DF 66
30 30
FF F9 01
03 05 13
02 9F 1A
00 08
9F 66 04
FF F4 03
F8 01 00
AC F8
00 00 00
00
01
30
03
54
02
E8
A0
01
FF
00
00
00
00
30
FF
9C
08
9F
00
00
FB
FF
72
DF
FF
30
FA
01
40
35
00
01
01
FE
56
63
F0
30
02
00
9F
01
00
FF
00
05
01
03
FF
03
5F
1B
22
FF
F5
FF
F8
00
00
F3
E8
2A
04
9F
F1
06
FC
50
DF
00
02
9A
02
00
40
06
00
01
AC
64
00
03
03
08
00
05
00
00
00
A0
01
FF
FF
00
40
17
60
00
00
FF
00
01
F2
FF
01
9F
70
00
00
00
FD
FF
DF
08
F7
04
09
9F
00
01
80
05
FF
65
30
01
9F
02
33
30
00
00
F8
05
01
30
02
21
00
03
00
00
FF
50
00
Error Handling at Report Level
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
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.
Command Frames
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
ViVOtech\0
‘C’
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
CRC (LSB)
CRC (MSB)
Direction: From terminal to ViVOpay
ACK Frames
Byte 0-8
Frame Tag
Byte 9
Frame
Type
Byte 10
Command
Status
Data1
Data2
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
26
NEO Interface Developers Guide
ViVOtech\0
‘A’
See
Individual
Commands
See Status
Code
See
Individual
Commands
See
Individual
Commands
Byte 11
Byte 12
Byte 13
Direction: ViVOpay to terminal
NACK Frames
Byte 0-8
Byte 9
Byte 10
Frame Tag
Frame
Type
Command
Status
Data1
Data2
ViVOtech\0
‘N’
See
Individual
Commands
See Status
Code
See
Individual
Commands
See
Individual
Commands
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
Direction: ViVOpay to terminal.
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
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Frame Tag
Frame
Type
Data1
Data2
Data3
Data4
ViVOtech\0
‘S’
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
Byte 14
Byte 15
CRC
CRC
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
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
27
NEO Interface Developers Guide
Response Frames
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 … Byte
14+n-1
Header Tag
& Protocol
Version
Command
Status
Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
Byte 14+n
Byte 15+n
CRC (MSB) CRC (LSB)
ViVOtech2\0
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
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 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 0-9
Byte 10
Byte 11
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
ViVOtech2\0
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
Byte
14+n
CRC
(MSB)
Byte
15+n
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
Header Tag
& Protocol
Version
Byte 10
Command
See
ViVOtech2\0 Individual
Commands
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Status
Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
See
Individual
Commands
See
Individual
Commands
See
Individual
Commands
See Individual
Commands
Byte 14+n
CRC (MSB)
Byte
15+n
CRC
(LSB)
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
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!
4.1.1.1
Global Auto-Switch
You can use Global Auto-Switch to process:
an unrecognized MiFare PICC
an unrecognized DesFire PICC
a completely unrecognized PICC (failed MiFare, DesFire, PPSE, Trial & Error)
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 …
Byte 14+n-1
Byte 14+n
Byte 15+n
31
NEO Interface Developers Guide
Header Tag
& Protocol
Version
Command
Status Code
ViVOtech2\0
50h or 51h
See Status
Code Table
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
Table 12: Poll for Token Data Field for Response Frame (Status Code is OK)
Data Field
Length
(bytes)
Description
Card
Type of Card Found (or No Card Found).
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)
07h ISO 14443 Type A and Mifare (NFC phone)
Serial
Number
0 or
Variable
Serial Number (or the UID) of the PICC. Length depends on the Card
Detected. If no card was detected, then a Serial Number is not returned.
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
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
01h
Payload Frame
02h
Status Frame
03h
Payload Frame for VISA MSD 202 CVN17 type transaction
55h
NACK
0Eh
Asynchronous Event Frame
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.
Byte 0
Byte 1
Byte 2
Frame Type
=01h
Status
=00h
Application
Type
Track 1 Field
(if found)
Track 2 Field
(if found)
Byte n-1
Byte n
CRC
(MSB)
CRC
(LSB)
Example 1: Payload, Card Read Successfully, Application Type Visa, Both Track 1 and Track 2
Present
[01] [00] [02] %B123456789^ABCDEF^12345678?;123456=12345?
Example 2: Payload, Card Read Successfully, Application Type MasterCard, Only Track 2 Present
[01] [00] [01] ;123456=12345?
Example 3: Payload, Card Read Successfully, Application Type AmEx, Only Track 1 Present
[01] [00] [03] %B1234567^ABCDEF^12345678?
Example 4: Payload, Card Read Successfully, Application Type Unknown, Both Track 1 and Track
2 Present
[01] [00] [00] %B123456789^ABCDEF^12345678?;123456=12345?
34
NEO Interface Developers Guide
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
Byte5 … Byte
5+n-1
Byte 5+n
Byte6+n
Frame
Type
Status
Code
Applicatio
n Type
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
03h
See table
below
See
Applicatio
n Type
See Data Tables
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
Track 1 Length
Track 1 Data
(MagStripe card)
Track 2 Length
Length (bytes) Description
Variable
Track 2 Data
(MagStripe card)
Variable
DE055 (Clearing
Record) 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
returned.
Format: Binary
Track 1 Data (if available).
Format: ASCII (no null terminator)
If Track 2 is available, then this field gives the length of the Track 2
data that follows. If Track 2 is not available, then a Length of 00h is
returned.
Format: Binary
Track 2 Data (if available).
Format: ASCII (no null terminator)
If a Clearing Record (DE 055) field is available, then this field is 01h.
If there is no Clearing Record (DE 055) field, then this field is 00h.
TLV DE 055 (Clearing Variable up to DE 055 data (if available) as a TLV data object encoded with Tag
Record)
128
‘E1’. The DE 055 data is the same data as is included in the Clearing
Record.
Tag: E1
Format: b1...126 variable.
TLV App PAN
Variable, up to Application Primary Account Number (PAN) as a TLV object. This
12
field is present only if the DE 055 object is present.
Tag: 5A
Format: cn variable length up to 19 (10 bytes)
TLV PAN Seq Number
PAN Sequence Number as a TLV object.
This field is present only if the DE 055 object is present.
Tag:
Format: n2, BCD encoded on 1 bytes
TLV Application
Expiration Date
Application Expiration Date as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 5F24
Format: n6, BCD encoded on 3 bytes (YYMMDD)
TLV Application
Label
Variable, up
to 18
Application Label as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 50
Format: an variable length up to 16 bytes
35
NEO Interface Developers Guide
Data Item
Length (bytes) Description
TLV CVM Results
Cardholder Verification Method (CVM) Results as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F34
Format: b3
TLV Data
Authentication Code
Data Authentication Code as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F45
Format: b2
TLV ICC Dynamic
Number
11
ICC Dynamic Number as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F4C
Format: b8
TLV Track 1
Equivalent Data
(M/Chip card)
81
Track 1 Equivalent Data as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 56
Format: b79
TLV Transaction
Status Information
Transaction Status Information as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9B
Format: b2
Cardholder Name
29
Cardholder Name as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 5F20 Format: b26
Application Usage
Control
Application Usage Control as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F07 Format: b2
Issuer Action
Code(Default)
Issuer Action Code (Online) as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F0D Format: b5
Issuer Action
Code(Denial)
Issuer Action Code (Denial) as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F0E Format: b5
Issuer Action
Code(Online)
Issuer Action Code (Default) as a TLV object.
This field is present only if the DE 055 object is present.
Tag: 9F0F Format: b5
TLV Auth Code
Authorization Code as a TLV object
Tag: E300 Format: b8
TLV Track 2
Equivalent Data
21
Track 2 Equivalent Data as a TLV object.
This field is present only if the DE 055 object is present or
Authorization Code is present.
Tag: 57
Format: b19
VLP Issuer Auth Code
VLP Issuer Authorization Code as a TLV object
Tag: 9F74 Format: b6
Application Identifier
Variable up
to 19
AID as a TLV object
Tag: 9F06 Format: variable b5...16
Available Offline
Spending Amount
(Balance)
Available Offline Spending Amount as a TLV object
Tag: 9F5D Format: variable b6
TLV Application
Effective Date
Application Effective Date as a TLV object.
Tag: 5F25
Format: n6, BCD encoded on 3 bytes (YYMMDD)
36
NEO Interface Developers Guide
Data Item
Form Factor
Indicator
Length (bytes) Description
F: b 32
T: ‘9F6E’
L: 4-bytes
Indicates the form factor of the consumer payment device and the
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.
PayPass Third Party
Data
Customer Exclusive
Data (CED)
F: b
Priority information from a third party in the following format:
T ‘9F6E’
Country Code according to ISO 3166-1 n3, 2 bytes
L: 5-32 bytes Unique ID assigned by MasterCard b, 2 bytes
Proprietary Data b 1 to 28 bytes
F: b
T: ‘9F7C’
L: Var. up
to 32-bytes
Contains data for transmission to the Issuer in
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
command.
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.
Byte 0
Frame Type =0x55h
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.
Terminal
ViVOpay Reader
Original Payload
--------------------------------------------------------------------| Time: 0
NACK sent at 400ms (within 500ms)
-------------------------------------------------------------------| Time: 400ms
Resend Payload
--------------------------------------------------------------------|
▼
Original Payload:
Payload, Card Read Successfully, Application Type Master Card, Both Track 1 and Track 2
Present
[01][00][01]%B5325350000623567^840SMITH/JOHN^05085011492563892473?;532
5350000623567=05081019492993892483?
Resent payload:
Payload, Card Read Successfully, Application Type Master Card, Both Track 1 and Track 2
Present
[01][00][01]%B5325350000623567^840SMITH/JOHN^05085011492563892473?;532
5350000623567=05081019492993892483?
38
NEO Interface Developers Guide
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.
Terminal
ViVOpay Reader
Original Payload
--------------------------------------------------------------------| Time: 0
NACK sent at 700ms (after 500ms)
-------------------------------------------------------------------| Time: 700ms
No Resend Payload
▼
Original card payload data (no resent payload data):
Payload, Card Read Successfully, Application Type American Express, Both Track 1 and Track 2
Present
[01][00][03]%B379013539021002^TEST/CARD001^0604718000877840?;379013539021002=0604718
00087784000102?
4.1.1.6
Asynchronous UI Message Event
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
Frame
Type
45h, E
Status
=00h
Event
Type
55h,
Byte 4
Byte 5
&6
UI
Scheme, Length
defined on Byte
tag ‘FF F8’
2 Byte
UI
Event
Byte 3
…
Bn-3
Bn-2
Additional
Null
Null
2 Byte UI
Character Character
Events
Bn-1
Bn
CRC
CRC (LSB)
(MSB)
39
NEO Interface Developers Guide
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
LED
01h
Higher nibble: LED #
00: LED0
01: LED1
02: LED2
03: LED3
FF: all
Lower nibble:
00: Off
01: On
11: No change
Buzzer
02h
Higher nibble:
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
LCD
03h
LCD message index
List of messages and the message flow for one user experience are given in Appendix A.1.
4.1.1.7
4.1.1.7.1
Data Definitions
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
STATUS_OK
00h
Card Read completed successfully.
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
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
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 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
;12345678=12345?
4.1.1.7.5
00
00
00
00
00
00
00
45
45
45
45
45
45
45
00
00
00
00
00
00
00
55
55
55
55
55
55
55
01
33
56
30
32
31
30
00
32
49
30
37
30
30
0A 25 42 36 32 37 39 32 35 37 37 34 39 31
33 34 33 5E 54 45 53 54 20 43 41 52 44 2F
56 4F 54 45 43 48 5E 31 30 31 32 38 31 33
37 32 31 30 34 33 35 30 30 30 30 3F 3B 36
39 32 35 37 37 34 39 31 33 32 33 34 33 3D
31 32 38 31 33 30 30 37 32 31 30 34 33 35
<-- Burst Mode Payload Frame
30 30 3F B5 DC
45
45
00
45
00
00
00
00
55
55
01
55
00
00
10
00
04
04
04
04
04
04
04
Sample Output
03
01
01
02
01
01
01
03
11
10
20
11
21
31
00
00
00
00
00
00
00
00
00
00
00
00
00
00
E8 DD <-- LCD Event
28 B6 <-- LED Event
1F 86 <-- LED Event
41 FF <-- Buzzer Event
28 B6 <-- LED Event
ED 13 <-- LED Event
AE 70 <-- LED Event
04 03 04 00 00 6D 4D <-- LCD Event
0C 01 30 00 00 01 20
<-- Three LED Events
00 00 53 78
04 03 01 00 00 86 BD <-- LCD Event
CRC Calculation
The 16-bit CRC value is based on CRC-16/CCITT and calculated based on the following
parameter set.
Width:
Polynomial:
Truncated Polynomial:
Initial Value:
Input Data:
Output CRC:
XOR of Output CRC:
16-bits
x16 + x12 + x5 + 1
1021 hex
FFFF hex
Not Reflected
Not Reflected
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.
Data String (ASCII Text): 123456789
CRC: 29B1h
Data (Hex): [01h] [02h] [03h] [04h] [05h]
CRC: 9304h
Data (Hex): [56] [69] [56] [4F] [74] [65] [63] [68] [00] [43] [18] [00] [00] [00]
CRC: A1F5h
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.
---------------------------------------------------------------------------------------
static const unsigned short CrcTable[ 256 ] = {
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5,
0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318,
0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401,
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF,
0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5,
0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF,
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50,
0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F,
0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4,
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A,
0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
0x5004, 0x4025, 0x7046, 0x6067, 0x83B9, 0x9398,
0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2,
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F,
0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2,
0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F,
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1,
0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F,
0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45,
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA,
0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
};
0x60C6,
0x1231,
0xB37B,
0x64E6,
0xC5AC,
0xB75B,
0x6886,
0x8948,
0x3A33,
0x6CA6,
0xCDEC,
0x3E13,
0x9F59,
0x1080,
0xA3FB,
0x4235,
0xD52C,
0xA7DB,
0x0691,
0x99C8,
0x3882,
0x4A75,
0xDD6C,
0x3CA2,
0x8FD9,
0x70E7,
0x0210,
0xA35A,
0x74C7,
0xD58D,
0xA77A,
0x78A7,
0x9969,
0x2A12,
0x7C87,
0xDDCD,
0x2E32,
0x8F78,
0x00A1,
0xB3DA,
0x5214,
0xC50D,
0xB7FA,
0x16B0,
0x89E9,
0x28A3,
0x5A54,
0xCD4D,
0x2C83,
0x9FF8,
0x8108,
0x3273,
0xD3BD,
0x44A4,
0x3653,
0x9719,
0x0840,
0xA90A,
0xDBFD,
0x4CE4,
0xAD2A,
0x1E51,
0x9188,
0x30C2,
0xC33D,
0x6277,
0x34E2,
0x8799,
0x6657,
0xB98A,
0xCB7D,
0x6A37,
0xBDAA,
0x1CE0,
0x6E17,
0x9129,
0x2252,
0xC39C,
0x5485,
0x2672,
0x8738,
0x1861,
0xB92B,
0xCBDC,
0x5CC5,
0xBD0B,
0x0E70,
0x81A9,
0x20E3,
0xD31C,
0x7256,
0x24C3,
0x97B8,
0x7676,
0xA9AB,
0xDB5C,
0x7A16,
0xAD8B,
0x0CC1,
0x7E36,
unsigned short CalculateCRC ( unsigned char *Buffer, unsigned int Len )
unsigned short Crc = 0xffff;
while (Len--)
Crc = CrcTable[ ((Crc >> 8) ^ *Buffer++) ] ^ (Crc << 8);
return(Crc);
44
NEO Interface Developers Guide
5.0
Tag and Data Set Configuration
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
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
American Express
MasterCard
QUICPay
Maestro
Visa
Visa Electron
Visa Interlink
Visa Plus
J/Speedy
MXI
Discover
Discover
STAR
Interac
CUP Debit (Kiosk III only)
CUP Credit(Kiosk III only)
CUP Semi Credit(Kiosk III only)
CUP Electronic Cash(Kiosk III only)
SmartTap2.1
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
A0
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 25
00 04
00 65
00 04
00 03
00 03
00 03
00 03
00 65
00 02
03 24
01 52
04 17
02 77
03 33
03 33
03 33
03 33
04 76
01
10 10
90 01
30 60
10 10
20 10
30 10
80 10
10 10
30 60 D1 58 00
10 10
30 10
01 01
10 10
01 01 01
01 01 02
01 01 03
01 01 06
D0 00
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.
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
03
00 01 00
Tag Terminal Capabilities – CVM Required – ViVOpay Proprietary
Length of Transaction CVM
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
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
Length
(Bytes)
n6
Reader Date
n6
Reader Time
Default Value
Transaction Date (YYMMDD)
9A
9F21
DF65[1]
DF66[1]
DF68
DF6A
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.
Require Heartbeat frame to stay in Idle mode (EMEA
User Experience only). If this feature is enabled, then
to stay in the Idle mode, a valid frame must be
received by the reader every 15 seconds or it returns
to Not Working state.
00: Heartbeat frame not required
01: Heartbeat frame required
Unsupported cards display option (EMEA User
Experience only). If an unsupported card is detected,
then display a message based on this setting.
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.
Enable/Disable Stop Command processing
0 = Disable (default)
1 = Enable
Enable Communication Error Recovery
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)
00
00
00
01
52
NEO Interface Developers Guide
Tag
DF75
DF7C
DF7D
DF7F
Data Object Name and Description
Communication Error Delay time
Delay between the time a communication error first
occurs and the time when the reader will issue an
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
seconds)
Auto-Switch to Pass-Through Mode.
Refer to Auto-Switch to Pass-Through Mode
00: Disable (default)
01: Enable
Track 1 and Track 2 Data Format
Sets the format of data returned from Activate
Transaction and Get Transaction Results commands.
00: No start/end sentinels or LRC (default)
01: Add start/end sentinel and LRC
Improved Collision Detection (see special features
Improved Collision Detection.) RF signal locked to a
specified card only after a specified number of
polling attempts without an EMV collision.
00h = Improved Collision Detection Disabled.
02h-FFh = Number of successful polling attempts
required.
Application Capability(1:Support,0:Not Support):
Byte 1: (Leftmost)
b8 b7 b6 b5 b4 b3 b2 b1
Default Value
(BCD)
00 30 00
00
00
00
07 FF
(0F FF for Kiosk
III)
Meaning (0 = disable, 1 =
enable)
Normal J/Speedy support
Interac support
CUP support
Length
(Bytes)
ViVOpay Mifare for NFC
Format
SmartTap support
RFU
Byte 2:
FFF3[1]
b8 b7 b6 b5 b4 b3 b2 b1
Meaning (0 = disable, 1 =
enable)
MasterCard Credit support
American Express support
Visa support
Mobile J/Speedy support
ViVOwallet support
RBS support
MasterCard Cash support
Discover support
Example: 0009 means reader support both
MasterCard and Mobile J/Speedy applications
53
NEO Interface Developers Guide
Format
Length
(Bytes)
Default Value
02
03
03 E8
or
00 00
FFFB[1]
Language Option for LCD display:
Value = 00: English only display (default)
Value = 01: Chinese only display[2]
Value = 02: English & Chinese display[2]
Value = 03: French only display
Value = 04: Other Language (if ILM present)[2]
Value = 05: English & French display [4]
00
DF891B
Poll Mode
Value = 00 : Auto-Poll
Value = 01 : Poll on Demand
Note: Only used for Vendi.
00
Tag
FFF7[1]
FFF9[1]
[2] [3]
FFFA[1]
[2]
9F15
Data Object Name and Description
Enable/Disable Burst Mode:
Value = 00: Disable Burst Mode
Value = 01: Enable Burst Mode
Value = 02: Burst Mode Auto Exit. Burst mode is
turned off as soon as a transaction command is
received (Sections 6 and 14 of this document)
LCD Font Size:
Value = 02: Large
Value = 03: Extra Large (default)
LCD delay time (ms) – default is 1000ms.
If the device has no LCD, then the value will be 0.
n4
00 00
9F16
Merchant Category Code
Classifies the type of business being done by the
merchant, see ISO 8583:1993.
Merchant Identifier
ans
15
9F1C
Terminal Identification
an
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00
9F40
60 00 00 10 01
9F4E
Additional Terminal Capabilities
Indicates the data input and output capabilities of
the terminal.
Merchant Name and Location
Allows the reader to be configured with the
Merchants Name and Location (VCPS 2.1.1 and
M/Chip 3.0)
ASCII
<=30
9F7C
Merchant Custom Data
<=20
FFF2
Interface Device Serial Number
This is equivalent to tag 9F1E. They refer to the same
parameter.
an
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 00 00 00
30 30 30 30 30
30 30 30
54
NEO Interface Developers Guide
Tag
Data Object Name and Description
FFF8
UI Scheme:
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.
Transaction Category Code
Indicate type of transaction being performed,
defined by MasterCard and Interac.
MTAS(Media Tracking And Status)
Byte 1: (Leftmost)
9F53
DFEF36
b8 b7 b6 b5 b4 b3 b2 b1
Format
Length
(Bytes)
Default Value
00
an
00
Meaning (0 = disable, 1 =
enable)
CL Media Arrival Reproting
CL Media Removal Reproting
RFU
Byte 2:
b8 b7 b6 b5 b4 b3 b2 b1 Notes
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.
-X X- X
RFU
00 00 00 00
Byte 3: RFU
Byte 2: RFU
FFEE1C
FFEE1D
UN range
Masked Output Data Parameter
Not present
04 04 2A 0C 31
55
NEO Interface Developers Guide
Tag
FFEE1E
Data Object Name and Description
Group 0 Initialize Flag:
Value = 00: not initialized.(If the tag is not found or
Value is not 1, reader will initialize group 0 with
default setting automatically when the power cycle
is on)
Value = 01: Initialized
Format
Length
(Bytes)
Default Value
01
Only used for Kiosk III.
[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.
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.
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.
Table 20: Group Configuration TLVs
Tag
Description
9F58
Merchant Type Indicator
Provides Merchant Type Indicator used by the card for
risk management. Five values are valid: 01, 02, 03, 04
and 05. (Interac)
9F59
Terminal Transaction Information (TTI)
Provides Terminal Transaction Information for the
current transaction. (Interac)
Format
Length
Default Value in
Group 0
n1
03
DC 80 00
n12
00 00 00 00 50 00
Note: Vendi default values are B4 07 00.
9F5D
Terminal Contactless Receipt Required Limit
Limit Amount used to compare against Transaction
amount to automatically print a transaction record.
(Interac)
56
NEO Interface Developers Guide
Tag
Description
Format
Length
Default Value in
Group 0
E0 00
n12
00 00 00 00 80 00
01
Terminal Option Status
Options supported by the terminal. (Interac)
9F5E
9F5F
Note: Vendi default values are 00 00.
Terminal (Reader) Contactless Floor Limit
Floor limit amount used to compare against
Transaction amount. (Interac)
Enable/Disable Certificate Revocation list
0 = disable
DF26
1 = enable (default)
M/Chip 3.02 can make use of the Certificate
Revocation list.
Note: Vendi default value is not present.
DF2A
Threshold Value for Biased Random Selection
Value used in terminal risk management for random
transaction selection. (Interac)
n12
00 00 00 00 50 00
DF2B
Maximum Target Percentage for Biased Random
Selection
Value used in terminal risk management for random
transaction selection. (Interac)
32
DF2C
Target Percentage for Random Selection
Value used in terminal risk management for random
transaction selection. (Interac)
0A
80
00
<=64
Zero length
n2
00
DF51[1]
ExpressPay Terminal Capabilities
Used to create the ExpressPay Terminal Capabilities
TLV, 9F6D for Amex ExpressPay applications.
Note: Vendi default value is not present.
DF64[1]
Enable/Disable Visa Wave cards
Enables the use of Visa Wave cards (not the Visa Wave
protocol).
00: Reject Visa Wave cards
01: Accept Visa Wave cards
Default Transaction Certificate Data Object List (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.
97
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.
9C
Transaction Type
Indicates the type of financial transaction, represented
by the first two digits of ISO 8583:1987 Processing
Code. (default = purchase goods or services)
57
NEO Interface Developers Guide
Format
Length
Default Value in
Group 0
5F2A
Transaction Currency Code
Indicates the currency code of the transaction
according to ISO 4217. Note: make sure you use the
same Transaction Currency Code for all configurable
AIDs. (default = US Dollars)
n3
08 40
5F36
Transaction Currency Exponent
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)
n1
02
9F01
Acquirer ID
Not present
9F02
Amount Authorized (Numeric)
n12
00 00 00 00 00 01
9F03
Amount Other (Numeric)
n12
00 00 00 00 00 00
9F09
Application Version Number
PayPass M/Chip (Value = 00 02)
D-PAS (Value = 00 02)
Interac (Value = 00 02)
Amex (Value = 00 01)
00 02
9F1A
Terminal Country Code
Indicates the country code of the terminal,
represented according to ISO 3166. Default = US
n3
08 40
00 00 17 70
an
00 00 00 00 00 00
00 00
00 08 E8
n2
22
80 00 40 00
(27 00 40 80 for
CUP)
Tag
Description
Terminal Floor Limit
Indicates the floor limit in the terminal for the AID(s)
associated with this group.
9F1B
Note: The value is the decimal limit amount given
in binary represented in Hex in the
command/response. (100 limit = 10000 decimal =
2710h).
Default = $60.00
Terminal Identification
9F1C
Note: Vendi default value is not present.
9F33
9F35
Terminal Capabilities
Indicates the card data input, CVM, and security
capabilities of the terminal
Default =
No CVM required
SDA supported
DDA supported
Card Capture
CDA supported
Terminal Type
Indicates the environment of the terminal, its
communications capability, and its operational control
Note: Vendi default value is 25.
9F66
Terminal Transaction Qualifier (TTQ)
Determine the type of transaction (MSD, qVSDC, and
Contactless VSDC) and whether online processing is
supported.
58
NEO Interface Developers Guide
Tag
9F6D
Description
Application Version Number (MagStripe)
PayPass MagStripe (Value = 00 01)
Format
Length
Default Value in
Group 0
00 01
00 08 E8
00 68 E8
n2
--
n12
00 00 00 01 00 00
Note: Vendi default value is not present.
DF28
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
Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
Note: Vendi default value is not present.
DF28 Byte
DF29
PayPass Tag Equivalent
DF8119
Terminal Capabilities – CVM Required
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’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
Note: Vendi default value is not present.
DF29 Byte
FFE4[1]
PayPass Tag Equivalent
DF8118
Group Number
The group number assigned to this group of
parameters. AIDs may be associated with the group
number.
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.
FFF1[1]
Terminal Contactless Transaction Limit
Indicates the terminal limit for this AID for Contactless
transactions.
59
NEO Interface Developers Guide
Tag
Description
Format
Length
Default Value in
Group 0
00 06 01
Visa Reader Risk Flags
Byte 1
b b b b b b b b Meaning
8 7 6 5 4 3 2 1 (0 = disable, 1 = enable)
- - - - - - X Status Check
X X X X X X X - RFU
Byte 2:
b b b b b b b b Meaning
8 7 6 5 4 3 2 1 (0 = disable, 1 = enable)
FFF4[1]
- -
- -
X -
- -
X -
- -
X -
- -
X -
- X -
X X -
X Transaction Limit Check
CVM Required Limit Test
Terminal Floor Limit Check
Cash Transaction Reader Risk
(RR)
Cashback Reader Risk (RR)
DRL (Dynamic Reader Limits)
RR
RFU
Byte 3
b b b b b b b b Meaning
8 7 6 5 4 3 2 1 (0 = disable, 1 = enable)
- -
1 = online cryptogram required
for zero amount (only used
with zero amount check
enabled)
- -
X -
1 = perform zero amount check
X X X X X X -
RFU
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
Note: Vendi default values are 01 00 01.
60
NEO Interface Developers Guide
Tag
Description
Default Value in
Group 0
Format
Length
n12
00 00 00 00 80 00
01
D-PAS Reader Risk Flags:
Byte 1
b b b b b b b b Meaning
8 7 6 5 4 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 b b Meaning
8 7 6 5 4 3 2 1 (0 = disable, 1 = enable)
X X X X X X X X RFU
Byte 3
b b b b b b b b Meaning
8 7 6 5 4 3 2 1 (0 = disable, 1 = enable)
- - - - - - - X
1 = online cryptogram required for
zero amount
X X X X X X X - RFU
FFF5[1]
CVM Required Limit
Indicates the CVM required limit in the terminal for the
associated AIDs.
PayPass Profile (also used for Amex)
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly differently:
87654321
-------X
FFFC[1]
------X-
Bit Meaning
MagStripe Only
M/Chip Only
-----X--
On Device CVM
XXXXX---
RFU
Value
0 = normal transaction
1 = MagStripe only
transaction allowed
0 = normal transaction
1 = M/Chip only
transaction allowed
0 = not supported
1 = supported
The default value is 0x01 – support MagStripe only.
Note: Vendi default value is not present.
FFFD[1]
Terminal Action Code (Online)
Reflect the acquirer-selected action to be taken upon
analysis of the TVR.
F8 50 AC F8 00
FFFE[1]
Terminal Action Code (Default)
Reflect the acquirer-selected action to be taken upon
analysis of the TVR.
F8 50 AC A0 00
FFFF[1]
Terminal Action Code (Denial)
Reflect the acquirer-selected action to be taken upon
analysis of the TVR.
00 00 00 00 00
61
NEO Interface Developers Guide
Tag
Description
Format
Length
Default Value in
Group 0
02 00 00
00
04 04 2A 0C 31
n4
Not Present
n1
Not Present
Specific Feature Switch
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
FFF0[1]
RFU (Deprecated)
1 = Visa CVN17 supported
0 = Visa CVN17 disabled
1 = Remove Track 1 data in
Visa response
1 = Remove Track 2 data in
Visa response
RFU
Byte 2: RFU
Byte 3: RFU
9F5A
FFEE1D
9F41
Terminal Transaction Type (Interac)
• 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],
Byte 3: MaskAscii, value scope is [20h, 7Eh],
Byte 4: MaskHex, value scope is [0Ah, 0Fh]
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".
Counter maintained by the terminal that is
incremented by one for each transaction
Note: Vendi default value is not present.
DF891C
“Interac Retry Limit”
Configured value for the total number of tap
attempts during an Interac Mobile Debit (NFC) application
transaction.
Note: Vendi default value is not present.
62
NEO Interface Developers Guide
Tag
Description
Format
Length
Default Value in
Group 0
Not Present
var
Not Present
CUP Risk and Configuration Flag
Byte 1
b8 b7 b6 b5 b4 b3 b2 b1
Status Check
Transaction Limit Check
CVM required Limit Check
Terminal Floor Limit Check
Zero Amount Check
RFU
Byte 2:
b8 b7 b6 b5 b4 b3 b2 b1
DFEF2F
RFU
Exception File Support
RFU
Online Authentication
Support
RFU
UPI Support
Cardholder Credential
Support
Byte 3:
b8 b7 b6 b5 b4 b3 b2 b1
Encrypt Keyboard Support
Reversal Support
qUICS Online ODA Fail
Decision:
1 = Go Online
0 = Decline
RFU
Byte 4: RFU
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]
[3]
[4]
Not used by M/Chip 3.0 because M/Chip 3.0 redefines this as a card tag that passes Application Capability Information.
These objects only work on the Vendi.
These objects only work on the ViVOpay graphic reader.
63
NEO Interface Developers Guide
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
Format
Length
Default Value in
Group 1
<=64
Not present
n6
FF FF FF
9C
Transaction Type
Indicates the type of financial transaction,
represented by the first two digits of ISO
8583:1987 Processing Code (default = purchase
goods or services)
n2
00
5F2A
Transaction Currency Code
Indicates the currency code of the transaction
according to ISO 4217. Note: make sure you use
the same Transaction Currency Code for all
configurable AIDs. Default = US Dollars(08 40)
n3
08 40
Tag
Description
97
Default Transaction Certificate Data Object List
(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
9A
Transaction Date (YYMMDD)
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.
64
NEO Interface Developers Guide
Format
Length
Default Value in
Group 1
5F36
Transaction Currency Exponent
Indicates the implied position of the decimal point
from the right of the transaction amount
represented according to ISO 4217.
Default = decimal is two places to the right of the
last digit of the transaction amount.
n1
02
9F01
Acquirer ID
Not present
n12
00 00 00 00 00 01
n12
00 00 00 00 00 00
Tag
Description
Amount Authorized (Numeric)
9F02
Note: Vendi default value is not present.
9F03
Amount Other (Numeric)
9F09
Application Version Number (M/Chip)
PayPass M/Chip 3.0(Value = 00 02)
Amex (Value = 00 01)
00 02
9F15
Merchant Category Code
Classifies the type of business being done by the
merchant, see ISO 8583:1993.
n4
11 11
9F16
Merchant Identifier
ans
15
Not present
9F1A
Terminal Country Code
Indicates the country code of the terminal,
represented according to ISO 3166.
n3
08 40
00 00 17 70
an
zero length
an
30 30 30 30 30 30
30 30
n6
FF FF FF
00 08 E8
9F1B
Terminal Floor Limit
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.
Terminal Identification
9F1C
9F1E
Note: Vendi default values are 00 00 00 00 00
00 00 00.
Interface Device Serial Number
This is intended to be the serial number of the
terminal/POS. It is configured by the POS and is
unique to the terminal.
Note: KioskIII/Vendi default value is not present.
9F21
Transaction Time (HHMMSS)
Indicates local time that the transaction was
authorized. Default = use RTC.
Terminal Capabilities
Indicates the card data input, CVM, and security
capabilities of the terminal.
9F33
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 Inpput Capability defined in PayPass 3.0.2 and
Byte 3 of 9F33 is the same as DF811F Security
Capability.
65
NEO Interface Developers Guide
Format
Length
Default Value in
Group 1
n2
22
60 00 00 30 00
ASCII
30
Not present
an
01
9F66
Terminal Transaction Qualifier (TTQ)
Determine the type of transaction (MSD, qVSDC,
and Contactless VSDC) and whether online
processing is supported.
Not present
9F6D
Application Version Number (MagStripe)
PayPass MagStripe (Value = 00 01)
00 01
9F6E
Third Party Data
9F7C
Merchant Custom Data
Tag
Description
9F35
Terminal Type
Indicates the environment of the terminal, its
communications capability, and its operational
control
Note: Vendi default value is 25.
9F40
Additional Terminal Capabilities
Indicates the data input and output capabilities of
the terminal
Note: Vendi default values are 60 00 00 10 01.
9F4E
9F53
Merchant Name and Location
Allows the reader to be configured with the
Merchants Name and Location (VCPS 2.1.1 and
M/Chip 3.0)
Transaction Category Code
This is a data object defined by MasterCard which
indicates the type of transaction being performed,
and which may be used in card risk management.
Note: Vendi default value is 00.
Not present
<=20
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00
Zero length
00 08 E8
Mobile Support Indication. (PayPass only)
9F7E
DF28
Note: Vendi default value is 00.
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
Capabilities (tag ‘9F 33’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
DF28 Byte
PayPass Tag Equivalent
DF8119
66
NEO Interface Developers Guide
Format
Length
Default Value in
Group 1
00 68 E8
DF8104
Pre Gen-AC Balance Read
If this tag is defined, a transaction will read the
balance before Gen-AC. This tag may also be sent
in the Activate to indicate that the balance should
be read prior to Gen-AC.
n12
Not present
DF8105
Post Gen-AC Balance Read
If this tag is defined, a transaction will read the
balance after Gen-AC. This tag may also be sent
in the Activate to indicate that the balance should
be read after Gen-AC.
n12
Not present
DF811A
Default UDOL
Used for calculating the CCC if no UDOL is present
in the card. The default is the tag and length of
the “Unpredictable Number”.
9F 6A 04
DF811C
Maximum Lifetime of Torn Transaction Record
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.
Not Present
DF811D
Maximum Number of Torn Transaction Records
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.
Not Present
DF811E
MagStripe CVM Required Capability
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.
10
DF8124
Reader Contactless Transaction Limit, No OnDevice 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
n12
00 00 00 03 00 00
Tag
DF29
Description
Terminal Capabilities – CVM Required
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’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
DF29 Byte
PayPass Tag Equivalent
DF8118
67
NEO Interface Developers Guide
Format
Length
Default Value in
Group 1
n12
Not Present
DF812C
MagStripe No CVM Required Capability
Indicates the CVM capability of the
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized
(Numeric) is less than or equal to the Reader CVM
Required Limit.
00
DF812D
Message Hold Time
Indicates the default delay for the processing of
the next MSG signal. The Message Hold Time is an
integer in units of 100ms.
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
n6
Not Present
DF8130
RF Hold Time Value
Indicates the time that the field is to be turned
off after the transaction is completed if requested
to do so by the cardholder device. The Hold Time
Value is in units of 100ms.
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
Not Present
DF8131
Phone Message Table
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
‘000000’.
Var
No Present
FF69
Proprietary Tag List
Proprietary tags that are not otherwise configured
may be configured by encapsulating them in this
tag list.
<=32
Not present
n2
--
Tag
DF8125
Description
Reader Contactless Transaction Limit, On-Device
CVM
When On-Device CVM is available (e.g. with a
phone) then this is the transaction limit that will
be used.
Note: Vendi default values are 00 00 00 03 00
00. KioskIII default values are 00 00 00 05 00
00.
FFE4[1]
Group Number
The group number that contains the
characteristics for this AID
This tag is mandatory when getting or setting group
parameters and it must be the 1st TLV in Data Field.
68
NEO Interface Developers Guide
Tag
FFF1[1]
FFF5[1]
Description
Terminal Contactless Transaction Limit
Indicates the terminal limit for this AID for
Contactless transactions.
CVM Required Limit
Indicates the CVM required limit in the terminal
for the associated AIDs. Default = $80.00
Format
Length
Default Value in
Group 1
n12
00 00 00 01 00 00
n12
00 00 00 00 80 00
00
00
01
This is equivalent to MasterCard tag DF8126.
FFF8[1]
UI Scheme:
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
allowed to poll continuously (e.g., operate in Auto
Poll Mode). The reader does NOT support Auto
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.
FFFB[1]
Language Option for LCD display:
Value = 00: English only display (default)
Value = 01: Chinese only display[2]
Value = 02: English & Chinese display[2]
Value = 03: French only display
Value = 04: Other Language (if ILM present)[2]
Value = 05: English & French display [3]
Note: Vendi default value is not present.
PayPass Profile
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly
differently:
87654321
Bit Meaning Values
-------X
MagStripe
Only
FFFC[1]
------X-
M/Chip Only
-----X--
On Device
CVM
XXXXX---
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
only.
69
NEO Interface Developers Guide
Tag
FFFD[1]
Description
Terminal Action Code (Online)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
Format
Length
Default Value in
Group 1
F8 50 AC F8 00
F8 50 AC A0 00
00 00 00 00 00
an
30 30 30 30 30 30
30 30
This is equivalent to MasterCard tag DF8122.
FFFE[1]
Terminal Action Code (Default)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8120.
FFFF[1]
Terminal Action Code (Denial)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8121.
FFF2
Interface Device Serial Number
This is equivalent to tag 9F1E. They refer to the
same parameter.
[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]
[3]
These objects only work on the ViVOpay graphic reader.
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
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
Format
Length
Hard-Coded
Default Value in
PayPass Kernel
Transaction Type
Indicates the type of financial transaction,
represented by the first two digits of ISO
8583:1987 Processing Code (default = purchase
goods or services)
n2
00
9F09
Application Version Number (Reader)
PayPass M/Chip 3.0
00 02
9F1A
Terminal Country Code
Indicates the country code of the terminal,
represented according to ISO 3166.
n3
00 00
00 00 17 70
00 00 00
9F35
Terminal Type
Indicates the environment of the terminal, its
communications capability, and its operational
control
n2
00
9F40
Additional Terminal Capabilities
Indicates the data input and output capabilities of
the terminal
00 00 00 00 00
9F6D
Application Version Number (MagStripe)
PayPass MagStripe (Value = 00 01)
00 01
Tag
Description
9C
9F1B
Terminal Floor Limit
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.
Terminal Capabilities
Indicates the card data input, CVM, and security
capabilities of the terminal.
9F33
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.
71
NEO Interface Developers Guide
Tag
DF28
Description
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
Capabilities (tag ‘9F 33’)
Format
Length
Hard-Coded
Default Value in
PayPass Kernel
00 00 E8
00 00 E8
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
DF28 Byte
DF29
PayPass Tag Equivalent
DF8119
Terminal Capabilities – CVM Required
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’)
Only byte 2 of this tag is actually used. The other
terminal capabilities are configured using tag 9F33.
DF29 Byte
PayPass Tag Equivalent
DF8118
DF811A
Default UDOL
Used for calculating the CCC if no UDOL is present
in the card. The default is the tag and length of
the “Unpredictable Number”.
9F 6A 04
DF811C
Maximum Lifetime of Torn Transaction Record
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.
01 2C
DF811D
Maximum Number of Torn Transaction Records
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.
00
DF811E
MagStripe CVM Required Capability
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.
F0
DF8124
Reader Contactless Transaction Limit, No OnDevice CVM
When there is no On-Device CVM available (e.g.
with a phone), then this is the transaction limit
that will be used.
n12
00 00 00 00 00 00
72
NEO Interface Developers Guide
Tag
Description
Format
Length
Hard-Coded
Default Value in
PayPass Kernel
n12
00 00 00 00 00 00
DF8125
Reader Contactless Transaction Limit, On-Device
CVM
When On-Device CVM is available (e.g. with a
phone) then this is the transaction limit that will
be used.
DF812C
MagStripe No CVM Required Capability
Indicates the CVM capability of the
Terminal/Reader in the case of a mag-stripe mode
transaction when the Amount, Authorized
(Numeric) is less than or equal to the Reader CVM
Required Limit.
F0
DF812D
Message Hold Time
Indicates the default delay for the processing of
the next MSG signal. The Message Hold Time is an
integer in units of 100ms.
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
n6
00 00 13
DF8130
RF Hold Time Value
Indicates the time that the field is to be turned
off after the transaction is completed if requested
to do so by the cardholder device. The Hold Time
Value is in units of 100ms.
While this value is configurable, it is not used in
practice in the reader. It is a MasterCard
requirement.
0D
DF8131
Phone Message Table
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
‘000000’.
Var.
See next table
‘Phone Message
Table HardCoded Default
Value in Kernel’.
n12
00 00 00 00 00 00
FFF5[1]
CVM Required Limit
Indicates the CVM required limit in the terminal
for the associated AIDs.
This is equivalent to MasterCard tag DF8126.
73
NEO Interface Developers Guide
Tag
Description
Format
Length
Hard-Coded
Default Value in
PayPass Kernel
00
CC 00 00 00 00
CC 00 00 00 00
00 00 00 00 00
PayPass Profile
Information in this tag is equivalent to PayPass tag
DF811B, although it is formatted slightly
differently:
87654321
Bit Meaning Values
-------X
MagStripe
Only
FFFC[1]
FFFD[1]
0 = normal transaction
1 = MagStripe only
transactions allowed
------X-
0 = normal transaction
M/Chip Only
1 = M/Chip only
Transactions allowed
-----X--
On Device
CVM
XXXXX---
RFU
0 = not supported
1 = supported
Terminal Action Code (Online)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8122.
FFFE[1]
Terminal Action Code (Default)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8120.
FFFF[1]
Terminal Action Code (Denial)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
This is equivalent to MasterCard tag DF8121.
[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.
Table 23: Phone Message Table – Hard-Coded Default Value in Kernel
PCI Mask
PCII Value
Message Identifier
Status
000800
000800
20 (SEE PHONE)
00 (NOT READY)
000400
000400
20 (SEE PHONE)
00 (NOT READY)
000100
000100
20 (SEE PHONE)
00 (NOT READY)
000200
000200
20 (SEE PHONE)
00 (NOT READY)
000000
000000
20 (SEE PHONE)
00 (NOT READY)
74
NEO Interface Developers Guide
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 rule for 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
Transaction Currency Code
Indicates the currency code of the transaction
according to ISO 4217.
5F2A
Format
Length
Default Value in
Group 2
n3
08 40
Note: make sure you use the same
Transaction Currency Code for all
configurable AIDs. (default = US Dollars)
Note: Kiosk III default value is “09 01”
75
NEO Interface Developers Guide
Tag
Description
Transaction Date (YYMMDD)
9A
Format
Length
Default Value in
Group 2
n6
FF FF FF
n2
00
n12
00 00 00 00 00
00
00 01
n3
08 40
00 00 17 70
n6
FF FF FF
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”
9C
Transaction Type
Indicates the type of financial transaction,
represented by the first two digits of ISO
8583:1987 Processing Code. (default = purchase
goods or services)
9F03
Amount Other (Numeric)
9F09
Application Version Number
PayPass M/Chip (Value = 00 02)
Amex (Value = 00 01)
Note: Kiosk III default value is 00 02
9F1A
Terminal Country Code
Indicates the country code of the terminal,
represented according to ISO 3166. Default = US
Note: Kiosk III default value is “01 58”
Terminal Floor Limit
ndicates the floor limit in the terminal for the
AID(s) associated with this group.
9F1B
Note: The value is the decimal limit amount given in
binary represented in Hex in the
command/response. (60 limit = 6000 decimal =
1770h).
Transaction Time (HHMMSS)
This value is used to set the Real Time Clock.
9F21
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
Tag
9F33
Description
Terminal Capabilities
Indicates the card data input, CVM, and security
capabilities of the terminal
Default =
• No CVM required
• SDA supported
• DDA supported
• Card Capture
• CDA supported
Format
Length
Default Value in
Group 2
00 08 E8
n2
D8 E0 00 00
C0
00 00 00 3C
Note: Kiosk III default value is “00 00 A8”
Terminal Type
Indicates the environment of the terminal, its
communications capability, and its operational
control
9F35
Environment Operational Control
Provided By:
Financial
Merchant
Institution
Attended
Online only 11
21
Offline with 12
22
online
capability
Offline only 13
23
Unattended
Online only 14
24
Offline with 15
25
online
capability
Offline only 16
26
25
Cardholder
34
35
36
Note: Kiosk III default value is 22
Terminal Transaction Capabilities
9F6E
DF51
Note: Kiosk III default value is “not
present”
ExpressPay Terminal Capabilities
Used to create the ExpressPay Terminal
Capabilities TLV, 9F6D for Amex ExpressPay
applications.
Note: Kiosk III default value is 80
UN range
FFEE1C
Note: Kiosk III default value is “not
present”
77
NEO Interface Developers Guide
Tag
Description
Terminal Contactless Transaction Limit
Indicates the terminal limit for this AID for
Contactless transactions.
Default Value in
Group 2
Format
Length
n12
00 00 00 01 50
00
n12
00 00 00 00 50
00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
FFF1[1]
Note: Kiosk III default value is 00 00 00 01
00 00
CVM Required Limit
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
Terminal Action Code (Online)
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
Terminal Action Code (Default)
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
FFFF[1]
Terminal Action Code (Denial)
Reflect the acquirer-selected action to be taken
upon analysis of the TVR.
[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]
[3]
These objects only work on the ViVOpay graphic reader.
These objects only work on the Vendi
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
Table 25: AID Configuration TLVs
Tag
Data
Object
Name
Usage
9F06
Application
Identifier
(AID)
DF7C
Auto-Switch
OPT
FFE0[1]
Registered
Application
Provider
Identifier
(RID)
Sys =
NEVER
User =
OPT
FFE1[1]
Partial
Selection
Allowed
OPT
(Visa
MAND)
MAND
Sys =
NEVER
FFE2[1]
Application
Flow
User =
MAND
OPT
FFE3
Selection
Features
Description
Identifies the application as described in
ISO/IEC 7816-5.
This must be the 2nd TLV in the data field.
Automatically switch to Pass-Through Mode
when PICC is unknown.
00h = disabled (default)
01h = enabled
Identifies the payment system to which the
Certification Authority Public Key is
associated. If this Tag is not provided the
first five bytes from the AID are used.
Tells the reader to allow partial selection
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.
1 (01h) – MasterCard MagStripe Application
2 (02h) – American Express Application
3 (03h) – MasterCard PayPass Application
6 (06h) - Visa Application.
13 (0Dh) - Discover Application
14 (0Eh) – JCB QuicPay Application
15 (0Fh) – STAR Application
21 (15h) –Interac Application
23 (17h) –SmartTap
Forma
Length
5 – 16
Enables or disables selection features. For
M/Chip 3.0, this value will default to 74h.
Please refer to the Selection Features
section for a detailed description of this
tag.
87654321
-------x
------x-----x-----x-----x-----x-----x-----x-------
Selection Feature
Deprecated / RFU
Extended Selection
Supported
Cardholder Confirmation Not
Supported
API (application priority
indicator) required
Invalid AID Allowed
Duplicate AID Allowed
Enable Kernel ID
RFU
79
NEO Interface Developers Guide
The TLV Group number that contains the
characteristics for this AID
This must be the 1st TLV in Data Field.
FFE4[1]
TLV Group
Number
MAND
For MasterCard PayPass and any
applications that use the Combined
Selection Feature, this tag represents
the fallback group if the TLV FFE9
transaction type list is empty, or the
kernel ID is disabled (see tag FFE3).
n2
Variable
<= 24
For MasterCard PayPass, this tag may
NOT be Group 0.
FFE5[1]
FFE6[1]
Maximum AID
Length
DEP
AID Disabled
OPT
This value must be <= 16.
For Visa application flow, this value is set
to 16 and cannot be changed.
Note: This tag must be included if the
FFE1 Partial Select TLV is included.
Used to disable a System AID (has no effect
on a User AID). 80h = disabled and 00h =
enabled
This byte is formatted as follows:
87654321
FFE8
Exclude from
Processing
Meaning (0 = disable, 1 =
enable)
Exclude from PPSE processing.
-------x 1 = This AID will not be added to
the candidate list during PPSE.
OPT
Exclude from Trial and Error
processing. 1 = This AID may
not be added to the candidate
------xlist during Trial and Error
(sometime referred to as “List
of AIDs” processing.
xxxxxx-- RFU
This list defines 3-byte triplets, where the
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:
Byte
1- Kernel ID
FFE9
Transaction
Type List
OPT
2Transaction
Type
3- Group
Number
Description
Kernel ID as defined by
EMV first byte only.
Supported transaction
types may be:
Payment(00), Cash(01),
Cashback(09) or
Refund(20)
The group that should
be used for this
transaction and Kernel
ID.
Group 0 may not be used in this list.
80
NEO Interface Developers Guide
This Kernel Identifier will be used if the
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:
FFEA
DFEF2C
Configurable
Kernel
Identifier
Terminal AID
List
Card Application
MasterCard
Visa
American Express
JCB Quickpay
All others
OPT
Default KID
This tag is equivalent to MasterCard tag
DF810C.
Tells the reader to allow Terminal AID List
support during the initial select process. 01
= Allowed, 00 = Disabled
OPT
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
(Hex)
Value (Hex)
Group
FF E4
01
02
AID
9F 06
06
A0 00 00 00 25 01
Partial Selection
FF E1
01
01
Application Flow
FF E2
01
02
Max AID Length
FF E5
01
10
Group
FF E4
01
01
AID
9F 06
07
A0 00 00 00 04 10 10
Partial Selection
FF E1
01
01
Application Flow
FF E2
01
03
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
74
Transaction Type
List
FF E9
0C
02 00 01
Card Application
American Express
MasterCard
PayPass
Application
02 20 01
02 01 01
02 09 01
Kernel ID
FF EA
01
02
81
NEO Interface Developers Guide
Name
Tag
Length
(Hex)
Value (Hex)
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 65 90 01
Partial Selection
FF E1
01
01
Application Flow
FF E2
01
0E
Max AID Length
FF E5
01
08
Selection Features
FF E3
01
14
Card Application
JCB (QUICPay)
Application
Note: Vendi default value,
FF E6 = 80
Group
FF E4
01
01
AID
9F 06
07
A0 00 00 00 04 30 60
Partial Selection
FF E1
01
01
Application Flow
FF E2
01
03
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
74
Transaction Type
List
FF E9
0C
02 00 01
MasterCard
PayPass
Application
02 20 01
02 01 01
02 09 01
Kernel ID
FF EA
01
02
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 03 10 10
Application Flow
FF E2
01
06
Partial Selection
FF E1
01
01
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
14
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 03 20 10
Application Flow
FF E2
01
06
Visa Application
Partial Selection
FF E1
01
01
(Visa Electron)
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
14
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 03 30 10
Application Flow
FF E2
01
06
Visa Application
Partial Selection
FF E1
01
01
(Visa Interlink)
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
14
Visa Application
82
NEO Interface Developers Guide
Name
Tag
Length
(Hex)
Value (Hex)
Card Application
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 03 80 10
Application Flow
FF E2
01
06
Visa Application
Partial Selection
FF E1
01
01
(Visa Plus)
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
14
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 00 65 10 10
Application Flow
FF E2
01
06
Partial Selection
FF E1
01
01
Max AID Length
FF E5
01
10
Visa Application
Selection Features
FF E3
01
14
(J/Speedy)
Note: Vendi default value,
FF E2 = FF
Group
FF E4
01
00
AID
9F 06
0A
A0 00 00 00 02 30 60 D1 58 00
Application Flow
FF E2
01
10
Partial Selection
FF E1
01
01
Max AID Length
FF E5
01
10
Selection Features
FF E3
01
74
MXI Application
Note: Vendi default value,
FF E2 = FF
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 03 24 10 10
Application Flow
FF E2
01
0D
Partial Selection
FF E1
01
01
Max AID Length
FF E5
01
10
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 01 52 30 10
Application Flow
FF E2
01
0D
Partial Selection
FF E1
01
01
Max AID Length
FF E5
01
10
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 04 17 01 01
Partial selection
FF E1
01
01
Application Flow
FF E2
01
0F
Max AID Length
FF E5
01
08
Selection Features
FF E3
01
08
Discover
(ZIP)Application
Discover (D-PAS)
Application
STAR Application
83
NEO Interface Developers Guide
Name
Tag
Length
(Hex)
Value (Hex)
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 02 77 10 10
Partial selection
FF E1
01
01
Application Flow
FF E2
01
15
Max AID Length
FF E5
01
10
Card Application
Interac
Application
Note: Vendi default value,
FF E2 = 15
Group
FF E4
01
00
AID
9F 06
07
A0 00 00 04 76 D0 00
Partial selection
FF E1
01
01
Application Flow
FF E2
01
17
Max AID Length
FF E5
01
10
SmartTap
84
NEO Interface Developers Guide
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:
87654321
-------x
------x-
Feature Name
Deprecated/RFU
Extended Selection
Supported
Description
Reserved for Future use.
Allow the Extended Selection value optionally provided by the
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.
-----x--
Cardholder Confirmation
Not Supported
----x---
API Required
---x----
Invalid AID Allowed
--x-----
Duplicate AID Allowed
-x------
Enable Kernel ID
x-------
RFU
0 = Cardholder Confirmation is allowed for this AID and if API bit
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.
0 = the API is not required for this AID and the application may
be added to the candidate list if the API is missing.
1 = the API is required for this AID; the application will not be
added to the candidate list if the API is missing.
0 = any invalid AID will cause this AID to terminate the
transaction.
1 = any invalid AID will be ignored as related to this AID.
0 = a duplicate AID, whether extended or not, is not allowed and
will not be added to the candidate list.
1 = a duplicate AID, whether extended or not, is allowed and
may be added to the candidate list.
1 = allow the evaluation of the Kernel ID.
0 = if a Kernel ID is provided by the card it is ignored.
Reserved for Future Use.
85
NEO Interface Developers Guide
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
Value
Partial selection is
allowed
Description
0 = This AID does not participate in partial selection
1 = This AID will participate in partial selection (default)
For M/Chip 3.0, this value should be set to “allowed”
xxxxxxx-
RFU
Reserved for Future Use
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)
87654321
-------x
------xxxxxxx--
Process to be Excluded
Exclude from PPSE
Processing
Exclude from Trial &
Error Processing
RFU
Description
0 = This AID may be added to the candidate list during PPSE.
1 = This AID will not be added to the candidate list during PPSE.
0 = This AID may be added to the candidate list during T&E.
1 = This AID will not be added to the candidate list during T&E.
Reserved for Future Use
“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
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)
87654321
-------x
xxxxxxx-
Value
Terminal AID List is
allowed
Description
0 = Terminal will not send out terminal AID data
1 = Terminal will send out terminal AID data
RFU
Note: The Terminal AIDs can be modified by 04-02 Load AID
command.
Reserved for Future Use
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
NEO Interface Developers Guide
Torn Transaction Recovery
A method exists for saving data from a torn transaction and matching up that
transaction with a card that re-appears in the field to complete the transaction.
Due to space limitations in the reader, the maximum number of torn transaction
records that can be retained is two. New tags (configurable in a PayPass Group)
control the size and use of the torn transaction log:
Tag
DF811C
Name
Max Lifetime of Torn
Transaction Record
Description
Controls how long a torn transaction
record can exist in the log before it
expires. It is expressed in seconds.
DF811D
Maximum Number of Torn
Transaction Records
The only possible values are 0, 1 or 2.
If this tag is set to 0, then the torn
transaction recovery is effectively
disabled.
These tags are configurable for PayPass groups. It they are configured for other groups, they
will not be used.
EMV Certificate Revocation List
The MasterCard application can make use of the EMV Certificate Revocation List
features if they are enabled. The DF26 tag is used to enable or disable the
Certificate Revocation List function. The default value for this tag is “enabled”
(1).
Stop Transaction Command
M/Chip 3.02 includes a Stop Transaction Command that is similar to a Cancel
Command. The DF68 tag is used to enable or disable the Stop Command. The
default value for this tag is “disabled” (0).
Proprietary Tag List
The proprietary tag list feature is not specific to MasterCard. Please refer to
the Card Application Proprietary Tag List feature.
PayPass Personalization Limits
To guarantee the successful completion of PayPass transactions using CDA or SDA, size
restrictions noted in this section apply.
7.1.1.1
CDA Transactions
The combined length of the following data objects personalized to the card cannot exceed 2400
bytes. ICC Public Key Certificate
89
NEO Interface Developers Guide
ICC Public Key Exponent
ICC Public Key Remainder
Static data used in data authentication (2048 bytes maximum)
7.1.1.2
SDA Transactions
The combined length of the following data objects personalized to the card cannot be greater
than 2400 bytes.
Signed Static Application Data
Static data used in data authentication (2048 bytes maximum)
90
NEO Interface Developers Guide
8.0
Protocol Command Reference: Protocol 1
Transaction Related Commands
Flush Track Data (17-02)
This command allows the POS application to instruct ViVOpay to flush any Track Data that was
read from a card previously but has not been transferred to the POS yet. On receiving this
command ViVOpay clears any pending card data.
Command Frame from PC to ViVOpay
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
17h
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
02h
00
00
ACK Frame from ViVOpay (or NACK)
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
17h
Status=OK
Unused
XX
Get Full Track Data (17-CD)
Use this command to return full track data from the ViVOpay reader. If a card has been swiped
at the magnetic stripe reader or presented to a reader in Auto Poll mode, ViVOpay sends back
an ACK Frame followed by a Data Frame containing track data. If no card has been swiped or
presented, ViVOpay just returns an ACK Frame and no Data Frame. If both Track 1 and Track 2
data is being returned, then the Data Frame contains the Track 1 Data, followed by a NULL
character (00h) marking the end of Track 1 Data, followed by Track 2 data.
If a card has been swiped, but an error occurred, then ViVOpay just sends an ACK Frame with
Status Failed.
Command Frame from PC to ViVOpay
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
17h
CDh
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
00
00
91
NEO Interface Developers Guide
Response Frame (ACK)
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
17h
Status
Tracks/
Error Code
DataLen
Byte 12 is used for Tracks or Error Code, depending on the value of the Status in Byte 11 (see
Status Code Protocol 1). When Status is OK, Byte 12 is used to store Tracks. When Status is
Failed, Byte 12 is used to store the Error Codes from ViVOpay.
Note: These Error Codes are valid only when the RF Error Code Reporting is enabled through
Set RF Error Reporting command, see Set RF Error Reporting.
Table 27: Get Full Track Data Error Codes
Status
Tracks/Error Code
Examples:
Bit 0 = Track 1
Bit 1 = Track 2
Bit 3 = Track 3
OK
Track
Track
Track
Track
Bit 7 = Card Type
Error
Error
Error
Error
Error
Error
Error
Failed
Code
Code
Code
Code
Code
Code
Code
01h
02h
03h
04h
05h
06h
FFh
00h
01h
02h
03h
=>
=>
=>
=>
No Track Data
Track 1 Data Only
Track 2 Data Only
Track 1 & Track 2 Data etc.
Card Type = 0 => Contactless Card
Card Type = 1 => Swiped Magnetic Stripe
Card Removed
Communication Error
Protocol Error
Multiple Cards Detected
Card Not Accepted
Bad Data
Unknown Error
Other
(See Status Code)
N/A
DataLen
Number of Data Bytes in the Data Frame to Follow. This does not include the Frame Tag, Frame
Type and Checksum bytes.
Data Frame from the Reader to PC (If the Reader sent an ACK and Track Data available)
Byte 0-8
Byte 9
Byte 10
Byte 11
…
Byte n+10
Byte n+11
Byte n+12
Frame Tag
Frame Type
Data 0
Data 1
…
Data n
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘D’
Data
Data
…
Data
If the host fails to receive the track data, it can send a NACK Frame to request the reader to
resend the track data. To ensure that the reader resends the track data, the NACK Frame must
be received within 500ms after it sends the original track data. If the reader receives the NACK
92
NEO Interface Developers Guide
Frame within that time period, it first resends the ACK Frame followed by the Data Frame to PC.
If the reader receives the NACK Frame after 500ms of sending out the original track data, or if a
new card has been detected, the reader sends an ACK/NACK Frame to the host and does not
resend the track data. Each payload data is only resent once.
Response Frame NACK Frame from PC to the Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘N’
17h
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
00h
00
00
ACK Frame from the Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
17h
Status
Tracks
DataLen
Status
OK (see Status Code Protocol 1)
Tracks
Example
Bit 0 = Track 1
Bit 1 = Track 2
Bit 3 = Track 3
Track = 00h => No Track Data
Track = 01h => Track 1 Data Only
Track = 02h => Track 2 Data Only
Track = 03h => Track 1 & Track 2 Data etc.
DataLen
Number of Data Bytes in the Data Frame to Follow. This does not include the Frame Tag, Frame
Type and Checksum bytes.
Data Frame from the Reader to PC (If ViVOpay sent an ACK and Track Data available)
Byte 0-8
Byte 9
Byte 10
Byte 11
…
Byte n+10
Byte n+11
Byte n+12
Frame Tag
Frame Type
Data 0
Data 1
…
Data n
CRC
(MSB).
CRC
(LSB).
ViVOtech\0
‘D’
Data
Data
…
Data
An example of the Data Frame sent in response to the Get Full Track data command is as
follows:.
56 69 56 4F 74 65 63 68 00 44 42 35 33 32 35 33
35 30 30 30 30 36 32 33 35 36 37 5E 53 4D 49 54
48 2F 4A 4F 48 4E 5E 30 35 30 38 35 30 31 31 30
93
NEO Interface Developers Guide
30
36
30
34
36
32
36
34
32
30
32
35
36
39
33
39
30
33
35
39
30
33
36
37
34
00
37
38
34
35
3D
36
35
33
30
30
30
32
35
36
30
35
30
32
30
33
38
33
30
35
31
DF
30 37 38
30 30 30
30 31 39
03
Annotated
56 69 56 4F 74 65 63 68 00 – FRAME TAG
44 – FRAME TYPE ‘D’
TRACK 1 DATA
42 35 33 32 35 33 35 30 30 30 30 36 32
37 5E 53 4D 49 54 48 2F 4A 4F 48 4E 5E
38 35 30 31 31 30 30 36 32 36 30 30 34
30 30 30 30 37 38 36 32 30 39 33 33
00 – END OF TRACK 1 START OF TRACK 2
TRACK 2 DATA
35 33 32 35 33 35 30 30 30 30 36 32 33
3D 30 35 30 38 31 30 31 39 34 34 35 39
33 35 36
30 35 30
34 35 30
35 36 37
39 37 38
36 30 36 32 33
DF 03 – CRC
Get ViVOpay Firmware Version (29-00)
Use this command to return the ViVOpay reader’s Firmware Version Number. This is the Protocol
1 version of the command given in Get Version Protocol 2 (29-00). The ViVOpay reader returns
an ACK Frame containing the length of the Version Data. This is followed by a Data Frame
containing the firmware version information.
Command Frame from PC to the Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
CRC
(LSB)
CRC
(MSB)
ViVOtech\0
‘C’
29h
00h
00
00
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Response Frame from the Reader (ACK or NACK)
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Byte 12
Command
Status
Data1
Data2
ViVOtech\0
‘A’
29h
Status=OK
Unused
DataLen
Status = OK (see Status Code Protocol 1)
DataLen = Number of Data Bytes in the Data Frame to Follow. This does not include the Frame
Tag, Frame Type and Checksum bytes.
94
NEO Interface Developers Guide
Data Frame from the Reader to PC (If ViVOpay sent an ACK)
Byte 0-8
Byte 9
Byte 10 … Byte n+10
Byte n+11
Byte n+12
Frame Tag
Frame Type
Data 0 … Data n
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘D’
ViVOpay Version (Null Terminated ASCII String)
Key Manager Commands Protocol 1
Note: The following commands use Protocol 1 frame formats. Whenever possible, you should
use the Key Manager commands in Protocol 2.
The Key Management Protocol 1 commands are retained for compatibility purposes and are not
to be used when doing secure communication.
Some ViVOpay firmware versions that support EMV security features provide an EMV Key
Management Interface that can be used by a terminal to Add/Delete CA Public Keys and related
data. These firmware versions also provide a Real Time Clock set up interface and an EMV
ViVOpay Terminal set up interface.
This document describes the ViVOpay Serial Interface, specifically the EMV Key Management
commands, the Real Time Clock set up commands and the EMV ViVOpay Terminal set up
commands. It describes the communication parameters, the ViVOpay Serial Interface Protocol
and the command-specific details.
Warning: DO NOT mix the two Key Management formats. Manage the keys using Protocol 1 or
Protocol 2 but not both.
ViVOpay provides a secure storage environment on its Crypto Chip for storing the Certification
Authority Public Keys. It allows for storage of up to a maximum of 30 keys which are uniquely
identified as a key index in each payment scheme (RID). The basic Key management functions
provided are setting of a new Public Key based on a Unique Pair, and deletion
of a key. Once a key has been stored in the Crypto Chip, it does not allow retrieval of the key.
All authentication/decryption functions that require the key take place inside the Crypto Chip.
The ViVOpay reader periodically checks for Command Frames. Once it starts receiving a
Command Frame, it expects each successive byte to arrive within the inter-byte timeout. If the
ViVOpay reader is receiving multiple Data Frames it expects each successive byte to arrive
within the inter-frame timeout (see table below). If the data is not received within the timeout
period listed, the ViVOpay reader times out and a timeout failure response is sent.
Serial Commands
Inter-Byte
Inter-Frame
Delete CA Public Key
200ms
5 sec
Set CA Public Key
200ms
5 sec
Set RTC Date
200ms
5 sec
Set RTC Time
200ms
5 sec
Pass-Through APDU Exchange
200ms
5 sec
95
NEO Interface Developers Guide
(multiple Data Frames)
Pass-Through PCD Single Command
(multiple Data Frames)
200ms
5 sec
All other Commands
200ms
200ms
Once the ViVOpay reader has received a command, the time in which it starts sending a
response back to the terminal varies from command to command, depending on what kind of
processing is required before a response can be sent back to the terminal.
Table 28: EMV Key Management Commands Error Codes – Protocol 1
Error Code
Description
00h
No Error
01h
Unknown Error
02h
Invalid Data
03h
Incomplete Data
04h
Invalid Key Index
05h
Invalid CA Hash Algorithm Indicator
06h
Invalid CA Public Key Algorithm Indicator
07h
Invalid CA Public Key Modulus Length
08h
Invalid CA Public Key Exponent
09h
Key already Exists (Try to Set Key after deleting existing Key)
0Ah
No space for New RID
0Bh
Key not Found
0Ch
Crypto Chip not responding
0Dh
Crypto Chip Communication Error
0Eh
RID Key Slots Full
0Fh
No Free Key Slots Available
Set CA Public Key (24-01) Protocol 1
Use this command to send data related to a CA Public Key to the ViVOpay reader for storing in a
secure environment (Crypto Chip Memory). The Public Key is uniquely identified by the pair. If the total length of the key related data being sent is more than 244 bytes,
then it can be broken down into two Data Frames.
96
NEO Interface Developers Guide
ViVOpay
PC / Peripheral
Device
Set CA Public Key Cmd
ACK Frame
Data Frame 1
ACK Frame
Data Frame 2
Set Key in
Crypto
Final ACK/NACK Frame
Flow of Frames between ViVOpay Reader and an External Device
Command Frame from Terminal to ViVOpay
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
97
NEO Interface Developers Guide
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
ViVOtech\0
‘C’
24h
01h
DataLen2
DataLen
CRC
(LSB)
CRC
(MSB)
DataLen, DataLen2
If the key data is being sent in a single Data Frame, then DataLen contains the length of the
one and only Data Frame to follow and DataLen2 is 0.
If the key data is being sent in two Data Frames, then DataLen contains the length of the
first Data Frame and DataLen2 contain the length of the second Data Frame. The length of
either Data Frame must not exceed 244 (0xF4) bytes.
DataLen > 0, DataLen2 >= 0
ACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘A’
24h
Status
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
00
00
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
NACK from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
24h
FAILED
Error Code
Unused
Error Code: See EMV Key Management Error Codes Table
If at any time ViVOpay sends back a NACK Frame with Status set to Failed, then the Error code
field indicates the reason for failure.
First Data Frame from terminal to Reader (If reader sent an ACK)
Byte 0-8
Byte 9
Byte 10-13
Byte 14
…
Byte 10+(n-1) Byte 10+n
Frame Tag
Frame Type
Data 0
Data 1
…
Data (n-1)
ViVOtech\0
‘D’
Data
Data
…
Data
CRC
(LSB)
Byte
10+(n+1)
CRC
(MSB)
Where n = length of the data field.
98
NEO Interface Developers Guide
The data field in the first Data Frame contains the complete or partial CA Public Key related
Data. The complete contents and format of the Key Data are given in the following Table. The
data portion of Data Frame 1 and Data Frame 2 (if present) when stripped of the Frame
overhead and concatenated, provides the data as given in the following table.
Table 29: Set CA Public Key Data Field
Data
Byte
Length
(bytes)
Name
Format Notes
RID
Binary
Registered Identifier.
Necessary for Unique Identification
CaPublicKey Index1
Binary
Index of the CA Public Key for this RID.
Necessary for Unique Identification
CaHashAlgoIndicator1
CA Hash Algorithm to produce Hash-Result
Binary in digital signature scheme. Valid Values:
01h: SHA-1
CaPublicKeyAlgoIndicator1
Digital Signature Algorithm to be used with
Binary CA Public Key. Valid Values:
01h: RSA
CaPublicKeyChecksum1
20
Binary CA Public Key Checksum
0-4
8-27
28-31
CaPublicKeyExponent1
32,33
CaPublicKeyModulusLen
34
CA Public Key Exponent.
Value can be 3 (Len=1 Byte) or
216+1=65537=010001h (Len=3 Bytes).
(PICC-based
Binary We consider it as a 32-bit (4-Byte) BigLength may
Endian number for the Serial Interface and
be 1 or 3)
Crypto Storage. The PICC may consider it as
a 1-Byte or 3-byte number.
Variable
(max 256)
CaPublicKeyModulus1
Binary
CA Public Key (Modulus) Length stored as a
Big-Endian number. Aka NCA
Binary CA Public Key (Modulus) with Length=NCA
[1]: Fields specified by EMV that need to be stored in Terminal Memory (See EMV2000, Book 2, Section 11.2.2 Table 23)
ACK Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
24h
Status=OK
00
00
Status: OK (or see Status Code Protocol 1)
NACK from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘N’
24h
FAILED
Error Code
Unused
Error Code: See EMV Key Management Error Codes Table
99
NEO Interface Developers Guide
Second Data Frame from terminal to ViVOpay (If the reader sent an ACK, and Data remains to be
sent).
Byte 0-8
Byte 9
Byte 10-13
Byte 14
…
Byte 10+(p-1) Byte 10+p
Frame Tag
Frame Type
Data 0
Data 1
…
Data (p-1)
ViVOtech\0
‘D’
Data
Data
…
Data
CRC
(LSB)
Byte
10+(p+1)
CRC
(MSB)
Where p = DataLen2 > 0
If the second Data Frame is sent, then the data field in this frame contains the remaining CA
Public Key related Data.
On receiving valid data, the reader sends it to the Crypto Chip for secure storage. The Crypto
Chip checks the data and stores it in its memory. If the CA Public Key is stored successfully in
the Crypto Chip memory, the reader returns an ACK frame. If for any reason the CA Public Key is
not stored, the reader returns a NACK frame.
Final ACK Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
24h
Status=OK
00
00
Status: OK (or see Status Code Protocol 1)
Final Nack Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘N’
24h
FAILED
Error Code
Unused
Error Code: See EMV Key Management Error Codes Table
Delete CA Public Key (24-02) Protocol 1
Use this command to instruct the ViVOpay reader to delete a previously set CA Public Key from
within secure storage in the Crypto Chip. The Key is uniquely identified by the
pair.
When this command is received, ViVOpay waits for a Data Frame containing the RID and Key
Index. It then instructs the Crypto Chip to delete the specified CA Public Key. Depending on the
result of this operation, the reader returns an ACK or NACK Frame.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
100
NEO Interface Developers Guide
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
CRC
(LSB)
CRC
(MSB)
ViVOtech\0
‘C’
24h
02h
00
DataLen=6
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
ACK Frame from Reader (or NACK)
ACK Frame
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Command
Status
Data1
Data2
ViVOtech\0
‘A’
24h
Status=OK
00
00
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
NACK Frame
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
24h
FAILED
Error Code
Unused
Error Code: See EMV Key Management Error Codes Table
Data Frame from Terminal to Reader (If reader sent an ACK)
Byte 0-8
Byte 9
Byte 10
…
Byte 14
Byte 15
Byte 16
Byte 17
CRC
(LSB)
CRC
(MSB)
Frame Tag
Frame Type
Data 0
…
Data 4
Data 5
ViVOtech\0
‘D’
RID [0]
…
RID [4]
Key Index
RID:
Registered Identifier (5 Bytes)
Key Index:
Key Index (1 Byte)
The RID, together with the Key Index specifies a unique Key stored in ViVOpay Secure Memory.
Final ACK Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
24h
Status=OK
00
00
Status: OK (or see Status Code Protocol 1)
101
NEO Interface Developers Guide
Final NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘N’
24h
FAILED
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
Error Code
Unused
Error Code: See EMV Key Management Error Codes
Delete All CA Public Keys (24-03) Protocol 1
Use this command to instruct the ViVOpay reader to delete all previously set CA Public Keys
from within secure storage in the Crypto Chip. The Keys is deleted regardless of the pair.
When this command is received, the reader instructs the Crypto Chip to delete all CA Public
Keys. Depending on the result of this operation, the reader returns an ACK or NACK Frame.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
24h
Byte 10
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
03h
00
00
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
ACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Command
Status
Data1
Data2
ViVOtech\0
‘A’
24h
Status=OK
00
00
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
24h
FAILED
Error Code
Unused
Error Code: See EMV Key Management Error Codes Table
102
NEO Interface Developers Guide
Miscellaneous Protocol 1 Commands
Set RF Error Reporting (17-03)
This command allows the POS application to Enable/Disable RF Error Code Reporting for the Get
Full Track Data command. When RF Error Code Reporting is enabled, if there is any RF error
code, it is reported to the POS application through the ACK Frame for Get Full Track Data
command (see Get Full Track Data).
Command Frame from PC to the Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
17h
03h
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
Operation
Code
XX
Operation Code:
00h:
Disable RF Error Code Reporting
01h:
Enable RF Error Code Reporting
02h or others: No change
ACK Frame from the Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
17h
Status=OK
RF Error Code
Reporting
Status
XX
RF Error Code Reporting Status (only for ACK frame):
00h:
RF Error Code Reporting disabled
01h:
RF Error Code Reporting enabled
RTC (Real Time Clock) Set Up Commands
On ViVOpay readers that support EMV, the Real Time Clock must be configured with the correct
local date and time for the region in which it is used. The RTC commands allow a terminal to
check the date and time on a ViVOpay reader and change it if required.
103
NEO Interface Developers Guide
Table 30: Error Codes for RTC Management Commands
Error Code
Description
00h
No Error
01h
Unknown Error
02h
Invalid Data
03h
RTC not found or not responding
RTC Set Time (25-01)
Use this command to instruct the ViVOpay reader to set a specific time in the Real Time Clock.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
25h
01h
HH:
Hour
MM:
Minutes (2-digit, BCD, Range 00-59)
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
HH
MM
(2-digit, BCD, Range 00-23)
ACK Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
25h
Status=OK
00
00
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
25h
FAILED
Error Code
Unused
Error Code: See RTC Management Error Codes Table
104
NEO Interface Developers Guide
RTC Get Time (25-02)
Use this command to instruct the ViVOpay reader to return the current time from the Real Time
Clock.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Frame Tag
Frame
Type
Command
SubCommand
ViVOtech\0
‘C’
25h
Byte 10
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(LSB)
CRC
(MSB)
02h
00
00
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
ACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Command
Status
Data1
Data2
ViVOtech\0
‘A’
25h
Status=OK
HH
MM
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
HH:
Hour
(2-digit, BCD, Range 00-23)
MM:
Minutes (2-digit, BCD, Range 00-59)
NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
25h
FAILED
Error Code
Unused
Error Code: See RTC Management Error Codes Table
RTC Set Date (25-03)
Use this command to instruct the ViVOpay reader to set a specific Date in the Real Time Clock.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
CRC
(LSB)
CRC
(MSB)
ViVOtech\0
‘C’
25h
03h
00
DataLen=4
105
NEO Interface Developers Guide
DataLen
If the key data is being sent in a single Data Frame, then DataLen contains the length of the
one and only Data Frame to follow and DataLen2 is 0.
If the key data is being sent in two Data Frames, then DataLen contains the length of the
first Data Frame and DataLen2 contain the length of the second Data Frame. The length of
either Data Frame must not exceed 244 (0xF4) bytes.
DataLen > 0, DataLen2 >= 0
ACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘A’
25h
Status=OK
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
00
00
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(MSB)
CRC
(LSB)
Status: OK (or see Status Code Protocol 1)
NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
Data1
Data2
ViVOtech\0
‘N’
25h
FAILED
Error Code
Unused
Error Code: See RTC Management Error Codes Table
Data Frame from Terminal to Reader (If the reader sent an ACK)
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
CRC
(LSB)
CRC
(MSB)
Frame Tag
Frame Type
Data 0
Data 1
Data 2
Data 3
ViVOtech\0
‘D’
YY1
YY2
MM
DD
YY1:
Year (Higher Century Byte)
(2-Digit, BCD, Range 00-99)
YY2:
Year (Lower Byte)
(2-Digit, BCD, Range 00-99)
MM:
Month
(2-Digit, BCD, Range 01-12)
DD:
Date
(2-Digit, BCD, Range 01-31)
Final ACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘A’
25h
Status=OK
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
00
00
Status: OK (or see Status Code Protocol 1)
106
NEO Interface Developers Guide
Final NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘N’
25h
FAILED
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
Error Code
Unused
Error Code: See RTC Management Error Codes Table
RTC Get Date (25-04)
This command returns the reader’s the current Date from the Real Time Clock.
Command Frame from Terminal to Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
SubCommand
Data1
Data2
CRC
(LSB)
CRC
(MSB)
ViVOtech\0
‘C’
25h
04h
00
00
ACK Frame from Reader
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Frame Tag
Frame
Type
Command
Status
Data1
Data2
CRC
(MSB)
CRC
(LSB)
ViVOtech\0
‘A’
25h
Status=OK
Unused
DataLen
Status: OK (or see Status Code Protocol 1)
DataLen
Number of Data Bytes in the Data Frame to Follow. This does not include the Frame Tag,
Frame Type and Checksum bytes. This is either 0 (if Date is not being returned) or 4.
NACK Frame from Reader
Byte 0-8
Byte 9
Frame Tag
Frame
Type
Byte 10
Byte 11
Command
Status
ViVOtech\0
‘N’
25h
FAILED
Byte 12
Byte 13
Byte 14
Byte 15
Data1
Data2
CRC
(MSB)
CRC
(LSB)
Error Code
Unused
Error Code: See RTC Management Error Codes Table
Data Frame from ViVOpay to terminal (If ViVOpay sent an ACK)
Byte 0-8
Byte 9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte
15
Frame Tag
Frame Type
Data 0
Data 1
Data 2
Data n
CRC
CRC
107
NEO Interface Developers Guide
(MSB)
ViVOtech\0
‘D’
YY1
YY2
MM
(LSB)
DD
YY1:
Year (Higher Century Byte)
(2-Digit, BCD, Range 00-99)
YY2:
Year (Lower Byte)
(2-Digit, BCD, Range 00-99)
MM:
Month
(2-Digit, BCD, Range 01-12)
DD:
Date
(2-Digit, BCD, Range 01-31)
108
NEO Interface Developers Guide
9.0
Protocol Command Reference: Protocol 2
General Commands
Ping (18-01)
Use the Ping command to check if the ViVOpay reader is connected to the terminal. If the
ViVOpay reader is connected, it responds with a valid Response Frame, otherwise there is no
response.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
ViVOtech2\0
18h
01h
00h
00h
B3
CD
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
18h
00h
00h
00h
FA
83
Set Poll Mode (01-01)
The Set Poll Mode command allows the terminal to set the ViVOpay reader polling mode. The
ViVOpay reader functions in one of two polling modes: “Auto Poll” or “Poll on Demand”. The
value is saved in nonvolatile memory so you only need to send this command when you want to
change the mode.
The ViVOpay reader operates in Poll on Demand mode by default. Use the Poll on Demand mode
when you want the reader to poll for cards only when requested to by the terminal. In this mode
the ViVOpay reader remains in the idle state with the RF field off until it receives an Activate
Transaction command. Once the transaction is completed (or the reader times out while polling)
the reader returns to the idle state. This mode allows the terminal to send data to the reader
before the card data is read, as required for EMV transactions.
Note: KioskIII operates in AutoPoll mode by default.
In Auto Poll mode, the RF field is always active and the reader continuously polls for the
presence of a contactless card. There is no requirement for the terminal to initiate a
transaction. When a supported contactless MagStripe card is detected, the Track data can be
sent out on the MagStripe interface (if the ViVOpay unit supports it) or retrieved using the Get
109
NEO Interface Developers Guide
Transaction Result command. The Auto Poll mode is required in environments where the
ViVOpay reader is connected to a POS terminal via the terminal’s MagStripe interface.
Warning: EMEA UI is intended for use in the EMV or European environment, where the reader
is not allowed to poll continuously (e.g., operate in Auto Poll Mode). The reader does NOT
support Auto Poll while in EMEA UI mode and has the potential for aberrant or unstable
behavior. The reader is not certified to work properly in this situation.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
01h
01h
00h
01h
Poll Mode
Poll Mode
00h = Auto Poll
01h = Poll on Demand
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data Length
(MSB)
Data Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
01h
See Status Code
Table
00h
00h
The Poll Mode has been set to the requested mode only if the Response Frame contains an OK
Status Code. No data is returned in the response.
Control User Interface (01-02)
Use the Control User Interface command to instruct the reader to display a message, change
LED behavior, and beep. Each action is controlled independently by values in the data field of
the command. This allows you to instruct the reader to beep when it displays a message. To
display messages, the reader must be in Poll on Demand mode. Readers without a display can
use this command to control the buzzer and LEDs.
There are three cases depending on the LCD Message index number:
Indexes 00h to 07h correspond to messages that are automatically displayed by the
reader. In most cases, you do not use the terminal to trigger these messages.
Indexes 08h to 0Bh are messages that are triggered by the terminal.
Index FFh indicates that the command is only setting the buzzer and/or LEDs. No
message is displayed.
110
NEO Interface Developers Guide
After completion of a successful transaction, the "Thank You" message remains on the LCD until
the terminal sends a new Control User Interface command.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
01h
02h
00h
04h
See Data Table
The format and contents of the data field in the Command Frame are given in the following
table.
Table 31: Control User Interface Data
Data Item
LCD Message
Index
Length
Description
(bytes)
Messages 00-07 are normally controlled by the reader.
00: Idle Message (Welcome)
01: Present card (Please Present Card)
02: Time Out or Transaction cancel (No Card)
03: Transaction between reader and card is in the middle (Processing…)
04: Transaction Pass (Thank You)
05: Transaction Fail (Fail)
06: Amount (Amount $ 0.00 Tap Card)
07: Balance or Offline Available funds (Balance $ 0.00)
Messages 08-0B are controlled by the terminal
08: Insert or Swipe card (Use Chip & PIN)
09: Try Again(Tap Again)
0A: Tells the customer to present only one card (Present 1 card only)
0B: Tells the customer to wait for authentication/authorization (Wait)
FF indicates the command is setting the LED/Buzzer only.
00h:
01h:
02h:
03h:
04h:
05h:
06h:
07h:
08h:
LED Number
00h: LED 0 (Power LED)
01h: LED 1
02h: LED 2
03h: LED 3
FFh: All LEDs
Where the LEDs are numbered 0, 1, 2, 3 counting from the left.
Note: You can attempt to control the Power LED (LED 0) but other UI
behavior takes control, so attempting to manipulate the Power LED in
non-pass-through mode has no effect.
LED Status
00h: LED Off
01h: LED On
Beep Indicator
No beep
Single beep
Double beep
Three short beeps
Four short beeps
One long beep of 200 ms
One long beep of 400 ms
One long beep of 600 ms
One long beep of 800 ms
111
NEO Interface Developers Guide
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
01h
See Status
Code Table
00h
00h
If the Status Code does not return OK, the command failed.
Set/Get Source for RTC/LCD/Buzzer/LED (01-05)
Use this command to set up or get the source for RTC/LCD/Buzzer/LED on the ViVOpay reader.
The reader can be configured to use internal source or external source for RTC/Buzzer/LED
control. If necessary, the reader can be configured to use both internal and external source
except for the RTC.
Note: ViVOpay reader may not support all these options. Careful attention must be given to
these details.
When the data length is 02h, the command is used to set up the source configuration for
RTC/LCD/Buzzer/LED; when the data length is 0, the current source configuration shall be
returned in the Response Frame.
Command Frame (Set Source)
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
Byte1
ViVOtech2\0
01h
05h
00h
02h
Byte 15
Byte 16
Byte
17
CRC
(LSB)
CRC
(MSB)
Data
Byte2
Bitmap for
RTC/LCD/Buzzer/
LED
Response Frame (Set Source)
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
01h
See Status
Code Table
00h
00h
Command Frame (Get Source)
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
112
NEO Interface Developers Guide
Header Tag &
Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
ViVOtech2\0
01h
05h
00h
00h
CRC (LSB)
CRC (MSB)
Response Frame (Get Source)
Byte 0-9
Byte 10
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 11
Byte 12
Byte 13
Command
Status
Code
Data
Length
(MSB)
Data
Length
(LSB)
01h
See Status
Code Table
00h
02h
Byte 14
Byte 15
Data Byte1 Data Byte2
Byte 16
Byte 17
CRC
(MSB)
CRC
(LSB)
Bitmap for
RTC/LCD/Buzzer/LED
Data Byte1 Definition:
Bit7
Bit6
Bit5
Reserved
Reserved
Bit4
Bit3
RTC
Bit2
Bit1
LCD
Bit0
Buzzer
Bit1 Bit0
Description
00
Don’t use Buzzer
01
Use Buzzer from ViVOpay reader
10
Use Buzzer from external source
11
Use Buzzer from both reader and external source
Bit3 Bit2
Description
00
Don’t use LCD
01
Use LCD from ViVOpay reader
10
Use LCD from external source
11
Use LCD from both reader and external source
Bit5 Bit4
Description
00
Don’t use RTC
01
Use RTC from ViVOpay reader
10
Not allowed
11
Not allowed
Data Byte2 Definition:
Bit7
Bit6
Reserved
Bit5
Bit4
Reserved
Bit3
Bit2
Power LED
Bit1
Bit0
Transaction LED
113
NEO Interface Developers Guide
Bit1 Bit0
Description
00
Don’t use transaction LED
01
Use transaction LED from ViVOpay reader
10
Use transaction LED from external source
11
Use transaction LED from both reader and external source
Bit3 Bit2
Description
00
Don’t use power LED
01
Use power LED from ViVOpay reader
10
Use power LED from external source
11
Use power LED from both reader and external source
The Date/Time can be configured to use internal or external Date/Time, depending on the
reader configuration. When the reader is configured to use internal time, the RTC (Real Time
Clock) chip is needed on the ViVOpay reader and the date and time from the RTC chip is used.
When the reader is configured to use external time, the terminal needs to set up the RTC inside
the ARM processor of the ViVOpay reader (using the Set Configuration command).
If configured to use the internal buzzer, the ViVOpay reader’s buzzer is used to indicate the
transaction progress. If configured to use external buzzer, an external buzzer is used and the
ViVOpay reader’s buzzer is not used.
If configured to use internal transaction LEDs, the ViVOpay reader’s transaction LEDs are used to
indicate the transaction progress. If configured to use external transaction LEDs, the transaction
LEDs on the terminal are used, and the reader’s transaction LEDs are not used.
If configured to use internal power LED, the ViVOpay reader’s power LED are used to indicate
the reader’s power state. If configured to use external power LED, the power LED on the
terminal are used.
Note: You can attempt to control the Power LED, but other UI behavior takes control, so
attempting to manipulate the Power LED in non-pass-through mode has no effect. This means
“Don’t use power LED” and “Use power LED from external source” won’t turn off the Power
LED.
Set Configuration Defaults Command (04-09)
This command provides an external method for resetting parameters in non-volatile memory
(NVM) to their default values.
When this serial command is received an NVM Initialization function is called and the display is
changed to show the message.
Initializing ….
Please Wait
Once initialization is complete the display is returned to the ready state message.
114
NEO Interface Developers Guide
Command Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
SubCommand
04h
09h
Byte 12
Data
Length
(MSB)
00h
Byte 13
Data
Length
(LSB)
00h
Byte 12
Data
Length
(MSB)
00h
Byte 13
Data
Length
(LSB)
00h
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
87h
30h
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
AEh
16h
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
Status Code
04
00h
This command does not modify the following data objects:
Merchant Name and Location (tag 9F 4E)
Transaction Category code (tag 9F 53)
Terminal IFD Serial Number (tag FF F2)
Application Capability (tag FF F3)
Enable/Disable burst mode (tag FF F7)
LCD font size (tag FF F9)
LCD delay time (tag FF FA)
Poll mode (tag DF 89 1B)
Baud rate ( tag FE 02)
Boot up Message Enable (tag FE 03)
Serial Number (tag DF 89 1A)
UI Source Config (tag FE 05)
Analog parameters (tag FE FE)
115
NEO Interface Developers Guide
Set Configuration Defaults and Keep Encryption Key Command (04-0A)
This command provides an external method for resetting parameters in non-volatile memory
(NVM) to their default values.
When this serial command is received, the reader will erase eeporm and keep encryption keys.
When reader initialation is completed, the reader is rebooted.
Command Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
SubCommand
04h
0Ah
Byte 12
Data
Length
(MSB)
00h
Byte 13
Data
Length
(LSB)
00h
Byte 12
Data
Length
(MSB)
00h
Byte 13
Data
Length
(LSB)
00h
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
F7h
46h
Byte 14
Byte 15
CRC (MSB)
CRC (LSB)
AEh
16h
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
Status Code
04
00h
This command does not modify the following data objects:
RKI-KEK
Data encryption Key
Encrypt type
Encrypt Status
Serial Number (tag DF 89 1A)
UI Source Config (tag FE 05)
Analog parameters (tag FE FE)
Baud rate ( tag FE 02)
Set Configuration (04-00)
Use this command to set or change the values of the specified Tag Length Value (TLV) data
objects in the reader. It can be used to set parameters for Auto Poll as well as Poll on Demand
Mode.
116
NEO Interface Developers Guide
When the reader receives this command, it extracts the TLV encoded parameters from the data
portion of the command and saves them to the default TLV Group in non-volatile memory. If a
TLV data object is incorrectly formatted, the reader stops processing the object. A single
command may contain more than one TLV data object.
The Set Configuration command is the only mechanism for setting the values of global
configuration parameters.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
04h
00h
TLV Data
Objects
The TLV data objects that can be set using this command are defined in the Global
Configuration Tags table.
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
04h
See Status
Code Table
00h
00h
Get Configuration (03-02)
Use this command to return the values of the TLV global data objects and default group data
objects (TLV Group 0) in the reader from the reader’s nonvolatile memory.
Note: If your reader supports Configurable Application Identifier (AIDs), the following
applies:
1. The Get Configuration command may be used to retrieve global configuration tags and
Group 0 configuration tags.
2. The Get Configuration command produces the same result as a Get Configurable Group
command for group 0 (default). Get Configuration cannot return TLVs from other TLV
Groups.
3. The Get Configuration command cannot return PayPass Group tags (because PayPass does
not use group 0).
117
NEO Interface Developers Guide
When the reader receives this command, it returns the current values for all the parameters
that can be set using the Set Configuration command. Each parameter is returned as a TLV data
object. Floor Limits for different AIDs are preceded by the TLV of the specific AID associated
with that object.
Command Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
03h
02h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC (LSB)
ViVOtech2\0
03h
See Status
Code Table
TLV Data
Objects
Refer to the Global Configuration Tags and Group Configuration Tags for definitions of tags that
can be returned in this command.
Get Version Protocol 2 (29-00)
Get the ViVOpay Firmware Version Number from the ViVOpay reader. The reader returns a
Response Frame containing the ViVOpay firmware version information.
Command Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
29h
00h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
ViVOtech2\0
29h
See Status
Code Table
00h
String
length
Version string
118
NEO Interface Developers Guide
Get USB Boot Loader Version (29-04)
Get the version of the USB Boot Loader.
Command Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
29h
04h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
ViVOtech2\0
29h
See Status
Code Table
00h
String
length
Version string
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Data
CRC
(LSB)
CRC
(MSB)
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Get Contact EMV L2 Kernel Version (29-06)
This function can get contact EMV L2 kernel library major version.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Command
SubCommand
06h
Data
Length
(MSB)
00h
Data
Length
(LSB)
00h
29h
Byte 10
Byte 11
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
29h
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame
Response Frame Example: “EMV Common L2 V1.10”
119
NEO Interface Developers Guide
Note:VP4880C not supported.
Get Contact EMV L2 Kernel Version Detail (29-07)
This function can get contact EMV L2 kernel library major and minor version.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
29h
07h
00h
00h
Byte 10
Byte 11
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
29h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame
Response Frame Example: “EMV Common L2 V1.10.037”
Note:VP4880C not supported.
Get Contact EMV L2 Kernel Checksum (29-08)
This function can get contact EMV L2 kernel library checksum. The checksum uses SHA-1.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
SubCommand
29h
08h
Byte 12
Byte 13
Data
Length
(MSB)
00h
Data
Length
(LSB)
00h
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Data
CRC
(LSB)
CRC
(MSB)
120
NEO Interface Developers Guide
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
29h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
See Response
Frame
Response Frame Example: “8D 93 95 C5 88 F2 DE C9 AE 9D C8 BB 7B 98 41 A3 52 57 11 C6”
Note:VP4880C not supported.
Get Contact EMV L2 Terminal Configuration Checksum (29-09)
This function can get contact EMV L2 terminal data checksum. (Calculate tags 9F33, 9F35, 9F40,
DF11, DF26, DF27, DFEE1E). The checksum uses SHA-1.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Command
SubCommand
09h
Data
Length
(MSB)
00h
Data
Length
(LSB)
00h
29h
Byte 10
Byte 11
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Data
CRC
(LSB)
CRC
(MSB)
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
29h
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame
Response Frame Example: “B4 30 CE B9 FE 85 8B 00 B8 B2 7D 6F 56 EF 40 D4 2F 0E AF 8A”
Note:VP4880C not supported.
121
NEO Interface Developers Guide
Get UID of MCU (29-17)
This function can get the 16 byte UID of MCU.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
29h
17h
00h
00h
Byte 10
Byte 11
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
Command Status Code
ViVOtech2\
29h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame
Response Frame Data Example: “00 00 1D 00 61 26 1C 6B 75 31 45 4E 05 00 01 10”
Set Baud Rate (30-01)
This command instructs the reader to change its baud rate to the specified value. If the
Command Frame is valid and the ViVOpay reader supports the specified baud rate, it returns an
OK response and then switches to the specified baud rate. If the Command Frame is not valid,
or an invalid baud rate parameter is specified then the reader returns an error Response Frame.
The new baud rate is retained over power cycles.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
30h
01h
00h
01h
Baud Rate
Code
Baud Rate Code
Baud Rate
01h
9600 baud
122
NEO Interface Developers Guide
02h
19200 baud
03h
38400 baud
04h
57600 baud
05h
115200 baud
Important: All other values for Baud Rate Code are invalid and should not be accepted by
reader.
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data Length
(MSB)
Data Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
30h
See Status Code
Table
00h
00h
The reader switches baud rate only if the Response Frame contains an OK Status Code. No data
is returned in the response.
Set Temporary Baud Rate (30-02)
This command instructs the reader to change its baud rate to the specified value temporarily.
After power up, the baud rate will return to the previous value. If the Command Frame is
valid and the ViVOpay reader supports the specified baud rate, it returns an OK response and
then switches to the specified baud rate. If the Command Frame is not valid, or an invalid baud
rate parameter is specified then the reader returns an error Response Frame.
Note: If the new baud rate is set by sending 30-02 command, then after power up, the baud
rate will return to the previous value. If the new baud rate is set by sending 30-01 command,
then after power up, the baud rate will still be the new value.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
30h
02h
00h
01h
Baud Rate
Code
Baud Rate Code
Baud Rate
01h
9600 baud
02h
19200 baud
03h
38400 baud
04h
57600 baud
05h
115200 baud
123
NEO Interface Developers Guide
Important: All other values for Baud Rate Code are invalid and should not be accepted by
reader.
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data Length
(MSB)
Data Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
30h
See Status Code
Table
00h
00h
The reader switches baud rate only if the Response Frame contains an OK Status Code. No data
is returned in the response.
Set Baud Rate and Audio Level (30-03) – UniPay 1.5 & UniPay III
This command instructs the reader to change its baud rate to the specified value. If the
Command Frame is valid and the ViVOpay reader supports the specified baud rate, it returns an
OK response and then switches to the specified baud rate. If the Command Frame is not valid,
or an invalid baud rate parameter is specified then the reader returns an error Response Frame.
The new baud rate is retained over power cycles.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
30h
03h
00h
01h
Baud Rate
Code
Baud Rate Code
Baud Rate
Note
01h
9600 baud
Send data 0x55 …. 0x55 0x66 before response
02h
9600 baud
Do not send data 0x55 …. 0x55 0x66 before
response
03h
2400 baud and Level minimum
This value is used for android SDK only
04h
4800 baud and Level minimum
This value is used for android SDK only
05h
9600 baud and Level minimum
This value is used for android SDK only
33h
2400 baud and Level 1
This value is used for android SDK only
34h
4800 baud and Level 1
This value is used for android SDK only
35h
9600 baud and Level 1
This value is used for android SDK only
The baud rate code 03h, 04h, 05h, 33h, 34h and 35h only adjust baud rate and audio level when
reader sends response to Terminal, and sets baud rate and level to 9600 and L1 after
transmission is finished.
124
NEO Interface Developers Guide
Important: All other values for Baud Rate Code are invalid and should not be accepted by
reader.
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data Length
(MSB)
Data Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
30h
See Status Code
Table
00h
00h
The reader switches baud rate only if the Response Frame contains an OK Status Code. No data
is returned in the response.
Set Cable Type (32-02)
Kiosk III has two type of cable, so called "long cable" and "short cable". Kiosk III is calibrated for
long cable and short cable, and saves both set of parameters for antenna checking. User can set
the cable type accordingly.
If the cable type is not set, reader will consider the cable type as long cable by default.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Byte 16
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
32h
02h
00h
01h
Cable Type
Cable Type
Value
Long cable (default)
Short cable
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data Length
(MSB)
Data Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
32h
See Status Code
Table
00h
00h
Get Cable Type (32-01)
This command is used to get the cable type which is set. If the cable type is not set, reader will
consider the cable type as long cab le by default.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
32h
01h
00h
00h
125
NEO Interface Developers Guide
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Byte 16
Command
Status
Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
32h
00h
00h
01h
Cable Type
Set Serial Number (12-02)
This command instructs the ViVOpay to store the 15-digit serial number in its non-volatile
memory. If a serial number has already been set in the reader then this command fails with a
Command Not Allowed error status. If the Command Frame is not valid, or the length is not 15
bytes then ViVOpay returns an error Response Frame.
Note: The reader serial number can only be set once. For Kiosk III, the coding of serial
number must follow ID Tech Product Serial Number Requirement. If the input serial number
does not satisfied by ID Tech Product Serial Number Requirement, reader will reject this
command and respond error. For detailed information, refer to "WI 7.5.1-8 ID TECH Product
Serial Number Requirements"
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 14+n
Byte 15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
12h
02h
00h
0Fh
15 digit Serial
Number
Note: For the 15 digit Serial Number in Kiosk III, only the first 10 bytes are valid.
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
12h
See Status
Code Table
00h
00h
Get Serial Number (12-01)
Note: This command can only be used after the reader has received a Set Serial Number
command.
This command instructs the ViVOpay to return the 15-digit serial number stored in its nonvolatile memory. If a serial number has not been set in the reader then this command fails with
126
NEO Interface Developers Guide
a Command Not Allowed error status. If the Command Frame is not valid then ViVOpay returns
an error Response Frame.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
ViVOtech2\0
12h
01h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 … Byte
14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
ViVOtech2\0
12h
See Status
Code Table
00h
0Fh
15-digit Serial
Number
Note: For the 15 digit Serial Number in Kiosk III, only the first 10 bytes are valid.
Bootup Notification Command (14-01)
The ViVOpay firmware has the ability to spontaneously transmit its version information over the
serial line during bootup. In this way the reader can notify the POS that it is ready to
communicate when the bootup process has finished.
This feature can be toggled on or off using of the Bootup Notification command.
Command Frame
Byte 0-9
Byte 10
Header Tag &
Protocol
ViVOtech2/0
Command
14h
Byte 11
Byte 12
Byte 13
Byte 14Byte 18
Byte 19
Byte 20
Sub
Command
01h
Length
MSB
00h
Length
LSB
01h
Data
1 Bytes
See below
CRC
(LSB)
Varies
CRC
(MSB)
Varies
This command contains a single 1-byte argument.
Byte
Description
00h
Bootup Notification is disabled.
01h
Bootup Notification is enabled.
If Bootup Notification is enabled, the firmware transmits its Firmware Version string one time at
the end of bootup.
127
NEO Interface Developers Guide
For example, if a Vendi reader were enabled, it would begin to transmit its string, in this case,
“Vendi V1.00” each time it was restarted.
Response Frame
Byte 0-9
Header Tag
& Protocol
ViVOtech2/0
Byte 10
Byte 11
Command
Status
14h
Varies
Byte 12
Byte 13
Length
MSB
00h
Length
LSB
00h
Byte 14Byte 14+n-1
Data
1 Bytes
NA
Byte 14+n
Byte 14+n+1
CRC
(LSB)
Varies
CRC
(MSB)
Varies
Configurable AID and Group Commands
Set Configurable AID (04-02)
This command creates or selects an AID for configuration or deletion. There are eight TLVs that
can be included in this command, some of which are mandatory.
TLV Group Number – This number refers to the group that has been created containing all of the
characteristics desired for this AID. Setting and configuring the TLV Group Number is explained
below. The TLV Group Number must be configured first. If an AID is communicated referring to a
non-existing group, that AID is rejected.
Registered Application Provider Identifier (RID) – The parameter is optional. If it is provided, this
number is used to reference the CA Public Key payment system. If it is not provided the first
five bytes of the AID are used.
For System AIDs:
Must always include the TLV Group Number TLV as the FIRST TLV in the message.
Must always include the AID TLV as the SECOND TLV in the message.
Must never include the Application Flow TLV in the message
Must never include the RID TLV in the message
The FOUR remaining TLVs are all optional.
There are System AIDs in the reader. These can be disabled but cannot be deleted.
For User AIDs:
Must always include the TLV Group Number TLV as the FIRST TLV in the message.
Must always include the AID TLV as the SECOND TLV in the message.
128
NEO Interface Developers Guide
Must always include the Application Flow TLV in the message
The FIVE remaining TLVs are all optional.
The DISABLE AID tag is ignored if included in a USER AID.
There are eight User AIDs in the system. These can be added (set) or deleted at the user’s
discretion.
No User AID can have the same exact AID as a System AID.
In addition to the above requirements:
All AIDs must reference a TLV Group (in the TLV Group Number TLV) that already exists
Any AID with a Partial Select TLV must also include the Max AID Length TLV
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
04h
02h
TLV Data
Objects
The TLV Data Objects that can be set using this command are defined in the AID Configuration
Tags.
To set Configurable AID tags, the Application Identifier (9F06) and Group Number (FFE4) are
mandatory tags.
Note: At present, the preferred means of disabling a System AID is NOT to include the FFE6
TLV. Instead, just issue a Delete AID command to for particular AID. This deletes a User AID
OR disables a System AID.
If a Set Configurable AID command is sent without an FFE6 TLV, the reader enables the AID if it
is not already enabled.
Finally, a Set AID command used for a User AID can include a FFE6 Disable AID Tag, but it is
ignored. This tag is only used to set System AID.
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
04h
See Status
Code Table
00h
00h
129
NEO Interface Developers Guide
Set Configurable Group (04-03)
This command creates or modifies a TLV Group. You configure a specific TLV Group by passing
the TLVs with the desired functionality and a unique TLV Group Number to the reader. The TLVs
that can be associated with a TLV Group are listed below. A TLV Group Number and at least one
other TLV is required. The reader uses TLVs in the default TLV Group 0 for any TLVs not defined
in the user-defined TLV Group.
For M/Chip 3.0, Group 0 is not used. If you are configuring a group for M/Chip PayPass, then
you should refer to the PayPass Group Tags. Otherwise, refer to the Group Configuration
Tags.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
04h
03h
TLV Data
Objects
If you are changing TLVs in Group 0 (the Default Group) the reader retains and uses the old
values of any TLVs not included in the Set Configurable Group command. If you are changing any
other Group, the reader discards existing TLVs not in the current Set Configurable Group
command.
The implication of the statement above is that if you are configuring a group for PayPass, you
must configure all of the necessary tags, as they will not default to Group 0 tags.
To set the TDOL TLV, simply pass on the desired values in the TLV. To disable the default TDOL,
send a TDOL TLV with Length set to zero and no Value field included. This instructs the reader
to delete any existing TDOL list for this group.
The TLV Data Objects that can be set using this command are given in the Configurable Group
Tags Table (for non- PayPass applications) or the PayPass Group Tags.
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
ViVOtech2\0
04h
See Status
Code Table
00h
00h
130
NEO Interface Developers Guide
Get Configurable AID (03-04)
This command returns the configurable (User) AID parameters. The user MUST send an AID TLV
in the command, as the first TLV in the command. The reader then returns all tags associated
with that User AID in the response.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
03h
04h
TLV Data
Objects
The command MUST include the TLV below. The command should NOT include any other TLV.
9F06
Identifies the application as
described in ISO/IEC 7816-5.
Application Identifier
(AID) – terminal
MANDATORY
5 – 16
Note: This is the ONLY TLV in
this command.
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC (LSB)
ViVOtech2\0
03h
See Status
Code Table
TLV Data
Objects
The optional Data Objects encoded as TLV that is returned in the data section of the Response
Frame are the same as those listed in the AID Configuration Tags. The reader returns ALL TLV
associated with this AID in its response.
If an AID is requested and the reader fails to find it in its database, the reader returns the AID
TLV itself and NO additional arguments. This indicates that the command was correct with the
proper argument, but there was no match in the reader’s database. The reader does NOT
indicate an error situation.
If the user requests a System AID that is currently disabled, the reader returns the AID TLVs, but
appends the FFE6 TLV, showing that the AID is currently disabled.
Get Configurable Group (03-06)
Use this command to return all TLVs associated the specified Configurable Group. A configurable
Group Tag must be included as the ONLY TLV in this command. The response should contain all
of the Tags associated with this configurable Group.
131
NEO Interface Developers Guide
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
03h
06h
TLV Data
Objects
The following TLV MUST be encoded in the command, it is the ONLY tag included in the
command.
FFE4[1]
Group
Number
The group that contains the properties for this AID
MAND
n2
Note: This must be the ONLY TLV in Data Field.
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the reader
has received these values and saved them in memory, it should dispose of the tags (and not keep them associated with
these two values).
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC (LSB)
ViVOtech2\0
03h
See Status
Code Table
TLV Data
Objects
The Data Objects encoded as TLV that is returned in the data section of the Response Frame are
given in the Group TLV Objects Table.
If the user requests a Group that is illegal, an error response is sent back.
If the user requests a valid Group number but the Group does NOT exist, then the reader returns
the regular response but only includes the Group Number TLV (no other TLV is included). This
signifies that the user has requested a valid number but no Group has been assigned to it.
Note: For a PayPass group, if a TLV data item is not present in the Group then it will not be
present in the data returned by this command. However, this does not mean that there is no
value for this particular TLV in order to perform a transaction. It is possible that the PayPass
Kernel may have a hard-coded value for this TLV which will be used in a transaction if the TLV is
not present in the Group or in Activate Transaction data. The data items for which the PayPass
kernel has hard-coded default values are given in in the section on PayPass Group Configuration
TLVs with Hard-Coded Values in Kernel.
Delete Configurable AID (04-04)
This command deletes a configurable AID. It is MANDATORY to include the AID TLV of the AID to
be removed. No other TLVs should be included.
132
NEO Interface Developers Guide
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (LSB)
CRC (MSB)
ViVOtech2\0
04h
04h
TLV Data
Objects
The Data Object encoded as TLV that can be set using this command is below.
9F06
Identifies the application as
described in ISO/IEC 7816-5.
Application Identifier
(AID) – terminal
MANDATORY
5 – 16
Note: This is the ONLY TLV in
this command.
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
03h
See Status
Code Table
00h
00h
The user may NOT delete a System AID. If this command is used on a System AID, the reader
disables that System AID but does not delete it. That System AID can be restored at any point by
using the Set AID command on it. Until that point it does not function (but it continues to reside
in the reader’s database).
When deleting an AID, the reader returns an OK response if the operation was successful. If it
failed to find a matching AID, it returns an invalid parameter error response. If there was a
problem with the command, the error response indicates malformed data.
Delete Configurable Group (04-05)
Use this command to delete a configurable Group. This means that this Group can no longer be
used to load the parameters for a transaction.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
04h
05h
TLV Data
Objects
133
NEO Interface Developers Guide
It is MANDATORY to include the Group Number TLV of the Group the user wishes to delete. No
other TLVs should be included.
[1]
FFE4
The group that contains the properties for AID
Group
Number
MAND
n2
Note: This must be the ONLY TLV in Data Field.
[1]
These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the reader
has received these values and saved them in memory, the Terminal should dispose of the tags.
Response Frame
Byte 0-9
Header Tag &
Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
CRC (MSB)
CRC (LSB)
04h
See Status
Code Table
00h
00h
Do NOT delete the Default Group 0. The reader does not allow this command, and does NOT
disable Group 0; instead it returns an error.
If the Group is not a valid Group Number this returns an error.
Finally, if the reader has ANY AID that references this Group, it does NOT delete the Group. It
returns an error. That is, ONLY Groups that are NOT referenced by existing AID can be deleted.
In this situation, the user must first delete or modify these AIDs, and then delete the Group.
Get All AIDs (03-05)
Use this command to return all AIDs in the reader. This command may be used to verify
configured AIDs or to determine what System AIDs are in the reader.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
ViVOtech2\0
03h
05h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
ViVOtech2\0
03h
See Status
Code Table
TLV Data
Objects
134
NEO Interface Developers Guide
The only Data Objects that should be returned from the GAA command are AID Tags. The reader
sends out ALL TLV associated with each AID.
The reader sends one or more frames with all the AID TLVs in it. Each AID grouping begins with
the Group Number TLV that this AID uses. The user can use this fact to parse between the AID
groups passed back to the POS.
Get All Groups (03-07)
This command returns all Groups in the reader. This command may be used to verify all
configured Groups in the reader.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14
Byte 15
Header Tag &
Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
CRC (LSB)
CRC (MSB)
ViVOtech2\0
03h
07h
00h
00h
Response Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte 14+n
Byte 15+n
Header Tag
& Protocol
Version
Command
Status Code
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC (MSB)
CRC
(LSB)
ViVOtech2\0
03h
See Status
Code Table
TLV Data
Objects
The only Data Objects that should be returned from the GAG command are Group Tags. These
are the same as those itemized in the Group Configuration Tags table.
The reader sends one or more frames with all the Group TLVs in it. Each Group begins with the
Group Number TLV for the Group in question. The user can use this fact to parse between the
Groups passed back to the POS.
Transaction Related Commands: Contact
This section describes contact EMV commands applicable to UniPay 1.5, UniPay III, and
applicable VP4880-series products that support contact EMV. For contactless transactions, see
the chapter following this one.
135
NEO Interface Developers Guide
Setting transaction parameters
1. Send Contact Set Application Data Command (60-03);
2. Send Contact Set Terminal Data Command (60-06);
3. Send Contact Set CA Public Key Command (60-08);
4. Send Contact Set Certification Revocation List Command (60-0E)
136
NEO Interface Developers Guide
Contact EMV L2 Transaction Flow
Reade
Host
offline
Start contact transaction command (60-10)
Offline
Example:72 46 05 01……
If command is OK, first response 0x63
Display or Select Manu Command (61-01)
If need select menu, response command (61-01)
Start contact transaction response
If MSR operation , response MSR data, and transaction is
finished
Contact Authentication transaction command (60-11)
Example:72 46 05 02……
If command is OK, first response 0x63
Display or PIN Entry command (61-01, 61-02)
If need PIN entry response (61-02)
Contact Authentication response
Example :06 00 03 00
Online
Contact Apply host command (60-12)
Example :72 46 05 03……
Online
If command is ok, first response 0x63
Contact Apply host response
Example : 06 00 02 00
1. Send Start Transaction Command.
2. Send Authenticate Transaction Command.
3. If received online request from terminal, send Apply Host Response command.
4. When a transaction is completed, interface will output a TLV format data list, and
transaction result (approve, or decline, or…) will display on the LCD.
5. If you want to review the transaction result, you can send Retrieve Transaction Result
Command. It will output the TLV format data; refer to the Option Data list.
137
NEO Interface Developers Guide
Retrieve EMV Level Two Version Number command can be sent at any time.
Cancel Transaction command can be sent at any time if you want to terminate a transaction.
Contact Retrieve Application Data (60-01)
This command returns the User AID parameters. The host must send AID in the command. The reader then
returns all tags associated with that User AID in response.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
60h
01h
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects: <5~16 bytes AID>
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Response Frame Data Format: …
Where:
is the number of tags.
Note:
If AID List / Application Data does not exist, status code is 0x60.
Contact Remove Application Data (60-02)
This command deletes a configurable AID. It is mandatory to include the AID TLV of the AID to
be removed.
138
NEO Interface Developers Guide
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
02h
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects: <5~16 bytes AID>
If length is 00 then remove all Application Data.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Note:
If AID List / Application Data not exist, status code is 0x60.
If format was error, status code is 0x05.
Contact Set Application Data (60-03)
This command creates a new AID configuration. Maximum is 16 sets
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
60h
03h
Data Objects
Data Objects: <5~16 bytes AID>
….
Where:
139
NEO Interface Developers Guide
is the Number of .
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
See Response
Frame Data
Format
Note:
If a format was error, status code is 0x05.
If AID List has full (MAX is 16), status code is 0x61.
Application Data List Example
Data
ID
Tag
Value name
9F01
10
5F57
5F2A
9F09
5F36
9F1B
DF25
DF28
DFEE15
DF13
11
DF14
TAC-Denial
12
DF15
TAC-Online
13
DF18
14
15
DF17
DF19
Target Percentage For Random Transaction
Selection
Threshold Value for Biased Random Selection
Maximum Target Percentage For Random
Transaction Selection
56 49 53 41
30 30
00
08 40
00 96
02
00 00 3A 98
9F 37 04
9F 08 02
01
00 00 00 00
00
00 00 00 00
00
00 00 00 00
00
00
00 00 27 10
00
Acquirer Identifier
Account Type
Transaction Currency
Terminal application version number
Transaction Currency Exponent
Terminal Floor Limit
Default DDOL
Default TDOL
ASI
TAC-Default
Length
(Byte)
Var
Var
Data
Contact Retrieve Terminal Data (60-04)
Use this command to return all TLV associated the terminal data.
140
NEO Interface Developers Guide
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
04h
00h
00h
Byte 10
Byte 11
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Response Frame Data Format: …
Note:
is the number of tags.
If Terminal Data does not exist, status code is 0x60.
Contact Remove Terminal Data (60-05)
Use this command to delete terminal data.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
05h
00h
00h
Response Frame
141
NEO Interface Developers Guide
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
See Response
Frame Data
Format
If Terminal Data does not exist, status code is 0x60.
Contact Set Terminal Data (60-06)
This command creates a new terminal data. The terminal data is mandatory and seldom change
data.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
06h
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects: ….
Where:
: the Number of tags.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Note:
If a format was error, status code is 0x05.
142
NEO Interface Developers Guide
If flash was error, status code is 0x62.
Terminal Data List Example
Data
ID
Tag
Value name
Length
(Byte)
5F36
9F1A
9F35
9F33
9F40
Transaction Currency Exponent
Terminal County Code
Terminal Type
Terminal Capability
Additional Terminal Capability
9F1E
IFD Serial Number
9F15
9F16
Merchant Category Code
Merchant Identifier
15
9F1C
Terminal Identification
10
9F4E
Merchant Name and Location
11
12
DF26
DF10
Terminal Supports CRL
Language
13
14
15
16
17
18
19
DF11
DF27
DFEE15
DFEE16
DFEE17
DFEE18
DFEE1E
Support Transaction Log
support Exception File
Terminal Support ASI
Terminal Encrypt Mode
Terminal Entry Mode for ICC
Terminal Encrypt Mode for MSR
Contact Terminal Configuration
20
21
DFEE1F
DFEE1B
Issuer Script Limit
ARC Define
22
23
24
DFEE20
DFEE21
DFEE22
ICC Power on detect waiting time
ICC L1 waiting time
Driver waiting time. byte 1 -> Menu. byte 2 -> Get
PIn. byte 3 -> MSR
<=64
Var. up to 128
Data
02
08 40
21
60 28 C8
F0 00 F0 A0
01
54 65 72 6D
69 6E 61 6C
12 34
30 30 30 30
30 30 30 30
30 30 30 30
30 30 30
38 37 36 35
34 33 32 31
31 30 37 32
31 20 57 61
6C 6B 65 72
20 53 74 2E
20 43 79 70
72 65 73 73
2C 20 43 41
20 2C 55 53
41 2E
01
65 6E 66 72
65 73 7A 68
00
00
01
00
07
80
D0 DC 20 D0
C4 1E 16 00
80
30 30 30 31
35 31 30 30
3C
0A
32 3C 3C
Contact Common EMV L2 comes with approved 4 configurations of certification. Parameters
marked as Major cannot, in general, be changed, although certain flag bits (see tables below)
can be changed.
143
NEO Interface Developers Guide
Identification
Tag
Major
9F33
parameters 9F35
9F40
1C
60 F8 C8
22
F0 00 F0 A0
01
01
01
00
F0 DC 3C
F0 C2 9E 96
00
DF11
DF26
DF27
DFEE1E
Tag
9F33
Terminal configuration
2C
3C
60 28 C8
60 D8 C8
21
25
F0 00 F0 A0 60 00 F0 50
01
01
00
01
01
01
00
00
D0 DC 20
F0 DC 24
D0 C4 1E
F0 C2 0E 16
16 00
00
Description
4C
60 08 C8
25
60 00 F0 50
01
01
01
00
D0 9C 20
F0 C2 0E 16
00
Length
Terminal Capabilities
Byte 1
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
Manual key entry
Magnetic stripe
IC with contacts
Major
RFU
RFU
RFU
RFU
RFU
Byte 2
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
Major
Plaintext PIN for IC
verification
Enciphered PIN for
online verification
Signature(paper)
Enciphered PIN for
offline verification
No CVM Required
RFU
RFU
RFU
Major
Major
Major
Major
Byte 3
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
SDA
DDA
Card capture
RFU
CDA
RFU
RFU
Major
Major
Major
144
NEO Interface Developers Guide
9F35
Environment
Attended
Online only
Offline with online capability
Offline only
Unattended
Online only
Offline with online capability
Offline only
9F40
RFU
Terminal Type
Financial
Institution
Merchant
Cardholder
11
12
13
21
22
23
----
14
15
16
24
25
26
34
35
36
Change
Major
Major
Additional Terminal Capabilities
Byte 1
b1
b2
b3
b4
b5
b6
b7
b8
Meaning
Change
Cash
Goods
Services
Cashback
Inquiry
Transfer
Payment
Administrative
Major
Major
Major
Major
b7
b6
b5
b4
b3
b2
b1
Meaning
Cash Deposit
RFU
RFU
RFU
RFU
RFU
RFU
RFU
Change
b8
b7
b6
b5
b4
b3
b2
b1
Change
Meaning
Numeric keys
Alphabetic and
special characters
keys
Command keys
Function Keys
RFU
RFU
RFU
RFU
b7
b6
b5
b4
b3
b2
b1
Meaning
Print, attendant
Print, cardholder
Display, attendant
Display, cardholder
RFU
RFU
Code table 10
Byte 2
b8
Byte 3
Byte 4
b8
Change
Major
145
NEO Interface Developers Guide
Code table 9
Major
b7
b6
b5
b4
b3
b2
b1
Meaning
Code table
Code table
Code table
Code table
Code table
Code table
Code table
Code table
Change
Major
Major
Major
Major
Major
Major
Major
Major
Byte 5
b8
DF11
Transaction Log Support (Default: Enable) (Major)
DF26
0 Disable
1 Enable
Revocation List Support (Default: Enable) (Major)
DF27
0 Disable
1 Enable
Exception File Support (Default: Disable) (Major)
DFEE1E
0 Disable
1 Enable
Contact Terminal Configuration (Default: F0 DC 3C F0 C2 9E 94 00)
Byte 1
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Key Pad support
LCD support
PIN Pad support
Print Support
RFU
RFU
RFU
RFU
Change
b6
b5
b4
b3
b2
b1
Meaning
PSE support
Cardholder confirmation
Preferred display order
Multi language
EMV language selection method
Default DDOL
RFU
RFU
Change
Major
Major
b6
b5
b4
b3
b2
b1
Meaning
Change
RFU
Major
Byte 2
b8
b7
Major
Byte 3
b8
b7
(Revocation of Issuer Public Key
Certificate (DF26))
Manual action when CA PK loading
fails
Major
CA PK verified with check sum
Major
Bypass PIN Entry
Major
146
NEO Interface Developers Guide
Subsequent bypass PIN Entry
Major
Get data for pin try counter
Major
RFU
RFU
Byte 4
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
Amount before CVM processing
Major
Floor limit checking
Major
Random transaction selection
Velocity checking
Major
Major
Major
(Transaction Log (DF11))
RFU
(Exception File (DF27))
RFU
RFU
RFU
Major
Byte 5
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
Terminal action code support
Major
Terminal action code can be change
Major
Terminal action code can be deleted
Major
or disable
Default Action code processing
before 1st GAC
Major
Default Action code processing after
1st GAC
Major
TAC/IAC default process when
unable to go online (Skipped)
Major
TAC/IAC default process when
unable to go online (Normal)
Major
RFU
Byte 6
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
Change
Forced Online support
Major
Forced acceptance support
Major
Advices support
Major
Issuer referrals support
Major
Batch data capture
Major
Online data capture
Major
Default TDOL
Major
RFU
Byte 7
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
amount and pin entered on the
same keypad
ICC/Magstripe reader combined
Change
147
NEO Interface Developers Guide
Magstripe read first
Support account type selection
On fly script processing
Internal date management
Reversal Mode
(1)Unable go online
(2) ARC Error
0: (3) Online Approved but
reader not approved.
1: (3) Online Approved but card
response AAC.
RFU
Byte 8
b8
b7
b6
b5
b4
b3
b2
b1
Meaning
RFU
Change
Contact Retrieve AID List (60-07)
Use this command to return all AIDs list in the reader. This command may be used to verify
configured AIDs in the reader.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
07h
00h
00h
Byte 10
Byte 11
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Response Frame Data Format: … .
148
NEO Interface Developers Guide
Where:
is Number of AID Blocks.
format is .
Note:
If AID List does not exist, status code is 0x60.
Contact Retrieve CA Public Key (60-08)
This command can get assign CA Public key form reader.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
60h
08h
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects: <5 bytes RID> <1 byte Index>.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Byte 14 …
Byte 14+n-1
Data
See Response
Frame Data
Format
Response Frame Data Format: <5 bytes RID> <1 byte Index> <1 byte Hash Algorithm> <1 byte
Encryption Algorithm> <20 bytes HashValue> <4 bytes Public Key Exponent> <2 bytes Modulus
Length>
Where:
: The only algorithm supported is SHA-1.The value is set to 0x01.
: The encryption algorithm in which this key is used. Currently support
only one type: RSA. The value is set to 0x01.
149
NEO Interface Developers Guide
: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus &
Exponent
: Actually, the real length of the exponent is either one byte or 3 bytes. It
can have two values: 3, or 65537
: Indicated the length of the next field.
: This is the modulus field of the public key. Its length is specified in the field above.
Note:
If CA Key RID does not exist, status code is 0x60.
If CA Key Index does not exist, status code is 0x60.
Contact Remove CA Public Key (60-09)
This command allows the host to delete a specific key.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
09h
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects: <5 bytes RID> <1 byte Index>.
If length is 00 then remove all CA Public Key.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Note:
If CA Key RID does not exist, status code is 0x60.
150
NEO Interface Developers Guide
If CA Key Index does not exist, status code is 0x60.
Contact Set CA Public Key (60-0A)
This command adds a new key to reader. Maximum is 16 sets.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
0Ah
Data Objects
Data Objects: <5 bytes RID> <1 byte Index> <1 byte Hash Algorithm> <1 byte Encryption
Algorithm> <20 bytes HashValue> <4 bytes Public Key Exponent> <2 bytes Modulus Length>
Where:
: The only algorithm supported is SHA-1.The value is set to 0x01
: The encryption algorithm in which this key is used. Currently support
only one type: RSA. The value is set to 0x01.
: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus &
Exponent
: Actually, the real length of the exponent is either one byte or 3 bytes. It
can have two values: 3, or 65537
: Indicated the length of the next field.
: This is the modulus field of the public key. Its length is specified in the field above.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Note:
151
NEO Interface Developers Guide
If key slots are full, status code is 0x61.
If CA Key Hash Data is an error, status code is 0x17.
Contact Retrieve CA Public Key List (60-0B)
This command can get all RID and key index for CA public key.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Command
SubCommand
0Bh
Data
Length
(MSB)
00h
Data
Length
(LSB)
00h
60h
Byte 10
Byte 11
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Data
CRC
(LSB)
CRC
(MSB)
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
60h
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
Data Objects
Data Objects : <5Bytes RID1> <1 byte RID1 Index><5Bytes RID2> <1 byte RID2 Index>….. <5Bytes
RIDN> <1 byte RIDN Index>.
Note:
If any CA Key does not exist, status code is 0x60.
Contact Retrieve Certification Revocation List (60-0C)
This command retrieves a sequence of consecutive records from the EMV revocation list.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Command
SubCommand
60h
0Ch
Byte 12
Byte 13
Data
Length
(MSB)
00h
Data
Length
(LSB)
00h
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Data
CRC
(LSB)
CRC
(MSB)
152
NEO Interface Developers Guide
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Command Status Code
60h
See Status
Code
Table
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Data Objects : ….
format is <5Bytes RID><1Byte CA public key Index><3Bytes Certificate Serial Number>.
Note:
If have no CRL exist, status code is 0x60.
Contact Remove Certification Revocation List (60-0D)
This command deletes a specific entry from the EMV revocation list. Unlike the commands
described previously, this command deletes the specific entry that matches the RID, the key
index, and the certificate serial number.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
60h
0Dh
Data Objects
Data Objects : ….
format is <5Bytes RID><1Byte CA public key Index><3Bytes Certificate Serial Number>.
If Length is 00 then remove all Certification Revocation List.
Response Frame
153
NEO Interface Developers Guide
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Contact Set Certification Revocation List (60-0E)
This command adds a new entry to the revocation list. The new entry is added at the end of the
revocation list.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
0Eh
Data Objects
Data Objects:
…<2 Bytes MAC Length>.
format is <5Bytes RID><1Byte CA public key Index><3Bytes Certificate Serial Number>
<2Byte Length of CRL> (Option):
Fix is 0x00 0x00.
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Note:
154
NEO Interface Developers Guide
Supported max CRL number is 90. If exceed max number, status code is 0x61.
Contact Remove Transaction Amount Log (60-0F)
This command can delete transaction amount log in reader. (When EMV transaction is offline
approved, or online, transaction amount log saves to reader.)
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
0Fh
00h
00h
Byte 10
Byte 11
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Contact Start Transaction (60-10)
Start a new contact EMV L2 transaction (ICC + MSR) or start MSR only transaction.
This function will go through below processes at the EMV card inserted at the reader:
Card power on
Card activation
Application Selection
Initiate Application Processing
Get Process Options
Read Records
155
NEO Interface Developers Guide
Note: VP4880C not supported.
Command Frame
Byte 0-9
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Header Tag
& Protocol
Version
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
ViVOtech2\0
60h
10h
Data Objects
Data Objects - .
Where:
(1byte). 0x01 indicate it support FallBack to MSR, 0x00 indicate it not support
FallBack.
(2 bytes, unit is Second). Timeout for Card is seated.
(2 bytes, unit is Second). Waiting time till “Authenticate Transaction” command.
format is … . Refer to Transaction Data.
Transaction Data List (start command parameters)
Data
ID
Tag
9F02
9C
5F2A
9A
9F21
9F03
DFEE1A
DFEE27
DFEF1F
Value name
Amount, Authorized(Numeric)
Transaction Type
Transaction Currency Code
Transaction Date
Transaction Time
Amount, Other(Numeric)
Output Tag List (Options)
MSR Control. (Options)
MSR only transaction need set this tag.
1 MSR Only Enable
0 MSR Only Disable
Auto Authenticate (Options)
If auto authenticate set to 1, the reader will do
command 60-11 automatic.
Byte 1: Auto Authenticate enable
1: enable, 0 disable
Byte 2: Force Online 1: enable, 0 disable
Length
(Byte)
If command parse is successful and ICC transaction starts, response contains first command and
status code is 0x63.
If command parse fails, response is other status code and end transaction.
156
NEO Interface Developers Guide
Note:
After transaction start, terminal only can receive “Start Transaction”, “Authenticate
Transaction”, “Cancel Transaction,” and “Retrieve Transaction Data” commands. If any other
command is sent, it gets a response of 0x0C.
No Terminal data response 0x60.
First Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
See Status
Code
Table
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
00h
00h
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Because reader doesn’t support LCD and key pad, so need external host to display messages and
allow key-in.
When transaction needs display or key-in, it sends command 61-01 to host.
If host response is needed, host will response command 61-01 and result to reader.
On Start Transaction success, send second response and result to host.
Second Response Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\
Byte 10
Byte 11
Command Status Code
60h
00h
Byte 12
Byte 13
Data
Length
(MSB)
Data
Length
(LSB)
Byte 14 …
Byte 14+n-1
Data
Byte 14+n
Byte 15+n
CRC
(MSB)
CRC
(LSB)
Data Objects
Contact EMV L2 Data Objects:
157
NEO Interface Developers Guide
Data Item
Attribution
Length (bytes)
Description
Bit 4/3/0: Captured Data Type
0 0 0 = Contact Card
0 0 1 = Contactless Card / EMV
1 0 1 = Contactless Card / MSD
0 1 x = MSR Card
Bit 2/1: Encryption Mode
0 0 = TDES
0 1 = AES
1 x = Reserved
Bit 5: Reserved for Attribution Byte Extension.
Bit 6/7: Encryption Status
0 0 = MSR/MSD off, EMV off
0 1 = MSR/MSD off, EMV on
1 0 = MSR/MSD on, EMV off
1 1 = MSR/MSD on, EMV on
TLV KSN
(FFEE12)
Contact Response
Code
(DFEE25)
TLV Data
Variable
If encrypt disable, this tag is not present.
Variable
See Contact Response Code
Variable
TLV POS Entry
Mode (9F39)
Variable
TLV (DF30)
(ViVOpay
proprietary)
Variable
Output default Start Transaction Output TLV data list. If set tag
DFEE1A, The TLV data will be follow list.
90h = Magnetic Stripe Reader Swipe
91h = Contactless MSD
05h = Contact EMV
07h = Contactless EMV
80h = Contact Fallback to Magnetic Stripe
Track Data Source.
This tag is embedded in the ViVOpay Group tag. It specifies
whether the track data came from a swipe or contactless
transaction.
0Ch for swiped MagStripe
00h for a contactless card.
01h for a contact card.
This tag is included in ViVOpay proprietary (FFEE01)
Ex: FFEE0104DF30010C
158
NEO Interface Developers Guide
Data Item
Length (bytes)
TLV Encrypt
Information
(DFEE26)
Variable
Description
Encrypt Information.
Length: 1 byte
Values: Same as “Attribution” byte definition
Bit 4/3/0: Captured Data Type
0 0 0 = Contact Card
0 0 1 = Contactless Card / EMV
1 0 1 = Contactless Card / MSD
0 1 x = MSR Card
Bit 2/1: Encryption Mode
0 0 = TDES
0 1 = AES
1 x = Reserved
Bit 5: Reserved for Attribution Byte Extension.
Bit 6/7: Encryption Status
0 0 = MSR/MSD off, EMV off
0 1 = MSR/MSD off, EMV on
1 0 = MSR/MSD on, EMV off
1 1 = MSR/MSD on, EMV on
MSR Data Objects:
Data Item
Attribution
Length
(bytes)
Description
Bit 4/3/0: Captured Data Type
0 0 0 = Contact Card
0 0 1 = Contactless Card / EMV
1 0 1 = Contactless Card / MSD
0 1 x = MSR Card
Bit 2/1: Encryption Mode
0 0 = TDES
0 1 = AES
1 x = Reserved
Bit 5: Reserved for Attribution Byte Extension.
Bit 6/7: Encryption Status
0 0 = MSR/MSD off, EMV off
0 1 = MSR/MSD off, EMV on
1 0 = MSR/MSD on, EMV off
1 1 = MSR/MSD on, EMV on
Contact Response
Code
(DFEE25)
TLV Data
MSR Tag
(DFEE23)
Variable
See Contact Response Code. (00h 11h).
Variable
Variable
TLV data list
Data follow Enhanced Encrypted MSR FIELD DATA. Refer NEO
spec to Appendix A.11: Enhanced Encrypted MSR Data Output
Format
159
NEO Interface Developers Guide
Length
(bytes)
Data Item
Description
TLV POS Entry
Mode (9F39)
Variable
TLV (DF30)
(ViVOpay
proprietary)
Variable
90h = Magnetic Stripe Reader Swipe
91h = Contactless MSD
05h = Contact EMV
07h = Contactless EMV
80h = Contact Fallback to Magnetic Stripe
Track Data Source.
This tag is embedded in the ViVOpay Group tag. It specifies whether
the track data came from a swipe or RFID transaction.
0Ch for swiped MagStripe
00h for a contactless card.
01h for a contact card.
Variable
This tag include in ViVOpay proprietary (FFEE01)
Ex: FFEE0104DF30010C
Encrypt Information.
Length: 1 byte
Values: Same as “Attribution” byte definition
TLV Encrypt
Information
(DFEE26)
Bit 4/3/0: Captured Data Type
0 0 0 = Contact Card
0 0 1 = Contactless Card / EMV
1 0 1 = Contactless Card / MSD
0 1 x = MSR Card
Bit 2/1: Encryption Mode
0 0 = TDES
0 1 = AES
1 x = Reserved
Bit 5: Reserved for Attribution Byte Extension.
Bit 6/7: Encryption Status
0 0 = MSR/MSD off, EMV off
0 1 = MSR/MSD off, EMV on
1 0 = MSR/MSD on, EMV off
1 1 = MSR/MSD on, EMV on
1.
2.
For MSR is 00 11.
MSR data in tag DFEE23, format is following “Enhanced Encrypted MSR Data Output Format”.
Default Start Transaction Output TLV Data List
Data
ID
Tag
57
5A
5F34
5F20
5F24
9F20
Value name
Track2 Equivalent Data
PAN
PAN Sequence Number
Cardholder Name
Application Expire Date
Track2 Discretionary Data
Length
(Byte)
<=19
<=10
2~26
Var.
160
NEO Interface Developers Guide
10
11
12
13
14
5F25
5F2D
50
84/4F
DFEE23
9F39
DF30
DFEE26
Application Effective Date
Language Preference
Application Label
DF Name or ADF Name
MSR Data
POS Entry Mode
Track Data Source.
Encrypt Information
2~8
1~16
5~16
Contact Authenticate Transaction (60-11)
This function must after Start Transaction function.
The function will continue to perform the EMV transaction flow:
(1) Offline data auth
(2) Processing restrictions
(3) Cardholder Verification
(4) Terminal risk management
(5) TAA/CAA/1st Gen AC
If response code is 00 04, then need go online process and send Apply Host Response command.
Note: VP4880C does not support this.
Command Frame
Byte 0-9
Header Tag
& Protocol
Version
ViVOtech2\0
Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 …
Byte 14+n-1
Byte
14+n
Byte
15+n
Command
SubCommand
Data
Length
(MSB)
Data
Length
(LSB)
Data
CRC
(LSB)
CRC
(MSB)
60h
11h
Data Objects
Data Objects :