Users Manual

ID TECH. 10721 Walker St., Cypress, CA 
90630
Email: support@idtechproducts.com  URL: 
http://www.idtechproducts.com 
Confidential  
NEO Interface Developers Guide 
80139403-001 Rev.116 
8 Sep 2017 
NEO Interface Developers Guide    
    ii 
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. 
NEO Interface Developers Guide    
    iii 
Table of Contents 
1.0
INTRODUCTION .......................................................................................................................... 1
HISTORICAL BACKGROUND .................................................................................................................. 1
MasterCard Contactless (PayPass) Capability ........................................................................................ 1
Protocol 1 Deprecated ............................................................................................................................ 1
O
RGANIZATION OF THIS 
G
UIDE
 ............................................................................................................................ 1
N
OTATIONAL 
C
ONVENTIONS
 ............................................................................................................................... 2
R
EADER 
I
NTERFACE 
C
APABILITIES
 ......................................................................................................................... 2
2.0
QUICK REFERENCE ...................................................................................................................... 4
C
OMMAND 
T
ABLES
 ........................................................................................................................................... 4
Commands Sorted by Command Name .................................................................................................. 4
Commands Sorted by Command Number ............................................................................................... 7
Pass-Through Command Table ............................................................................................................. 11
EMV Key Manager Command Tables.................................................................................................... 12
S
TATUS 
C
ODES
 ............................................................................................................................................... 13
Status Codes for Protocol 1 ................................................................................................................... 13
Status Codes for Protocol 2 ................................................................................................................... 13
E
RROR 
C
ODES
 ................................................................................................................................................ 15
RF
S
TATE 
C
ODES
 ............................................................................................................................................ 18
3.0
SERIAL COMMUNICATION INTERFACES ....................................................................................... 20
RS232
S
ERIAL 
I
NTERFACE
 ................................................................................................................................ 20
Port Settings .......................................................................................................................................... 20
Basic Communication ............................................................................................................................ 20
Timeouts ............................................................................................................................................... 20
USB
HID
I
NTERFACE
 ....................................................................................................................................... 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
P
ROTOCOL 
1
(D
EPRECATED
) ............................................................................................................................. 26
Command Frames ................................................................................................................................. 26
ACK Frames ........................................................................................................................................... 26
NACK Frames ........................................................................................................................................ 27
Special Frames ...................................................................................................................................... 27
P
ROTOCOL 
2.................................................................................................................................................. 27
Command Frames ................................................................................................................................. 27
Response Frames .................................................................................................................................. 28
P
ASS
-T
HROUGH 
M
ODE 
(P
ROTOCOL 
2) ............................................................................................................... 28
NEO Interface Developers Guide    
    iv 
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
B
URST 
M
ODE
 ................................................................................................................................................ 33
ViVOpay Burst Mode Frames ................................................................................................................ 34
CRC
C
ALCULATION
 ......................................................................................................................................... 42
5.0
TAG AND DATA SET CONFIGURATION ......................................................................................... 45
C
ONFIGURABLE 
AID
S AND 
G
ROUPS
.................................................................................................................... 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
C
ARD 
A
PPLICATION 
P
ROPRIETARY 
T
AG 
L
IST 
(FF69) .............................................................................................. 51
C
ONFIGURATION 
T
AG 
T
ABLES
 ........................................................................................................................... 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
C
OMBINED 
S
ELECTION
 ..................................................................................................................................... 85
Selection Features (FFE3) ...................................................................................................................... 85
P
ARTIAL 
S
ELECTION 
(FFE1) .............................................................................................................................. 86
AID
P
ARTICIPATION IN 
S
ELECTION 
P
ROCESSES 
(FFE8) ........................................................................................... 86
T
ERMINAL 
AID
L
IST 
(DFEF2C) ......................................................................................................................... 87
7.0
CARD APPLICATION SPECIFIC BEHAVIOR ..................................................................................... 88
M
ASTER
C
ARD 
P
AY
P
ASS 
M/C
HIP
 ....................................................................................................................... 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
T
RANSACTION 
R
ELATED 
C
OMMANDS
 .................................................................................................................. 91
Flush Track Data (17-02) ....................................................................................................................... 91
Get Full Track Data (17-CD) .................................................................................................................. 91
Get ViVOpay Firmware Version (29-00) ................................................................................................ 94
K
EY 
M
ANAGER 
C
OMMANDS 
P
ROTOCOL 
1 ........................................................................................................... 95
Set CA Public Key (24-01) Protocol 1 ..................................................................................................... 96
Delete CA Public Key (24-02) Protocol 1 .............................................................................................. 100
NEO Interface Developers Guide    
    v 
Delete All CA Public Keys (24-03) Protocol 1 ....................................................................................... 102
M
ISCELLANEOUS 
P
ROTOCOL 
1
C
OMMANDS
 ....................................................................................................... 103
Set RF Error Reporting (17-03) ............................................................................................................ 103
RTC
(R
EAL 
T
IME 
C
LOCK
)
S
ET 
U
P 
C
OMMANDS
 ................................................................................................... 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
G
ENERAL 
C
OMMANDS
 ................................................................................................................................... 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
C
ONFIGURABLE 
AID
 AND 
G
ROUP 
C
OMMANDS
 ................................................................................................... 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
T
RANSACTION 
R
ELATED 
C
OMMANDS
:
C
ONTACT
 ................................................................................................. 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    
    vi 
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
T
RANSACTION 
R
ELATED 
C
OMMANDS
:
C
ONTACTLESS
 ........................................................................................... 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
M
ASTER
C
ARD 
M/C
HIP 
3.0
T
RANSACTION 
C
OMMANDS
 ...................................................................................... 209
Stop Transaction (05-02) ..................................................................................................................... 209
Reset Torn Transaction Log (84-0E) .................................................................................................... 210
Clean Torn Transaction Log (84-0F) Command ................................................................................... 211
V
ISA 
VCPS
T
RANSACTION 
C
OMMANDS
 ............................................................................................................ 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
K
EY 
M
ANAGEMENT 
C
OMMANDS
 ..................................................................................................................... 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
M
ODULE 
V
ERSIONING
 ................................................................................................................................... 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
I
NTERNATIONAL 
L
ANGUAGE 
S
UPPORT
............................................................................................................... 230
Other Language .................................................................................................................................. 231
Bitmap Conversion Completed by POS ................................................................................................ 231
ILM Header Format ............................................................................................................................. 231
Language Version Information ........................................................................................................... 232
NEO Interface Developers Guide    
    vii 
EMV
C
ERTIFICATE 
R
EVOCATION 
L
IST 
C
OMMANDS
 .............................................................................................. 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
E
XCEPTION 
L
OG 
L
IST 
C
OMMANDS
 ........................................................................................................... 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
G
ENERIC 
P
ASS
-
THROUGH 
C
OMMANDS
 ............................................................................................................. 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
P
ASS
-
THROUGH 
UI
C
ONTROL
 .......................................................................................................................... 250
LED Control (0A-02) ............................................................................................................................. 250
Buzzer Control (0B-xx) ......................................................................................................................... 251
P
ASS
-
THROUGH 
D
ATA 
E
XCHANGE
 .................................................................................................................... 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
H
IGH 
L
EVEL 
P
ASS
-T
HROUGH 
C
OMMANDS FOR 
M
IFARE 
C
ARDS
 .............................................................................. 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
H
IGH 
L
EVEL 
P
ASS
-T
HROUGH 
C
OMMANDS FOR 
NFC
C
ARDS
 .................................................................................. 277
NFC Commands (2C-40) ...................................................................................................................... 277
S
ECURE 
P
ASS
-T
HROUGH 
F
UNCTION
 ................................................................................................................. 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
NEO Interface Developers Guide    
    viii 
Get MSR Secure Parameters (C7-39) .................................................................................................. 295
K
EY 
I
NJECTION AND 
R
ELATED 
C
OMMANDS
 ........................................................................................................ 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
D
ESCRIPTION
 ............................................................................................................................................... 305
B
OOT 
P
ROCEDURE
 ........................................................................................................................................ 305
C
OMMUNICATION 
P
ROTOCOL
 ......................................................................................................................... 306
F
IRMWARE 
D
OWNLOADER 
F
ILE 
N
AME 
F
ORMAT
 ................................................................................................. 306
F
IRMWARE 
D
OWNLOADER 
D
ATA 
F
ORMAT
 ........................................................................................................ 307
D
OWNLOAD 
F
IRMWARE 
S
TEPS
 ........................................................................................................................ 308
F
IRMWARE 
D
OWNLOADER 
C
OMMANDS
 ............................................................................................................ 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
A
PPLE
P
AY 
VAS
F
UNCTIONALITY
 ...................................................................................................................... 325
Set Merchant Record (04-11) .............................................................................................................. 331
Get Merchant Record (03-11) ............................................................................................................. 332
P
EER 
T
O 
P
EER 
F
UNCTIONALITY
 ........................................................................................................................ 333
NEO Interface Developers Guide    
    ix 
Peer To Peer Send A Message (C7-9A) ................................................................................................ 333
Peer To Peer Receive A Message (C7-9B) ............................................................................................ 333
A
SYNCHRONOUS 
M
EDIA 
T
RACKING 
(O
NLY FOR 
K
IOSK 
III) ..................................................................................... 334
D
ETERMINE 
C
ARD 
P
RESENCE 
(O
NLY FOR 
K
IOSK 
III) ............................................................................................. 335
Detect Card Presence Command (02-05) ............................................................................................ 335
MSR
E
QUIVALENT 
D
ATA 
F
UNCTION
 ................................................................................................................. 336
Tag DFEF4B ......................................................................................................................................... 336
Tag DFEF4C ......................................................................................................................................... 338
Tag DFEF4D ........................................................................................................................................ 338
16.0
SAMPLE SCENARIOS AND FRAME FLOW ............................................................................... 344
C
ONTACTLESS 
M
AG
S
TRIPE 
T
RANSACTIONS IN 
A
UTO 
P
OLL 
M
ODE
 .......................................................................... 344
C
ONTACTLESS 
M
AG
S
TRIPE 
T
RANSACTIONS IN 
P
OLL ON 
D
EMAND 
M
ODE
 ................................................................. 346
EMV
(M/C
HIP
)
T
RANSACTION IN 
P
OLL ON 
D
EMAND 
M
ODE
 ................................................................................ 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
E
NCRYPTED
/M
ASKED 
TAG
N
OTE
 .................................................................................................................... 406
T
RACK 
1
(T
AG 
56)
&
2
(T
AG 
9F6B)
M
ASK 
C
ONFIGURATION 
N
OTE
 ....................................................................... 408
O
THER 
T
AG 
V
ALUE 
M
ASK 
C
ONFIGURATION 
N
OTE
 .............................................................................................. 408
D
ETAILED 
–
TLV
E
NCRYPTED 
R
ESPONSE 
F
ORMAT
 ............................................................................................... 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
NEO Interface Developers Guide    
    x 
NEO Interface Developers Guide    
    xi 
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 
NEO Interface Developers Guide    
    xii 
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 

NEO Interface Developers Guide    
    1 
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    
    2 
 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    
    3 
 Contactless and MSR 
 Contactless and LCD Display 
 Contactless, MSR, and LCD Display 
 Contactless, MSR and Line Display 
The following table categorizes ViVOpay readers by available interfaces. 
Table 1: Hardware Cross Reference 
Reader  Contactless
MSR  LCD Display  Line Display 
Kiosk III 
● 
Vendi 
● 
● 
● 
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    
    4 
2.0 Quick Reference 
This section contains tables for looking up commands, status codes and error 
codes.   
Command Tables 
The tables in this section organize the commands by their names and by their command number. 
Commands Sorted by Command Name 
Table 2: Commands Sorted by Command Name 
Command  C’less 
or 
C’less 
+ MSR
LCD
Line
US
EMV
Protocol
CMD
SUB 
CMD
Notes
Activate Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
02 
01 
Activate Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
02 
40 
Add Entry to EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84 
09 
Add Entry to EMV Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84 
04 
Antenna Control
√ 
√ 
√ 
√ 
√ 
2 
28 
01 
Boot up Notification
√ 
√ 
√ 
√ 
√ 
2 
14 
01 
Buzzer Control Long
√ 
√ 
√ 
√ 
√ 
2 
0B 
02 
Buzzer Control Short
√ 
√ 
√ 
√ 
√ 
2 
0B 
01 
Buzzer On/Off Command
√ 
n/a 
√ 
2 
F0 
FE 
a 
Cancel Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
05 
01 
Check DUKPT Key
√ 
√ 
√ 
√ 
√ 
2 
81 
04 
Check DUKPT Keys 
√ 
√ 
√ 
√ 
√ 
2 
81 
02 
Clean Torn Transaction Log
√ 
√ 
√ 
√ 
√ 
2 
84 
0F 
Clear White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
52 
Configure Buttons Command
√ 
√ 
√ 
2 
F0 
F4 
a 
Contact Apply Host Response 
√ 
√ 
√ 
2 
60 
12 
Contact Authenticate Transaction 
√ 
√ 
√ 
2 
60 
11 
Contact Get MSR Data Control (Reader send 
to Host)    √  √  √  2  61  03   
Contact Get PIN Control (Reader send to 
Host)     √  √  √  2  61  02   
Contact Get Reader Status     √  √  √  2  60  14   
Contact LCD Display Control (Reader send to 
Host)
    √  √  √  2  61  01   
Contact Remove Application Data 
√ 
√ 
√ 
2 
60 
02 
b  
Contact Remove CA Public Key 
√ 
√ 
√ 
2 
60 
09 
b  
Contact Remove Certification Revocation List
√ 
√ 
√ 
2 
60 
0D 
b  
Contact Remove Terminal Data 
√ 
√ 
√ 
2 
60 
05 
b  
Contact Retrieve AID List 
√ 
√ 
√ 
2 
60 
07 
b  
Contact Retrieve Application Data 
√ 
√ 
√ 
2 
60 
01 
b  
Contact Retrieve CA Public Key 
√ 
√ 
√ 
2 
60 
0A 
b  
Contact Retrieve CA Public Key List 
√ 
√ 
√ 
2 
60 
0B 
b   
Contact Retrieve Certification Revocation List
√ 
√ 
√ 
2 
60 
0C 
b 

NEO Interface Developers Guide    
    5 
Command  C’less 
or 
C’less 
+ MSR
LCD
Line
US
EMV
Protocol
CMD
SUB 
CMD
Notes
Contact Retrieve Terminal Data 
√ 
√ 
√ 
2 
60 
04 
b 
Contact Retrieve Transaction Result 
√ 
√ 
√ 
2 
60 
13 
b 
Contact Set Application Data 
√ 
√ 
√ 
2 
60 
03 
b 
Contact Set CA Public Key 
√ 
√ 
√ 
2 
60 
0A 
b 
Contact Set Certification Revocation List 
√ 
√ 
√ 
2 
60 
0E 
b 
Contact Set Terminal Data 
√ 
√ 
√ 
2 
60 
06 
b 
Contact Start Transaction 
√ 
√ 
√ 
2 
60 
10 
b 
Contact Get ICS Identification 
√ 
√ 
√ 
2 
60 
15 
b 
Contact Remove Transaction Amount Log 
√ 
√ 
√ 
2 
60 
0F 
b 
Contact Set ICS Identification 
√ 
√ 
√ 
2 
60 
16 
b 
Control User Interface
√ 
√ 
√ 
2 
01 
02 
Delete All CA Public Keys Protocol 1√  √  √    √  1  24  03   
Delete All CA Public Keys Protocol 2√  √  √    √  2  D0  05   
Delete All Entries for Single Index in EMV 
Revocation List
√  √  √    √  2  84  05   
Delete All Entries from EMV Exception List
√  √  √    √  2  84  0B   
Delete All Entries from EMV Revocation List
√  √  √    √  2  84  06   
Delete CA Public Key Protocol 1√  √  √    √  1  24  02   
Delete CA Public Key Protocol 2√  √  √    √  2  D0  04   
Delete Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
04 
04 
c 
Delete Configurable Group (DCG)
√ 
√ 
√ 
√ 
√ 
2 
04 
05 
c 
Delete Entry from EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84 
0A 
Disable Blue LED Sequence
√ 
√ 
√ 
√ 
2 
F0 
F6 
Enable Blue LED Sequence Command
√ 
√ 
√ 
2 
F0 
F7 
a 
Enhanced Pass-Through Command√  √  √  √  √  2  2C  0B   
Enhanced Poll for Token
√ 
√ 
√ 
√ 
√ 
2 
2C 
0C 
Exchange APDU Data
√ 
2C 
13 
Exchange Contactless Data 
√ 
√ 
√ 
√ 
√ 
2 
2C 
03 
Flush Track Data
√ 
√ 
√ 
√ 
√ 
1 
17 
02 
Get Data encryption Key Encryption Type
√ 
√ 
√ 
√ 
√ 
2 
C7 
33 
Get All AIDs
√ 
√ 
√ 
√ 
√ 
2 
03 
05 
c 
Get All CA Public RIDs Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
06 
Get All Groups (GAG)
√ 
√ 
√ 
√ 
√ 
2 
03 
07 
c 
Get ALL Reader Variables  
√ 
√ 
√ 
√ 
√ 
2 
09 
00 
Get ATR
√ 
2C 
12 
Get Button Configuration Command
√ 
√ 
√ 
2 
F0 
F5 
c 
Get Cable Type
√ 
√ 
√ 
√ 
√ 
2 
32 
01 
Get CA Public Key Hash Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
02 
Get CA Public Key Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
01 
Get Cash Transaction Reader Risk Parameters
√ 
√ 
√ 
√ 
√ 
2 
03 
0C 
Get Cashback Transaction Reader Risk 
Parameters√  √  √  √  √  2  03  0D   
Get Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
03 
04 
c 
Get Configurable Group
√ 
√ 
√ 
√ 
√ 
2 
03 
06 
c 
Get Configuration
√ 
√ 
√ 
√ 
√ 
2 
03 
02 
Get Contact EMV L2 Kernel Checksum 
√ 
√ 
√ 
√ 
√ 
2 
29 
08 
Get Contact EMV L2 Kernel Version
√ 
√ 
√ 
√ 
√ 
2 
29 
06 
Get Contact EMV L2 Kernel Version Detail
√ 
√ 
√ 
√ 
√ 
2 
29 
07 

NEO Interface Developers Guide    
    6 
Command  C’less 
or 
C’less 
+ MSR
LCD
Line
US
EMV
Protocol
CMD
SUB 
CMD
Notes
Get Contact EMV L2 Terminal Configuration 
Checksum√  √  √  √  √  2  29  09   
Get DRL Reader Risk Parameters
√ 
√ 
√ 
√ 
√ 
2 
03 
0E 
Get EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84 
0C 
Get EMV Exception Log Status
√ 
√ 
√ 
√ 
√ 
2 
84 
08 
Get EMV Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84 
07 
Get EMV Revocation Log Status
√ 
√ 
√ 
√ 
√ 
2 
84 
03 
Get Firmware Full Version
√ 
√ 
√ 
√ 
√ 
1 
29 
00 
Get Full Track Data
√ 
√ 
√ 
√ 
√ 
1 
17 
CD 
Get Hardware Information
√ 
√ 
√ 
√ 
√ 
2 
09 
14 
Get Data Encryption Enable Flag
√ 
√ 
√ 
√ 
2 
C7 
37 
Get Data Encryption Key Variant Type
√ 
√ 
√ 
√ 
2 
C7 
30 
Get
DUKPT Key Serial Number (KSN)
√ 
√ 
√ 
√ 
√ 
2 
81 
0A 
Get Merchant Record 
√ 
√ 
√ 
√ 
√ 
2 
03 
11 
Get Module Version Information
√ 
√ 
√ 
√ 
√ 
2 
09 
20 
Get Main Firmware Version  √  √  √  √  √  2  09  03  a 
Get MSR Secure Parameters  √          2  C7  39  a 
Get PCD and PICC Parameters
√ 
√ 
√ 
√ 
√ 
2 
2C 
05 
Get Processor Type √  √  √  √  √  2  09  02   
Get Product Type √  √  √  √  √  2  09  01  a 
Get Remote Key Injection Timeout √  √  √  √  √  2  C7  2E   
Get Serial Number
√ 
√ 
√ 
2 
12 
01 
Get Transaction Result
√ 
√ 
√ 
√ 
√ 
2 
03 
00 
Get Transaction Result
√ 
√ 
√ 
√ 
√ 
2 
03 
40 
Get UID of MCU
√ 
√ 
√ 
√ 
√ 
2 
29 
17 
Get USB Boot Loader Version
√ 
√ 
√ 
√ 
√ 
2 
29 
04 
e 
Get White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
51 
High Level Halt Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
09 
LCD Display Clear Command
√ 
n/a 
√ 
2 
F0 
F9 
a 
LCD Display Line 1 Message Command
√ 
n/a 
√ 
2 
F0 
FC 
a 
LCD Display Line 2 Message Command
√ 
n/a 
√ 
2 
F0 
FD 
a 
LED Control
√ 
√ 
√ 
√ 
√ 
2 
0A 
02 
List CA Public Key IDs or RID Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
07 
Mifare Authenticate Block
√ 
√ 
√ 
√ 
√ 
2 
2C 
06 
Mifare ePurse Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0A 
Mifare Read Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
07 
Mifare Write Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
08 
NFC Commands
√ 
√ 
√ 
√ 
√ 
2 
2C 
40 
Pass-through Mode Start/Stop
√ 
√ 
√ 
√ 
√ 
2 
2C 
01 
PCD Single Command Exchange
√ 
√ 
√ 
√ 
√ 
2 
2C 
04 
Peer To Peer Send A Message
√ 
√ 
√ 
√ 
√ 
2 
C7 
9A 
Peer To Peer Receive A Message
√ 
√ 
√ 
√ 
√ 
2 
C7 
9B 
Reset Torn Transaction Log√  √  √  √  √  2  84  0E   
RTC Get Date
√  √  √    √  1  25  04  d 
RTC Get Time√  √  √    √  1  25  02  d 
RTC Set Date√  √  √    √  1  25  03  d 
RTC Set Time√  √  √    √  1  25  01  d 
Set Data encryption Key Encryption Type
√ 
√ 
√ 
√ 
√ 
2 
C7 
32 

NEO Interface Developers Guide    
    7 
Command  C’less 
or 
C’less 
+ MSR
LCD
Line
US
EMV
Protocol
CMD
SUB 
CMD
Notes
Set Baud Rate
√ 
√ 
√ 
√ 
√ 
2 
30 
01 
Set CA Public Key Protocol 1√  √  √    √  1  24  01   
Set CA Public key Protocol 2√  √  √    √  2  D0  03   
Set Cash Transaction Reader Risk Parameters
√  √  √  √  √  2  04  0C   
Set Cashback Transaction Reader Risk 
Parameters
√  √  √  √  √  2  04  0D   
Set Cable Type
√ 
√ 
√ 
√ 
√ 
2 
32 
02 
Set Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
04 
02 
c 
Set Configurable Group
√ 
√ 
√ 
√ 
√ 
2 
04 
03 
c 
Set Configuration
√ 
√ 
√ 
√ 
√ 
2 
04 
00 
Set Configuration Defaults and Keep 
Encryption Key √  √  √  √  √  2  04  0A   
Set DRL Reader Risk Parameters
√ 
√ 
√ 
√ 
√ 
2 
04 
0E 
Set Data Encryption Enable Flag
√ 
√ 
√ 
√ 
√ 
2 
C7 
36 
Set Data Encryption Key Variant Type 
√ 
√ 
√ 
√ 
√ 
2 
C7 
2F 
Set Merchant Record 
√ 
√ 
√ 
√ 
√ 
2 
04 
11 
Set MSR Secure Parameters√          2
C7
38
a 
Set Parameter Defaults
2 
04 
09 
Set Poll Mode
√ 
√ 
√ 
√ 
√ 
2 
01 
01 
Set Remote Key Injection Timeout
√ 
√ 
√ 
√ 
√ 
2 
C7 
2D 
Set RF Error Reporting
√ 
√ 
√ 
√ 
√ 
1 
17 
03 
Set Serial Number
√ 
√ 
√ 
2 
12 
02 
Set/Get Source for RTC/LCD/Buzzer/LED
√ 
√ 
√ 
√ 
√ 
2 
01 
05 
Set Temporary Baud Rate
√ 
√ 
√ 
√ 
√ 
2 
30 
02 
Set White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
50 
Stop Transaction
√ 
√ 
√ 
√ 
√ 
2 
05 
02 
Turn Off Yellow LED Command
√ 
n/a 
√ 
2 
F0 
FA 
a 
Turn On Yellow LED Command
√ 
n/a 
√ 
2 
F0 
FB 
a 
Update Balance Command
√ 
√ 
√ 
√ 
2 
03 
03 
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
D
SUB 
CMD
CommandC’less or C’less + 
MSR
LCD
Line
US
EMV
Protocol
Notes
01 
01 
Set Poll Mode
√ 
√ 
√ 
√ 
√ 
2 
01 
02 
Control User Interface
√ 
√ 
√ 
2 

NEO Interface Developers Guide    
    8 
CM
D
SUB 
CMD
CommandC’less or C’less + 
MSR
LCD
Line
US
EMV
Protocol
Notes
01
05  Set/Get Source for 
RTC/LCD/Buzzer/LED
√ 
√ 
√ 
√ 
√ 
2 
02 
01 
Activate Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
02 
40 
Activate Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
03 
00 
Get Transaction Result
√ 
√ 
√ 
√ 
√ 
2 
03 
40 
Get Transaction Result
√ 
√ 
√ 
√ 
√ 
2 
03 
02 
Get Configuration
√ 
√ 
√ 
√ 
√ 
2 
03 
03 
Update Balance Command
√ 
√ 
√ 
√ 
2 
03 
04 
Get Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
c 
03 
05 
Get All AIDs
√ 
√ 
√ 
√ 
√ 
2 
c 
03 
06 
Get Configurable Group
√ 
√ 
√ 
√ 
√ 
2 
c 
03 
07 
Get All Groups
√ 
√ 
√ 
√ 
√ 
2 
c 
03
0C  Get Cash Transaction Reader Risk 
Parameters
√ 
√ 
√ 
√ 
√ 
2 
03
0D  Get Cashback Transaction Reader Risk 
Parameters
√ 
√ 
√ 
√ 
√ 
2 
03 
0E 
Get DRL Reader Risk Parameters
√ 
√ 
√ 
√ 
√ 
2 
03 
11 
Get Merchant Record
√ 
√ 
√ 
√ 
√ 
2 
03 
40 
Get Transaction Result 
√ 
√ 
√ 
√ 
√ 
2 
04 
00 
Set Configuration
√ 
√ 
√ 
√ 
√ 
2 
04 
02 
Set Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
c 
04 
03 
Set Configurable Group
√ 
√ 
√ 
√ 
√ 
2 
c 
04 
04 
Delete Configurable AID
√ 
√ 
√ 
√ 
√ 
2 
c 
04 
05 
Delete Configurable Group
√ 
√ 
√ 
√ 
√ 
2 
c 
04 
09 
Set Parameter Defaults
2 
04
0A  Set Configuration Defaults and Keep 
Encryption Key
√ 
√ 
√ 
√ 
√ 
2 
04
0C  Set Cash Transaction Reader Risk 
Parameters
√ 
√ 
√ 
√ 
√ 
2 
04
0D  Set Cashback Transaction Reader Risk 
Parameters
√ 
√ 
√ 
√ 
√ 
2 
04 
0E 
Set DRL Reader Risk Parameters
√ 
√ 
√ 
√ 
√ 
2 
04
11  Set Merchant Record
√ 
√ 
√ 
√ 
√ 
2 
05 
01 
Cancel Transaction Command
√ 
√ 
√ 
√ 
√ 
2 
05 
02 
Stop Transaction
√ 
√ 
√ 
√ 
√ 
2 
09 
00 
Get ALL Reader Variables  
√ 
√ 
√ 
√ 
√ 
2 
09 
01 
Get Product Type 
√ 
√ 
√ 
√ 
√ 
2 
09 
02 
Get Processor Type
√ 
√ 
√ 
√ 
√ 
2 
09 
03 
Get Main Firmware Version 
√ 
√ 
√ 
√ 
√ 
2 
09 
14 
Get Hardware Information
√ 
√ 
√ 
√ 
√ 
2 
09 
20 
Get Module Version Information
√ 
√ 
√ 
√ 
√ 
2 
0A 
02 
LED Control
√ 
√ 
√ 
√ 
√ 
2 
0B 
01 
Buzzer Control Short
√ 
√ 
√ 
√ 
√ 
2 
0B 
02 
Buzzer Control Long
√ 
√ 
√ 
√ 
√ 
2 
12 
01 
Get Serial Number
√ 
√ 
√ 
√ 
√ 
2 
12 
02 
Set Serial Number
√ 
√ 
√ 
√ 
√ 
2 
14 
01 
Boot up Notification
√ 
√ 
√ 
√ 
√ 
2 
17 
02 
Flush Track Data
√ 
√ 
√ 
√ 
√ 
1 
17 
03 
Set RF Error Reporting
√ 
√ 
√ 
√ 
√ 
1 
17 
CD 
Get Full Track Data
√ 
√ 
√ 
√ 
√ 
1 
18 
01 
Ping
√ 
√ 
√ 
√ 
√ 
2 
24
01  Set CA Public Key
√ 
√ 
√ 
√ 
1 
24
02  Delete CA Public Key
√ 
√ 
√ 
√ 
1 

NEO Interface Developers Guide    
    9 
CM
D
SUB 
CMD
CommandC’less or C’less + 
MSR
LCD
Line
US
EMV
Protocol
Notes
24
03 
Delete All CA Public Keys
√ 
√ 
√ 
√ 
1 
25
01 
RTC Set Time
√ 
√ 
√ 
√ 
1 
d 
25
02  RTC Get Time
√ 
√ 
√ 
√ 
1 
d 
25
03  RTC Set Date
√ 
√ 
√ 
√ 
1 
d 
25
04  RTC Get Date
√ 
√ 
√ 
√ 
1 
d 
28 
01 
Antenna Control
√ 
√ 
√ 
√ 
√ 
2 
29 
00 
Get Version Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
29 
00 
Get Firmware Full Version
√ 
√ 
√ 
√ 
√ 
1 
29 
04 
Get USB Boot Loader Version
√ 
√ 
√ 
√ 
√ 
2 
e 
29 
06 
Get Contact EMV L2 Kernel Version 
√ 
√ 
2 
29
07  Get Contact EMV L2 Kernel Version 
Detail
√ 
√ 
2 
29 
08 
Get Contact EMV L2 Kernel Checksum 
√ 
√ 
2 
29
09  Get Contact EMV L2 Terminal 
Configuration Checksum 
√ 
√ 
2 
29 
17 
Get UID of MCU 
√ 
√ 
2 
32 
01 
Get Cable Type 
√ 
√ 
√ 
√ 
√ 
2 
32 
02 
Set Cable Type 
√ 
√ 
√ 
√ 
√ 
2 
2C 
01 
Pass-Through Mode Start/Stop
√ 
√ 
√ 
√ 
√ 
2 
2C 
02 
Poll for Token
√ 
√ 
√ 
√ 
√ 
2 
2C 
03 
Exchange Contactless Data
√ 
√ 
√ 
√ 
√ 
2 
2C 
04 
PCD Single Command Exchange
√ 
√ 
√ 
√ 
√ 
2 
2C 
05 
Get PCD and PICC Parameters
√ 
√ 
√ 
√ 
√ 
2 
2C 
06 
Mifare Authenticate Block
√ 
√ 
√ 
√ 
√ 
2 
2C 
07 
Mifare Read Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
08 
Mifare Write Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
09 
High Level Halt Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0A 
Mifare ePurse Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0B 
Enhanced Pass-Through Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0C 
Enhanced Poll for Token
√ 
√ 
√ 
√ 
√ 
2 
2C 
12 
Get ATR
√ 
2 
2C 
13 
Exchange APDU Data
√ 
2 
2C 
40 
NFC Commands
√ 
2 
2C 
50 
Set White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
51 
Get White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
52 
Clear White List
√ 
√ 
√ 
√ 
√ 
2 
30 
01 
Set Baud Rate
√ 
√ 
√ 
√ 
√ 
2 
30 
02 
Set Temporary Baud Rate
√ 
√ 
√ 
√ 
√ 
2 
60 
01 
Contact Retrieve Application Data 
√ 
√ 
√ 
2 
60 
02 
Contact Remove Application Data 
√ 
√ 
√ 
2 
60 
03 
Contact Set Application Data 
√ 
√ 
√ 
2 
60 
04 
Contact Retrieve Terminal Data 
√ 
√ 
√ 
2 
60 
05 
Contact Remove Terminal Data 
√ 
√ 
√ 
2 
60 
06 
Contact Set Terminal Data 
√ 
√ 
√ 
2 
60 
07 
Contact Retrieve AID List 
√ 
√ 
√ 
2 
60 
08 
Contact Retrieve CA Public Key 
√ 
√ 
√ 
2 
60 
09 
Contact Remove CA Public Key 
√ 
√ 
√ 
2 
60 
0A 
Contact Set CA Public Key 
√ 
√ 
√ 
2 
60 
0B 
Contact Retrieve CA Public Key List 
√ 
√ 
√ 
2 
60
0C  Contact Retrieve Certification 
Revocation List 
√ 
√ 
√ 
2 

NEO Interface Developers Guide    
    10 
CM
D
SUB 
CMD
CommandC’less or C’less + 
MSR
LCD
Line
US
EMV
Protocol
Notes
60
0D  Contact Remove Certification 
Revocation List 
√ 
√ 
√ 
2 
60 
0E 
Contact Set Certification Revocation List
√ 
√ 
√ 
2 
60
0F  Contact Remove Transaction Amount 
Log 
√ 
√ 
√ 
2 
60 
10 
Contact Start Transaction 
√ 
√ 
√ 
2 
60 
11 
Contact Authenticate Transaction 
√ 
√ 
√ 
2 
60 
12 
Contact Apply Host Response 
√ 
√ 
√ 
2 
60 
13 
Contact Retrieve Transaction Result 
√ 
√ 
√ 
2 
60 
14 
Get Contact Reader Status 
√ 
√ 
√ 
2 
60 
15 
Contact Get ICS Identification 
√ 
√ 
√ 
2 
60 
16 
Contact Set ICS Identification 
√ 
√ 
√ 
2 
61
01  Contact LCD Display Control (Reader 
send to Host)
√ 
√ 
√ 
2 
61
02  Contact Get PIN Control (Reader send 
to Host) 
√ 
√ 
√ 
2 
61
03  Contact Get MSR Data Control (Reader 
send to Host)
√ 
√ 
√ 
2 
81 
02 
Check DUKPT Keys 
√ 
√ 
√ 
√ 
√ 
2 
81 
04 
Check DUKPT Key 
√ 
√ 
√ 
√ 
√ 
2 
81 
0A 
Get DUKPT Key Serial Number (KSN)
√ 
√ 
√ 
√ 
√ 
2 
84 
03 
Get EMV Revocation Log Status
√ 
√ 
√ 
√ 
√ 
2 
84 
04 
Add Entry to EMV Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84
05  Delete All Entries for Single Index in 
EMV Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84
06  Delete All Entries from EMV 
Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84 
07 
Get EMV Revocation List
√ 
√ 
√ 
√ 
√ 
2 
84 
08 
Get EMV Exception Log Status
√ 
√ 
√ 
√ 
√ 
2 
84 
09 
Add Entry to EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84 
0A 
Delete Entry from EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84
0B 
Delete All Entries from EMV Exception 
List
√ 
√ 
√ 
√ 
√ 
2 
84 
0C 
Get EMV Exception List
√ 
√ 
√ 
√ 
√ 
2 
84
0D  Delete an Entry from EMV Revocation 
List
√ 
√ 
√ 
√ 
√ 
2 
84 
0E 
Reset Torn Transaction Log
√ 
√ 
√ 
√ 
√ 
2 
84 
0F 
Clean Torn Transaction Log
√ 
√ 
√ 
√ 
√ 
2 
C7 
2D 
Set Remote Key Injection Timeout
√ 
√ 
√ 
√ 
√ 
2 
C7 
2E 
Get Remote Key Injection Timeout
√ 
√ 
√ 
√ 
√ 
2 
C7 
2F 
Set Data Encryption Key Variant Type
√ 
√ 
√ 
√ 
√ 
2 
C7 
30 
Get Data Encryption Key Variant Type 
√ 
√ 
√ 
√ 
√ 
2 
C7
32  Set Data encryption Key Encryption 
Type
√ 
√ 
√ 
√ 
√ 
2 
C7
33  Get Data encryption Key Encryption 
Type
√ 
√ 
√ 
√ 
√ 
2 
C7 
36 
Set Data Encryption Enable Flag
√ 
√ 
√ 
√ 
√ 
2 
C7 
37 
Get Data Encryption Enable Flag
√ 
√ 
√ 
√ 
√ 
2 
C7 
38 
Set MSR Secure Parameters
√ 
2 
C7 
39 
Get MSR Secure Parameters
√ 
2 
C7 
9A 
Peer To Peer Send A Message
√ 
√ 
√ 
√ 
√ 
2 
C7 
9B 
Peer To Peer Receive A Message
√ 
√ 
√ 
√ 
√ 
2 
D0 
01 
Get CA Public Key Protocol 2
√ 
√ 
√ 
√ 
√ 
2 

NEO Interface Developers Guide    
    11 
CM
D
SUB 
CMD
CommandC’less or C’less + 
MSR
LCD
Line
US
EMV
Protocol
Notes
D0 
02 
Get CA Public Key Hash Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
03 
Set CA Public Key Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
04 
Delete CA Public Key Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
05 
Delete All CA Public Keys Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0 
06 
Get All CA Public RIDs Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
D0
07  List CA Public Key IDs or RID 
Protocol 2
√ 
√ 
√ 
√ 
√ 
2 
F0
00  Set PMC Status 
√ 
√ 
√ 
√ 
√ 
2 
F0 
01 
Get PMC Status 
√ 
√ 
√ 
√ 
√ 
2 
F0 
02 
Get Battery Level 
√ 
√ 
√ 
√ 
√ 
2 
F0 
0F 
Shut Off the Power 
√ 
√ 
√ 
√ 
√ 
2 
F0 
F4 
Configure Buttons Command
√ 
√ 
√ 
2 
a 
F0 
F5 
Get Button Configuration Command
√ 
√ 
√ 
2 
a 
F0 
F6 
Disable Blue LED Sequence
√ 
n/a 
√ 
2 
a 
F0 
F7 
Enable Blue LED Sequence Command
√ 
n/a 
√ 
2 
a 
F0 
F9 
LCD Display Clear Command
√ 
n/a 
√ 
2 
a 
F0 
FA 
Turn Off Yellow LED Command
√ 
n/a 
√ 
2 
a 
F0 
FB 
Turn On Yellow LED Command
√ 
n/a 
√ 
2 
a 
F0 
FC 
LCD Display Line 1 Message Command
√ 
n/a 
√ 
2 
a 
F0 
FD 
LCD Display Line 2 Message Command
√ 
n/a 
√ 
2 
a 
F0 
FE 
Buzzer On/Off Command
√ 
n/a 
√ 
2 
a 
a ViVOpay Vendi reader only 
c Not in Global Reader Lite (GRL) 
d Real Time Clock only 
e Only applies to devices with USB 
Pass-Through Command Table 
All commands in the following table use Protocol 2 formats (see Protocol 2 Formats). 
Table 4: Pass-Through Command Table 
Command  C’less or 
C’less + MSR 
LCD
Line
US
EMV
Protocol
CMD
SUB 
CMD 
Antenna Control
√ 
√ 
√ 
√ 
√ 
2 
28 
01 
Buzzer Control Long
√ 
√ 
√ 
√ 
√ 
2 
0B 
02 
Buzzer Control Short
√ 
√ 
√ 
√ 
√ 
2 
0B 
01 
Enhanced Pass-Through 
Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0B 
Enhanced Poll for Token
√ 
√ 
√ 
√ 
√ 
2 
2C 
0C 
Exchange Contactless Data
√ 
√ 
√ 
√ 
√ 
2 
2C 
03 
Get PCD and PICC 
Parameters
√ 
√ 
√ 
√ 
√ 
2 
2C 
05 
High Level Halt Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
09 
LED Control
√ 
√ 
√ 
√ 
√ 
2 
0A 
02 
Mifare Authenticate Block
√ 
√ 
√ 
√ 
√ 
2 
2C 
06 
Mifare ePurse Command
√ 
√ 
√ 
√ 
√ 
2 
2C 
0A 
Mifare Read Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
07 
Mifare Write Blocks
√ 
√ 
√ 
√ 
√ 
2 
2C 
08 

NEO Interface Developers Guide    
    12 
Pass-Through Mode 
Start/Stop
√ 
√ 
√ 
√ 
√ 
2 
2C 
01 
PCD Single Command 
Exchange
√ 
√ 
√ 
√ 
√ 
2 
2C 
04 
Poll for Token
√ 
√ 
√ 
√ 
√ 
2 
2C 
02 
Set White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
50 
Get White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
51 
Clear White List
√ 
√ 
√ 
√ 
√ 
2 
2C 
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 
Command  C’less or 
C’less + 
MSR 
LCD  Line  US
EMV
Protocol 
CMD  SUB 
CMD 
Notes
Get CA Public Key 
√ 
√ 
√ 
√ 
2 
D0 
01 
Get CA Public Key Hash 
√ 
√ 
√ 
√ 
2 
D0 
02 
Set CA Public Key 
√ 
√ 
√ 
√ 
2 
D0 
03 
Delete CA Public Key 
√ 
√ 
√ 
√ 
2 
D0 
04 
Delete All CA Public Keys
√ 
√ 
√ 
√ 
2 
D0 
05 
Get All CA Public RIDs 
√ 
√ 
√ 
√ 
2 
D0 
06 
List CA Public Key IDs for 
RID 
√ 
√ 
√ 
√ 
2 
D0 
07 
All commands in the following table use Protocol 1 formats (see Protocol 1).  These commands 
are included for backward compatibility. New development should use Protocol 2 commands 
listed above. 
Table 6: EMV Key Management - Protocol 1 
CommandC’less or 
C’less + 
MSR
LCDLineUS
EMV
Protocol
CMDSUB 
CMD
Notes
Delete All CA Public Keys
√ 
√ 
√ 
√ 
1 
24 
03 
Delete CA Public Key
√ 
√ 
√ 
√ 
1 
24 
02 
Set CA Public Key
√ 
√ 
√ 
√ 
1 
24 
01 

NEO Interface Developers Guide    
    13 
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 

NEO Interface Developers Guide    
    14 
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 
1
 Status codes in this range are “module-specific” so that their values can be re-used by different modules.  The 
meaning of these codes may depend on which command is being issued.  An exception is 23h, which is used generally. 

NEO Interface Developers Guide    
    15 
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 
Command 
Reader did not receive commands in the correct order. Correct the Terminal 
application to send serial commands in the correct sequence.  
02h  Go to Contact  
Interface 
The contactless transaction failed.  
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. 
03h  Transaction 
Amount is Zero 
If the transaction amount is zero and the terminal is “an offline only terminal” 
then reader needs to terminate the transaction. 
04h  Go To Other 
Interface 
The transaction has failed. 
If the reader supports another interface, advise the user to complete the 
transaction on the other interface. 

NEO Interface Developers Guide    
    16 
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  Go To MagStripe 
Interface 
The transaction has failed. 
If the reader has a MagStripe interface, advise the user to complete the 
transaction using the MagStripe interface. 
20h  Card returned 
Error Status 
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. 
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 reco
gnized by the 
reader.  

NEO Interface Developers Guide    
    17 
Error 
Code  Description  Reason for Error and Suggested Error Handling 
30h  Card did not 
respond 
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): 
41h 
Data Element 
Missing 
A mandatory/required data element was missing from the card. 
42h 
Card Generated 
AAC 
The card declined the transaction by sending an AAC instead of a TC.  
43h  Card Generated 
ARQC 
This error code would be returned if the card generated an ARQC and the 
terminal/reader was configured as “Offline Only”; therefore the card was 
DECLINED. 
44h 
SDA/DDA Failed 
(Not Supported 
by Card) 
Card did not indicate support for the correct authentication method and date 
authentication failed. For Visa, when DDA is required, the card must indicate 
support for DDA in AIP. If this support is not indicated then the transaction fails 
and this error code is returned.  
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 
Failed (Dynamic 
Signature 
Verification) 
Data Authentication failed during Dynamic Signature Verification. Retrying the 
transaction does not correct the error:  
At this point, the amount has been deducted from the Card Balance. 
55h 
Processing 
Restrictions 
Failed 
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. 

NEO Interface Developers Guide    
    18 
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 
Analysis (TAA) 
Failed 
The Terminal Action Analysis 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. 
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 
This is a generic / general error that is reported when a more specific reason 
for the error is not known. 
73h 
Torn 
Transaction Log 
Error 
An error occurred while attempting to clean the torn transaction log.  This 
might occur if the reader could not read the time and date from the real time 
clock. 
80h 
No Merchants 
have been 
configured 
This error usually occurred while MerchantID is empty. 
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 
Error 
This error usually occurred while configuration isn’t consistent on whether or 
not to skip payment application 
85h 
Application 
Version Error 
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. 

NEO Interface Developers Guide    
    19 
Table 10:  RF State Codes 
State 
Code   RF State  Description 
00h 
None 
RF State Code not available 
01h 
PPSE 
Error occurred during PPSE command 
02h 
SELECT 
Error occurred during SELECT command 
03h 
GPO 
Error occurred during GET PROCESSING OPTIONS command 
04h 
READ RECORD 
Error occurred during READ RECORD command 
05h 
GEN AC 
Error occurred during GEN AC command 
06h 
CCC 
Error occurred during CCC command 
07h 
IA 
Error occurred during IA command 
08h 
SDA 
Error occurred during SDA processing 
09h 
DDA 
Error occurred during DDA processing 
0ah 
CDA 
Error occurred during CDA processing 
0bh 
TAA 
Error occurred during TAA processing 
0ch 
UPDATE RECORD 
Error occurred during UPDATE RECORD command 
10h  GET DATA (Ticket) 
Error occurred during GET DATA command to retrieve the 
Ticket 
11h  GET DATA (Ticketing Prof) 
Error occurred during GET DATA command to retrieve the 
Ticketing Profile 
12h  GET DATA (Balance) 
Error occurred during GET DATA command to retrieve the 
Balance 
13h 
GET DATA (All) 
Error occurred during GET DATA command to retrieve all data 
20h  PUT DATA (Ticket) 
Error occurred during PUT DATA command to retrieve the 
Ticket 

NEO Interface Developers Guide    
    20 
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 
8 
Stop Bits 
1 
Parity 
None 
Out CTS Flow 
Disabled 
Out DSR Flow 
Disabled 
DTR Control 
Disabled 
RTS Control 
Disabled 
XON/XOFF 
Disabled 
Flow Control 
None 
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.  

NEO Interface Developers Guide    
    21 
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. 

NEO Interface Developers Guide    
    22 
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 
“V” 
“i” 
“V” 
“O” 
“t” 
“e” 
“c” 
“h” 
“2” 
00 
18 
01 
00 
00 
B3 
CD 
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 
“V” 
“i” 
“V” 
“O” 
“t” 
“e” 
“c” 
“h” 
“2” 
00 
18 
00 
00 
00 
FA 
83 
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 

NEO Interface Developers Guide    
    23 
Data Frames 
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 if from 
ViVOpay. 
LSB if from 
Terminal. 
CRC 
LSB if from 
ViVOpay. 
MSB if from 
Terminal. 
ViVOtech\0 
‘D’ 
… 
Direction: Both Ways (depending on Command). Variable Length (n = 1 … 244). 
Sample Single Report Command with Multiple Report Response 
 Get Configuration Command Report 
01 
“V” 
“i” 
“V” 
“O” 
“t” 
“e” 
“c” 
“h” 
“2” 
00 
03 
02 
00 
00 
5B 
91 
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 
“V” 
“i” 
“V” 
“O” 
“t” 
“e” 
“c” 
“h” 
“2” 
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 
00 
DF 
63 
01 
00 
DF 
64 
01 
01 
DF 
65 
01 
00 
DF 
66 
01 
00 
FF 
F0 
03 
00 
00 
00 
FF 
F2 
08 
30 
30 
2nd Response Report 
03 
30 
30 
30 
30 
30 
30 
FF 
F3 
02 
03 
FF 
FF 
F7 
01 
02 
FF 
F9 
01 
03 
FF 
FA 
02 
03 
E8 
9A 
03 
00 
01 
04 
9F 
21 
03 
05 
13 
54 
9C 
01 
00 
5F 
2A 
02 
08 
40 
9F 
09 
02 
00 
02 
9F 
1A 
02 
08 
40 
9F 
1B 
04 
00 
00 
17 
70 
9F 
33 
03 
3rd Response Report 
03 
00 
08 
E8 
9F 
35 
01 
22 
9F 
40 
05 
60 
00 
00 
30 
00 
9F 
66 
04 
A0 
00 
00 
00 
FF 
F1 
06 
00 
00 
00 
01 
00 
00 
FF 
F4 
03 
01 
00 
01 
FF 
F5 
06 
00 
00 
00 
00 
80 
00 
FF 
F8 
01 
00 
FF 
FB 
01 
00 
FF 
FC 
01 
00 
FF 
FD 
05 
F8 
50 
4th and Final Response Report 

NEO Interface Developers Guide    
    24 
04 
AC 
F8 
00 
FF 
FE 
05 
F8 
50 
AC 
A0 
00 
FF 
FF 
05 
00 
00 
00 
00 
00 
72 
56 
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 00 DF 63 01 00 DF 64 01 01 DF 65 01 
00 DF 66 01 00 FF F0 03 00 00 00 FF F2 08 30 30 
   30 30 30 30 30 30 FF F3 02 03 FF FF F7 01 02 
FF F9 01 03 FF FA 02 03 E8 9A 03 00 01 04 9F 21 
03 05 13 54 9C 01 00 5F 2A 02 08 40 9F 09 02 00 
02 9F 1A 02 08 40 9F 1B 04 00 00 17 70 9F 33 03 
   00 08 E8 9F 35 01 22 9F 40 05 60 00 00 30 00 
9F 66 04 A0 00 00 00 FF F1 06 00 00 00 01 00 00 
FF F4 03 01 00 01 FF F5 06 00 00 00 00 80 00 FF 
F8 01 00 FF FB 01 00 FF FC 01 00 FF FD 05 F8 50 
   AC F8 00 FF FE 05 F8 50 AC A0 00 FF FF 05 00 
00 00 00 00 72 56 
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. 
NEO Interface Developers Guide    
    25 
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. 

NEO Interface Developers Guide    
    26 
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 sub-
section 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  Byte 14  Byte 15 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2  CRC (LSB)
CRC (MSB)
ViVOtech\0
‘C’ 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
Direction: From terminal to ViVOpay 
ACK Frames 
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)

NEO Interface Developers Guide    
    27 
ViVOtech\0
‘A’ 
See 
Individual 
Commands 
See Status 
Code 
See 
Individual 
Commands 
See 
Individual 
Commands 
Direction: ViVOpay to terminal 
NACK Frames 
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’ 
See 
Individual 
Commands
See Status 
Code 
See 
Individual 
Commands
See 
Individual 
Commands
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 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type  Data1  Data2  Data3  Data4 
CRC 
MSB if from 
ViVOpay. 
LSB if from 
Terminal. 
CRC 
LSB if from 
ViVOpay. 
MSB if from 
Terminal. 
ViVOtech\0
‘S’ 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0 

NEO Interface Developers Guide    
    28 
Response 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
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  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. 

NEO Interface Developers Guide    
    29 
 Low Level PICC Communication Commands 
These low level commands can be used to send raw ISO 14443-3 data to the PICC and 
receive the PICC responses. The Send/Receive commands must always be used in pairs, 
unless the send command returns an error. In addition to this, these commands can also be 
used to get and set some PCD and PICC parameters. The low level commands include. 
 PCD Single Command Exchange 
 Get PCD and PICC Parameters 
The terminal must periodically instruct the ViVOpay reader to poll for cards. Whenever the 
ViVOpay reader detects a card in the RF field, it tries to carry out ISO 14443 Layer 3 and Layer 4 
negotiations and report the card type found. In the Pass-Through mode, ViVOpay does not 
attempt to check whether the card application is one that it supports.  
Once a card is detected, the terminal may use one of the Pass-Through commands to 
communicate with the card at the application level and read the data.  
Additional Pass-Through commands allow a terminal to use low-level features provided by the 
ViVOpay reader, such as controlling the RF antenna (field). 
Pass-Through Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 14 …    
Byte 14+n-1
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
Note: The Byte 14+n and Byte 15+n CRCs are the reverse of standard Protocol 1 Format and 
Protocol 2 Format Command Frames.  Within each Pass-Through Frame Type, the CRC is 
stored as big-endian number i.e. higher byte (MSB) first. 
Pass-Through Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
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
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See 
Individual 
Commands 
See Individual 
Commands     
Suggested Sequence for Pass-Through Commands 
Put the ViVOpay reader in Pass-Through Mode by sending a Start Pass-Through Mode command.  

NEO Interface Developers Guide    
    30 
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. 

NEO Interface Developers Guide    
    31 
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 Auto-
Switch) 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 Pass-
Through 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

NEO Interface Developers Guide    
    32 
Header Tag 
& Protocol 
Version 
Command
Status Code
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC  
(LSB) 
ViVOtech2\0
50h or 51h
See Status 
Code Table 
Table 12: Poll for Token Data Field for Response Frame (Status Code is OK) 
Data Field  Length 
(bytes) 
Description 
Card 
1 
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.  

NEO Interface Developers Guide    
    33 
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. 

NEO Interface Developers Guide    
    34 
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 
Byte n-1 
Byte n 
Frame Type 
=01h 
Status 
=00h 
Application 
Type 
Track 1 Field 
(if found) 
Track 2 Field 
(if found) 
CRC 
(MSB) 
CRC 
(LSB) 
Example 1: Payload, Card Read Successfully, Application Type Visa, Both Track 1 and Track 2 
Present 
      [01] [00] [02] %B123456789^ABCDEF^12345678?;123456=12345?<CRC1><CRC2> 
Example 2: Payload, Card Read Successfully, Application Type MasterCard, Only Track 2 Present 
      [01] [00] [01] ;123456=12345?<CRC1><CRC2> 
Example 3: Payload, Card Read Successfully, Application Type AmEx, Only Track 1 Present 
      [01] [00] [03] %B1234567^ABCDEF^12345678? <CRC1><CRC2> 
Example 4: Payload, Card Read Successfully, Application Type Unknown, Both Track 1 and Track 
2 Present 
      [01] [00] [00] %B123456789^ABCDEF^12345678?;123456=12345? <CRC1><CRC2> 

NEO Interface Developers Guide    
    35 
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  Length (bytes)
Description 
Track 1 Length 
1 
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 
(MagStripe card) 
Variable 
Track 1 Data (if available).  
Format: ASCII (no null terminator) 
Track 2 Length 
1 
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 L
ength of 00h is 
returned.  
Format: Binary 
Track 2 Data 
(MagStripe card) 
Variable 
Track 2 Data (if available).  
Format: ASCII (no null terminator) 
DE055 (Clearing 
Record) Present 
1 
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 
Record) 
Variable up to 
128 
DE 055 data (if available) as a TLV data object encoded with Tag 
‘E1’. The DE 055 data is the same data as is included in the Clearing 
Record.  
Tag: E1     Format: b1...126 variable. 
TLV App  PAN 
Variable, up to 
12 
Application Primary Account Number (PAN) as a TLV object. This 
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 
4 
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 
6 
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 

NEO Interface Developers Guide    
    36 
Data Item  Length (bytes)
Description 
TLV CVM Results 
6 
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
5 
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 
4 
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 
5 
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) 
8 
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) 
8 
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) 
8 
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 
9 
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 
9 
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) 
9 
Available Offline Spending Amount as a TLV object 
Tag: 9F5D   Format: variable b6 
TLV Application 
Effective Date 
6 
Application Effective Date as a TLV object. 
Tag: 5F25     Format: n6, BCD encoded on 3 bytes (YYMMDD) 

NEO Interface Developers Guide    
    37 
Data Item  Length (bytes)
Description 
Form Factor 
Indicator  
PayPass Third Party 
Data 
F: b 32 
T: ‘9F6E’ 
L: 4-bytes 
F: b  
T ‘9F6E’ 
L: 5-32 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. 
Priority information from a third party in the following format: 
Country Code according to ISO 3166-1 n3, 2 bytes 
Unique ID assigned by MasterCard b, 2 bytes 
Proprietary Data b 1 to 28 bytes 
Customer Exclusive 
Data (CED) 
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 

NEO Interface Developers Guide    
    38 
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? <CRC1><CRC2> 
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? <CRC1><CRC2> 

NEO Interface Developers Guide    
    39 
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? <CRC1><CRC2> 
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
Byte 3  Byte 4 
Byte 5 
& 6  …  Bn-3  Bn-2  Bn-1
Bn 
Frame 
Type 
45h, E
Status
=00h
Event 
Type 
55h, 
UI 
Scheme, 
defined on 
tag ‘FF F8’
Length 
Byte  
2 Byte 
UI 
Event
Additional 
2 Byte UI 
Events
Null 
Character
Null 
Character
CRC 
(MSB)
CRC (LSB)

NEO Interface Developers Guide    
    40 
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 Data Definitions 
4.1.1.7.1 Status 
The Status is a 1-Byte code that indicates the Success or contains an Error Code. This can have 
any value from 0 – 255. A list of valid Status codes is given below. 
Table 16: Asynchronous UI Message Event Status 
Status    Value  Description 
STATUS_OK 
00h 
Card Read completed successfully. 

NEO Interface Developers Guide    
    41 
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  

NEO Interface Developers Guide    
    42 
%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 Sample Output 
45 00 55 00 04 03 03 00 00 E8 DD  <-- LCD Event 
45 00 55 00 04 01 11 00 00 28 B6  <-- LED Event 
45 00 55 00 04 01 10 00 00 1F 86  <-- LED Event 
45 00 55 00 04 02 20 00 00 41 FF  <-- Buzzer Event 
45 00 55 00 04 01 11 00 00 28 B6  <-- LED Event   
45 00 55 00 04 01 21 00 00 ED 13  <-- LED Event 
45 00 55 00 04 01 31 00 00 AE 70  <-- LED Event 
01 00 0A 25 42 36 32 37 39 32 35 37 37 34 39 31 
33 32 33 34 33 5E 54 45 53 54 20 43 41 52 44 2F  
56 49 56 4F 54 45 43 48 5E 31 30 31 32 38 31 33  
30 30 37 32 31 30 34 33 35 30 30 30 30 3F 3B 36  
32 37 39 32 35 37 37 34 39 31 33 32 33 34 33 3D  
31 30 31 32 38 31 33 30 30 37 32 31 30 34 33 35  
30 30 30 30 3F B5 DC              <-- Burst Mode Payload Frame  
45 00 55 00 04 03 04 00 00 6D 4D  <-- LCD Event 
45 00 55 00 0C 01 30 00 00 01 20 
00 00 01 10 00 00 53 78        <-- Three LED Events 
45 00 55 00 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:      16-bits 
Polynomial:      x16 + x12 + x5 + 1     
Truncated Polynomial:  1021 hex 
Initial Value:     FFFF hex 
Input Data:      Not Reflected 
Output CRC:     Not Reflected 
XOR of Output CRC:   Not Done 
The CRC-16 is calculated for the entire frame inclusive of Frame Tags, unused bytes, etc.  
For Protocol 1 and Protocol 2:  The CRC of the Command Frames is little-endian, i.e. lower 
byte first (LSB). The CRC of the Response Frames is big-endian i.e. higher byte first (MSB). 

NEO Interface Developers Guide    
    43 
For Pass-through Frames, both Command and response frames have the CRC stored in big-
endian 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. 
NEO Interface Developers Guide    
    44 
// --------------------------------------------------------------------------------------- 
// 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, 0x60C6, 0x70E7, 0x8108, 0x9129, 
0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 0x1231, 0x0210, 0x3273, 0x2252, 
0x52B5, 0x4294, 0x72F7, 0x62D6, 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 
0xF3FF, 0xE3DE, 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 
0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 0x3653, 0x2672, 
0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 0xB75B, 0xA77A, 0x9719, 0x8738, 
0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 
0x2802, 0x3823, 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 
0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 0xDBFD, 0xCBDC, 
0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 
0x2C22, 0x3C03, 0x0C60, 0x1C41, 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 
0x8D68, 0x9D49, 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 
0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 0x9188, 0x81A9, 
0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 0x1080, 0x00A1, 0x30C2, 0x20E3, 
0x5004, 0x4025, 0x7046, 0x6067, 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 
0xE37F, 0xF35E, 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 
0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 0x34E2, 0x24C3, 
0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 
0xE75F, 0xF77E, 0xC71D, 0xD73C, 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 
0x4615, 0x5634, 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 
0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 0xCB7D, 0xDB5C, 
0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 0x4A75, 0x5A54, 0x6A37, 0x7A16, 
0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 
0x9DE8, 0x8DC9, 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 
0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 0x6E17, 0x7E36, 
0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 
}; 
unsigned short CalculateCRC ( unsigned char *Buffer, unsigned int Len ) 
{ 
unsigned short Crc = 0xffff;     
     while (Len--) 
{  Crc = CrcTable[ ((Crc >> 8) ^ *Buffer++) ] ^ (Crc << 8);       
     } 
     return(Crc); 
} 

NEO Interface Developers Guide    
    45 
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. 

NEO Interface Developers Guide    
    46 
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 

NEO Interface Developers Guide    
    47 
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. 

NEO Interface Developers Guide    
    48 
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 
A0 00 00 00 25 01 
MasterCard 
A0 00 00 00 04 10 10 
QUICPay 
A0 00 00 00 65 90 01 
Maestro 
A0 00 00 00 04 30 60 
Visa 
A0 00 00 00 03 10 10 
Visa Electron 
A0 00 00 00 03 20 10 
Visa Interlink 
A0 00 00 00 03 30 10 
Visa Plus 
A0 00 00 00 03 80 10 
J/Speedy 
A0 00 00 00 65 10 10 
MXI 
A0 00 00 00 02 30 60 D1 58 00 
Discover 
A0 00 00 03 24 10 10 
Discover 
A0 00 00 01 52 30 10 
STAR 
A0 00 00 04 17 01 01 
Interac 
A0 00 00 02 77 10 10 
CUP Debit (Kiosk III only) 
A0 00 00 03 33 01 01 01 
CUP Credit(Kiosk III only) 
A0 00 00 03 33 01 01 02 
CUP Semi Credit(Kiosk III only) 
A0 00 00 03 33 01 01 03 
CUP Electronic Cash(Kiosk III only) 
A0 00 00 03 33 01 01 06 
SmartTap2.1 
A0 00 00 04 76 D0 00 
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. 

NEO Interface Developers Guide    
    49 
Reader Default TLV Group 
The reader is provided with a default TLV Group (Group 0) that defines all the properties (with 
TLVs) required for a basic transaction. By default, all of the System AIDs except PayPass System 
AIDs (MasterCard and Maestro) use TLV Group 0 to define their transaction processing. By 
default, MasterCard PayPass System AIDs will use Group 1. 
The user: 
 MUST ALWAYS include the Group Number TLV as the FIRST TLV in the Set Configurable 
Group message. 
 MUST define AT LEAST ONE TLV in addition to the Group Number TLV (in a Set 
Configurable Group command) 
 May modify ANY TLVs in TLV Group 0  
 May NEVER delete TLV Group 0 
Unlike all other groups, the TLVs in the Default TLV Group (TLV Group 0) are constant. The 
reader ALWAYS uses the latest copy of the TLV. If you issue a Set Configurable Group command 
that only updates some TLVs in TLV Group 0, the reader continues to use older versions of the 
TLVs that were not updated. 
After each transaction, the reader reloads the default values from TLV Group 0, prior to the 
next transaction. For this reason, TLV Group 0 maintains a copy of ALL TLVs that can be entered 
into a TLV Group structure2. 
Warning: Changing values in TLV Group 0 should be done with EXTREME CAUTION, since this 
affects the default configuration that most (not PayPass) transactions use. 
PayPass Default Group  
The PayPass default group is Group 1.  PayPass M/Chip 3.0 does not use Group 0 
tag definitions (not even for default values).  The process of instantiating a 
PayPass database is slightly different from other applications: 
 Group 0 tags are not loaded. 
 28 default tags defined in the EMV Contactless Book C-2 Kernel 2 Spec 
v2.3 are initialized with their specified default values. See PayPass Group 
Configuration TLVs with Hard-Coded Values in Kernel. 
 PayPass Group tags are loaded.  (Group 1 is the default group for PayPass 
applications). 
 Tags sent in the Activate Command are loaded into the database. 
User-defined TLV Groups 
There are seven undefined TLV Groups in the reader at startup. These groups can be used for 
any purpose. 
2
 PayPass specific tags are an exception to this rule.  Those are maintained in Group 1. 

NEO Interface Developers Guide    
    50 
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.  
NEO Interface Developers Guide    
    51 
ViVOpay Proprietary TLVs 
TLVs may be either standard TLVs or proprietary TLVs. Standard TLVs are defined by EMV and 
the Payment Association Requirements and recognized by everyone. Proprietary TLVs are 
created by individual payment associations and reader manufacturers for specific functions. 
Proprietary TLVs must be handled in a manner that isolates them from other proprietary TLVs. 
ViVOpay proprietary TLVs can be present with standard TLVs without encapsulation when the 
command is processed exclusively by ViVOpay firmware or software. If the TLVs will be 
processed by other devices, ViVOpay proprietary TLVs must be encapsulated to prevent conflicts 
with proprietary TLVs from other organizations. 
ViVOPay TLV Group Tag FFEE01 is used to encapsulate ViVOpay proprietary TLVs.  
EXAMPLE 
The following example is for an encapsulated Terminal Capabilities – CVM Required TLV. 
The TLV string “FFEE0106DF29030101” is broken down as follows: 
FFEE01              ViVOpay TLV Group Tag  
06                      Length of all encapsulated TLVs 
DF29                Tag Terminal Capabilities – CVM Required – ViVOpay Proprietary  
03                     Length of Transaction CVM 
00 01 00           Value:  Actual Transaction CVM 
Card Application Proprietary Tag List (FF69) 
For some applications, there may be a requirement to define a list of 
proprietary tags that may be returned in Data Object Lists (DOLs). To 
accomplish this, the reader allows each user-defined group (except Group 0) to 
define a list of proprietary tags that can be inserted into the tag database.  The 
maximum size of this list is 32 bytes.  The new tag that is used for encapsulating 
the proprietary tag list is FF69. 
A tag in this list may be configured in one of two ways: 
 Constant Value – the TLV contains a non-zero length and a value.  The 
reader will not modify this value, but it can be provided when requested 
(as in a DOL). 
 Updateable – the TLV contains a length of zero and no value.  The tag is 
then “defined” but has no value, so it may be updated during the 

NEO Interface Developers Guide    
    52 
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)
Default Value 
9A 
Transaction Date (YYMMDD)  
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. 
n6  3  Reader Date 
9F21 
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. 
n6    3  Reader Time 
DF65[1] 
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  
b  1  00 
DF66[1] 
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.  
b  1  00 
DF68 
Enable/Disable Stop Command processing 
0 = Disable (default) 
1 = Enable 
b  1  00 
DF6A 
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) 
b  1  01 

NEO Interface Developers Guide    
    53 
Tag  Data Object Name and Description  Format
Length
(Bytes)
Default Value 
DF75 
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) 
n 
(BCD)
3  00 30 00 
DF7C 
Auto-Switch to Pass-Through Mode.  
Refer to Auto-Switch to Pass-Through Mode 
00: Disable (default) 
01: Enable  
b  1  00 
DF7D 
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 
b  1  00 
DF7F 
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. 
b  1  00 
FFF3[1] 
Application Capability(1:Support,0:Not Support): 
Byte 1: (Leftmost) 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = 
enable) 
              X
Normal J/Speedy support 
            X
  ViVOpay Mifare for NFC 
          X
    Interac support 
        X
      CUP support 
      X
        SmartTap support 
X
X
X
          RFU 
Byte 2:  
b8
b7
b6
b5
b4
b3
b2
b1
Meaning  (0 = disable, 1 = 
enable) 
-
-
-
-
-
-
-
X
MasterCard Credit support 
-
-
-
-
-
-
X
-
American Express support 
-
-
-
-
-
X
-
-
Visa support 
-
-
-
-
X
-
-
-
Mobile J/Speedy support 
-
-
-
X
-
-
-
-
ViVOwallet support 
-
-
X
-
-
-
-
-
RBS support 
-
X
-
-
-
-
-
-
MasterCard Cash support 
X
-
-
-
-
-
-
-
Discover support 
Example: 0009 means reader support both 
MasterCard and Mobile J/Speedy applications 
b  2 
07 FF 
(0F FF for Kiosk 
III) 

NEO Interface Developers Guide    
    54 
Tag  Data Object Name and Description  Format
Length
(Bytes)
Default Value 
FFF7[1] 
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) 
b  1  02 
FFF9[1] 
[2] [3] 
LCD Font Size: 
Value = 02: Large 
Value = 03: Extra Large (default) 
b  1  03 
FFFA[1] 
[2] 
LCD delay time (ms) – default is 1000ms.   
If the device has no LCD, then the value will be 0.  b  2 
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]
b  1  00 
DF891B 
Poll Mode 
Value = 00 : Auto-Poll 
Value = 01 : Poll on Demand 
Note: Only used for Vendi. 
b 1 00 
9F15 
Merchant Category Code  
Classifies the type of business being done by the 
merchant, see ISO 8583:1993.  
n4 
2 
00 00 
9F16 
Merchant Identifier  
ans 
15 
00 00 00 00 00 
00 00 00 00 00 
00 00 00 00 00 
9F1C 
Terminal Identification  
an 
8 
00 00 00 00 00 
00 00 00 
9F40 
Additional Terminal Capabilities  
Indicates the data input and output capabilities of 
the terminal. 
b 
5 
60 00 00 10 01 
9F4E 
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 
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 
9F7C 
Merchant Custom Data  
b 
<=20 
00 00 00 00 00 
00 00 00 00 00 
00 00 00 00 00 
00 00 00 00 00 
FFF2 
Interface Device Serial Number  
This is equivalent to tag 9F1E. They refer to the same 
parameter.  
an 
8 
30 30 30 30 30 
30 30 30 

NEO Interface Developers Guide    
    55 
Tag  Data Object Name and Description  Format
Length
(Bytes)
Default Value 
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. 
b 
1 
00 
9F53  
Transaction Category Code  
Indicate type of transaction being performed, 
defined by MasterCard and Interac. 
an  
1 
00  
DFEF36 
MTAS(Media Tracking And Status) 
Byte 1: (Leftmost) 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = 
enable) 
              X
CL Media Arrival Reproting 
            X
  CL Media Removal Reproting
X
X
X
X
X
X
    RFU 
Byte 2:  
b8
b7
b6
b5
b4
b3
b2
b1
Notes 
-
-
-
-
-
-
-
X
0 - RF Antenna Off 
1 - RF Antenna On 
-
-
-
-
-
-
X
-
0 - RF Field Deactiated 
1 - RF Field Activated 
-
-
-
-
-
X
-
-
0 - No event 
1 - RF Field Activated 
-
-
-
-
X
-
-
-
0 - No event 
1 - CL Midia Arrival Detected
-
-
-
X
-
-
-
-
0 - No event 
1 - CL Media Removal 
Detected. 
-X
X-
X
-
-
-
-
-
RFU 
Byte 3: RFU  
Byte 2: RFU 
b  4  00 00 00 00 
FFEE1C  UN range 
b 
4 
Not present 
FFEE1D  Masked Output Data Parameter 
 b 5 04 04 2A 0C 31 

NEO Interface Developers Guide    
    56 
Tag  Data Object Name and Description  Format
Length
(Bytes)
Default Value 
FFEE1E 
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  
b 1 01 
[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  Format
Length
Default Value in 
Group 0 
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) 
n1  1  03 
9F59 
Terminal Transaction Information (TTI) 
Provides Terminal Transaction Information for the 
current transaction. (Interac) 
Note: Vendi default values are B4 07 00. 
b  3  DC 80 00 
9F5D 
Terminal Contactless Receipt Required Limit 
Limit Amount used to compare against Transaction 
amount to automatically print a transaction record. 
(Interac) 
n12  6  00 00 00 00 50 00 
Only used for Kiosk III. 

NEO Interface Developers Guide    
    57 
Tag  Description  Format
Length
Default Value in 
Group 0 
9F5E 
Terminal Option Status 
Options supported by the terminal. (Interac) 
Note: Vendi default values are 00 00. 
b  2  E0 00 
9F5F 
Terminal (Reader) Contactless Floor Limit 
Floor limit amount used to compare against 
Transaction amount. (Interac) 
n12  6  00 00 00 00 80 00 
DF26 
Enable/Disable Certificate Revocation list 
0 = disable 
1 = enable (default) 
M/Chip 3.02 can make use of the Certificate 
Revocation list. 
Note:  Vendi default value is not present. 
b  1  01 
DF2A 
Threshold Value for Biased Random Selection 
Value used in terminal risk management for random 
transaction selection. (Interac) 
n12  6  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) 
b 
1  32 
DF2C 
Target Percentage for Random Selection 
Value used in terminal risk management for random 
transaction selection. (Interac) 
b  1  0A 
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. 
b  1  80 
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 
b  1  00 
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. 
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.   
b  <=64  Zero length 
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  1  00 

NEO Interface Developers Guide    
    58 
Tag  Description  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  2  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  1  02 
9F01 
Acquirer ID 
n 
6 
Not present 
9F02 
Amount Authorized (Numeric) 
n12 
6 
00 00 00 00 00 01 
9F03 
Amount Other (Numeric) 
n12 
6 
00 00 00 00 00 00 
9F09 
Application Version Number  
PayPass M/Chip (Value = 00 02) 
D-PAS (Value = 00 02) 
Interac (Value = 00 02) 
Amex (Value = 00 01) 
b  2  00 02 
9F1A 
Terminal Country Code 
Indicates the country code of the terminal, 
represented according to ISO 3166. Default = US 
n3  2  08 40 
9F1B 
Terminal Floor Limit 
Indicates the floor limit in the terminal for the AID(s) 
associated with this group. 
Note: The value is the decimal limit amount given 
in binary represented in Hex in the 
command/response. (100 limit = 10000 decimal = 
2710h). 
Default = $60.00 
b  4  00 00 17 70 
9F1C 
Terminal Identification 
Note:  Vendi default value is not present. 
an  8  00 00 00 00 00 00 
00 00 
9F33 
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 
b  3  00 08 E8 
9F35 
Terminal Type 
Indicates the environment of the terminal, its 
communications capability, and its operational control 
Note: Vendi default value is 25. 
n2  1  22 
9F66 
Terminal Transaction Qualifier (TTQ) 
Determine the type of transaction (MSD, qVSDC, and 
Contactless VSDC) and whether online processing is 
supported.  
b  4 
80 00 40 00 
(27 00 40 80 for 
CUP) 

NEO Interface Developers Guide    
    59 
Tag  Description  Format
Length
Default Value in 
Group 0 
9F6D 
Application Version Number (MagStripe) 
PayPass MagStripe (Value = 00 01) 
Note:  Vendi default value is not present. 
b  2  00 01 
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 
PayPass Tag Equivalent 
2 
DF8119 
b  3  00 08 E8 
DF29 
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 
PayPass Tag Equivalent 
2 
DF8118 
b  3  00 68 E8 
FFE4[1] 
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. 
n2  1  -- 
FFF1[1] 
Terminal Contactless Transaction Limit 
Indicates the terminal limit for this AID for Contactless 
transactions. 
n12  6  00 00 00 01 00 00 

NEO Interface Developers Guide    
    60 
Tag  Description  Format
Length
Default Value in 
Group 0 
FFF4[1] 
Visa Reader Risk Flags 
Byte 1 
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
Status Check  
X
X
X
X
X
X
X
-
RFU 
Byte 2:  
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
Transaction Limit Check 
-
-
-
-
-
-
X
-
CVM Required Limit Test 
-
-
-
-
-
X
-
-
Terminal Floor Limit Check 
-
-
-
-
X
-
-
-
Cash Transaction Reader Risk 
(RR) 
-
-
-
X
-
-
-
-
Cashback Reader Risk (RR) 
-
-
X
-
-
-
-
-
DRL (Dynamic Reader Limits)  
RR 
X
X
-
-
-
-
-
-
RFU 
Byte 3 
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
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. 
b  3  00 06 01 

NEO Interface Developers Guide    
    61 
Tag  Description  Format
Length
Default Value in 
Group 0 
D-PAS Reader Risk Flags: 
Byte 1 
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
RFU 
X
1=Status Check Support 
X
X
X
X
X
X
-
RFU 
Byte 2:  
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
X
X
X
X
X
X
X
X
RFU 
Byte 3 
b
8
b
7
b
6
b
5
b
4
b
3
b
2
b
1
Meaning 
 (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
1 = online cryptogram required for 
zero amount  
X
X
X
X
X
X
X
-
RFU 
b  3 
FFF5[1] 
CVM Required Limit 
Indicates the CVM required limit in the terminal for the 
associated AIDs.  
n12  6  00 00 00 00 80 00 
FFFC[1] 
PayPass Profile (also used for Amex) 
Information in this tag is equivalent to PayPass tag 
DF811B, although it is formatted slightly differently: 
87654321
Bit Meaning   Value 
-------X
MagStripe Only  
0 = normal transaction
1 = MagStripe only 
transaction allowed 
------X-
M/Chip Only 
0 = normal transaction
1 = M/Chip only 
transaction allowed 
-----X--
On Device CVM  0 = not supported 
1 = supported 
XXXXX---
RFU   
The default value is 0x01 – support MagStripe only. 
Note:  Vendi default value is not present.  
b  1  01 
FFFD[1] 
Terminal Action Code (Online) 
Reflect the acquirer-selected action to be taken upon 
analysis of the TVR. 
b  5  F8 50 AC F8 00 
FFFE[1] 
Terminal Action Code (Default) 
Reflect the acquirer-selected action to be taken upon 
analysis of the TVR. 
b  5  F8 50 AC A0 00 
FFFF[1] 
Terminal Action Code (Denial) 
Reflect the acquirer-selected action to be taken upon 
analysis of the TVR. 
b  5  00 00 00 00 00 

NEO Interface Developers Guide    
    62 
Tag  Description  Format
Length
Default Value in 
Group 0 
FFF0[1] 
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
-
-
-
-
-
-
-
X
RFU (Deprecated) 
-
-
-
-
-
-
X
-
1 = Visa CVN17 supported 
0 = Visa CVN17 disabled 
-
-
-
-
-
X
-
-
1 = Remove Track 1 data in 
Visa response 
-
-
-
-
X
-
-
-
1 = Remove Track 2 data in 
Visa response 
X
X
X
X
-
-
-
-
RFU 
Byte 2: RFU 
Byte 3: RFU 
b 3 02 00 00 
9F5A  
Terminal Transaction Type (Interac)  
• 0x00 = Purchase  
• 0x01 = Refund 
b  
1 
00 
FFEE1D
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". 
b  5 04 04 2A 0C 31 
9F41 
Counter maintained by the terminal that is 
incremented by one for each transaction 
Note:  Vendi default value is not present. 
n 4  4  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. 
n1  1  Not Present 

NEO Interface Developers Guide    
    63 
Tag  Description  Format
Length
Default Value in 
Group 0 
DFEF2F
CUP Risk and Configuration Flag 
Byte 1  
b8
b7
b6
b5
b4
b3
b2
b1
-
-
-
-
-
-
-
X
Status Check 
-
-
-
-
-
-
X
-
Transaction Limit Check 
-
-
-
-
-
X
-
-
CVM required Limit Check 
-
-
-
-
X
-
-
-
Terminal Floor Limit Check 
-
-
-
X
-
-
-
-
Zero Amount Check 
X
X
X
-
-
-
-
-
RFU 
Byte 2:  
b8
b7
b6
b5
b4
b3
b2
b1
-
-
-
-
-
-
-
X
RFU 
-
-
-
-
-
-
X
-
Exception File Support 
-
-
-
-
X
X
-
-
RFU 
-
-
-
X
-
-
-
-
Online Authentication 
Support 
-
-
X
-
-
-
-
-
RFU 
-
X
-
-
-
-
-
-
UPI Support 
X
-
-
-
-
-
-
-
Cardholder Credential 
Support 
Byte 3:  
b8
b7
b6
b5
b4
b3
b2
b1
-
-
-
-
-
-
-
X
Encrypt Keyboard Support 
-
-
-
-
-
-
X
-
Reversal Support 
-
-
-
-
-
X
-
-
qUICS Online ODA Fail 
Decision: 
1 = Go Online 
0 = Decline 
X
X
X
X
X
-
-
-
RFU 
Byte 4: RFU 
b  4  Not Present 
DFEE3F
Default TDOL  b  var  Not Present 
[1]
 These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the 
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with 
other proprietary TLVs.  
[2]
 Not used by M/Chip 3.0 because M/Chip 3.0 redefines this as a card tag that passes Application Capability Information. 
[3] 
These objects only work on the Vendi. 
[4] 
These objects only work on the ViVOpay graphic reader. 

NEO Interface Developers Guide    
    64 
PayPass Group Configuration TLVs  
If a PayPass AID will be assigned to a group, then the table in this section should 
be used to configure the group.  The Set Configurable Group command should 
be used to set the TLVs in this section. 
The following PayPass Group TLVs should not be configured for Group 0.  The default PayPass 
group is Group 1.  That is, when the reader is configured from the factory, the PayPass 
System AIDs will be associated with Group 1. 
If there are tags in a PayPass group that should be set, they must all be set explicitly, since 
the absent values are not filled in with Group 0 or Group 1 defaults. 
PayPass Group tags are instantiated a little differently than other groups.  
Group 0 is never used as a default. Refer to the section on PayPass Default 
Group for an explanation of how the tag database is instantiated for PayPass. 
Table 21: PayPass Default Group Configuration TLVs 
Tag  Description  Format
Length  Default Value in 
Group 1 
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 
b  <=64  Not present 
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. 
n6  3  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  1  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  2  08 40 

NEO Interface Developers Guide    
    65 
Tag  Description  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  1  02 
9F01  Acquirer ID  n  6  Not present 
9F02 
Amount Authorized (Numeric) 
Note:  Vendi default value is not present. 
n12  6  00 00 00 00 00 01
9F03  Amount Other (Numeric)  n12  6  00 00 00 00 00 00
9F09 
Application Version Number (M/Chip) 
PayPass M/Chip 3.0(Value = 00 02) 
Amex (Value = 00 01) 
b  2  00 02 
9F15 
Merchant Category Code 
Classifies the type of business being done by the 
merchant, see ISO 8583:1993. 
n4  2  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  2  08 40 
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. 
b  4  00 00 17 70 
9F1C 
Terminal Identification 
Note: Vendi default values are 00 00 00 00 00 
00 00 00. 
an  8  zero length 
9F1E 
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.
an  8  30 30 30 30 30 30 
30 30 
9F21 
Transaction Time (HHMMSS) 
Indicates local time that the transaction was 
authorized.  Default = use RTC. 
n6  3  FF FF FF 
9F33 
Terminal Capabilities 
Indicates the card data input, CVM, and security 
capabilities of the terminal.   
This tag (9F33) only configures bytes 1 and 3 of the 
terminal capabilities. Byte 2 of the terminal 
capabilities actually comes from DF28 or DF29 
during the transaction. Refer to tags DF28 and DF29 
for details. 
Note: Byte 1 of 9F33 is the same as DF8117 Card 
Data Inpput Capability defined in PayPass 3.0.2 and 
Byte 3 of 9F33 is the same as DF811F Security 
Capability. 
b  3  00 08 E8 

NEO Interface Developers Guide    
    66 
Tag  Description  Format
Length  Default Value in 
Group 1 
9F35 
Terminal Type 
Indicates the environment of the terminal, its 
communications capability, and its operational 
control 
Note: Vendi default value is 25. 
n2  1  22 
9F40 
Additional Terminal Capabilities 
Indicates the data input and output capabilities of 
the terminal 
Note: Vendi default values are 60 00 00 10 01. 
b  5  60 00 00 30 00 
9F4E 
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  Not present 
9F53 
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. 
an  1  01 
9F66 
Terminal Transaction Qualifier (TTQ) 
Determine the type of transaction (MSD, qVSDC, 
and Contactless VSDC) and whether online 
processing is supported. 
b  4  Not present 
9F6D 
Application Version Number (MagStripe) 
PayPass MagStripe (Value = 00 01) 
b  2  00 01 
9F6E 
Third Party Data 
Not present 
9F7C  Merchant Custom Data b  <=20 
00 00 00 00 00 00 
00 00 00 00 00 00 
00 00 00 00 00 00 
00 00 
9F7E 
Mobile Support Indication. (PayPass only)  
Note: Vendi default value is 00.  b  1  Zero length 
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. 
DF28 Byte 
PayPass Tag Equivalent 
2 
DF8119 
b  3  00 08 E8 

NEO Interface Developers Guide    
    67 
Tag  Description  Format
Length  Default Value in 
Group 1 
DF29 
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 
2 
DF8118 
b  3  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  6  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  6  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”. 
b  3  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. 
b  2  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. 
b  1  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. 
b  1  10 
DF8124
Reader Contactless Transaction Limit, No On-
Device CVM 
When there is no On-Device CVM available (e.g. 
with a phone), then this is the transaction limit 
that will be used.  Default = $300.00 
n12  6  00 00 00 03 00 00

NEO Interface Developers Guide    
    68 
Tag  Description  Format
Length  Default Value in 
Group 1 
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. 
Note: Vendi default values are 00 00 00 03 00 
00. KioskIII default values are 00 00 00 05 00 
00. 
n12  6  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. 
b  1  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  3  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. 
b  1  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’. 
B  Var  No Present 
FF69 
Proprietary Tag List 
Proprietary tags that are not otherwise configured 
may be configured by encapsulating them in this 
tag list. 
b  <=32  Not present 
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 1
st
 TLV in Data Field. 
n2  1  -- 

NEO Interface Developers Guide    
    69 
Tag  Description  Format
Length  Default Value in 
Group 1 
FFF1[1]
Terminal Contactless Transaction Limit 
Indicates the terminal limit for this AID for 
Contactless transactions. 
n12  6  00 00 00 01 00 00
FFF5[1]
CVM Required Limit 
Indicates the CVM required limit in the terminal 
for the associated AIDs. Default = $80.00 
This is equivalent to MasterCard tag DF8126. 
n12  6  00 00 00 00 80 00
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. 
b  1  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 [3] 
Note:  Vendi default value is not present. 
b  1  00 
FFFC[1]
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  
0 = normal transaction 
1 = MagStripe only 
      transactions allowed
------X-  M/Chip Only
0 = normal transaction 
1 = M/Chip only 
      Transactions allowed
-----X--  On Device 
CVM 
0 = not supported 
1 = supported 
XXXXX---  RFU   
The default value is 0x01 – support MagStripe 
only. 
b  1  01 

NEO Interface Developers Guide    
    70 
Tag  Description  Format
Length  Default Value in 
Group 1 
FFFD[1]
Terminal Action Code (Online) 
Reflect the acquirer-selected action to be taken 
upon analysis of the TVR.   
This is equivalent to MasterCard tag DF8122. 
b  5  F8 50 AC F8 00 
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. 
b  5  F8 50 AC A0 00 
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. 
b  5  00 00 00 00 00 
FFF2 
Interface Device Serial Number  
This is equivalent to tag 9F1E. They refer to the 
same parameter.  
an 
8 
30 30 30 30 30 30 
30 30 
[1]
 These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the 
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with 
other proprietary TLVs.  
[2] 
These objects only work on the ViVOpay graphic reader. 
[3] 
These objects only work on the Vendi 
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 hard-
coded 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.  

NEO Interface Developers Guide    
    71 
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 
Tag  Description  Format
Length 
Hard-Coded 
Default Value in 
PayPass Kernel 
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  1  00 
9F09 
Application Version Number (Reader) 
PayPass M/Chip 3.0 
b  2  00 02 
9F1A 
Terminal Country Code 
Indicates the country code of the terminal, 
represented according to ISO 3166. 
n3  2  00 00 
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. 
b  4  00 00 17 70 
9F33 
Terminal Capabilities 
Indicates the card data input, CVM, and security 
capabilities of the terminal.   
This tag (9F33) only configures bytes 1 and 3 of the 
terminal capabilities. Byte 2 of the terminal 
capabilities actually comes from DF28 or DF29 
during the transaction. Refer to tags DF28 and DF29 
for details. 
Note: Byte 1 of 9F33 is the same as DF8117 Card 
Data Input Capability defined in PayPass 3.0.2 and 
Byte 3 of 9F33 is the same as DF811F Security 
Capability. 
b  3  00 00 00 
9F35 
Terminal Type 
Indicates the environment of the terminal, its 
communications capability, and its operational 
control 
n2  1  00 
9F40 
Additional Terminal Capabilities 
Indicates the data input and output capabilities of 
the terminal 
b  5  00 00 00 00 00 
9F6D 
Application Version Number (MagStripe) 
PayPass MagStripe (Value = 00 01)  b  2  00 01 

NEO Interface Developers Guide    
    72 
Tag  Description  Format
Length 
Hard-Coded 
Default Value in 
PayPass Kernel 
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. 
DF28 Byte 
PayPass Tag Equivalent 
2 
DF8119 
b  3  00 00 E8 
DF29 
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 
2 
DF8118 
b  3  00 00 E8 
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”. 
b  3  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. 
b  2  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. 
b  1  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. 
b  1  F0 
DF8124
Reader Contactless Transaction Limit, No On-
Device CVM 
When there is no On-Device CVM available (e.g. 
with a phone), then this is the transaction limit 
that will be used.   
n12  6  00 00 00 00 00 00

NEO Interface Developers Guide    
    73 
Tag  Description  Format
Length 
Hard-Coded 
Default Value in 
PayPass Kernel 
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. 
n12  6  00 00 00 00 00 00
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. 
b  1  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  3  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. 
b  1  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’. 
b  Var. 
See next table 
‘Phone Message 
Table Hard-
Coded Default 
Value in Kernel’.
FFF5[1]
CVM Required Limit 
Indicates the CVM required limit in the terminal 
for the associated AIDs.  
This is equivalent to MasterCard tag DF8126. 
n12  6  00 00 00 00 00 00

NEO Interface Developers Guide    
    74 
Tag  Description  Format
Length 
Hard-Coded 
Default Value in 
PayPass Kernel 
FFFC[1]
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  
0 = normal transaction 
1 = MagStripe only 
      transactions allowed
------X-  M/Chip Only
0 = normal transaction 
1 = M/Chip only 
      Transactions allowed
-----X--  On Device 
CVM 
0 = not supported 
1 = supported 
XXXXX---  RFU   
b  1  00 
FFFD[1]
Terminal Action Code (Online) 
Reflect the acquirer-selected action to be taken 
upon analysis of the TVR.   
This is equivalent to MasterCard tag DF8122. 
b  5  CC 00 00 00 00 
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. 
b  5  CC 00 00 00 00 
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. 
b  5  00 00 00 00 00 
[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) 

NEO Interface Developers Guide    
    75 
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  Format
Length  Default Value in 
Group 2 
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)  
Note: Kiosk III default value is “09 01” 
n3  2  08 40 

NEO Interface Developers Guide    
    76 
Tag  Description  Format
Length  Default Value in 
Group 2 
9A 
Transaction Date (YYMMDD)  
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” 
n6  3 
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  1  00 
9F03  Amount Other (Numeric) 
n12 
6 
00 00 00 00 00 
00  
9F09 
Application Version Number  
PayPass M/Chip (Value = 00 02)  
Amex (Value = 00 01) 
Note: Kiosk III default value is 00 02 
b 
2 
00 01 
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” 
n3 
2 
08 40 
9F1B 
Terminal Floor Limit 
ndicates the floor limit in the terminal for the 
AID(s) associated with this group.  
Note: The value is the decimal limit amount given in 
binary represented in Hex in the 
command/response. (60 limit = 6000 decimal = 
1770h). 
b 
4 
00 00 17 70 
9F21 
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. 
Note: Kiosk III default value is not 
present” 
n6 
3 
FF FF FF 

NEO Interface Developers Guide    
    77 
Tag  Description  Format
Length  Default Value in 
Group 2 
9F33 
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 
Note: Kiosk III default value is “00 00 A8” 
b 
3 
00 08 E8 
9F35 
Terminal Type  
Indicates the environment of the terminal, its 
communications capability, and its operational 
control 
Environment 
Operational Control  
Provided By: 
Financial 
Institution 
Merchant 
Cardholder 
Attended 
 Online only
Offline with 
online 
capability 
 Offline only 
 11 
 12 
 13 
21 
 22 
 23 
Unattended 
 Online only
 Offl
ine with 
online 
capability 
 Offline only
 14 
 15 
 16 
 24 
 25 
 26 
 34 
 35 
 36 
Note: Kiosk III default value is 22 
n2 
1 
25 
9F6E 
Terminal Transaction Capabilities 
Note: Kiosk III default value is “not 
present” 
b 
4 
D8 E0 00 00 
DF51 
ExpressPay Terminal Capabilities  
Used to create the ExpressPay Terminal 
Capabilities TLV, 9F6D for Amex ExpressPay 
applications. 
Note: Kiosk III default value is 80 
b  1  C0 
FFEE1C
UN range 
Note: Kiosk III default value is “not 
present” 
b  4  00 00 00 3C 

NEO Interface Developers Guide    
    78 
Tag  Description  Format
Length  Default Value in 
Group 2 
FFF1[1]
Terminal Contactless Transaction Limit  
Indicates the terminal limit for this AID for 
Contactless transactions. 
Note: Kiosk III default value is 00 00 00 01 
00 00 
n12 
6 
00 00 00 01 50 
00 
FFF5[1]
CVM Required Limit  
Indicates the CVM required limit in the terminal 
for the associated AIDs. 
Note: Kiosk III default value is 00 00 00 00 
80 00 
n12 
6 
00 00 00 00 50 
00 
FFFD[1]
Terminal Action Code (Online) 
Reflect the acquirer-selected action to be taken 
upon analysis of the TVR.   
Note: Kiosk III default value is F8 50 AC F8 
00 
b 
5 
00 00 00 00 00 
FFFE[1]
Terminal Action Code (Default) 
Reflect the acquirer-selected action to be taken 
upon analysis of the TVR. 
Note: KioskIII default value is F8 50 AC A0 
00 
b 
5 
00 00 00 00 00 
FFFF[1]
Terminal Action Code (Denial) 
Reflect the acquirer-selected action to be taken 
upon analysis of the TVR. 
b 
5 
00 00 00 00 00 
[1]
 These objects use proprietary tags. The use of these tags should be restricted to the serial interface. Once the 
Reader has returned an OK Response Frame, the Terminal application should dispose of the tags to avoid conflicts with 
other proprietary TLVs.  
[2] 
These objects only work on the ViVOpay graphic reader. 
[3] 
These objects only work on the Vendi
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. 

NEO Interface Developers Guide    
    79 
Table 25: AID Configuration TLVs 
Tag 
Data 
Object 
Name 
Usage
Description  Forma
t  Length
9F06 
Application 
Identifier 
(AID)  
MAND 
Identifies the application as described in 
ISO/IEC 7816-5.  
This must be the 2nd TLV in the data field. 
b  5 – 16 
DF7C  Auto-Switch  OPT 
Automatically switch to Pass-Through Mode 
when PICC is unknown. 
00h = disabled (default) 
01h = enabled 
b  1 
FFE0[1] 
Registered 
Application 
Provider 
Identifier 
(RID) 
Sys = 
NEVER 
User = 
OPT 
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.  b  5 
FFE1[1] 
Partial 
Selection 
Allowed 
OPT 
(Visa 
MAND) 
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. 
b  1 
FFE2[1] Application 
Flow 
Sys = 
NEVER 
User = 
MAND 
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 
b  1 
FFE3  Selection 
Features 
OPT 
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 
Selection Feature 
-------x
Deprecated / RFU 
------x-
Extended Selection  
Supported 
-----x--
Cardholder Confirmation Not 
Supported 
----x---
API (application priority 
indicator) required 
---x----
Invalid AID Allowed 
--x-----
Duplicate AID Allowed 
-x------
Enable Kernel ID 
x-------
RFU 
b  1 

NEO Interface Developers Guide    
    80 
FFE4[1] TLV Group 
Number  MAND 
The TLV Group number that contains the 
characteristics for this AID 
This must be the 1st TLV in Data Field. 
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).   
For MasterCard PayPass, this tag may 
NOT be Group 0
. 
n2  1 
FFE5[1] Maximum AID 
Length  DEP 
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. 
b  1 
FFE6[1]  AID Disabled  OPT 
Used to disable a System AID (has no effect 
on a User AID). 80h = disabled and 00h = 
enabled 
b  1 
FFE8  Exclude from 
Processing  OPT 
This byte is formatted as follows: 
87654321
Meaning (0 = disable, 1 = 
enable) 
 -------x
Exclude from PPSE processing.  
1 = This AID will not be added to 
the candidate list during PPSE. 
 ------x-
Exclude from Trial and Error 
processing.  1 = This AID may 
not be added to the candidate 
list during Trial and Error 
(sometime referred to as “List 
of AIDs” processing. 
 xxxxxx--
RFU 
b  1 
FFE9  Transaction 
Type List  OPT 
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 
Description 
1- Kernel ID 
Kernel ID as defined by 
EMV first byte only. 
2- 
Transaction 
Type 
Supported transaction 
types may be: 
Payment(00), Cash(01), 
Cashback(09) or 
Refund(20) 
3- Group 
Number 
The group that should 
be used for this 
transaction and Kernel 
ID. 
Group 0 may not be used in this list.   
b  Variable 
<= 24 

NEO Interface Developers Guide    
    81 
FFEA 
Configurable 
Kernel 
Identifier 
OPT 
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: 
Card Application 
Default KID 
MasterCard 
2 
Visa 
3 
American Express 
4 
JCB Quickpay 
5 
All others 
0 
This tag is equivalent to MasterCard tag 
DF810C. 
b  1 
DFEF2C
Terminal AID 
List  OPT 
Tells the reader to allow Terminal AID List 
support during the initial select process. 01 
= Allowed, 00 = Disabled  b  1 
Setting the FFE6 tag may disable an AID.  However, the preferred method to disable an AID is 
to issue a “Delete Configurable AID” command (04-04).  For a system AID, the command will 
set the disable bit in FFE6. 
The following table lists the System AIDs and the default values for their TLVs 
Table 26: System AID Default Configuration TLVs 
Name  Tag  Length 
(Hex) 
Value (Hex)  Card Application 
Group  
AID 
Partial Selection 
Application Flow 
Max AID Length 
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
01 
06 
01 
01 
01 
02 
A0 00 00 00 25 01 
01 
02 
10 
American Express
Group  
AID 
Partial Selection 
Application Flow 
Max AID Length 
Selection Features
Transaction Type 
List 
Kernel ID 
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
FF E3 
FF E9 
FF EA 
01 
07 
01 
01 
01 
01 
0C 
01 
01 
A0 00 00 00 04 10 10 
01 
03 
10 
74 
02 00 01  
02 20 01  
02 01 01  
02 09 01 
02 
MasterCard 
PayPass 
Application 

NEO Interface Developers Guide    
    82 
Name  Tag  Length 
(Hex) 
Value (Hex)  Card Application 
Group  
AID 
Partial Selection 
Application Flow 
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 00 65 90 01 
01 
0E 
08 
14 
Note: Vendi default value, 
FF E6 = 80 
JCB (QUICPay) 
Application 
Group  
AID 
Partial Selection 
Application Flow 
Max AID Length 
Selection Features
Transaction Type 
List 
Kernel ID 
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
FF E3 
FF E9 
FF EA 
01 
07 
01 
01 
01 
01 
0C 
01 
01 
A0 00 00 00 04 30 60  
01 
03 
10 
74 
02 00 01  
02 20 01  
02 01 01  
02 09 01 
02 
MasterCard 
PayPass 
Application 
Group  
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 00 03 10 10  
06 
01 
10 
14 
Visa Application 
Group  
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00  
A0 00 00 00 03 20 10  
06 
01 
10  
14 
Visa Application 
(Visa Electron) 
Group  
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 00 03 30 10 
06 
01 
10 
14 
Visa Application 
(Visa Interlink) 

NEO Interface Developers Guide    
    83 
Name  Tag  Length 
(Hex) 
Value (Hex)  Card Application 
Group  
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 00 03 80 10  
06 
01 
10 
14 
Visa Application 
(Visa Plus) 
Group  
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 00 65 10 10  
06 
01 
10 
14 
Note: Vendi default value,  
FF E2 = FF 
Visa Application  
(J/Speedy) 
Group 
AID 
Application Flow 
Partial Selection  
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
FF E3 
01 
0A 
01 
01 
01 
01 
00 
A0 00 00 00 02 30 60 D1 58 00
10 
01 
10 
74 
Note: Vendi default value, 
FF E2 = FF 
MXI Application 
Group 
AID 
Application Flow 
Partial Selection  
Max AID Length 
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
01 
07 
01 
01 
01 
00  
A0 00 00 03 24 10 10  
0D 
01 
10 
Discover 
(ZIP)Application 
Group 
AID 
Application Flow 
Partial Selection  
Max AID Length 
FF E4 
9F 06 
FF E2 
FF E1 
FF E5 
01 
07 
01 
01 
01 
00 
A0 00 00 01 52 30 10 
0D 
01 
10 
Discover (D-PAS) 
Application 
Group 
AID 
Partial selection 
Application Flow 
Max AID Length 
Selection Features
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
FF E3 
01 
07 
01 
01 
01 
01 
00 
A0 00 00 04 17 01 01 
01 
0F 
08 
08 
STAR Application

NEO Interface Developers Guide    
    84 
Name  Tag  Length 
(Hex) 
Value (Hex)  Card Application 
Group 
AID 
Partial selection 
Application Flow 
Max AID Length 
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
01 
07 
01 
01 
01 
00 
A0 00 00 02 77 10 10 
01 
15 
10 
Note: Vendi default value, 
FF E2 = 15 
Interac 
Application 
Group 
AID 
Partial selection 
Application Flow 
Max AID Length 
FF E4 
9F 06 
FF E1 
FF E2 
FF E5 
01 
07 
01 
01 
01 
00 
A0 00 00 04 76 D0 00 
01 
17 
10 
SmartTap 

NEO Interface Developers Guide    
    85 
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 
Feature Name 
Description 
-------x 
Deprecated/RFU 
Reserved for Future use. 
------x- 
Extended Selection 
Supported 
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 
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.    
----x--- 
API Required 
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. 
---x---- 
Invalid AID Allowed 
0 = any invalid AID will cause this AID to terminate the 
transaction. 
1 = any invalid AID will be ignored as related to this AID.    
--x----- 
Duplicate AID Allowed  
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. 
-x------ 
Enable Kernel ID 
1 = allow the evaluation of the Kernel ID. 
0 = if a Kernel ID is provided by the card it is ignored.  
x------- 
RFU 
Reserved for Future Use. 

NEO Interface Developers Guide    
    86 
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 
Value 
Description 
-------x 
Partial selection is 
allowed 
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 
Process to be Excluded 
Description 
-------x 
Exclude from PPSE 
Processing 
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.
------x- 
Exclude from Trial & 
Error Processing 
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. 
xxxxxx-- 
RFU 
 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. 

NEO Interface Developers Guide    
    87 
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 
Value 
Description 
-------x 
Terminal AID List is 
allowed 
0 = Terminal will not send out terminal AID data 
1 = Terminal will send out terminal AID data 
Note: The Terminal AIDs can be modified by 04-02 Load AID 
command.
xxxxxxx- 
RFU 
 Reserved for Future Use 
NEO Interface Developers Guide    
    88 
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 hard-
coded 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. 

NEO Interface Developers Guide    
    89 
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 
Name 
Description 
DF811C 
Max Lifetime of Torn 
Transaction Record 
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 
NEO Interface Developers Guide    
    90 
 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) 

NEO Interface Developers Guide    
    91 
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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type 
Command
Sub-
Command 
Data1  Data2 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech\0 
‘C’ 
17h 
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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech\0 
‘C’ 
17h 
CDh 
00 
00 

NEO Interface Developers Guide    
    92 
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 
OK 
Examples: 
Bit 0 = Track 1  Track = 00h => No Track Data 
Bit 1 = Track 2  Track = 01h => Track 1 Data Only 
Bit 3 = Track 3  Track = 02h => Track 2 Data Only 
  Track = 03h => Track 1 & Track 2 Data etc. 
Bit 7 = Card Type  Card Type = 0 => Contactless Card 
  Card Type = 1 => Swiped Magnetic Stripe 
Failed 
Error Code = 01h      Card Removed        
Error Code = 02h      Communication Error 
Error Code = 03h      Protocol Error 
Error Code = 04h      Multiple Cards Detected 
Error Code = 05h      Card Not Accepted 
Error Code = 06h      Bad Data 
Error Code = FFh      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 

NEO Interface Developers Guide    
    93 
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 
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’ 
17h 
 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    Track = 00h => No Track Data 
Bit 1 = Track 2    Track = 01h => Track 1 Data Only 
Bit 3 = Track 3    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  

NEO Interface Developers Guide    
    94 
30 36 32 36 30 30 34 34 35 30 30 30 30 30 37 38  
36 32 30 39 33 33 00 35 33 32 35 33 35 30 30 30  
30 36 32 33 35 36 37 3D 30 35 30 38 31 30 31 39  
34 34 35 39 39 37 38 36 30 36 32 33 DF 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 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 30 36 32 36 30 30 34 34 35 30  
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 35 36 37  
3D 30 35 30 38 31 30 31 39 34 34 35 39 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
Sub-
Command 
Data1  Data2 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech\0 
‘C’ 
29h 
00h 
00 
00 
Response Frame from the Reader (ACK 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’ 
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. 

NEO Interface Developers Guide    
    95 
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 <RID, Key Index> 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 

NEO Interface Developers Guide    
    96 
(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 <RID, 
Key Index> 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.  

NEO Interface Developers Guide    
    97 
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 
Final ACK/NACK Frame 
ViVOpay  
PC / Peripheral 
Device 
Set Key in 
Crypto 
Data Frame 1 
ACK Frame 
Set CA Public Key Cmd 
Data Frame 2 
ACK Frame 

NEO Interface Developers Guide    
    98 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘C’ 
24h 
01h 
DataLen2 
DataLen 
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 
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 
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 
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
Byte 
10+(n+1) 
Frame Tag
Frame Type
Data 0  Data 1  …  Data (n-1) 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘D’ 
Data 
Data 
… 
Data 
Where n = length of the data field. 

NEO Interface Developers Guide    
    99 
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  Name  Length 
(bytes)  Format
Notes 
0-4  RID  5   Binary
Registered Identifier.  
Necessary for Unique Identification 
5  CaPublicKey Index1  1  Binary
Index of the CA Public Key for this RID. 
Necessary for Unique Identification 
6  CaHashAlgoIndicator1  1  Binary
CA Hash Algorithm to produce Hash-Result 
in digital signature scheme. Valid Values: 
01h: SHA-1 
7  CaPublicKeyAlgoIndicator1  1  Binary
Digital Signature Algorithm to be used with 
CA Public Key. Valid Values: 
01h: RSA 
8-27 
CaPublicKeyChecksum1 
20 
Binary 
CA Public Key Checksum 
28-31  CaPublicKeyExponent1 
4 
(PICC-
based 
Length may 
be 1 or 3)
Binary
CA Public Key Exponent.  
Value can be 3 (Len=1 Byte) or 
216+1=65537=010001h (Len=3 Bytes). 
We consider it as a 32-bit (4-Byte) Big-
Endian number for the Serial Interface and 
C
rypto Storage. The PICC may consider it as 
a 1-Byte or 3-byte number. 
32,33  CaPublicKeyModulusLen  2  Binary
CA Public Key (Modulus) Length stored as a 
Big-Endian number. Aka N
CA
34  CaPublicKeyModulus1 
Variable 
(max 256) 
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 

NEO Interface Developers Guide    
    100 
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
Byte 
10+(p+1) 
Frame Tag
Frame Type
Data 0  Data 1  …  Data (p-1) 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘D’ 
Data 
Data 
… 
Data 
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 <RID, Key Index> 
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 

NEO Interface Developers Guide    
    101 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘C’ 
24h 
02h 
00 
DataLen=6 
ACK Frame from Reader (or NACK) 
ACK Frame 
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 Frame 
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 
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 
Frame Tag
Frame Type
Data 0  …  Data 4  Data 5 
CRC  
(LSB) 
CRC   
(MSB) 
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) 

NEO Interface Developers Guide    
    102 
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 
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 <RID, Key 
Index> 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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech\0 
‘C’ 
24h 
03h 
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’ 
24h 
Status=OK 
00 
00 
Status:  OK (or see Status Code Protocol 1) 
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 

NEO Interface Developers Guide    
    103 
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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type  Command
Sub-
Command
Data1  Data2 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech\0
‘C’  17h  03h 
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. 

NEO Interface Developers Guide    
    104 
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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type 
Command
Sub-
Command 
Data1  Data2 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘C’ 
25h 
01h 
HH 
MM 
HH:  Hour    (2-digit, BCD, Range 00-23) 
MM:  Minutes (2-digit, BCD, Range 00-59) 
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 
Status:  OK (or see Status Code Protocol 1) 
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’ 
25h 
FAILED 
Error Code 
Unused 
Error Code: See RTC Management Error Codes Table 

NEO Interface Developers Guide    
    105 
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 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Frame Tag
Frame 
Type 
Command
Sub-
Command 
Data1  Data2 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘C’ 
25h 
02h 
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 
HH 
MM 
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 
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’ 
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
Sub-
Command 
Data1  Data2 
CRC  
(LSB) 
CRC   
(MSB) 
ViVOtech\0 
‘C’ 
25h 
03h 
00 
DataLen=4 

NEO Interface Developers Guide    
    106 
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 
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 
Status:  OK (or see Status Code Protocol 1) 
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’ 
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 
Frame Tag
Frame Type
Data 0  Data 1  Data 2  Data 3 
CRC  
(LSB) 
CRC   
(MSB) 
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 
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 
Status:  OK (or see Status Code Protocol 1) 

NEO Interface Developers Guide    
    107 
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’ 
25h 
FAILED 
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
Sub-
Command
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 
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’ 
25h 
FAILED 
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   

NEO Interface Developers Guide    
    108 
(MSB) 
(LSB) 
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) 

NEO Interface Developers Guide    
    109 
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  Sub-
Command 
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 

NEO Interface Developers Guide    
    110 
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
Sub-
Command
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. 

NEO Interface Developers Guide    
    111 
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
Sub-
Command
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 
Length 
(bytes) 
Description 
LCD Message 
Index 
1 
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. 
Beep Indicator  1 
00h: No beep 
01h: Single beep 
02h: Double beep 
03h: Three short beeps 
04h: Four short beeps 
05h: One long beep of 200 ms 
06h: One long beep of 400 ms 
07h: One long beep of 600 ms  
08h: One long beep of 800 ms 
LED Number  1 
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  1 
00h: LED Off 
01h: LED On 

NEO Interface Developers Guide    
    112 
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
Byte 15 
Byte 16
Byte 
17 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
Byte1 
Data 
Byte2 
CRC     
(LSB) 
CRC    
(MSB)
ViVOtech2\0
01h  05h  00h  02h 
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 

NEO Interface Developers Guide    
    113 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
01h 
05h 
00h 
00h 
Response Frame (Get Source) 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Byte 17 
Header Tag 
& Protocol 
Version 
Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data Byte1 
Data Byte2 
 CRC   
(MSB) 
CRC  
(LSB) 
ViVOtech2\0
01h 
See Status 
Code Table
00h  02h 
Bitmap for 
RTC/LCD/Buzzer/LED
Data Byte1 Definition: 
Bit7 
Bit6 
Bit5 
Bit4 
Bit3 
Bit2 
Bit1 
Bit0 
Reserved 
Reserved 
RTC 
LCD 
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 
Bit5 
Bit4 
Bit3 
Bit2 
Bit1 
Bit0 
Reserved 
Reserved 
Power LED 
Transaction LED 

NEO Interface Developers Guide    
    114 
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. 

NEO Interface Developers Guide    
    115 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0 
04h 
09h 
00h 
00h 
87h 
30h 
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 
04 
00h 
00h 
00h 
AEh 
16h 
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) 

NEO Interface Developers Guide    
    116 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0 
04h 
0Ah 
00h 
00h 
F7h 
46h 
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 
04 
00h 
00h 
00h 
AEh 
16h 
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. 

NEO Interface Developers Guide    
    117 
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
Sub-
Command
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 
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     
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). 

NEO Interface Developers Guide    
    118 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
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

NEO Interface Developers Guide    
    119 
Get USB Boot Loader Version (29-04) 
Get the version of the USB Boot Loader.  
Command Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
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
Get Contact EMV L2 Kernel Version (29-06) 
This function can get contact EMV L2 kernel library major 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
29h  06h  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 
    See Response 
Frame      
Response Frame Example: “EMV Common L2 V1.10” 

NEO Interface Developers Guide    
    120 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
29h  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  29h  See Status 
Code Table
    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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
29h  08h  00h  00h       

NEO Interface Developers Guide    
    121 
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 
    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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
29h  09h  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 
    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. 

NEO Interface Developers Guide    
    122 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
29h  17h  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 
    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
Sub-
Command
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 

NEO Interface Developers Guide    
    123 
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
Sub-
Command
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 

NEO Interface Developers Guide    
    124 
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
Sub-
Command
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. 

NEO Interface Developers Guide    
    125 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0 
32h 
02h 
00h 
01h 
Cable Type 
Cable Type 
Value 
Long cable (default) 
0 
Short cable 
1 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC (MSB)
ViVOtech2\0 
32h 
01h 
00h 
00h 

NEO Interface Developers Guide    
    126 
Response Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0 
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 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 14+n 
Byte 15+n 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC  (LSB)
CRC (MSB)
ViVOtech2\
0 
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 
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  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 non-
volatile memory. If a serial number has not been set in the reader then this command fails with 

NEO Interface Developers Guide    
    127 
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  Sub-
Command 
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  Byte 11  Byte 12  Byte 13  Byte 14-
Byte 18  Byte 19  Byte 20 
Header Tag & 
Protocol  Command  Sub 
Command 
Length 
MSB 
Length 
LSB 
Data 
1 Bytes 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2/0  14h  01h  00h  01h  See below  Varies  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. 

NEO Interface Developers Guide    
    128 
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  Byte 10  Byte 11
Byte 12
Byte 13
Byte 14- 
Byte 14+n-1
Byte 14+n
Byte 14+n+1
Header Tag 
& Protocol 
Command
Status  Length
MSB 
Length
LSB 
Data 
1 Bytes 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2/0 
14h 
Varies 
00h 
00h 
NA 
Varies 
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. 

NEO Interface Developers Guide    
    129 
 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
Sub-
Command
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 
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     

NEO Interface Developers Guide    
    130 
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
Sub-
Command
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     

NEO Interface Developers Guide    
    131 
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
Sub-
Command
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  Application Identifier 
(AID) – terminal  MANDATORY 
Identifies the application as 
described in ISO/IEC 7816-5.  
Note: This is the ONLY TLV in 
this command. 
b  5 – 16 
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. 

NEO Interface Developers Guide    
    132 
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
Sub-
Command
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  MAND 
The group that contains the properties for this AID 
Note: This must be the ONLY TLV in Data Field. 
n2
1 
[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. 

NEO Interface Developers Guide    
    133 
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
Sub-
Command
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  Application Identifier 
(AID) – terminal  MANDATORY 
Identifies the application as 
described in ISO/IEC 7816-5. 
Note: This is the ONLY TLV in 
this command. 
b  5 – 16 
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  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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
04h  05h     
TLV Data 
Objects     

NEO Interface Developers Guide    
    134 
It is MANDATORY to include the Group Number TLV of the Group the user wishes to delete. No 
other TLVs should be included. 
FFE4[1] Group 
Number  MAND 
The group that contains the properties for AID 
Note: This must be the ONLY TLV in Data Field. n2  1 
[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 
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     
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  Sub-
Command 
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     

NEO Interface Developers Guide    
    135 
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  Sub-
Command 
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. 
NEO Interface Developers Guide    
    136 
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) 

NEO Interface Developers Guide    
    137 
Contact EMV L2 Transaction Flow 
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. 
offline 
Offline 
Host 
Reade
r 
Start contact transaction command (60-10) 
Example:72 46 05 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…… 
Contact Authentication response  
Example :06 00 03 00 <TLVs> 
Contact Apply host command (60-12) 
Example :72 46 05 03…… 
Contact Apply host response 
Example : 06 00 02 00 <TLVs> 
Online 
Online 
If command is OK, first response 0x63 
Display or Select Manu Command (61-01) 
If need select menu, response command (61-01)  
If command is OK, first response 0x63 
Display or PIN Entry command (61-01, 61-02) 
If need PIN entry response (61-02) 
If command is ok, first response 0x63 

NEO Interface Developers Guide    
    138 
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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  01h      Data Objects     
Data Objects: <5~16 bytes AID> 
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  60h 
See 
Status 
Code 
Table 
See Response 
Frame Data 
Format 
Response Frame Data Format: <TagCounterL> <TagCounterH> <TLV1> <TLV2>…<TLVn> 
Where: 
<TagCounterL> <TagCounterH> is the number of <TLV> 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.  

NEO Interface Developers Guide    
    139 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  02h      Data Objects     
Data Objects: <5~16 bytes AID>  
If length is 00 then remove all Application Data. 
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  60h 
See 
Status 
Code 
Table 
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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  03h      Data Objects     
Data Objects:  <AID_LenL><AID_LenH><5~16 bytes AID> <TagCounterL> <TagCounterH> <TLV1> 
<TLV2>…<TLVn>. 
Where: 

NEO Interface Developers Guide    
    140 
<TagCounterL> <TagCounterH>is the Number of <TLV>.  
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  60h 
See 
Status 
Code 
Table 
See Response 
Frame Data 
Format 
Note: 
If a <TLV> 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  Length 
(Byte) 
Data 
1  9F01  Acquirer Identifier  6  56 49 53 41 
30 30 
2  5F57  Account Type  1  00 
3  5F2A  Transaction Currency  2  08 40 
4  9F09  Terminal application version number  2  00 96 
5  5F36  Transaction Currency Exponent  1  02 
6  9F1B  Terminal Floor Limit  4  00 00 3A 98 
7  DF25  Default DDOL  Var  9F 37 04 
8  DF28  Default TDOL  Var  9F 08 02 
9  DFEE15  ASI  1  01 
10  DF13  TAC-Default  5  00 00 00 00 
00 
11  DF14  TAC-Denial  5  00 00 00 00 
00 
12  DF15  TAC-Online  5  00 00 00 00 
00 
13  DF18  Target Percentage For Random Transaction 
Selection 
1  00 
14  DF17  Threshold Value for Biased Random Selection  4  00 00 27 10 
15  DF19  Maximum Target Percentage For Random 
Transaction Selection 
1  00 
Contact Retrieve Terminal Data (60-04) 
Use this command to return all TLV associated the terminal data.  

NEO Interface Developers Guide    
    141 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  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  60h 
See 
Status 
Code 
Table 
See Response 
Frame Data 
Format 
Response Frame Data Format:  <TagCounterL> <TagCounterH> <TLV1> <TLV2>…<TLVn> 
Note: 
<TagCounterL> <TagCounterH> is the number of <TLV> 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  05h  00h  00h       
Response Frame 

NEO Interface Developers Guide    
    142 
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  60h 
See 
Status 
Code 
Table 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  06h      Data Objects     
Data Objects:  <TagCounterL> <TagCounterH> <TLV1> <TLV2>…<TLVn>. 
Where: 
<TagCounterL> <TagCounterH>: the Number of <TLV> tags.  
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  60h 
See 
Status 
Code 
Table 
See Response 
Frame Data 
Format 
Note: 
If a <TLV> format was error, status code is 0x05. 

NEO Interface Developers Guide    
    143 
If flash was error, status code is 0x62. 
Terminal Data List Example 
Data 
ID 
Tag  Value name  Length 
(Byte) 
Data 
1  5F36  Transaction Currency Exponent  1  02 
2  9F1A  Terminal County Code  2  08 40 
3  9F35  Terminal Type  1  21 
4  9F33  Terminal Capability  3  60 28 C8 
5  9F40  Additional Terminal Capability  5  F0 00 F0 A0 
01 
6  9F1E  IFD Serial Number  8  54 65 72 6D 
69 6E 61 6C 
7  9F15  Merchant Category Code  2  12 34 
8  9F16  Merchant Identifier  15  30 30 30 30 
30 30 30 30 
30 30 30 30 
30 30 30 
9  9F1C  Terminal Identification  8  38 37 36 35 
34 33 32 31 
10  9F4E  Merchant Name and Location  <=64  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 
11  DF26  Terminal Supports CRL  1  01 
12  DF10  Language  Var. up to 128
65 6E 66 72 
65 73 7A 68 
13  DF11  Support Transaction Log  1  00 
14  DF27  support Exception File  1  00 
15  DFEE15  Terminal Support ASI  1  01 
16  DFEE16  Terminal Encrypt Mode  1  00 
17  DFEE17  Terminal Entry Mode for ICC  1  07 
18  DFEE18  Terminal Encrypt Mode for MSR  1  80 
19  DFEE1E  Contact Terminal Configuration  8  D0 DC 20 D0 
C4 1E 16 00 
20  DFEE1F  Issuer Script Limit  1  80 
21  DFEE1B  ARC Define  8  30 30 30 31 
35 31 30 30 
22  DFEE20  ICC Power on detect waiting time  1  3C 
23  DFEE21  ICC L1 waiting time  1  0A 
24  DFEE22  Driver waiting time. byte 1 -> Menu. byte 2 -> Get 
PIn. byte 3 -> MSR 
3  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. 

NEO Interface Developers Guide    
    144 
    Terminal configuration 
Identification
Tag  1C  2C  3C  4C 
Major 
parameters 
9F33 
60 F8 C8
60 28 C8
60 D8 C8
60 08 C8
9F35 
22
21
25
25
9F40 
F0 00 F0 A0 
01
F0 00 F0 A0 
01
60 00 F0 50 
01
60 00 F0 50 
01
DF11 
01
00
01
01
DF26 
01
01
01
01
DF27 
00
00
00
00
DFEE1E
F0 DC 3C 
F0 C2 9E 96 
00 
D0 DC 20 
D0 C4 1E 
16 00 
F0 DC 24 
F0 C2 0E 16 
00 
D0 9C 20 
F0 C2 0E 16 
00 
Tag  Description  Length 
9F33 
Terminal Capabilities  
Byte 1 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Manual key entry 
x 
1 
x 
x 
x 
x 
x 
x 
Magnetic stripe 
x 
x 
1 
x 
x 
x 
x 
x 
IC with contacts 
Major 
x 
x 
x 
0 
x 
x 
x 
x 
RFU 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 2 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Plaintext PIN for IC 
verification 
Major 
x 
1 
x 
x 
x 
x 
X 
x 
Enciphered PIN for 
online verification 
Major 
x 
x 
1 
x 
x 
x 
X 
x 
Signature(paper) 
Major 
x 
x 
x 
1 
x 
x 
X 
x 
Enciphered PIN for 
offline verification 
Major 
x 
x 
x 
x 
1 
x 
X 
x 
No CVM Required 
Major 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
X 
0 
RFU 
Byte 3 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
SDA 
Major 
X 
1 
x 
x 
x 
x 
x 
x 
DDA 
Major 
X 
x 
1 
x 
x 
x 
x 
x 
Card capture 
x 
x 
x 
0 
x 
x 
x 
x 
RFU 
x 
x 
x 
x 
1 
x 
x 
X 
CDA 
Major 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
3 

NEO Interface Developers Guide    
    145 
x 
x 
x 
x 
X 
X 
x 
0 
RFU 
9F35 
Terminal Type  
Environment 
Financial 
Institution 
Merchant 
Cardholder 
Change 
Attended 
Online only 
Offline with online capability 
Offline only 
11 
12 
13 
21 
22 
23 
-- 
-- 
-- 
Major 
Unattended 
Online only 
Offline with online capability 
Offline only 
14 
15 
16 
24 
25 
26 
34 
35 
36 
Major 
1 
9F40 
Additional Terminal Capabilities  
Byte 1 
b1 
b2 
b3 
b4 
b5 
b6 
b7 
b8 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Cash 
Major 
x 
1 
x 
x 
x 
x 
x 
x 
Goods 
Major 
x 
x 
1 
x 
x 
x 
x 
x 
Services 
Major 
x 
x 
x 
1 
x 
x 
x 
x 
Cashback 
Major 
x 
x 
x 
x 
1 
x 
x 
x 
Inquiry 
x 
x 
x 
x 
x 
1 
x 
x 
Transfer 
x 
x 
x 
x 
x 
x 
1 
x 
Payment 
x 
x 
x 
x 
x 
x 
x 
1 
Administrative 
Byte 2 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Cash Deposit 
x 
0 
x 
x 
x 
x 
x 
x 
RFU 
x 
x 
0 
x 
x 
x 
x 
x 
RFU 
x 
x 
x 
0 
x 
x 
x 
x 
RFU 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 3 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Numeric keys 
x 
1 
x 
x 
x 
x 
x 
x 
Alphabetic and 
special characters 
keys 
x 
x 
1 
x 
x 
x 
x 
x 
Command keys 
x 
x 
x 
1 
x 
x 
x 
x 
Function Keys 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 4 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Print, attendant 
x 
1 
x 
x 
x 
x 
x 
x 
Print, cardholder 
x 
x 
1 
x 
x 
x 
x 
x 
Display, attendant 
x 
x 
x 
1 
x 
x 
x 
x 
Display, cardholder 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
1 
x 
Code table 10 
Major 
5 

NEO Interface Developers Guide    
    146 
x 
x 
x 
x 
x 
x 
x 
1 
Code table 9 
Major 
Byte 5 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Code table 8 
Major 
x 
1 
x 
x 
x 
x 
x 
x 
Code table 7 
Major 
x 
x 
1 
x 
x 
x 
x 
x 
Code table 6 
Major 
x 
x 
x 
1 
x 
x 
x 
x 
Code table 5 
Major 
x 
x 
x 
x 
1 
x 
x 
x 
Code table 4 
Major 
x 
x 
x 
x 
x 
1 
x 
x 
Code table 3 
Major 
x 
x 
x 
x 
x 
x 
1 
x 
Code table 2 
Major 
x 
x 
x 
x 
x 
x 
x 
1 
Code table 1 
Major 
DF11 
Transaction Log Support (Default: Enable) (Major) 
0  Disable 
1  Enable
1 
DF26 
Revocation List Support (Default: Enable) (Major) 
0  Disable 
1  Enable 
1 
DF27 
Exception File Support (Default: Disable) (Major) 
0  Disable 
1  Enable 
1 
DFEE1E
Contact Terminal Configuration (Default: F0 DC 3C F0 C2 9E 94 00) 
Byte 1 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Key Pad support 
x 
1 
x 
x 
x 
x 
x 
x 
LCD support 
x 
x 
1 
x 
x 
x 
x 
x 
PIN Pad support 
x 
x 
x 
1 
x 
x 
x 
x 
Print Support 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
X 
0 
RFU 
Byte 2 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
PSE support 
Major 
x 
1 
x 
x 
x 
x 
x 
x 
Cardholder confirmation 
Major 
x 
x 
1 
x 
x 
x 
x 
x 
Preferred display order 
x 
x 
x 
1 
x 
x 
x 
x 
Multi language  
x 
x 
x 
x 
1 
x 
x 
x 
EMV language selection method 
x 
x 
x 
x 
x 
1 
x 
x 
Default DDOL  
Major 
x 
x 
x 
x 
x 
x 
0 
x 
RFU  
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 3 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
0 
x 
x 
x 
x 
x 
x 
x 
RFU  
(Revocation of Issuer Public Key 
Certificate (DF26)) 
Major 
x 
1 
x 
x 
x 
x 
x 
x 
Manual action when CA PK loading 
fails  
Major 
x 
x 
1 
x 
x 
x 
x 
x 
CA PK verified with check sum  Major 
x 
x 
x 
1 
x 
x 
x 
x 
Bypass PIN Entry  Major 

NEO Interface Developers Guide    
    147 
x 
x 
x 
x 
1 
x 
x 
x 
Subsequent bypass PIN Entry  Major 
x 
x 
x 
x 
x 
1 
x 
x 
Get data for pin try counter  
Major 
x 
x 
x 
x 
x 
x 
0 
x 
RFU   
x 
x 
x 
x 
x 
x 
x 
0 
RFU  
Byte 4 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Amount before CVM processing  Major 
x 
1 
x 
x 
x 
x 
x 
x 
Floor limit checking  Major 
x 
x 
1 
x 
x 
x 
x 
x 
Random transaction selection  Major 
x 
x 
x 
1 
x 
x 
x 
x 
Velocity checking  
Major 
x 
x 
x 
x 
0 
x 
x 
x 
RFU 
(Transaction Log (DF11)) 
Major 
x 
x 
x 
x 
x 
0 
x 
x 
RFU 
(Exception File (DF27)) 
Major 
x 
x 
x 
x 
x 
x 
0 
x 
RFU 
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 5 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
X 
Terminal action code support  Major 
x 
1 
x 
x 
x 
x 
x 
x 
Terminal action code can be change  
Major 
x 
x 
1 
x 
x 
x 
x 
x 
Terminal action code can be deleted 
or disable  
Major 
x 
x 
x 
1 
x 
x 
x 
x 
Default Action code processing 
before 1st GAC  
Major 
x 
x 
x 
x 
1 
x 
x 
x 
Default Action code processing after 
1st GAC  
Major 
x 
x 
x 
x 
x 
1 
x 
x 
TAC/IAC default process when 
unable to go online (Skipped)  
Major 
x 
x 
x 
x 
x 
x 
1 
x 
TAC/IAC default process when 
unable to go online (Normal)  
Major 
x 
x 
x 
x 
x 
x 
x 
0 
RFU  
Byte 6 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
Forced Online support Major 
x 
1 
x 
x 
x 
x 
x 
x 
Forced acceptance support Major 
x 
x 
1 
x 
x 
x 
x 
x 
Advices support  Major 
x 
x 
x 
1 
x 
x 
x 
x 
Issuer referrals support  Major 
X 
x 
x 
x 
1 
x 
x 
x 
Batch data capture   Major 
x 
x 
x 
x 
x 
1 
x 
x 
Online data capture  Major 
X 
x 
x 
x 
x 
x 
1 
x 
Default TDOL   Major 
X 
x 
x 
x 
x 
x 
x 
0 
RFU   
Byte 7 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
1 
x 
x 
x 
x 
x 
x 
x 
amount and pin entered on the 
same keypad 
x 
1 
x 
x 
x 
x 
x 
x 
ICC/Magstripe reader combined 

NEO Interface Developers Guide    
    148 
x 
x 
1 
x 
x 
x 
x 
x 
Magstripe read first 
x 
x 
x 
1 
x 
x 
x 
x 
Support account type selection 
x 
x 
x 
x 
1 
x 
x 
x 
On fly script processing 
x 
x 
x 
x 
x 
1 
x 
x 
Internal date management 
x 
x 
x 
x 
x 
x 
1 
x 
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.  
x 
x 
x 
x 
x 
x 
x 
0 
RFU 
Byte 8 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Meaning 
Change 
x 
x 
x 
x 
x 
x 
x 
x 
RFU 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  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  60h 
See 
Status 
Code 
Table 
See Response 
Frame Data 
Format 
Response Frame Data Format:  <NumberL><NumberH> <AID Block 1> <AID Block 2> … <AID Block 
N>. 

NEO Interface Developers Guide    
    149 
Where: 
<NumberL><NumberH> is Number of AID Blocks. 
<AID Block> format is <LenL> <LenH> <Several bytes AID>. 
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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  08h      Data Objects     
Data Objects: <5 bytes RID> <1 byte Index>. 
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  60h 
See 
Status 
Code 
Table 
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> <Variable bytes Modulus> 
Where: 
<Hash Algorithm>: The only algorithm supported is SHA-1.The value is set to 0x01. 
<Encryption Algorithm>: The encryption algorithm in which this key is used. Currently support 
only one type: RSA. The value is set to 0x01. 

NEO Interface Developers Guide    
    150 
<HashValue>: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & 
Exponent 
<Public Key Exponent>: Actually, the real length of the exponent is either one byte or 3 bytes. It 
can have two values: 3, or  65537 
<Modulus Length>: <LenH> <LenL> Indicated the length of the next field. 
<Modulus>: 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  09h      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  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  60h 
See 
Status 
Code 
Table 
00h  00h       
Note: 
If CA Key RID does not exist, status code is 0x60. 

NEO Interface Developers Guide    
    151 
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
Sub-
Command
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> 
<Variable bytes Modulus> 
Where: 
<Hash Algorithm>: The only algorithm supported is SHA-1.The value is set to 0x01 
<Encryption Algorithm>: The encryption algorithm in which this key is used. Currently support 
only one type: RSA. The value is set to 0x01. 
<HashValue>: Which is calculated using SHA-1 over the following fields: RID & Index & Modulus & 
Exponent 
<Public Key Exponent>: Actually, the real length of the exponent is either one byte or 3 bytes. It 
can have two values: 3, or  65537 
<Modulus Length>: <LenH> <LenL> Indicated the length of the next field. 
<Modulus>: This is the modulus field of the public key. Its length is specified in the field above. 
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  60h 
See 
Status 
Code 
Table 
00h  00h       
Note: 

NEO Interface Developers Guide    
    152 
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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  0Bh  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  60h 
See 
Status 
Code 
Table 
    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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  0Ch  00h  00h       

NEO Interface Developers Guide    
    153 
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  60h 
See 
Status 
Code 
Table 
    Data Objects     
Data Objects : <CRL Length L><CRL Length H><CRL1><CRL2>…<CRLn>. 
<CRL>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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  0Dh      Data Objects     
Data Objects : <CRL1><CRL2>…<CRLn>. 
<CRL>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 

NEO Interface Developers Guide    
    154 
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  60h 
See Status 
Code 
Table 
00h  00h       
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  0Eh      Data Objects     
Data Objects: <CRL Total Length L><CRL Total Length H> 
<CRL1><CRL2>…<CRLn><2 Bytes MAC Length>. 
<CRL>format is <5Bytes RID><1Byte CA public key Index><3Bytes Certificate Serial Number> 
<2Byte Length of CRL> (Option):  <Low byte of length> <High byte of length>    
Fix is 0x00 0x00. 
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  60h 
See Status 
Code 
Table 
00h  00h       
Note: 

NEO Interface Developers Guide    
    155 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  0Fh  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  60h 
See Status 
Code 
Table 
00h  00h       
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 

NEO Interface Developers Guide    
    156 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  10h      Data Objects     
Data Objects - <FallBack><TimeOut1> <TimeOut2> <App Data>. 
Where: 
<FallBack> (1byte). 0x01 indicate it support FallBack to MSR, 0x00 indicate it not support 
FallBack. 
<TimeOut1> (2 bytes, unit is Second). Timeout for Card is seated. 
<TimeOut2> (2 bytes, unit is Second). Waiting time till “Authenticate Transaction” command. 
<App Data> format is <TLV1> <TLV2> … <TLVn>. Refer to Transaction Data. 
Transaction Data List (start command parameters) 
Data 
ID 
Tag  Value name  Length 
(Byte) 
1  9F02  Amount, Authorized(Numeric)  6 
2  9C  Transaction Type  1 
3  5F2A  Transaction Currency Code  2 
4  9A  Transaction Date  3 
5  9F21  Transaction Time  3 
6  9F03  Amount, Other(Numeric)  6 
7  DFEE1A  Output Tag List (Options)  N 
8  DFEE27  MSR Control.  (Options) 
MSR only transaction need set this tag. 
1  MSR Only Enable 
0  MSR Only Disable 
1 
9  DFEF1F  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 
2 
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. 

NEO Interface Developers Guide    
    157 
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  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  60h 
See Status 
Code 
Table 
00h  00h       
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  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  60h  00h      Data Objects     
Contact EMV L2 Data Objects: 

NEO Interface Developers Guide    
    158 
Data Item  Length (bytes)  Description 
Attribution  1  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) 
Variable  If encrypt disable, this tag is not present. 
Contact Response 
Code 
(DFEE25) 
Variable  See Contact Response Code 
TLV Data  Variable  Output default Start Transaction Output TLV data list. If set tag 
DFEE1A, The TLV data will be follow list. 
TLV POS Entry 
Mode (9F39) 
Variable   90h = Magnetic Stripe Reader Swipe 
91h = Contactless MSD 
05h = Contact EMV 
07h = Contactless EMV 
80h = Contact Fallback to Magnetic Stripe 
TLV (DF30) 
(ViVOpay 
proprietary) 
Variable  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 

NEO Interface Developers Guide    
    159 
Data Item  Length (bytes)  Description 
TLV Encrypt 
Information 
(DFEE26) 
Variable  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  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
See Contact Response Code. (00h 11h). 
TLV Data  Variable
TLV data list 
MSR Tag 
(DFEE23) 
Variable
Data follow Enhanced Encrypted MSR FIELD DATA. Refer NEO 
spec to Appendix A.11: Enhanced Encrypted MSR Data Output 
Format 

NEO Interface Developers Guide    
    160 
Data Item  Length 
(bytes)  Description 
TLV POS Entry 
Mode (9F39) 
Variable 
90h = Magnetic Stripe Reader Swipe 
91h = Contactless MSD 
05h = Contact EMV 
07h = Contactless EMV 
80h = Contact Fallback to Magnetic Stripe 
TLV (DF30) 
(ViVOpay 
proprietary) 
Variable
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. 
This tag include in  ViVOpay proprietary (FFEE01) 
Ex: FFEE0104DF30010C 
TLV Encrypt 
Information 
(DFEE26) 
Variable
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 
1. For MSR <Response Code> is 00 11. 
2. MSR data in tag DFEE23, format is following “Enhanced Encrypted MSR Data Output Format”. 
Default Start Transaction Output TLV Data List 
Data 
ID 
Tag  Value name  Length 
(Byte) 
1  57  Track2 Equivalent Data  <=19 
2  5A  PAN  <=10 
3  5F34  PAN Sequence Number  1 
4  5F20  Cardholder Name  2~26 
5  5F24  Application Expire Date  3 
6  9F20  Track2 Discretionary Data  Var. 

NEO Interface Developers Guide    
    161 
7  5F25  Application Effective Date  3 
8  5F2D  Language Preference  2~8 
9  50  Application Label  1~16 
10  84/4F  DF Name or ADF Name  5~16 
11  DFEE23  MSR Data  N 
12  9F39  POS Entry Mode  1 
13  DF30  Track Data Source.  1 
14  DFEE26  Encrypt Information  1 
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  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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  11h      Data Objects     
Data Objects : <ForeOnline><TimeOut> <Output Data List>-. 
<ForeOnline>(1byte). 0x01 indicate it support ForeOnline, 0x00 indicate not support. 
<TimeOut> (2 byte, unit is Second).means terminal waiting time for host response when online.- 
<Output Tag List DFEE1A> format is <TLV> (V is output tag list.) 
Ex: DEFF1A 06 95 5A 84 9F39 50 
If command parse is successful and ICC transactions continue, response is first command and 
status code is 0x63.  
If command parse fails, response is some other status code and end of transaction. 

NEO Interface Developers Guide    
    162 
First 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  60h 
See Status 
Code 
Table 
00h  00h       
When transaction needs display or Get PIN, reader sends command 61-01, 61-02 to host. 
If host response is needed, host should respond with command 61-01, 61-02 and send result to 
reader.  
Authenticate Transaction success: send second response and result to host. 
Second 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  60h  00h      Data Objects     
Data Objects: 

NEO Interface Developers Guide    
    163 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
If encrypt disable, this tag is not present. 
Contact Response 
Code 
(DFEE25) 
Variable
See Contact Response Code. 
If response code is 00 04, then need go online process and send Apply 
Host Response command. 
TLV Data  Variable
Output default Authenticate Transaction Output TLV data list. If set 
tag DFEE1A, The TLV data will be follow list. 
Default Authenticate Transaction Output TLV Data List 
Data 
ID 
Tag  Value name  Length 
(Byte) 
1  9F10  Issuer Application Data  Var. up to 32
2  9F26  Application Cryptogram  8 
3  9F27  Cryptogram Information Data  1 
4  9F36  Application Transaction Counter(ATC)  2 
5  9F37  Unpredictable Number  4 
6  9F02  Amount, Authorized (Numeric)  6 
7  9F4D  Log Entry  2 
8  9F4F  Log Format  Var. 
9  9F13  Last Online Application Transaction Counter(ATC) 
Register 
2 
10  95  Terminal Verification Results  5 
11  9B  Transaction Status Information  2 
12  9F03  Amount, Other (Numeric)  6 
13  9F34  Cardholder Verification Method(CVM) Results  3 
14  9F39  POS Entry Mode  1 
15  DF30  Track Data Source.  1 
16  DFEE26  Encrypt Information  1 

NEO Interface Developers Guide    
    164 
Contact Apply Host Response (60-12) 
This function is the last step in EMV transaction flow.  
The function will send acquirer data (if online) to the card and notify that the transaction is 
complete. This function will do the following process upon the transaction type (may or may not 
perform each step, depending upon acquirer’s requirement and response): 
(1) External Authenticate 
(2) Script Processing 
(3) 2nd Gen AC 
(4) Completion 
Note: VP4880C does not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  12h      Data Objects     
Data Objects : <1Byte ComFlag> [<Authorization Response Code (TLV,Tag 8A)>< Issuer 
Authentication Data (TLV, Tag 91)>< <Scripts (TLV, Tag 71/72)>] <Output Data List> 
Where: 
<1Byte ComFlag>:0x01 indicate online with host,0x00 indicate unable online. 
Data in [ ] indicate these data is optional: 
If ComFlag is 0x01, the Data exist. 
If ComFlag is 0x00, the Data does not exist. 
<Output Tag List DFEE1A> format is <TLV> (V is output tag list.) 
Ex: DEFF1A 06 95 5A 84 9F39 50 
If command parse is success and ICC transactions continue, response first command and status 
code is 0x63.  
If command parse is failed, response other status code and end transaction. 

NEO Interface Developers Guide    
    165 
First 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  60h 
See Status 
Code 
Table 
00h  00h       
When transaction needs display or key in, it sends command 61-01 to host. 
If need host response, host will response command 61-01 and result to reader. 
Second 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  60h  00h      Data Objects     

NEO Interface Developers Guide    
    166 
Data Objects: 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
If encrypt disable, this tag is not present. 
Contact Response 
Code 
(DFEE25) 
Variable
See Contact Response Code. 
TLV Data  Variable
Output default Apply Host Response Output TLV data list. If set tag 
DFEE1A, The TLV data will be follow list. 
Default Apply Host Response Output TLV Data List 
Data 
ID 
Tag  Value name  Length 
(Byte) 
1  9F10  Issuer Application Data  Var. up to 32
2  9F26  Application Cryptogram  8 
3  9F27  Cryptogram Information Data  1 
4  9F36  Application Transaction Counter(ATC)  2 
5  9F37  Unpredictable Number  4 
6  9F02  Amount, Authorized (Numeric)  6 
7  9F4D  Log Entry  2 
8  9F4F  Log Format  Var. 
9  9F13  Last Online Application Transaction Counter(ATC) 
Register 
2 
10  95  Terminal Verification Results  5 
11  9B  Transaction Status Information  2 
12  9F03  Amount, Other (Numeric)  6 
13  9F34  Cardholder Verification Method(CVM) Results  3 
14  99  PIN Block  Var. 
15  9F5B  Issuer Script Results  Var. up to 128
16  9F39  POS Entry Mode  1 
17  DF30  Track Data Source.  1 
18  DFEE26  Encrypt Information  1 

NEO Interface Developers Guide    
    167 
Contact Retrieve Transaction Result (60-13) 
After EMV transaction is completed, you can use this command to get other TLVs. 
Note: VP4880C does not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  13h      Data Objects     
Data Objects : <Tags>. 
<Tags> these tags will return TLV format. Supported tags refer to “Option Data List” Table in 
Section “Reference Data List”. 
Tags Example: 
9F029F36959F37 means total 4 tags (9F02, 9F36, 95, 9F37) requested to in response. Length is 7 
bytes. 
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  60h 
See Status 
Code 
Table 
    Data Objects     
Data Objects: 

NEO Interface Developers Guide    
    168 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
If encrypt disable, this tag is not present. 
TLV Data  Variable
Output TLV data list. 
Reference Data List 
Tag  Tag  Tag  Tag  Tag  Tag  Tag 
5F2A  98  9F02  9F16  9F21  9F39  4F 
5F36  99  9F03  9F1A  9F22  9F3A  50 
81  9A  9F04  9F1B  9F33  9F3C  57 
8A  9B  9F06  9F1C  9F34  9F3D  58 
95  9C  9F09  9F1D  9F35  9F40  5A 
5F57  9F01  9F15  9F1E  9F37  9F41  5F20 
5F24  5F25  5F28  5F2D  5F30  5F34  5F36 
6F  71  72  73  82  84  87 
88  8C  8D  8E  8F  90  91 
92  93  94  97  9F05  9F07  9F08 
9F0D  9F0E  9F0F  9F10  9F11  9F12  9F13 
9F14  9F17  9F1F  9F20  9F23  9F26  9F27 
9F2D  9F2E  9F2F  9F32  9F36  9F38  9F3B 
9F42  9F43  9F44  9F45  9F46  9F47  9F48 
9F49  9F4A  9F4B  9F4C  9F4D  BF0C  DF62 
9F4E  9F5B  DFEE15  DFEE16  DFEE17  DFEE18  DFEE19 
DFEE1A  DFEE1B  DF11  DF14  DF15  DF17  DF18 
DF19  DF20  DF21  DF22  DF25  DF26  DF27 
DF28  DF10  DF40  DF41  DF42  DF43  DFEE1E 
DFEE1F  DFEE20  DFEE21  DFEE22  DFEE23  DFEE24  89 
DF13             

NEO Interface Developers Guide    
    169 
Contact Get Reader Status (60-14) 
This command can get ICC card power and card seat status. 
Note: VP4880C does not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  14h      Command 
Data      
Command Data  
Data Item  Length (bytes)  Description/Example 
Interface  1  20h = ICC 
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  60h 
See Status 
Code 
Table 
    Data Objects     
Data Objects (1 byte) 
Bit Position  Meaning if ‘0’  Meaning if ‘1’ 
0  ICC Power not ready  ICC Powered 
1  Card not seated  Card seated 
2~7  RFU  RFU 
Contact Get ICS Identification (60-15) 
Contact Common EMV L2 approved configurations of certification are 1C, 2C, 3C, and 4C. This 
command can get identification of ICS terminal configuration in reader. 

NEO Interface Developers Guide    
    170 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
60h  15h  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  60h 
See Status 
Code 
Table 
    Response Data
Response Data: 
0x01  Identification 1C 
0x02  Identification 2C (Default) 
0x03  Identification 3C 
0x04  Identification 4C 
Contact Set ICS Identification (60-16) 
Contact Command EMV L2 includes 4 approved configurations of certification. This command 
can set identification of ICS terminal configuration to reader. This command affects command 
Contact Set Terminal Data (60-06). Generally, you will use 60-16 first, then 60-06. 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 

NEO Interface Developers Guide    
    171 
ViVOtech2\0
60h  16h  00h  01h  ICS 
Identification
ICS Identification: 
0x01  Identification 1C 
0x02  Identification 2C (Default) 
0x03  Identification 3C 
0x04  Identification 4C 
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  60h 
See Status 
Code 
Table 
00  00       
Contact LCD Display Control (61-01) (Reader send to Host) 
Some readers do not incorporate LCD and keypad, so this command is sent to host. The 
command requests display or key-in by host. If reader requests key-in, host response 
should be 61-01 command and result sent to reader. This command is used in “60-10, 60-
11, 60-12” commands. When in those commands, command “61-01” sent to host 
automatically. 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
61h  01h      Data Objects     
Data Objects: 

NEO Interface Developers Guide    
    172 
Data Item  Length 
(bytes)  Description 
Display Mode  1  0x01: Menu Display 
0x02: Normal Display get function key 
0x03: Display without key input(Do not receive input data) 
0x08: Language Menu Display 
0x10: Clear Screen(Do not receive input data) 
(If Clear Screen, don’t need rod end below filed) 
Timeout Length  2  Format: <Length L><Length H> (Little-endian) 
If Display without key input. The value is 00 00. 
Timeout Value  Variable
Format: <Value L><Value H> (Little-endian) 
If Normal Display or Menu Display, Total timeout for keypad entry, 
in second. Default is 30 seconds. 
Note: Total timeout will cancel keypad entry and return error. 
Display Message 
Language Length 
2  Format: <Length L><Length H> (Little-endian) 
Display Message 
Language 
Variable
Display Message Language, 2 byte 
“EN” – English (default) 
“ES” – Spanish 
“ZH” – Chinese 
“FR” – French 
   … 
Display Message 
Control Length 
2  Format: <Length L><Length H> (Little-endian) 
Display Message 
Control 
Variable
repeatable combination of <Line><Message><0x1C> 
<Line> - Display line number (1-First Line, n-nth Line), Maximum 16 
lines. 
The lower 7 bits is for line number. 
•The MSB is to indicate following message is a Message String or 
Message ID. 
 •MSB – 0: Message String. (It is valid for “Menu Display” and 
“Language Menu Display”) 
 •MSB – 1: Message ID. (It is only valid for “Menu Display”) 
<Message> - Message String or Message ID. 
Message String:  
•“Menu Display” : character in the range of 0x20 – 0x7f, 
Maximum 16 characters 
• “Language Menu Display” : 2 bytes Language ID 
“EN” – English (default) 
“ES” – Spanish 
“ZH” – Chinese 
“FR” – French 
… 
Message ID: 1 byte, check LCD Foreign Language Mapping Table 
<0x1C> - separator 

NEO Interface Developers Guide    
    173 
Data Item  Length 
(bytes)  Description 
Back Light Timer 
Length 
2  Format: <Length L><Length H> (Little-endian) 
Back Light Timer 
Value 
Variable
Format: <Value L><Value H> (Little-endian) 
Back Light On Timer Value in second. 
(all 0-Back Light Off, all 0xff-Back Light always On) 
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  61h  01h      Data Objects     
Data Objects: 
Data Item  Length 
(bytes)  Description 
Display Mode  1  0x00- Cancel (user presses cancel key on the key pad for mode 1) 
0x01 – Menu Display 
0x02- Normal Display get function key 
0x08- Language Menu Display 
If Mode byte is “Cancel” or “Display without key input”, don’t 
need to send below field. 
Display Menu 
Length 
2  Format: <Length L><Length H> (Little-endian) 
(If Normal Display, Length of Key (Get Function)) 
Display Menu  Variable
Menu value, sequence number of selected line, hex format (If Normal 
Display, ASCII format (‘E’ is Enter, ‘C’ is Cancel)) 
Contact Get PIN Control (61-02) (Reader send to Host) 
Some readers do not incorporate a PIN Pad, so need to send this command to host. The 
command requests Get PIN on PIN Pad. If the reader is requesting to “Get PIN”, the host 

NEO Interface Developers Guide    
    174 
responds with 61-02 command to reader and PIN Block. This command used in “60-11” 
command only. When in the command, command “61-02” sent to host automatically. 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
61h  02h      Data Objects     
Data Objects: 
Data Item  Length 
(bytes)  Description 
Mode  1  - 0x00 – Cancel (cancel through command) 
- 0x01 – Online PIN DUKPT 
- 0x02 – Online PIN MKSK 
- 0x03 – Offline PIN 
If Mode byte is “Cancel”, don’t need to send below field. 
DATA PAIRING DUKPT 
KSN Length 
2  Format: <Length L><Length H> (Little-endian) 
(If Mode is Online PIN have this filed) 
If the value is 00 00, Device do not implement Pairing 
Function. 
DATA PAIRING DUKPT 
KSN Value 
Variable  (If Mode is Online PIN have this filed) 
If Length of DATA_PAIRING_DUKPT KSN is 00 00, 
the block does not exist 
Encrypted Truncated PAN 
Length 
2  Format: <Length L><Length H> (Little-endian) 
(If Mode is Online PIN have this filed) 
If Length of DATA_PAIRING_DUKPT KSN is 00 00, 
PAN in Plaintext. 
Encrypted Truncated PAN  Variable  (If Mode is Online PIN have this filed) 
If Length of DATA_PAIRING_DUKPT KSN is 00 00, 
PAN in Plaintext. 
Start PIN Input Timeout 
Length 
2  Format: <Length L><Length H> (Little-endian) 

NEO Interface Developers Guide    
    175 
Data Item  Length 
(bytes)  Description 
Start PIN Input Timeout 
Value 
Variable  Format: <Value L><Value H> (Little-endian) 
Unit: Second 
PIN Entry Interval Length  2  Format: <Length L><Length H> (Little-endian) 
PIN Entry Interval Value  Variable  Format: <Value L><Value H> (Little-endian) 
Unit: Second 
Display Message Language 
Length 
2  Format: <Length L><Length H> (Little-endian) 
Display Message Language
Variable  “EN” – English (default) 
“ES” – Spanish 
“ZH” – Chinese 
“FR” – French 
… 
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  61h  02h      Data Objects     
Data Objects: 
Data Item  Length 
(bytes)  Description 
Mode  1  - 0x00 – Cancel (Can be cancel through command or user presses 
cancel key on the key pad) 
- 0x01 – Online PIN DUKPT. (PIN_KEY is PIN_DUKPT_KEY) 
- 0x02 – Online PIN MKSK. (PIN_KEY is PIN_SESSION_KEY) 
- 0x03 – Offline PIN. (PIN_KEY is PIN_PAIRING_DUKPT_KEY) 
       (If device do not implement Pairing function, Offline PIN is 
Plaintext) 
If Mode byte is “Cancel”, don’t need to send below field.  

NEO Interface Developers Guide    
    176 
Data Item  Length 
(bytes)  Description 
KSN Length  2  Format: <Length L><Length H> (Little-endian) 
If Online PIN DUKPT, Length of PIN_DUKPT_KEY KSN 
If Offline PIN, Length of PIN_PAIRING_DUKPT_KEY KSN.  
(If device do not implement Pairing function, Offline PIN is Plaintext. 
The Length Value is 00 00) 
KSN  Variable
If Online PIN DUKPT, PIN_DUKPT_KEY KSN – 10 bytes 
If Offline PIN, PIN_PAIRING_DUKPT_KEY KSN.  
(If device do not implement Pairing function, Offline PIN is Plaintext. 
The Block does not exist.) 
PIN Length  2  Format: <Length L><Length H> (Little-endian) 
PIN  Variable
If Online PIN DUKPT or Online PIN MKSK, Enciphered PIN 
If Offline PIN, Enciphered PIN.  
(If device do not implement Pairing function, Offline PIN is Plaintext)
Contact Get MSR Data Control (Reader send to Host)(61-03) 
If reader is not MSR device, it can use this command to connect with external MSR device.  
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
61h  03h      Data Objects     
Data Objects: 
Data Item  Length 
(bytes)  Description 
Timeout Length  2  Format: <Length L><Length H> (Little-endian) 
Length of Total timeout for Swipe MSR Card. 
Timeout Value  Variable
Format: <Value L><Value H> (Little-endian).  Unit:Second 
Total timeout for Swipe MSR Card, in second, default is 60 
seconds. 
Display Message 
Language Length 
2  Format: <Length L><Length H> (Little-endian) 
Length of Display Message Language. 

NEO Interface Developers Guide    
    177 
Data Item  Length 
(bytes)  Description 
Display Message 
Language 
Variable
Display Message Language, 2 byte 
“EN” – English (default) 
“ES” – Spanish 
“ZH” – Chinese 
“FR” – French 
… 
Display Message 
Control Length 
2  Format: <Length L><Length H> (Little-endian) 
Length Display Message Control – 2 bytes 
Display Message 
Control 
Variable
repeatable combination of <Line><Message><0x1C> 
<Line> - Display line number (1-First Line, n-nth Line), Maximum 16 
lines. 
The lower 7 bits is for line number. 
•The MSB is to indicate following message is a Message String or 
Message ID. 
 •MSB – 0: Message String. (It is valid for “Menu Display” and 
“Language Menu Display”) 
 •MSB – 1: Message ID. (It is only valid for “Menu Display”) 
<Message> - Message String or Message ID. 
Message String:  
•“Menu Display” : character in the range of 0x20 – 0x7f, 
Maximum 16 characters 
• “Language Menu Display” : 2 bytes Language ID 
“EN” – English (default) 
“ES” – Spanish 
“ZH” – Chinese 
“FR” – French 
… 
Message ID: 1 byte, check LCD Foreign Language Mapping Table 
<0x1C> - separator 
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  61h  00h      MSR Data     
Note: MSR Data for external MSR device max is 640 bytes. Tag DFEE23 data format will follow 
external MSR format (see ID TECH document 80000502-001 for information on the Enhanced 
Encrypted MSR Format). 

NEO Interface Developers Guide    
    178 
Transaction Related Commands: Contactless 
Activate Transaction Command, Contactless (02-01 and 02-40) 
NOTE: 02-01 is a legacy command, applicable to non-encrypted transactions only.When EMV 
mode encryption is ON or MSR/MSD encryption is ON, if Data encryption Key is loaded, 02-01 
will be disabled. Use 02-40 for production; 02-40 is a unified command for both non-encrypted 
and encrypted transactions, but if a key is present (unit is injected), encryption will occur. 
Use the Activate Transaction command when the ViVOpay reader is in “Poll on Demand” mode 
to begin a contactless EMV or contactless MagStripe Card transaction. When the reader is in 
“Poll on Demand” mode, the RF is turned on only after receiving an Activate Transaction 
command. When a valid Activate Transaction command is sent to the ViVOpay reader, it starts 
polling for cards.  
If the ViVOpay reader does not find a supported card (an AID that matches one of the configured 
AIDs in the reader) for the specified time duration, it times out and ends the transaction. If the 
ViVOpay reader finds a card within the specified time interval, it attempts to carry out the 
transaction. The transaction flow between the reader and the card depends on the type of card 
detected.  
If the transaction is successful, the reader returns the data in the response data. If the 
transaction is not successful, yet it proceeded into the transaction state machine, the reader 
returns a Failed Transaction Record in the response data. The presence and format of the 
Clearing Record, Track Data and Failed Transaction record depends on the type of card that was 
detected. 
Note: While an Activate command is in progress, only a Cancel or a Stop command may be 
sent.  Do not send other commands until Activate Transaction has completed, because the 
reader will interpret these as a Cancel Transaction command. 
Note: For Non-SRED version device, response format for Activate Transaction Command is 
according to “Set Data Encryption Enable Flag (C7-36)” setting and Data encryption Key. 
When Data Encryption is disabled, device responds with plaintext data format. When Data 
Encryption is enabled: (1) When Data encryption Key exists and is valid, device responds with  
encrypted data format. (2) When Data encryption Key does not exist, device responds with 
plaintext data format (3) When Data encryption Key exhausts, device responds status code 
0x91 and no data. 
For SRED version device, response format for Activate Transaction Command is according to 
Data encryption Key. When Data encryption Key exists and is valid, device responds with  
encrypted data format. When Data encryption Key exhausts or does not exist, device 
responds status code 0x91/0x90 and no 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

NEO Interface Developers Guide    
    179 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
02h  01h     
See Data 
Format below 
The format and contents of the data field in the Command Frame are given in the following 
table. All length values include the Tag and Length bytes. 
Table 32: Activate Transaction Command Frame Data Format 
Data Item  Length 
(bytes)  Description 
Timeout 
1 
Time in seconds that the reader waits for a card to be presented 
before timing out and returning an Error response.  The reader will 
continue to poll for this amount of time if no card is found.  Note 
that if a card is found, the transaction may not complete within the 
timeout period. 
This field must be present in the Activate Command. 
Format: Binary 
TLV Data 
varies 
See Activate Command TLVs below. 
Table 33: Activate Command TLVs 
Tag  Description  Format  Length 
(in bytes) 
9A 
Transaction Date. 
EMV data element.  Local date that the transaction was 
authorized. If TLV 9A and 9F21 are not provided, then 
the reader’s current date and time will be used. 
Both date (9A) and time (9F21) tags must be present 
if either one is specified. 
The terminal/POS is responsible for ensuring that the 
date is valid: 
 Year <=99 
 Month <=12 
 Day <=31 
If the date value is set to 0xFF, 0xFF, 0xFF, then the 
date and time stamp will be taken from the reader’s 
date and time will be used.
n6 
(YYMMDD)
3 
9C 
Transaction Type. 
Indicates the type of financial transaction, represented 
by the first two digits of ISO 8583:1993 Processing 
Code: 
 0x00 – Purchase Goods/Services 
 0x20 – Refund 
n2  1 
5F2A 
Transaction Currency Code. 
Indicates the currency code of the transaction, in 
accordance with ISO 4217. 
n3  2 
5F36 
Transaction Currency Exponent 
Indicates the implied position of the decimal point from 
the right of the transaction amount, according to ISO 
4217. 
n1  1 
9F02 
Amount, Authorized 
n12 
6 
9F03 
Amount Other 
n12 
6 

NEO Interface Developers Guide    
    180 
Tag  Description  Format  Length 
(in bytes) 
9F1A 
Terminal Country Code. 
(Typically, this has been configured in the reader – 
refer to Group Configuration Tags.) 
n3  2 
9F21 
Transaction Time. 
Local time that the transaction was authorized. If TLV 
9A and 9F21 are not provided, then the reader’s 
current date and time will be used. 
Both date (9A) and time (9F21) tags must be present 
if either one is specified. 
The terminal/POS is responsible for ensuring that the 
time is valid. 
n6 
(HHMMSS)  3 
9F5A 
Terminal Transaction Type (Interac) 
 0x00 = Purchase 
0x01 = Refund 
b  1 
FFEE01 
ViVOtech TLV Group Tag 
b 
variable 
DFEF7A 
Determine ApplePay or AndroidPay transactions 
(Vendi Used only.)  
If vaule set to 1, After reading the card, the output 
data will show tag DFEF7B to indicate whether it is 
apple pay or android pay. 
b  1 
For EMV transactions, if the terminal has already set up one or more of these data items 
using the Set Configuration or Set Configurable Group command, then the terminal need not 
include those data items in the Command Frame. If the terminal includes one or more values 
in the Command Frame, the reader uses the included values. If it does not, the reader just 
uses the default or previously set values. 
The ViVOpay reader starts polling for cards when it receives this command. If it finds a card, it 
tries to complete a transaction with the card. If the card is a supported contactless EMV Card 
the reader uses the TLV fields in the Command Frame for the transactions. If the card is a 
contactless MagStripe Card, the reader does not use the TLV objects for the transaction.  
If the transaction is completed successfully, and the card supported contactless EMV, then the 
reader returns the Clearing Record in the response data, otherwise, if the card does not support 
contactless EMV i.e. it is a contactless MagStripe Card, the reader returns Track information in 
the response data. 
If the transaction cannot be completed successfully, the response contains an appropriate status 
code. The Response Frame contains more error information in the data field, for certain status 
codes. 

NEO Interface Developers Guide    
    181 
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
02h  See Status 
Code Table
See Response 
Frame Data 
Format 
Note: Specific TLV data may or may not be returned based on what was recovered from the 
card. Also, there is no implied sequence for returning the TLVs; the TLVs may or may not be 
returned in the order listed in the table based on what was recovered from the card. 
Note: ViVOcomm and DesFire cards return raw track data only. 
Note: Kiosk III/ Vendi don't support ViVOcomm and DesFire cards.  
If the Status Code is OK or “Request Online Authorization” then the format and contents of the 
data field in the Response Frame are given in the following table.  
Some data objects may not be present depending on the card involved in the transaction and 
the presence or absence of a Clearing Record object (DE 055). All TLV lengths include the Tag 
and Length bytes.  
Table 34: Activate Transaction Response Frame Data Format: 02-01 Command (for 02-40, 
see further below). 
Data Item  Length 
(bytes)  Description 
Track 1 Length 
1 
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 
For MasterCard transactions, this field is always 0.  If track data is 
present, it is contained in the MasterCard TLVs. 
Track 1 Data  
(MagStripe Card) 
Variable 
Track 1 Data (if available).  
Format: ASCII (no null terminator) 
Track 2 Length 
1 
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 
For MasterCard transactions, this field is always 0.  If track data is 
present, it is contained in the MasterCard TLVs. 
Track 2 Data 
(MagStripe Card) 
Variable 
Track 2 Data (if available).  
Format: ASCII (no null terminator) 

NEO Interface Developers Guide    
    182 
Data Item  Length 
(bytes)  Description 
DE055 (Clearing 
Record) Present.) 
1 
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. 
For MasterCard transactions, this field is always 0.   
TLV DE 055 
(Clearing Record) 
Variable 
up to 128
DE 055 data (if available) as a TLV data object encoded with Tag ‘E1’. 
The DE 055 data is the same data as is included in the Clearing 
Record. Refer to the Activate Transaction Clearing Record table. 
Tag: E1         Format: b1...126 variables. 
TLV Data 
Variable 
See Activate Response TLVs below.   
Not all of the tags will be present. 
MasterCard transactions do not return a Clearing Record or the track data fields.  Tags are 
returned in a format specified by M/Chip 3.0.  Track 1 and Track2 data are encapsulated in 
tags according to the MasterCard specification. 
Table 35: Activate Transaction Response TLVs 
Tag  Description  Format  Length 
(in bytes) 
50  
Application Label.  
Name associated with the AID, in accordance with 
ISO/IEC 7816-5. 
an  <= 16 
56 
Track 1 Equivalent Data. 
Contains the data objects of the track 1 according to 
[ISO/IEC 7813] Structure B, excluding start sentinel, end 
sentinel and LRC. The Track 1 Data may be present in 
the file read using the READ RECORD command during a 
mag-stripe mode transaction. 
ans  <=79 
57 
Track 2 Equivalent Data. 
Contains the data objects of the track 2, in accordance 
with ISO/IEC 7813, excluding start sentinel, end 
sentinel, and LRC. 
b  <=19 
5A 
Application Primary Account Number (PAN). 
The cardholder account number.   cn 
<=19 
(10 bytes) 
82 
Application Interchange Profile. 
Indicates the capabilities of the Card to support specific 
functions in the application. 
b  2 
84  
DF Name. 
Identifies the name of the DF as described in ISO/IEC 
7816-4.  
b  5..16 
95 
Terminal Verification Results. 
Status of various functions from the terminal 
perspective. 
b  5 
99 
Online PIN Block 
n 
16 
9A 
Transaction Date. 
Local date that the transaction was performed. 
n6 
(YYMMDD)  3 
9B 
Transaction Status Information. 
b 
2 

NEO Interface Developers Guide    
    183 
Tag  Description  Format  Length 
(in bytes) 
9C 
Transaction Type. 
Indicates the type of financial transaction, represented 
by the first two digits of ISO 8583:1993 Processing Code.
n2  1 
5F20 
Cardholder Name. 
b 
<=26 
5F24 
Application Expiration Date. 
The date after which the card application has expired. 
n6 
(YYMMDD) 
3 
5F25 
Application Effective Date. 
Date from which the card application may be used. 
n6 
(YYMMDD)  3 
5F2A 
Transaction Currency Code. 
Indicates the currency code of the transaction, in 
accordance with ISO 4217. 
n3  2 
5F2D  
Language Preference. 
1-4 languages stored in order of preference, each 
represented by 2 alphabetical characters according to 
ISO 639.  
an  2..8 
5F34 
PAN Sequence Number. 
Identifies and differentiates cards with the same 
Application PAN. 
n2 (BCD)  1 
9F02 
Amount, Authorized 
n12 
6 
9F03 
Amount Other 
n12 
6 
9F06 
Application Identifier (AID).  
b 
5..16 
9F07 
Application Usage Control. 
b 
2 
9F09 
Application Version Number (Reader) 
Version number assigned by the payment system for the 
Kernel application. 
b  2 
9F0D 
Issuer Action Code (Default). 
b 
5 
9F0E 
Issuer Action Code (Denial). 
b 
5 
9F0F 
Issuer Action Code (Online). 
b 
5 
9F10 
Issuer Application Data. 
Contains proprietary application data for transmission to 
the issuer in an online transaction. 
b  <=32 
9F11 
Issuer Code Table Index. 
Indicates the code table according to ISO/IEC 8859 for 
displaying the Application Preferred Name.  
n2  1 
9F12 
Application Preferred Name. 
The preferred mnemonic associated with the AID.   ans  <=16 
9F1A 
Terminal Country Code. 
(Typically, this has been configured in the reader – refer 
to Group Configuration Tags.) 
n3  2 
9F1E 
Interface Device Serial Number. 
Unique and permanent serial number assigned to the IFD 
by the manufacturer. (Typically, this has been 
configured in the reader – refer to Group Configuration 
Tags.) 
an  8 
9F21 
Transaction Time. 
Local time that the transaction was performed.  
n6 
(HHMMSS)  3 
9F26 
Application Cryptogram. 
This is returned in the response to GenAC or RecoverAC.  b  8 

NEO Interface Developers Guide    
    184 
Tag  Description  Format  Length 
(in bytes) 
9F27 
Cryptogram Information Data 
Indicates the type of cryptogram and the actions to be 
performed
.
b  1 
9F33 
Terminal Capabilities. 
Indicates the card data input, CVM, and security 
capabilities of the Terminal and Reader. 
b  3 
9F34 
Cardholder Verification Method (CVM) Results. 
Indicates result of last CVM performed.  b  3 
9F35 
Terminal Type. 
(Typically, this has been configured in the reader – refer 
to Group Configuration Tags.) 
n2  1 
9F36 
Application Transaction Counter. 
Counter maintained by the application in the card.  b  2 
9F37 
Unpredictable Number. 
A challenge number used by the card to ensure 
uniqueness of the generated cryptogram. 
b  4 
9F39 
Point of Service (POS) Entry Mode. Indicates the method 
by which the PAN was entered. 
Values: 
90h = Magnetic Stripe Reader Swipe 
91h = Contactless MSD 
05h = Contact EMV 
07h = Contactless EMV 
80h = Contact Fallback to Magnetic Stripe 
n2  1 
9F42 
Application Currency Code. 
Indicates the currency in which the account is managed 
in accordance with ISO 4217. 
n3  2 
9F45 
Data Authentication Code. 
b 
2 
9F4C 
ICC Dynamic Number. 
b 
8 
9F53 
Transaction Category Code. 
Indicates the type of transaction being performed, and 
which may be used in card risk management. 
an  1 
9F5A  
Membership Scheme - Account Number (Amex) 
Or 
Terminal Transaction Type (Interac) 
an 
         b 
<=5 
1 
9F5B 
Membership Scheme Number of Points (Amex). 
an 
<=29 
Issuer Script Result(UICS) 
b 
<=128 
9F5D 
Available Offline Spending Amount (Balance). 
b 
6 
9F6B 
Track 2 Data. 
Contains the data objects of the track 2 according to 
ISO/IEC 7813, excluding start sentinel, end sentinel and 
LRC.  
b  <=19 
9F6C 
Card Transaction Qualifiers (Visa transactions only). If 
card does not return this tag then a length of zero is 
returned. 
b  16 
9F6D 
Mag-Stripe Application Version Number (Reader). 
Version number assigned by the payment system for the 
specific mag-stripe mode functionality of the Kernel. 
b  2 

NEO Interface Developers Guide    
    185 
Tag  Description  Format  Length 
(in bytes) 
9F6E 
Third Party Data. 
Contains various information, possibly including 
information from a third party. 
b  5..32 
9F74 
VLP Issuer Authorization  
b 
6 
E300 
Authorization Code. 
b 
8 
DF8104 
Balance Read Before GenAC. (MasterCard) 
Balance read from the card before the GenAC.  n12  6 
DF8105 
Balance Read After GenAC. (MasterCard) 
Balance read from the card after the GenAC. 
n12  6 
DF8115 
Error Indication. (MasterCard) 
Flags defining the error conditions from the transaction.  
Refer to the M/Chip PayPass specification. 
b  6 
DF8129 
Outcome Parameter Set (MasterCard). 
Contains the result of the transaction.  Refer to the 
M/Chip PayPass specification. 
b  8 
FF8105 
Data Record (MasterCard, container). 
Contains the data from the transaction.  Refer to the 
M/Chip PayPass specification. 
b  varies 
FF8106 
Discretionary Data (MasterCard, container). 
Contains the discretionary data from the transaction. 
Refer to the M/Chip PayPass specification. 
b  varies 
FFEE01  
ViVOPay Group Tag. (container) 
This three-byte Group Tag was created to contain 
ViVOpay proprietary Tags. See tags below. 
b  <=76 
DF30 
(ViVOpay 
proprietary) 
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.  
b  1 
DF31 
(ViVOpay 
proprietary)
DD Card Track 1 (MagStripe Card) 
This tag is embedded in the ViVOpay Group tag. If Track 
1 Data is present, then DD CARD TRACK1 contains a copy 
of the discretionary data field of Track 1 Data as 
returned by the card. 
b  <= 56 
DF32 
(ViVOpay 
proprietary)
DD Card Track 2 (MagStripe Card) 
This tag is embedded in the ViVOpay Group tag. If Track 
2 Data is present, then DD CARD TRACK2 contains a copy 
of the discretionary data field of Track 2 Data as 
returned by the card. 
b  <=8 
DF33 
(ViVOpay 
proprietary)
Receipt Requirement (Interac) 
This tag is embedded in the ViVOpay Group tag for 
Interac transaction responses. 
00 = No receipt required 
01 = Receipt required 
b  1 
DF5B 
(ViVOpay 
proprietary 
Terminal Entry Capability (Visa). 
For Visa Transactions, defines reader support for VSDC 
contact chip. 
Values: 
05h = Reader supports VSDC contact chip 
08h = Reader does not support VSDC contact chip 
n2  1 

NEO Interface Developers Guide    
    186 
Tag  Description  Format  Length 
(in bytes) 
DFEE26 
Encrypt Information 
Length: 1 bytes 
Values (same as Attribution): 
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 
Bit  6/5: Reserved 
Bit  7: Encryption Status 
      0 = Encryption OFF 
      1 = Encryption ON 
b  1 
DFEF73 
CUP Output Message Info (CUP) 
Byte 1  
b8
b7
b6
b5
b4
b3
b2
b1
-
-
-
-
-
-
-
X
Authorisation Message 
-
-
-
-
-
-
X
-
Confirm Message 
-
-
-
-
-
X
-
-
Reversal Message 
-
X
X
X
X
-
-
-
Terminal Floor Limit Check 
X
-
-
-
-
-
-
-
Date Exprired 
b  1 
DFEF7B 
(Vendi Used Only) 
If tag DFEF7A vaule set to 1, After reading the card, the 
output data will show tag DFEF7B to indicate whether it 
is apple pay or android pay. 
If tag DFEF7A not set, output data will not output the 
tag. 
0 = Not Apple Pay/ Apple VAS or Android Pay/ Android 
VAS 
1 = Apple Pay or Apple VAS 
2 = Android Pay or Android VAS 
b  1 
If a Clearing Record is returned, its potential TLVs are described in the following table.   
Different card applications may have a slightly different format, or different TLVs, for the 
Clearing Record.  MasterCard M/Chip 3.0 does not return a clearing record. 
Table 36: Activate Transaction Clearing Record TLVs 
Tag 
Data Element Name 
Format 
Origin 
E1 
DE 055 
b1...126 var 
50 
Application Label 
ans1…16 var 
Card 
82 
Application Interchange Profile 
b2 
Card 
84 
DF name 
b 
Card 
95 
Terminal Verification Results: 
Indicates results of various transaction processes. 
b 5 
Reader 

NEO Interface Developers Guide    
    187 
Tag 
Data Element Name 
Format 
Origin 
9A 
Transaction Date 
n6 
Terminal 
9B 
Transaction Status Information 
b2 
Terminal 
9C 
Transaction Type 
 0x00 = Purchase Goods/Services 
 0x20 = refund 
n2 
Reader 
5F2A 
Transaction Currency Code 
n3 
Terminal 
5F2D 
Language Preference 
an2-8 var 
Card 
5F34 
Application Primary Account Number Sequence Number 
n2 
Card 
9F02 
Amount, Authorized (Numeric) 
n12 
Terminal 
9F03 
Amount, Other (Numeric, Visa only) 
n12 
Terminal 
9F08 
Application Version Number 
b2 
Card 
9F09 
Application Version Number 
b2 
Card 
9F10 
Issuer Application Data 
b1-32 var 
Card 
9F11 
Issuer Code Table Index 
n2 
Card 
9F12 
Application Preferred Name 
ans1-16 var 
Card 
9F1A 
Terminal Country Code 
n3 
Terminal 
9F21 
Transaction Time 
n6 
Terminal 
9F26 
Application Cryptogram 
b8 
Card 
9F27 
Cryptogram Information Data 
b1 
Card 
9F33 
Terminal Capabilities 
b3 
Terminal 
9F34 
Cardholder Verification Method (CVM) Results 
b3 
Terminal 
9F35 
Terminal Type (Interac) 
b1 
Terminal 
9F36 
Application Transaction Counter 
b2 
Card 
9F37 
Unpredictable Number 
b4 
Reader 
9F39 
POS Entry Mode  
b1 
Reader 
9F45 
Data Authentication Code 
b2 
Card 
9F4C 
ICC Dynamic Number 
b2-8 var 
Card 
9F59 
Terminal Transaction Information (Interac) 
b3 
Terminal 
9F5A 
Terminal Transaction Type (Interac) 
b1 
Terminal 
9F66 
Visa TTQ 
b4 
Reader 
9F6C 
Card Transaction Qualifiers (Visa only) 
b2 
Card 
9F6E 
Form Factor Indicator  
or 
PayPass Third Party Data 
b4 
b5-32 var 
Reader 
Reader 
9F74 
VLP Issuer Authentication Code 
b 
Terminal 
9F7C 
Customer Exclusive Data 
b1-32 var 
Reader 
DF30 
Track Data Source  
 0x0C – swiped mag-stripe card 
0x00 – contactless card 
b1 
Reader 
DF33 
Receipt Required (Interac) – calculated by checking the 
Interac Terminal Receipt Required Limit (9F5F). 
b1 
Reader 
DF52 
Transaction CVM: 
 00 = for No CVM 
 01 = for Signature 
 02 = for Online PIN 
03 = for Mobile CVM / Consumer Device CVM 
b1 
Reader 
DF76 
TVR Backup – value of TVR prior to GenAC 
b5 
Reader 

NEO Interface Developers Guide    
    188 
Tag 
Data Element Name 
Format 
Origin 
FFEE01 
ViVOpay Proprietary Group Tag 
b variable 
Terminal 
If the Status Code being returned in the Response Frame is “Failed” and the Error Code is not 
“Request Online Authorization”, then the contents of the Data field contains further information 
on the cause of the failure and does not contain the Track or Clearing Record information. In 
this case the Data field in the Response Frame has the following format. 
Table 37: Activate Transaction Cause of Failure When Not Requesting Online Authorization 
Data Field 
Length 
(bytes) 
Description 
Error Code 
1 
Error Code giving the reason for the failure. See sub-section on 
Error Codes 
SW1 
1  
Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
SW2 
1 
Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
RF State Code 
1 
RF State Code indicating exactly where the error occurred in 
the Reader-Card transaction flow. See sub-section on RF State 
Codes.  
If the Status Code being returned in the Response Frame is “Failed” and the Error Code is 
“Request Online Authorization”, then the contents of the Data field contains further information 
on the cause of the failure and does not contain the Track or Clearing Record information. In 
this case the Data field in the Response Frame has the following format. 
Table 38: Activate Transaction Cause of Failure When Requesting Online Authorization 
Data Field  Length (bytes)  Description 
Error Code 
1 
Error Code giving the reason for the failure. See sub-
section on Error Codes 
SW1 
1 
Value of SW1 returned by the Card (SW1SW2 is 0000 if 
SW1 SW2 not available) 
SW2 
1 
Value of SW2 returned by the Card (SW1SW2 is 0000 if 
SW1 SW2 not available) 
RF State Code 
1 
RF State Code indicating exactly where the error occurred 
in the Reader-Card transaction flow. See sub-section on 
RF State Codes.  
TLV Track 2 
Equivalent Data 
21 (including Tag & 
Length) 
Track 2 Equivalent Data as a TLV object. 
Tag: 57     Format: b19 
Amount Requested  
6  
Difference between the Terminal Contactless Transaction 
Limit (FFF1) and Balance.   Format: n12 
If the Status Code is “User Interface Event” then the format and contents of the data field in 
the Response Frame are given in the following table: 
Data Item  Length (bytes)  Description 
Transaction status 
1 
01: The reader detects the card and initiates the 
transaction. 

NEO Interface Developers Guide    
    189 
For any other Status Code the data field is empty. 
If the transaction failed, the Response Frame may have the following format. Invalid or 
inappropriate cards may result in no Response Frame.  
Table 39: Activate Transaction Response Frame Format, Failed Transaction: 02-01 Command 
(for 02-40, see further below) 
Data Item  Length 
(bytes)  Description 
Error Code 
1 
Error Code giving the reason for the failure. See sub-section on 
Error Codes 
SW1 
1 
Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
SW2 
1 
Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
RF State Code 
1 
RF State Code indicating exactly where the error occurred in the 
Reader-Card transaction flow. See RF State Codes.  
TLV data 
Varies 
Refer to the Activate Response TLVs. 
If the Status Code being returned in the Response Frame is "Request Online PIN", the reponse 
data has the following format. 
Data Item  Length 
(bytes)  Description 
TLV Application PAN 
Variable 
up to 12 
Application Primary Account Number (PAN) as a TLV object. 
Tag: 5A Format: cn variable length up to 19(10 bytes) 
Special TLV for Discover D-PAS and SmartTap  
A new ViVOtech proprietary tag “TLV Special Flow” will be added to the Activate Transaction command 
data as shown below. 
Command Data 
Data Item 
Length  
(Bytes) 
Description 
: 
: 
: 

NEO Interface Developers Guide    
    190 
ViVOtech TLV 
Group Tag 
FFEE01 
Variable 
TLV  
Special 
Flow 
2 Byte Tag +  
1 Byte Length 
+  
Variable data 
(max 40 
bytes) 
This TLV defines one or more special transaction 
flows for specific non-payment process.  
Tag: DF50 
Format:  
The TLV value contains one or more 4-byte 
“Special Flow Record” entries. The format of a 
Special Flow Record is given in the next table. A 
Special Flow TLV cannot have more than 10 
record entries. 
TLV 
Issuer 
Script 
2 Byte Tag +  
n-Byte Length 
+  
Variable Data 
This TLV is for Discover D-PAS only. 
This TLV contains the Issuer Script that is to be 
sent to the card. The Issuer Script is defined by 
the Discover D-PAS specification. 
Tag: DF51 
Format: Raw data 

NEO Interface Developers Guide    
    191 
Special Flow Record Format 
Byte # 
Field 
1 
Application Flow Code 
This is the card application for which this special flow entry is being defined. This can 
be any of the Application Flows defined for the ViVOtech2 “Set Configurable AID” such 
as Discover D-PAS. This also can be any special Application Flow that not use 
ViVOtech2 “Set Configurable AID” such as SmartTap. 
2 
Special Transaction Flow Flags 
This byte defines the nature of the special flow and indicates whether the Application 
Flow defined in the previous byte occurs during pre-PPSE or post-PPSE processing. It 
also indicates whether a standard ISO Transaction will be performed in between pre-
PPSE and post-PPSE processing or skipped.  
The flags within this byte are given below. 
B7 
B6 
B5 
B4 
B3 
B2 
B1 
B0 
Flag Description 
0 
0 
0 
0 
0 
Unused. Set to 0 
          1
Perform  
Post-PPSE Transaction 
            1
Perform  
Pre-PPSE Transaction 
              1 
Perform ISO Payment 
Transaction (PPSE+AID) 
3 
Special Transaction Type Flags for Pre-PPSE Processing 
This byte indicates the type of special (non-payment) transaction that will be 
performed in the Pre-PPSE transaction processing (if any).  
The flags within this byte are given below.  
Bit7 
Bit6 
Bit5 
Bit4 
Bit3 
Bit2 
Bit1 
Bit0 
Flag Description 
0 
0 
0 
0 
0 
0 
Unused. Set to 0 
1 
Write Transaction 
1 
Read Transaction 
4 
Special Transaction Type Flags for Post-PPSE Processing 
This byte indicates the type of special (non-payment) transaction that will be 
performed in the Post-PPSE transaction processing (if any).  
The flags within this byte are given below.  
Bit7 
Bit6 
Bit5 
Bit4 
Bit3 
Bit2 
Bit1 
Bit0 
Flag Description 
0 
0 
0 
0 
0 
0 
Unused. Set to 0 
1 
Write Transaction 
1 
Read Transaction 
Special Flow for Discover D-PAS 
For Discover D-PAS, Application Flow Code is 14 (0Dh). 
For Discover D-PAS 2nd Presentment of Issuer Update Process, the value in the Special Flow TLV will be: 
Pre-PPSE Write D-PAS On-Line Script Processing DF50 04 0D 02 02 00 
The 0xFFEE01 TLV format for Discover D-PAS when input Issuer Script for Issuer Update Processing: 
  FFEE01 <len> DF50 04 0D020200 DF51 <len> <Issuer Script> 
  <Issuer Script> is defined by D-PAS spec. 
Steps to do Issuer Update Processing for Discover D-PAS: 
Step1: Set TTQ Byte3 Bit8 “Issuer Update Processing supported” to be 1 
Step2: Use “Activate Transaction Command (02-01)” to do normal Discover D-PAS transaction and reader 
will response transaction result and data. 
Step3: After host receives Online Request from reader, host can send “Activate Transaction Command (02-
01)” to reader with Issuer Scripts(DF51 TLV) in FFEE01 TLV. Then reader will run Issuer Update Processing 
and response TVR and TSI 
Special Flow for UICS 

NEO Interface Developers Guide    
    192 
For UICS, the special flow code ,Issuer Script format and usage is the same as D-PAS. 
Special TLV for PayPass Application 
This design connects the M/Chip signal handling to the existing GR user interface module (“Process  D”)  to 
support MSG and OUT signals in ViVOpay readers with displays. 
Reference files 
[1]  EMV Contactless Book C-2, Kernel 2 Specification, v2.3 
[2]  PayPass Test Cases for PayPass v3.0 Level 2 Reader Testing, Aug 2011 
[3]  EMV  Contactless  Specifications  for  Payment  Systems,  Book  A,  Architecture  and  General 
Requirements, v2.3 
[4]  PayPass M/Chip Reader Card Application Interface Specification v3.0.2 
[5]  Engineering Specification, MChip 3.0 on GR, v1.6 
(1)  MSG Signals  
MSG Signals are used by other processes to send the User Interface Request Data to Process D. Process D 
manages the User Interface Requests as defined in reference [3] and displays a  message and/or a status. 
The User Interface  Request  Data  is  defined in  reference [1]  as tag  DF8116 and holds twenty-two bytes of 
data as shown in the table below: 
Data Field 
Length 
Message Identifier 
1 
Status  
1 
Hold Time  
3 
Language Preference 
8 
Value Qualifier 
1 
Value  
6 
Currency Code  
2 
(2) OUT Signals 
OUT Signals are used by the kernel (Process K) to indicate the outcome of a transaction.  
According to reference [1] the OUT signal may comprise the following objects. 
Data Field 
Tag 
Length 
Outcome Parameter Set  
DF8129 
8 
Data Record (if any) 
FF8105 
var. 
Discretionary Data 
FF8106 
var. 
User Interface Request Data (if any) 
DF8116 
22 
According to reference [1], all objects listed below are to be added to the output buffer if they are present. 
The Data Record (FF8105) may contain the following objects for an EMV transaction, with a maximum length 
of 256 bytes (74 TL, 182 V). 
Data Field 
Tag 
Length 
Amount, Authorized (Numeric) 
9F02 
6 
Amount, Other (Numeric) 
9F03 
6 
Application Cryptogram 
9F26 
8 
Application Expiration Date 
5F24 
3 
Application Interchange Profile 
82 
2 
Application Label      
50 
16 
Application PAN 
5A 
16 
Application PAN Sequence Number 
5F34 
1 
Application Preferred Name     
9F12 
16 
Application Transaction Counter 
9F36 
2 

NEO Interface Developers Guide    
    193 
Application Version Number (Reader) 
9F08 
2 
Cryptogram Information Data 
9F27 
1 
CVM Results 
9F34 
3 
DF Name    
84 
16 
Interface Device Serial Number 
9F1E 
8 
Issuer Application Data 
9F10 
32 
Issuer Code Table Index 
9F11 
1 
Terminal Capabilities 
9F33 
3 
Terminal Country Code 
9F1A 
2 
Terminal Type 
9F35 
1 
Terminal Verification Results 
95 
5 
Track 2 Equivalent Data 
57 
19 
Transaction Category Code 
9F53 
1 
Transaction Currency Code 
5F2A 
2 
Transaction Date 
9A 
3 
Transaction Type 
9F21 
3 
Unpredictable Number 
9F37 
4 
The Data Record may contain the following objects for  a Mag-Stripe  transaction,  with  a possible maximum 
length of 182 bytes (20 TL, 162 V). 
Data Field 
Tag 
Length 
Application Label      
50 
16 
Application PAN 
5A 
16 
Application Preferred Name     
9F12 
16 
Mag-stripe Application Version Number 
9F6D 
2 
DF Name    
84 
16 
Issuer Code Table Index 
9F11 
1 
Track 1 Data  
56 
76 
Track 2 Data 
9F6B 
19 
Discretionary  Data  is  always  included  in  an  OUT  signal.  Discretionary  Data  for  an  EMV  transaction  may 
include the following objects, with a possible maximum length of 1009 bytes (61 TL, 948 V), ignoring the Data 
Storage elements. Without the Torn Record maximum size would only be 80 bytes.  
FF8106 
var 
Discretionary Data 
9F42 
2 
Application Currency Code 
DF8105 
6 
Bal Read After Gen AC 
DF8104 
6 
Bal Read Before Gen AC 
DS Summary 3 
DS Summary Status  
DF8115 
6 
Error Indication  
DF810E 
1 
Post-Gen AC Put Data Status 
DF8105 
1 
Pre-Gen AC Put Data Status 
9F6E 
32 
Third Party Data  
FF8101 
894 
Torn Record 
A Torn Record (FF8101) contains the following objects and may have a maximum length of 894 bytes (66 TL, 
828 V); 
Data Field 
Tag 
Length 
Amount, Authorized (Numeric) 
9F02 
6 
Amount, Other (Numeric) 
9F03 
6 
Application PAN 
5A 
16 
Application PAN Sequence Number 
5F34 
1 
Balance Read Before Gen AC 
DF8104 
6 
CDOL1 Related Data 
DF8107 
252 
CVM Results 
9F34 
3 

NEO Interface Developers Guide    
    194 
DRDOL Related Data  
DF8113 
252 
IDS Status  
DF8128 
1 
Interface Device Serial Number 
9F1E 
8 
PDOL Related Data  
DF8111 
252 
Reference Control Number  
DF8114 
1 
Terminal Capabilities 
9F33 
3 
Terminal Country Code 
9F1A 
2 
Terminal Type 
9F35 
1 
Terminal Verification Results 
95 
5 
Transaction Category Code 
9F53 
1 
Transaction Currency Code 
5F2A 
2 
Transaction Date 
9A 
3 
Transaction Type 
9F21 
3 
Unpredictable Number 
9F37 
4 
Discretionary Data for a Mag-Stripe transaction may include the following objects, with a possible maximum 
length of 117 bytes (15 TL, 102 V): 
FF8106 
var 
Discretionary Data 
DF812A 
56 
DD Card (Track 1) 
DF812B 
8 
DD Card (Track 2) 
DF8115 
6 
Error Indication  
9F6E 
32 
Third Party Data  
The  most  typical  Intermediate  OUT  Signal  (for cases  such  as  Error  – Other  Card  and  Try  Again)  are  only 
required  to  include  the  Outcome  Parameter  Set and  the  Error Indication  and  the  L2  tests  usually focus on 
verifying data within these objects. 
Tag 
Len 
Data Object 
DF8129 
8 
Outcome Parameter Set  
FF8106 
10 
Discretionary Data 
DF8115 
6 
Error Indication 
(3) Signal Data TLV – FFEE04 
A new proprietary TLV is defined to hold the intermediate signal data during a transaction. It will be populated 
with one or more signal objects as the UI_MSG_Signal function in UserInterface.c receives MSG Signals and 
the UI_OUT_Signal function in UserInterface.c receives OUT Signals. 
This  tag  must  be  included  in  the  ACT  command  to  enable  the  signal  data  capture  feature  during  the 
transaction. If it is received in the ACT command this feature is enabled and the Signal Data Handler will add 
signal data to the buffer.  If  it is not received, the Signal Data  Handler will do nothing  and the length of  this 
TLV will remain 0 and nothing will be returned. 
A second new proprietary tag is defined (FFEE05) which is used to separate and identify each individual 
signal entry added to the buffer, whether it is a MSG signal or an OUT signal. A new tag (DF8914) which 
includes Activate Response TLVs (Table 29) may be included in FFEE05. 
When the transaction is complete, if tag FFEE04 was received in the ACT command and the Signal Data tag 
is  not  empty,  it  will  be  added  to  the  ACT  response.  The  signal  data  buffer  (the  “contents”  of  FFEE04)  is 
cleared when an ACT command is received.  
Activate Transaction Response Frame Data Format 
For additional information on how data portions are encrypted, please see “80000502-001, ID 
Tech Encrypted Data Output Formats” for details. 
Mode/Transaction Output Format Matrix—NSRED Device Contactless card 

NEO Interface Developers Guide    
    195 
Note: When MSR/MSD or EMV Encryption is enabled and Data encryption Key exists, Burst 
Mode is disabled (always OFF) 
When encryption is enabled and Data encryption Key exists, Encrypt Mode is ON. 
Otherwise (encryption is disabled or Data encryption Key is absent), Encrypt Mode is OFF. 
Poll Mode 
Encrypt Mode 
Burst Mode 
Command 
Output Format 
Poll On 
Demond 
OFF 
NA 
02-01 
02-01 plaintext 
NA 
02-40 
02-40 plaintext 
ON  NA 
02-01 
Not Allow 
02-40  02-40 encrypted 
Auto Poll 
OFF 
ON 
No Cmd  Burst Format 
02-01  Burst Format 
02-40  Burst Format 
AutoExit 
No Cmd  Burst Format 
02-01 
02-01 plaintext 
02-40 
02-40 plaintext 
OFF 
03-00 
02-01 plaintext 
02-01 
02-01 plaintext 
03-40  02-40 plaintext 
02-40  02-40 plaintext 
ON  OFF 
03-00  Not Allow 
02-01  Not Allow 
03-40  02-40 encrypted 
02-40 
02-40 encrypted 
Mode/Transaction Output Format Matrix—SRED Device Contactless card 
Note: For SRED device, encryption is always enabled and Burst Mode is disabled (always OFF) 
Poll Mode  Encrypt Mode  Burst Mode  Command  Output Format 
Poll On 
Demond  ON  OFF  02-01  Not Allow 
02-40  02-40 encrypted 
Auto Poll  ON  ON 
03-00  Not Allow 
02-01  Not Allow 
03-40 
02-40 encrypted 
02-40 
02-40 encrypted 

NEO Interface Developers Guide    
    196 
Table 40: Success Transaction--Plaintext data field format (02-01) 
Data Item  Length 
(bytes)  Description 
Track 1 Length 
1 
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 
For MasterCard transactions, this field is always 0.  If track data is 
present, it is contained in the MasterCard TLVs. 
Track 1 Data  
(MagStripe Card) 
Variable 
Track 1 Data (if available).  
Format: ASCII (no null terminator) 
Track 2 Length 
1 
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 
For MasterCard transactions, this field is always 0.  If track data is 
present, it is contained in the MasterCard TLVs. 
Track 2 Data 
(MagStripe Card) 
Variable 
Track 2 Data (if available).  
Format: ASCII (no null terminator) 
DE055 (Clearing 
Record) Present.) 
1 
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. 
For MasterCard transactions, this field is always 0.   
TLV DE 055 
(Clearing Record) 
Variable 
up to 128
DE 055 data (if available) as a TLV data object encoded with Tag ‘E1’. 
The DE 055 data is the same data as is included in the Clearing 
Record. Refer to the Activate Transaction Clearing Record table. 
Tag: E1         Format: b1...126 variables. 
TLV Data 
Variable 
See Activate Response TLVs   
Not all of the tags will be present. 
Table 41: Successful Transaction -- Plaintext and Encrypted data field format for Contactless 
card (02-40) 

NEO Interface Developers Guide    
    197 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
KSN of DUKPT Account Key 
Tag: FFEE12           Format: Binary 
If encrypt disable or MSR data, this tag is not present.  
TLV Track 1 Data  
(MagStripe Card) 
Variable
TDES/AES Encrypted Track 1 Data (if available) with Padding 
(0x00). If Track 1 is not available, this field is not present. 
Tag: FFEE13        Format: ASCII (no null terminator) 
TLV Track 2 Data 
(MagStripe Card) 
Variable
TDES/AES Encrypted Track 2 Data (if available) with Padding 
(0x00). If Track 2 is not available, this field is not present 
Tag: FFEE14        Format: ASCII (no null terminator) 
TLV DE 055  
(Clearing Record) 
Variable 
up to 128 
DE 055 data (if available) as a TLV data object encoded with Tag 
‘E1’. The DE 055 data is the same data as is included in the Clearing 
Record. Refer to the Activate Transaction Clearing Record table. 
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 
Tag: E1         Format: b1…126 variables. 
TLV Data  Variable
See Activate Response TLVs   
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 
Not all of the tags will be present.
For MasterCard transactions, this field is not present.  If track 
data is present, it is contained in the MasterCard TLVs. 
For MasterCard transactions, this field is not present.  If track 
data is present, it is contained in the MasterCard TLVs. 

NEO Interface Developers Guide    
    198 
Table 42: Success Transaction -- Plaintext and Encrypted data field format for MSR card (02-
40) 
Data Item  Length 
(bytes)  Description 
Attribution 
1 
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 
Bit  6/5: Reserved 
Bit  7: Encryption Status 
      0 = Encryption OFF 
 1 = Encryption ON 
MSR TLV 
Variable 
MSR TLV  
Data length compose of data length indicator (1 byte) and actual data length 
byte. 
MSR FIELD DATA length  Data length 
Indicator byte
Data length 
byte 
Data <128 bytes  01~7F  X  1 
128 bytes <= Data <=255 bytes  80~FF  81  1 
Data > 255 bytes  FF~  82  2 
Data is follow Enhanced Encrypted MSR FIELD DATA. Refer to Appendix A.11: 
Enhanced Encrypted MSR Data Output Format 
Tag: DFEE23           Format: Binary 
TLV Data 
Variable 
See Activate Response TLVs   
Table 43: Failed Transaction--Plaintext data field format (02-01) 
Data Item  Length 
(bytes)  Description 
Error Code 
1 
Error Code giving the reason for the failure. See sub-section on 
Error Codes 
SW1 
1 
Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
SW2 
1 
Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 SW2 
not available) 
RF State Code 
1 
RF State Code indicating exactly where the error occurred in the 
Reader-Card transaction flow. See RF State Codes.  
TLV data 
Varies 
Refer to the Activate Response TLVs. 

NEO Interface Developers Guide    
    199 
Table 44: Failed Transaction-- Plaintext and Encrypted data field format (02-40) 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
KSN of DUKPT Account Key 
Tag: FFEE12           Format: Binary 
If encrypt disable or MSR data, this tag is not present.  
TLV Contactless 
Error Code Table 
(FFEE1F) 
Variable
Byte 1: Error Code. 
(Error Code giving the reason for the failure.) 
Byte 2: SW1 
      (Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available)) 
Byte 3: SW2 
      (Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available)) 
Byte 4: RF State Code 
      (RF State Code indicating exactly where the error occurred in the 
Reader-Card transaction flow.) 
TLV Data  Variable
Refer to the Activate Response TLVs. 
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 

NEO Interface Developers Guide    
    200 
Data Item  Length 
(bytes)  Description 
Attribution  1  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) 
Variable
KSN of DUKPT Account Key 
Tag: FFEE12           Format: Binary 
If encrypt disable or MSR data, this tag is not present.  
TLV Contactless 
Error Code Table 
(FFEE1F) 
Variable
Byte 1: Error Code. 
(Error Code giving the reason for the failure.) 
Byte 2: SW1 
      (Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available)) 
Byte 3: SW2 
      (Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available)) 
Byte 4: RF State Code 
      (RF State Code indicating exactly where the error occurred in the 
Reader-Card transaction flow.) 
TLV Data  Variable
Refer to the Activate Response TLVs. 
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 
Continue Transaction for Cardholder Verification (02-07) 
Use this command to send the result of Online PIN Request and to continue a contactless UICS 
transaction. If the prior response Status Code is 31h(Request Online PIN), this is the next 
command to send. This command is now used for CUP brand only. 

NEO Interface Developers Guide    
    201 
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  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB)  CRC (MSB)
ViVOtech2\0  02h  07h  00h  00h 
See Data 
Table     
The format and contents of the data field are as below: 
Data Item  Length 
(bytes)  Description 
Result 
1 
Mandatory 
00h: Request Online PIN 
Other: Cancelled PIN Request 
Encrypted PIN Block 
16 
Mandatory if Result is 00h for Online PIN 
Note: After Online Response, if the (02-07) command is not received for 60s, get Online PIN will 
timeout. 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14+n 
Byte 15+n 
Header Tag 
& Protocol 
Version 
Command
Status Code
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)
CRC  
(LSB) 
ViVOtech2\0
02h 
See Status 
Code Table

NEO Interface Developers Guide    
    202 
Get Transaction Result (03-00 and 03-40) 
NOTE: 03-00 is a legacy command, applicable to non-encrypted transactions only.When EMV 
encryption ON or MSR/MSD encryption ON, if Data encryption Key is loaded, 03-00 will be 
disabled. 03-40 is a unified command for both non-encrypted and encrypted transaction. 
Use this command when the ViVOpay reader is functioning in “Auto Poll” mode. In this mode the 
reader does not wait for an Activate Transaction command to start polling for a card. It is 
always in Auto Poll Mode. When it detects a card, it carries out a transaction with the card. If 
the card is a supported contactless MagStripe card, the reader does not need any parameters 
from the terminal. If the card is a supported contactless EMV Card, then the reader uses the 
default terminal parameters (Group 0 TLVs) in the reader. If some terminal parameters had 
been set by using the Set Configuration command, then the reader uses the new values for these 
parameters. 
If the transaction is successful, the reader keeps the transaction data (Track or Clearing Record) 
in its memory. When it receives the Get Transaction Result command, it returns this data to the 
terminal immediately and reset its data buffer. If the reader has not detected any card since 
power up or since the last Get Transaction Result command, and this command is received, the 
reader responds back immediately indicating that it has no data for the terminal. 
In Auto Poll Mode the reader can carry out only contactless MagStripe and contactless EMV 
transactions. It cannot carry out any ticketing or ePurse transactions since these transactions 
require interaction with the Terminal during the transaction itself.  
Note: For Non-SRED version device, response format for Activate Transaction Command is 
according to “Set Data Encryption Enable Flag (C7-36)” setting and Data encryption Key. 
When Data Encryption is disabled, device responds with plaintext data format. When Data 
Encryption is enabled: (1) When Data encryption Key exists and is valid, device responds with  
encrypted data format. (2) When Data encryption Key does not exist, device responds with 
plaintext data format (3) When Data encryption Key exhausts, device responds status code 
0x91 and no data. 
For SRED version device, response format for Activate Transaction Command is according to 
Data encryption Key. When Data encryption Key exists and is valid, device responds with  
encrypted data format. When Data encryption Key exhausts or does not exist, device 
responds status code 0x91/0x90 and no data. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
03h 
00h 
00h 
00h 
On receiving this command, the ViVOpay reader returns one of the following.  
 A response containing Track Data (Contactless MagStripe Transaction) 

NEO Interface Developers Guide    
    203 
 A response containing a Clearing Record (Contactless EMV Transaction) 
 A response containing no Data (No transaction) 
If the transaction cannot be completed successfully, the response indicates an OK status and 
indicates “No Data”. 
Note: ViVOcomm and DesFire cards return raw track data only. 
If there was an error in the Command Frame received then the response contains an appropriate 
status code.  
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
    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. Some data objects may not be present depending on the card 
involved in the transaction and the presence or absence of a Clearing Record object (DE 055). 
All TLV lengths include the Tag and Length bytes. 
Table 45: Get Transaction Result Format and Content: Plaintext data field format (03-00) 
Data Item  Length 
(bytes)  Description 
Track 1 Length 
1 
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 
(MagStripe card) 
Variable 
Track 1 Data (if available).  
Format: ASCII (no null terminator) 
Track 2 Length 
1 
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 
(MagStripe card) 
Variable 
Track 2 Data (if available).  
Format: ASCII (no null terminator) 
DE055 (Clearing 
Record) Present  
1 
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 Record) 
(see Clearing 
Record Format) 
Variable 
up to 128 
DE 055 data (if available) as a TLV data object encoded with Tag 
‘E1’. The DE 055 data is the same data as is included in the Activate 
Transaction Clearing Record. Refer to the Activate Transaction 
Clearing Record table. 
Tag: E1     Format: b1...126 variable. 

NEO Interface Developers Guide    
    204 
Data Item  Length 
(bytes)  Description 
TLV Data 
Variable 
Refer to Activate Response TLVs. 
If the Status Code is OK the response is different depending on the card application: 
Card Application  Return Data 
PayPass MagStripe  
Track1/Track2 
PayPass M/Chip 
Chip data plus other tags 
JCB QuicPay 
TLV Auth code and Track2 Equivalent data 
VSDC online application 
Track1/Trakc2 and VLP Issuer Auth code 
VSDC offline and qVSDC 
Chip data E1 and some other tags 
A Status Code 23 (request online authorization) can be returned for some cards (qVSDC & 
M/Chip) with a fully populated data field. 
This command never returns a status code of “Failed”. If any status code other than OK or 
status code ‘23’ (request online authorization) is returned, the data field is empty. 
The above description is plaintext response. The encrypted data format is as follows: (Please 
see “80000404-001 ID-Tech Encrypt Data Format In Command Response Specification” for details) 
Table 46: Get Transaction Result format for contactless card: Plaintext and Encrypted data 
field format (03-40) 
Data Item  Length 
(bytes)  Description 
Attribution  1  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  10  If encrypt disable, this tag is not present. 
KSN of DUKPT Account Key 
Tag: FFEE12           Format: Binary 

NEO Interface Developers Guide    
    205 
Data Item  Length 
(bytes)  Description 
TLV Track 1 Data 
(MagStripe card) 
Variable  TDES/AES Encrypted Track 1 Data (if available) with Padding 
(0x00). If Track 1 is not available, this field is not present. 
Tag: FFEE13        Format: ASCII (no null terminator) 
TLV Track 2 Data 
(MagStripe card) 
Variable  TDES/AES Encrypted Track 2 Data (if available) with Padding 
(0x00). If Track 2 is not available, this field is not present 
Tag: FFEE14        Format: ASCII (no null terminator) 
TLV DE 055 
(Clearing Record) 
(see Clearing 
Record Format) 
Variable 
up to 128 
DE 055 data (if available) as a TLV data object encoded with Tag 
‘E1’. The DE 055 data is the same data as is included in the Clearing 
Record. Refer to the Activate Transaction Clearing Record table. 
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 
Tag: E1         Format: b1…126 variables.… 
TLV Data  Variable  See Activate Response TLVs   
Sensitive TLV will be TDES/AES encrypted with Padding (0x00) 
Please see “80000404-001 ID-Tech Encrypt Data Format In 
Command Response Specification” for details 
Not all of the tags will be present. 
Table 47: Get Transaction Result format for MSR card: Encrypted 
Data Item  Length 
(bytes)  Description 
Attribution
1  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 
For MasterCard transactions, this field is not present.  If track 
data is present, it is contained in the MasterCard TLVs. 
For MasterCard transactions, this field is not present.  If track 
data is present, it is contained in the MasterCard TLVs. 

NEO Interface Developers Guide    
    206 
Data Item  Length 
(bytes)  Description 
TLV 
(DFEE25) 
Variable
Response Code TLV  
Tag: DFEE25           Format: Binary 
Response: 00h 11h 
TLV MSR 
Data 
(DFEE23) 
Variable
Refer to  “Enhanced Encrypted MSR Data Output Format” section of document 
80000502-001, Encrypted Data Output Formats. This tag will wrap an entire 
MSR data block. 
Enhanced encrypted MSR FIELD DATA length  Data length 
Indicator byte
Data length 
byte 
Data <128 bytes  01~7F  X  1 
128 bytes <= Data <=255 bytes  80~FF  81  1 
Data > 255 bytes  FF~  82  2 
TLV Data  Variable
TLV data list 
TLV POS 
Entry 
Mode 
(9F39) 
Variable 
90h = Magnetic Stripe Reader Swipe 
91h = Contactless MSD 
05h = Contact EMV 
07h = Contactless EMV 
80h = Contact Fallback to Magnetic Stripe 
TLV 
(DF30) 
(ViVOpay 
proprietary)
Variable
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. 
This tag include in  ViVOpay proprietary (FFEE01) 
Ex: FFEE0104DF30010C 
TLV 
Encrypt 
Information
(DFEE26) 
Variable
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 

NEO Interface Developers Guide    
    207 
Update Balance Command (03-03) 
Use this command when the ViVOpay reader has been put in “Poll on Demand” mode and after 
the reader sends an online request to the issuer. This command is the authorization response 
sent by the issuer to the terminal including the Authorization Status (OK or NOT OK).  
This command is also being used in some implementations (i.e. EMEA) to communicate the 
results of Issuer Authentication to the reader in order to display the correct LCD messages. 
With this command, the POS passes the authorization result (OK/NOT OK), and possibly the 
Authorization Code (Auth_Code)/Date/Time to the terminal.  
For a Visa transaction when the card supports Available Offline Spending Amount, the LCD 
displays the available amount. 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC    
(MSB) 
ViVOtech2\0 
03h 
03h 
See Data Table 
The format and contents of the data field in the Command Frame are given in the following 
table. All TLV lengths include the Tag and Length bytes. 
Table 48: Update Balance Format and Contents 
Data Item 
Length 
(bytes)
Description 
Status Code 
1 
00: OK   01: NOT OK 
TLV Auth_Code 
9 
Authorization Code as a TLV object. 
Tag: E300     Format: b8 
TLV Transaction 
Date 
5 
EMV data element “Transaction Date” as a TLV data object. Local 
date that the transaction was authorized. If this TLV is not provided, 
the transaction uses the reader’s current date. 
Tag: 9A         Format: n6  (YYMMDD) 
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. 
TLV Transaction 
Time 
6 
EMV data element “Transaction Time” as a TLV data object. Local 
time that the transaction was authorized. If this TLV is not provided, 
the transaction uses the reader’s current time. 
Tag: 9F21         Format: n6  (HHMMSS) 
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. 

NEO Interface Developers Guide    
    208 
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 
    See Data Tables
If the 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 include the Tag and Length bytes. 
Table 49: Update Balance Format and Contents When Status OK 
Data Item  Length (Bytes)  Description 
TLV Track 2 
Equivalent Data 
21 
Track 2 Equivalent Data as a TLV object. 
Tag: 57     Format: b19 
TLV Auth_Code 
9 
Authorization Code as a TLV object 
Tag: E300 Format: b8 
If the Status Code being returned in the Response Frame is “Failed”, then the contents of the 
Data field contains further information on the cause of the failure and does not contain the 
Authorization Code etc. In this case the Data field in the Response Frame has the following 
format. 
Table 50: Update Balance Format and Contents When Status Not OK 
Data Field  Length (bytes)  Description 
Error Code 
1  
Error Code giving the reason for the failure. See sub-
section on Error Codes 
SW1 
1 
Value of SW1 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available) 
SW2 
1 
Value of SW2 returned by the Card (SW1SW2 is 0000 if SW1 
SW2 not available) 
RF State Code 
1 
RF State Code indicating exactly where the error occurred 
in the Reader-Card transaction flow. See sub-section on 
RF State Codes.  
For any other Status Code the data field is empty. 
Cancel Transaction Command (05-01) 
Use this command to stop reader/card communication after the Activate Transaction command 
or Update Balance command has been sent to the reader.  
After the terminal has issued the Cancel Transaction command, the terminal should not send 
any commands until it receives a response from the reader. If the reader receives the Cancel 

NEO Interface Developers Guide    
    209 
Transaction command before it sends the response to an Activate command, it only sends the 
Cancel Transaction response. The reader then enters an “idle” state and waits for the next 
command from the terminal. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
05h 
01h 
00h 
00h 
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  05h 
See Status 
Code Table 
00h  00h     
MasterCard M/Chip 3.0 Transaction Commands 
This section describes commands that are specific to MasterCard M/Chip 3.0 
transaction behavior.   
Stop Transaction (05-02) 
The Stop Transaction command is similar to the Cancel command.  However, 
the transaction will exit at whatever phase it was currently in.  Depending on 
timing, the transaction could exit with an Activate Response.  In that case, the 
Stop command was received too late to stop the transaction.  Receipt of any 
response other than the Stop response is proof that the Stop command did not 
execute. 
The Stop command is currently only used by the MasterCard M/Chip 3.0 application. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
05h 
02h 
00h 
00h 

NEO Interface Developers Guide    
    210 
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  05h 
See Status 
Code Table 
00h  30h  See below
The following information is returned in the data field of a successful Stop 
command: 
Data item 
Tag 
Tag Len 
Notes 
Outcome Parameter 
Set TLV 
DF8129h 
12  
Discretionary Data 
TLV 
FF8106h 
10 
Encapsulates the Error 
TLV 
Error Indication TLV 
DF8115 
6  
Reset Torn Transaction Log (84-0E) 
The Reset Torn Transaction Log effectively erases the content of the torn 
transaction log and sets it back to an “empty” state. 
Normally, this function will only be used in certification scenarios where the torn transaction 
log must be put into a known state before performing a test.   
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
0Eh 
00h 
00h 
Varies 
Varies 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
Refer to 
standard 
status 
values 
00h  00h  Varies  Varies 
This command, when sent, will restore the Torn Transaction Log back to its 
original pristine state, as if a power up had just occurred. 

NEO Interface Developers Guide    
    211 
Clean Torn Transaction Log (84-0F) Command 
This command is used to remove Torn Transaction Log entries that have 
exceeded the allowed lifetime defined in tag DF811C (Maximum Lifetime of 
Torn Transaction Log Record). 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
0Fh 
00h 
00h 
Varies 
Varies 
Response Frame 
Byte 0-9  Byte 10  Byte 11 
Byte 
12 
Byte 
13 
Byte 
14-N 
Byte 
N + 1
Byte 
N + 2 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB)
Data 
Length 
(LSB)
Data 
CRC 
(LSB)
CRC 
(MSB) 
ViVOtech2\0
84h 
Refer to 
standard
status 
values 
XX  XX 
List of
Torn 
TLV’s 
Varies
Varies 
The response may contain expiring torn entries. These are returned inside a 
Discretionary Data tag, as shown below: 
Byte 0-2 
Byte 3 
Bytes 4-6 
Byte 7 
Byte 8-N 
Discretionary 
Data 
Tag 
Length 
Torn 
Transaction
Tag 
Length
TLV’s for Torn 
Record 
FF8106h 
Varies 
FF8101h 
Varies 
Varies 
NOTE: The terminal should execute the CLEAN command repeatedly, until no 
more torn records are sent back to it. In other words, in the final response, the 
value length of tag FF8106 shall be 0. 
Refer to the M/Chip PayPass specification for the contents of the Torn 
Transaction Log Record. 
9.1.1.1 Torn Transaction Log Timer 
The reader keeps track of how much time has elapsed for each torn transaction 
record. However, it does not take any action when this time has expired. Since 
the interface between the terminal/POS and the Reader is a command/response 
interface, cleaning the torn transaction log must be initiated by the 
terminal/POS. 

NEO Interface Developers Guide    
    212 
Periodically, the POS should initiate a cleaning cycle and repeatedly issue the 
“Clean” command (84-0F) at that point until the reader reports that the Torn 
Log has been successfully purged. 
How the POS accomplishes this is beyond the scope of the interface and this 
document. 
Visa VCPS Transaction Commands 
Set Cash Transaction Reader Risk Parameters (04-0C) 
This command creates or modifies the TTQ and reader risk parameters associated with VCPS 
2.1.1 cash transactions. Visa defines a “cash” transaction as a transaction that results in cash 
only being returned, like a bank machine withdrawal. If the transaction is a cash transaction and 
the Cash Transaction RR enable is set in the default FFF4 Visa Reader Risk Flags tag, then the 
reader risk parameters provided are used instead of the default TTQ and reader risk parameters. 
Once the transaction has been completed the TTQ and reader risk parameters are returned to 
their default settings.  
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 …    
Byte 14+n-1  Byte 14
Byte 15
Header Tag & 
Protocol 
Version 
Command  Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  04h  0Ch  00h  00h 
TLV Data 
Objects (see 
Cash 
Transaction 
TLVs) 
Important: All the TLVs listed in the table below are mandatory. If any are omitted, the 
command returns an error. 
Table 51: Cash Transaction TLVs 
Tag  Data Object Name and Description  Format  Length 
(Bytes) 
9F1B 
Terminal Floor Limit 
Indicates the floor limit in the terminal in for a Visa Cash or 
Cashback Transaction (hex).   
b  4 
9F66 
Visa Terminal Transaction Qualifier (TTQ) 
Determines the characteristics of the transaction for a Cash 
transaction. 
b  4 
FFF1[1] 
Terminal Contactless Transaction Limit 
Indicates the floor limit in the terminal for a Visa Cash 
transaction. 
n12  6 

NEO Interface Developers Guide    
    213 
Tag  Data Object Name and Description  Format  Length 
(Bytes) 
FFF4[1] 
Visa Reader Risk Flags 
Byte 1 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = enable)
-
-
-
-
-
-
-
X
Status Check  
X
X
X
X
X
X
X
-
RFU 
Byte 2:  
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
Transaction Limit Check 
-
-
-
-
-
-
X
-
CVM Required Limit Test 
-
-
-
-
-
X
-
-
Terminal Floor Limit Check 
-
-
-
-
X
-
-
-
Cash Transaction Reader Risk (RR) 
-
-
-
X
-
-
-
-
Cashback Reader Risk (RR) 
-
-
X
-
-
-
-
-
DRL (Dynamic Reader Limits) RR 
X
X
-
-
-
-
-
-
RFU 
Byte 3 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning   
-
-
-
-
-
-
-
X
Zero Amount Test 
0 = If amount is zero, transaction 
disallowed 
1 = If amount is zero, online cryptogram 
required in the TTQ (9F66) 
            X
  Zero Amount Test. If 0, bit 1 is ignored. 
X
X
X
X
X
X
  -
RFU 
b  3 
FFF5[1] 
CVM Required Limit 
Indicates the CVM required floor limit for a Visa Cash transaction. 
n12  6 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14+n 
Byte 15+n 
Header Tag & 
Protocol 
Version 
Command  Status Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0  04h 
See Status 
Code Table        
Get Cash Transaction Reader Risk Parameters (03-0C) 
This command returns the TTQ and reader risk parameters that will be used for cash 
transactions, if enabled.  

NEO Interface Developers Guide    
    214 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
03h 
0Ch 
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 (see 
Cash 
Transaction 
TLVs) 
The only Data Objects that should be returned are the Cash Transaction TLVs sent in the Set 
Cash Transactions Reader Risk Parameters command (9F66, FFF1, FFF5, and 9F1B).  
Set Cashback Transaction Reader Risk Parameters (04-0D) 
This command creates or modifies the TTQ and reader risk parameters associated with a VCPS 
2.1.1 cashback transaction. Visa defines a “cashback” transaction as a transaction that results in 
the purchase of merchandise with cash being returned. If the transaction is a cashback 
transaction and the Cashback Transaction Reader Risk enable is set in the default FFF4 Visa 
Reader Risk Flags tag, then the reader risk parameters provided are used instead of the default 
TTQ and reader risk parameters. Once the transaction has been completed the TTQ and reader 
risk parameters are returned to their default settings. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Data 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
04h  0Dh  00h  00h 
TLV Data 
Objects 
(see Cash 
Transaction 
TLVs) 
Important: All the TLVs listed in the Cash Transactions TLVs table are mandatory. If any are 
omitted, the command returns an error. 
On ViVOpay Readers there are three ways to initiate a Cashback Transaction: 

NEO Interface Developers Guide    
    215 
1. If you define an Authorized Amount (9F02) that is greater than the Other Amount (9F03), 
and the Other Amount is greater than zero, then the transaction will be treated as a 
Cashback transaction. These parameters may be configured through configuration 
commands or by including them in the Activate (02-01) command. 
2. If you configure the Transaction Type (9C) using serial commands, or if you provide the 
Transaction Type (9C) in the Activate Transaction command and set its value to 0x09, then 
the transaction will be treated as a Cashback transaction. 
3. If you provide an Other Amount (9F03) with a valid length of 6 bytes in the Activate 
Transaction Command, the transaction will be treated as a Cashback transaction.   
While the concept of cashback transactions may be applied to other card applications, the 
command to set Reader Risk Parameters (04-0D) only applies to Visa.  It allows the creation 
or modification of the TTQ (Terminal Transaction Qualifiers). 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14+n 
Byte 15+n 
Header Tag & 
Protocol 
Version 
Command  Status Code  Data Length 
(MSB) 
Data Length 
(LSB)  CRC (MSB)
CRC   
(LSB) 
ViVOtech2\0  04h 
See Status 
Code Table 00  00     
Get Cashback Transaction Reader Risk Parameters (03-0D) 
This command returns the TTQ and reader risk parameters for all cashback transactions.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
03h 
0Dh 
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 (see 
Cash 
Transaction 
TLVs) 

NEO Interface Developers Guide    
    216 
The only Data Objects that should be returned are the Cash Transaction TLVs sent in the Set 
Cash Transactions Reader Risk Parameters command (9F66, FFF1, FFF5, and 9F1B).  
Set DRL Reader Risk Parameters (04-0E) 
This command creates or modifies the Application Program ID and reader risk parameters for 
four Dynamic Reader Limit sets. If a Visa card provides an Application Program ID that matches 
one of the four programmed in the reader DRL sets and the DRL RR enable is set in the default 
FFF4 Visa Reader Risk Flags tag, the Reader risk parameters for that DRL are used during the 
transaction. Once the transaction has been completed the Reader risk parameters are returned 
to their default settings.  
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0  04h  0Eh  00h  01h 
DRL Index 
and TLVs     
Important: All the TLVs listed in the table below are mandatory. If any are omitted, the 
command returns an error. 
Table 52: DRL TLVs 
Tag  Data Object Name and Description  Format  Length 
(Bytes) 
None 
DRL Index 
This index refers to which DRL set (1 – 4) this data belongs.  b  1 
9F1B 
Terminal Floor Limit 
Changes the Floor Limit for the DRL (hex).  
b  4 
9F5A 
Application Program ID  
Determine the characteristics of the transaction for the DRL.  
b  16 
FFF1[1] 
Terminal Contactless Transaction Limit 
Indicates the floor limit in the terminal for the DRL. n12  6 

NEO Interface Developers Guide    
    217 
Tag  Data Object Name and Description  Format  Length 
(Bytes) 
FFF4[1] 
Visa Reader Risk Flags 
Byte 1 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = enable)
-
-
-
-
-
-
-
X
Status Check  
X
X
X
X
X
X
X
-
RFU 
Byte 2:  
b8
b7
b6
b5
b4
b3
b2
b1
Meaning (0 = disable, 1 = enable) 
-
-
-
-
-
-
-
X
Transaction Limit Check 
-
-
-
-
-
-
X
-
CVM Required Limit Test 
-
-
-
-
-
X
-
-
Terminal Floor Limit Check 
-
-
-
-
X
-
-
-
Cash Transaction Reader Risk (RR) 
-
-
-
X
-
-
-
-
Cashback Reader Risk (RR) 
-
-
X
-
-
-
-
-
DRL (Dynamic Reader Limits) RR 
X
X
-
-
-
-
-
-
RFU 
Byte 3 
b8
b7
b6
b5
b4
b3
b2
b1
Meaning   
-
-
-
-
-
-
-
X
Zero Amount Test 
0 = If amount is zero, transaction 
disallowed 
1 = If amount is zero, online cryptogram 
required in the TTQ (9F66) 
            X
  Zero Amount Test. If 0, bit 1 is ignored. 
X
X
X
X
X
X
  -
RFU 
b  3 
FFF5[1] 
CVM Required Limit 
Indicates the CVM required floor limit for the DRL. n12  6 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14+n 
Byte 15+n 
Header Tag & 
Protocol 
Version 
Command  Status Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0  04h 
See Status 
Code Table 
Get DRL Reader Risk Parameters (03-0E) 
This command returns the Index, Application Program ID, and reader risk parameters for the 
DRL settings.  
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 

NEO Interface Developers Guide    
    218 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0  03h  0Eh  00h  01h 
DRL Index 
(01-04) 
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 (see 
DRL TLVs) 
The response TLV Data Objects are formatted as shown in the table DRL Transaction TLVs (Index, 
9F5A, FFF1, FFF4, FFF5, and 9F1B).  
Key Management Commands 
Warning: DO NOT mix Protocol 1 and Protocol 2 Key Management commands.  The preferred 
method is to use the Protocol 2 commands. 
The Key Management Protocol 2 commands are the preferred method. The Key Management 
Protocol 2 commands MUST be used when doing secure communication. 
The following status codes may be generated in response to the CA Public Key commands.   
The following status codes are specific to the Key Manager module.  Their values may have 
different meanings when used with other commands. 

NEO Interface Developers Guide    
    219 
Table 53: EMV Key Manager Status Codes – Protocol 2 
Status Code 
Status 
00h 
Operation was successful 
20h 
SAM Transceiver error – problem communicating with the SAM (see note below) 
21h 
Length error in data returned from the SAM 
41h 
Unknown Error from SAM 
42h 
Invalid data detected by SAM 
43h 
Incomplete data detected by SAM 
44h 
Reserved 
45h 
Invalid key hash algorithm 
46h 
Invalid key encryption algorithm 
47h 
Invalid modulus length 
48h 
Invalid exponent 
49h 
Key already exists 
4Ah 
No space for new RID 
4Bh 
Key not found 
4Ch 
Crypto not responding 
4Dh 
Crypto communication error 
4Fh 
All key slots are full (maximum number of keys has been installed) 
Get CA Public Key (D0-01)  
This command retrieves all of the information related to a specific key.  It includes the key hash, 
the algorithms, and so forth.  See the data definition below: 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 – 18 
Byte 19 
Byte 20 
Byte 21 
Header Tag & 
Protocol 
Version 
Cmd  Sub 
Cmd 
Length 
(MSB) 
Length
(LSB)  RID  Key 
Index 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
D0h 
01h 
00h 
06h 
varies 
varies 
Varies 
Varies 
Response Frame 
Byte 0-9  Byte 10
Byte 11  Byte 12  Byte 13
Byte 19 – 
n 
Byte n+1
Byte n+2
Header Tag & 
Protocol Version
Cmd  Status 
Length 
(MSB) 
Length 
(LSB)  Data 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status codes
00h  varies  varies  Varies  Varies 
When the status is successful (00h), the data field contains: 
Key Hash Algorithm (1 Byte)  - 01h = SHA-1 

NEO Interface Developers Guide    
    220 
Key Encryption Algorithm (1 Byte) – 01h = RSA 
Checksum – This Checksum is calculated with a concatenation of: 
RID & KeyIndex & Modulus & Exponent 
where the exponent is either one byte or 3 bytes 
Modulus Length (2 bytes) 
Modulus (varies in length) 
Get CA Public Key Hash (D0-02)  
This command returns only the “Checksum” portion of the key. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 – 18 
Byte 19 
Byte 20 
Byte 21 
Header Tag & 
Protocol 
Version 
Cmd  Sub 
Cmd 
Length
(MSB) 
Length
(LSB)  RID  Key 
Index 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
D0h 
02h 
00h 
06h 
varies 
varies 
Varies 
Varies 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 19 – n 
Byte n+1 
Byte n+2 
Header Tag & 
Protocol Version
Cmd  status 
Length 
(MSB) 
Length 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status 
codes 
00h  varies  varies  Varies  Varies 
Status = 00 if successful. When the status is successful, the data contains: 
Key Hash Algorithm (1 byte) 
Key Algorithm (1 byte) 
Checksum (20 bytes) – calculated over the key information as previously described 

NEO Interface Developers Guide    
    221 
Set CA Public Key (D0-03) 
This command adds a new key in the reader. 
Command Frame 
Byte 0-9  Byte 10
Byte 11
Byte 12
Byte 13
Byte 14 – 18
Byte 19 
Bytes 
19-n 
Byte 
n+1 
Byte 
n+2 
Header Tag & 
Protocol 
Version 
Cmd
Sub 
Cmd 
Length
(MSB)
Length
(LSB)
RID 
(5 bytes) 
Key Index 
(1 byte) 
Key 
Data 
CRC 
(LSB)
CRC 
(MSB)
ViVOtech2\0  D0h  03h  varies
varies
varies  varies 
See 
below
Varies
Varies
Key Data is as follows: (all binary) 
Byte 
Name 
Length 
(bytes) 
Description 
0 
Hash Algorithm 
1 
The only algorithm supported is SHA-1.  The value is set to 01h 
1 
Public Key 
Algorithm 
1 
The encryption algorithm in which this key is used.  Currently 
support only one type:  RSA.  The value is set to 01h 
3-22 
Checksum/Hash 
20 
Checksum which is calculated using SHA-1 over the following 
fields:   
RID & KeyIndex & Modulus & Exponent 
where the exponent is either one byte or 3 bytes (although we 
store it in a 4 byte field) 
23-26 
Public Key 
Exponent 
4 
Actually, the real length of the exponent is either one byte or 3 
bytes. It can have two values:  3, or 65537. 
27-28 
Modulus Length 
2 
Indicates the length of the next field. 
29-n 
Modulus 
Variable 
This is the modulus field of the public key.  Its length is 
specified in the field above. 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version  Cmd  status 
Length 
(MSB) 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status codes 
00h  00h  Calculated  Calculated 
Delete CA Public Key (D0-04) 
This command allows the POS to delete a specific key. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 – 18 
Byte 19 
Byte 20 
Byte 21 
Header Tag & 
Cmd 
Sub 
Length 
Length 
RID 
Key Index 
CRC 
CRC 

NEO Interface Developers Guide    
    222 
Protocol Version 
Cmd 
(MSB) 
(LSB) 
(5 bytes) 
(1 byte) 
(LSB) 
(MSB) 
ViVOtech2\0 
D0h 
04h 
00h 
06h 
varies 
varies 
Varies 
Varies 
The RID and Key Index for the key being deleted must be specified in the frame. 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version  Cmd  status 
Length 
(MSB) 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status 
codes 
00h  00h  Calculated  Calculated 
Delete All CA Public Keys (D0-05)  
This command deletes all of the CA public keys. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version 
Cmd 
Sub 
Cmd 
Length 
(MSB) 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
D0h 
05h 
00h 
00h 
Calculated 
Calculated 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version 
Cmd  status 
Length 
(MSB) 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status 
codes 
00h  00h  Calculated  Calculated 
 Get All CA Public RIDs (D0-06)  
The Get All CA Public RIDs command tells the reader to retrieve a list of all the RIDs. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version  Cmd 
Sub 
Cmd 
Length 
(MSB) 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
D0h 
06h 
00h 
00h 
Calculated 
Calculated 

NEO Interface Developers Guide    
    223 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 13-n 
Byte n+1 
Byte n+2 
Header Tag & 
Protocol Version
Cmd  status 
Length 
(MSB) 
Length 
(LSB)  RID(s) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status 
codes 
00h  varies  Each RID is 5 
bytes.    Calculated
Calculated
Status 00h – RIDs returned with the number of RIDs = Length/5; 
Note: If the length returned is 0, then the communication was good, but no RIDs are stored. 
 List CA Public Key IDs or RID (D0-07) 
The following command retrieves a list of key indices that are installed for this RID. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 – 18 
Byte 19 
Byte 20 
Header Tag & 
Protocol Version
Cmd 
Sub 
Cmd 
Length 
(MSB) 
Length 
(LSB) 
RID 
(5 bytes) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
D0h 
07h 
00h 
05h 
varies 
Varies 
Varies 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14-18 
Byte 19 – n 
Byte n+1 
Byte n+2 
Header Tag & 
Protocol Version
Cmd  status
Length 
(MSB) 
Length 
(LSB) 
RID 
(5 bytes)
List of 
Indices 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0  D0h 
See Key 
Manager 
status 
codes 
00h  varies  varies  varies  Varies  Varies 
Status – 00h = successful index retrieval 
Module Versioning 
The module versioning feature provides information about the firmware versions, and the 
specification versions for specific modules, interfaces, and hardware in the reader. The information 
is returned to the POS or the POS Simulator via the serial interface. Versioning of card 
applications may also facilitate the tracking of changes for certification purposes. 

NEO Interface Developers Guide    
    224 
The implementation of this feature has been simplified for the following reasons: 
  To align more closely with the behavior of the Advanced Reader firmware. 
  To make the version strings more accessible for human readers. 
  To facilitate maintenance of version strings. 
The following subcommands are available for the Module Version command: 
Sub-command  Description 
01h[1]  Get Product Type 
02h  Get Processor Type 
03h[1]  Get Main Firmware Version 
14h  Get Hardware Information 
20h  Get Module Version Information3 
[1] 
Those sub-commands only work on Vendi.
Note:  All other sub-commands for the Module version command have been deprecated.  
However, a 0x00 in the sub-command field will return the same result as a 20h sub-command.  
All other commands will return an “unknown sub-command” error. 
The table below shows the information that is available and the subcommand that is used to 
extract that information.  The term “module” is used very loosely in the context of the firmware. 
Module Type
Sub-
Command
Description  Format 
FW 
20h  The firmware version that is resident in the reader 
For KioskIII, this verion number shows the 
firmware version for Lab Verification, it 
won’t change unless new Lab Verification is 
done for the certain module. 
ASCII 
text 
CL AppSel  20h  Refers to the special application selection module and 
version. 
ASCII 
text 
CL AID 
20h  Contactless L2 Application specification/version (since 
L2 applications are identified by the “application ID”, 
this type refers to an AID) 
ASCII 
text 
CL AppSpe 
20h  Contactless L2 Special Application 
specification/version that not identified by the 
“application ID” (Example: SmartTap and ApplePay 
VAS) 
ASCII 
text 
CL L1  20h  L1 Interface specification/version  ASCII 
text 
UI  20h  User Interface specification/version  ASCII 
text 
3
 Previously a subcommand “0x00” was supported.  It is being deprecated.  However, because some of the ViVOpay 
internal utilities used that command to determine if the reader was alive, a subcommand of 0x00 will behave exactly 
the same as a subcommand 0x20 and will not give an error. 

NEO Interface Developers Guide    
    225 
Module Type
Sub-
Command 
Description  Format 
SAM  14h  Secure Access Module version string  ASCII 
text 
HW  14h  Hardware platform identifier  ASCII 
text 
EEPROM  14h  The EEPROM version  ASCII 
text 
N/A  02h  Returns the processor type in TLV format  TLV 
The module types described above appear in the response packet for the respective sub-
command.  Refer to the examples in the response packet section. 
Get Product Type (09-01) 
This command returns a product type TLV. 
Command Frame 
Response Frame 
The Get Product Type sub-command returns a TLV string as follows: 
Tag:  0xDF60 
Length: 0x03 
Value:  3-byte field representing the product type.   
The following example shows the command and response.  
Command:  Get Product Type 
56 69 56 4F 74 65 63 68 32 00 09 01 00 00 A0 A0 
Response: 
56 69 56 4F 74 65 63 68 32 00 09 00 00 06 DF 60 03 43 36 00 DC 60 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol  Command
Sub- 
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
09h  01  00h  00h     
Byte 0-9  Byte 10  Byte 11  Byte12  Byte 13  Byte 14 …    
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol  Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
09h  See Status 
Code Table
    See below     

NEO Interface Developers Guide    
    226 
Product Type 
(hex values)  Description 
42 37 00  ViVOpay 5000 
43 33 00  ViVOpay 4500 
43 35 00  ViVOpay Vend 
43 36 00  Vendi (NEO) 
43 37 00  ViVOpay Kiosk1 (ATM1) 
43 38 00  Kiosk2 
43 39 00  Kiosk3 (NEO) 
55 31 00  UniPay 1.5 (NEO) 
55 33 00  UniPay III (NEO)  
55 33 31  VP4880, VP4880 OEM (NEO) (iBase/Cake same code) 
55 33 32  VP4880E(NEO) 
55 33 33  VP4880C (NEO) 
44 30 00  QX120 
44 31 00  Mx8Series 
44 32 00  NETs 
44 33 00  Magtek 
44 35 00  ICP 
Get Processor Type (09-02) 
This command returns a processor type TLV. 
Command Frame 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol  Command
Sub- 
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
09h  02  00h  00h     
Byte 0-9  Byte 10  Byte 11  Byte12  Byte 13  Byte 14 …    
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol  Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
09h  See Status 
Code Table
    See below     

NEO Interface Developers Guide    
    227 
The Get Processor Type sub-command returns a TLV string as follows: 
Tag:  0xDF61 
Length: 0x02 
Value:  a 1-byte field representing the processor type.   
The following types of processors may be identified in the Value field: 
Processor Type 
(hex values)  Description 
45 00  ARM7/ LPC21xx 
4D 00  ARM Cortex-M4/ K21 Family 
Processor Type 
(hex values)  Description 
45 00  ARM7/ LPC21xx 
4D 00  ARM Cortex-M4/ K21 Family 
The following example shows the command and response.  
Command:  Get Processor Type 
56 69 56 4F 74 65 63 68 32 00 09 02 00 00 F0 F9 
Response: 
56 69 56 4F 74 65 63 68 32 00 09 00 00 05 DF 61 02 4D 00 AC 4D 
Get Main Firmware Version (09-03) 
This command returns main firmware version TLV. 
Command Frame 
Response Frame 
The Get Main Firmware Version sub-command returns a TLV string as follows: 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol  Command
Sub- 
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
09h  03  00h  00h     
Byte 0-9  Byte 10  Byte 11  Byte12  Byte 13  Byte 14 …    
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol  Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
09h  See Status 
Code Table
    See below     

NEO Interface Developers Guide    
    228 
Tag:  0xDF62 
Length: Varies 
Value:  Varies field representing the main firmware version.   
The following example shows the command and response.  
Command:  Get Main Firmware Version 
56 69 56 4F 74 65 63 68 32 00 09 03 00 00 C0 CE 
Response: 
56 69 56 4F 74 65 63 68 32 00 09 00 00 14 DF 62 11 43 72 61 6E 65 56 65 6E 
64 69 5F 31 2E 30 2E 30 00 E1 5D 
Get Hardware Information (09-14) 
Command Frame 
Response Frame 
The format for hardware module version information returned is “human readable”, consisting of 
fields that are separated by commas, and lines separated by carriage return and line feed 
characters: 
<module type>,<module name><CRLF> 
<chip version> 
The following example shows the hardware version information subcommand and the information 
being returned (in ASCII format). 
Command: Get Hardware Version Information 
56 69 56 4F 74 65 63 68 32 00 09 14 00 00 33 08 
Response:   
56 69 56 4F 74 65 63 68 32 00 09 00 00 15 48 57 2C 56 50 56 65 6E 64 69 0D 0A 4B 32 31 46 20 
52 65 76 39 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol  Command
Sub- 
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
09h  14h  00h  00h     
Byte 0-9  Byte 10  Byte 11  Byte12  Byte 13 
Byte 14 …    
Byte 13+n
Byte 
14+n  Byte 15+n
Header Tag 
& Protocol  Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
09h  See Status 
Code Table
    See below

NEO Interface Developers Guide    
    229 
ASCII translation of the data field: 
HW,VPVendi<CR><LF> 
K21F Rev9 
ASCII  Description 
HW,VPVendi<CR><LF> 
K21F Rev9  Vendi 
HW,VPUnipayIII<CR><LF> 
K21F Rev9  Unipay III 
HW,VPUnipay1.5<CR><LF>
K21F Rev2  Unipay 1.5 
Get Module Version Information (09-20) 
For KioskIII, this verion number shows the modules version for Lab Verification, it won’t 
change unless new Lab Verification is done for the certain module. So it may not be 
consistent with the result of “Get ViVOpay Firmware Version (29-00)” and “Get Main 
Firmware Version (09-03)” 
Command Frame 
Response Frame 
If there is an error, the appropriate Status Code will be returned with an empty Data field (Data 
Length = 0000h).  
The format for module version information returned is “human readable”, consisting of fields that 
are separated by commas, and lines separated by carriage return and line feed characters: 
<module type>,<module name and spec. version>,[<implementation version>],<CRLF> 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol  Command
Sub- 
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
09h  20h  00h  00h     
Byte 0-9  Byte 10  Byte 11  Byte12  Byte 13 
Byte 14 …    
Byte 13+n 
Byte 
14+n 
Byte 15+n
Header Tag 
& Protocol  Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
09h  See Status 
Code Table
    See below

NEO Interface Developers Guide    
    230 
The following example shows the module version information subcommand and the information 
being returned (in ASCII format). 
Command: Get Module Version Information 
56 69 56 4F 74 65 63 68 32 00 09 20 00 00 56 11 
Response:   
56 69 56 4F 74 65 63 68 32 00 09 00 01 2A 46 57 2C 56 65 6E 64 69 20 56 31 2E 30 30 2C 2C 
0D 0A 20 46 53 26 44 42 20 56 31 2E 30 30 2C 2C 0D 0A 20 43 4C 20 41 70 70 53 65 6C 2C 50 
50 53 45 20 4D 6F 64 75 6C 65 2C 20 76 31 2E 30 30 2C 2C 0D 0A 20 43 4C 20 41 49 44 2C 4D 
61 73 74 65 72 43 61 72 64 20 50 61 79 50 61 73 73 20 4D 2F 43 68 69 70 20 76 33 2E 30 2E 32 
2C 20 56 65 6E 64 69 20 76 31 2E 30 2E 30 2C 2C 0D 0A 20 43 4C 20 41 49 44 2C 56 69 73 61 
20 56 43 50 53 20 32 2E 31 2E 33 2C 20 76 30 2E 39 39 2C 2C 0D 0A 20 43 4C 20 41 49 44 2C 
41 6D 65 78 20 45 78 70 72 65 73 73 50 61 79 20 33 2E 30 2C 20 76 31 2E 30 30 2C 2C 0D 0A 
20 43 4C 20 41 49 44 2C 44 69 73 63 6F 76 65 72 20 44 50 41 53 20 31 2E 30 20 5A 69 70 20 33 
2E 31 2E 32 2C 20 76 31 2E 30 30 2C 2C 0D 0A 20 43 4C 20 41 49 44 2C 49 6E 74 65 72 61 63 
20 31 2E 35 2C 20 76 31 2E 30 30 2C 2C 0D 0A 20 43 4C 20 4C 31 2C 45 4D 56 20 34 2E 33 20 
4C 31 2C 20 76 31 2E 30 30 00 8C 33 
ASCII translation of the data field: 
FW,Vendi V1.00,,<CR><LF> 
 FS&DB V1.00,,<CR><LF> 
 CL AppSel,PPSE Module, v1.00,,<CR><LF> 
 CL AID,MasterCard PayPass M/Chip v3.0.2, Vendi v1.0.0,,<CR><LF> 
 CL AID,Visa VCPS 2.1.3, v0.99,,<CR><LF> 
 CL AID,Amex ExpressPay 3.0, v1.00,,<CR><LF> 
 CL AID,Discover DPAS 1.0 Zip 3.1.2, v1.00,,<CR><LF> 
 CL AID,Interac 1.5, v1.00,,<CR><LF> 
 CL L1,EMV 4.3 L1, v1.00<NUL> 
International Language Support 
The goal of this feature is to offer support for foreign languages including those based on 
graphical fonts (i.e. Chinese, Thai, Arabic…). 
Four core language options built into it. Some of these are font-based; the others are ideogram-
based.  The ideogram language options are stored in flash as bitmaps. The other languages use 
fonts that have been stored in flash.  
For example, an English message is composed of multiple small bitmaps that represent different 
characters (i.e., a “Thank You” message is 8 bitmaps displayed together). The ideogram 
messages are (usually) a single bitmap (i.e., the Chinese “Thank You” message is a single bitmap 
displayed on the screen).  See Appendix A.7 Preparing Bitmaps for Use by ILM for instruction on 
working with bitmaps. 
Each reader keeps four “core” languages in its firmware. This ensures that the reader can be 
used in virtually any geographical area “as is”. A core language may NOT be modified or deleted 
by customer/third party actions. They always exist and are always available for use. 
At present, there are four (4) Core Languages available: 
 English (U.S., fonts) 

NEO Interface Developers Guide    
    231 
 French (fonts) 
 Chinese (ideograms) 
 English + Chinese (fonts & ideograms) 
See Set Configuration (04-00) for information on how to set a language preference. 
Other Language 
In addition to the Core Languages, a fifth language called “Other Language” is available. This is 
a ‘slot’ in flash memory that can contain all the message bitmaps for a language. 
Since this Other Language is stored in the ideogram bitmap format, it eliminates the need for 
fonts, etc., for this language. The Other Language only needs a unique record for each distinct 
message it must display. 
At present there are twenty-two (22) predefined message types that can be displayed. 
Note: Each time you configure the reader for ILM, you must download messages for all 22 
indices in consecutive order. You cannot change individual messages. 
Bitmap Conversion Completed by POS 
The reader expects to load a simplified version of the monochrome bitmap. While data is the 
same as in a standard bitmap, it must be converted to a format that the LCD hardware can use. 
The standard 40-byte DIB bitmap header is discarded. It is replaced by a simplified ViVOpay 
header, described in ILM Header Format. 
The bitmap data produces an LCD image that is: 
 Reversed in color (black is white, and vice versa). 
 Upside down. 
White space reduction 
Large parts of the bitmap are empty background. The LCD does not need to save this white 
space, since it corresponds to off-pixel values (which are already turned off). This limited form 
of image compression makes the image much smaller. 
ILM Header Format 
Each bitmap loaded onto a reader is expected to contain a proprietary header instead of the 
standard DIB header. 
This header format is shown in the following table, prefixed to the actual bitmap data: 
Bytes 
0-1 
Bytes 
2-3 
Bytes 
4-5 
Bytes 
6-7 
Bytes 
8-9 
Bytes 
10-11 
Bytes 
12…n 

NEO Interface Developers Guide    
    232 
Bitmap 
Length 
Row 
Number 
Column 
Number  Height  Width  Type (truncate, etc.)  Bitmap 
data 
All variables in the header are 2 bytes long. 
Byte  Description 
Bitmap Length 
This data field contains the total number of bytes in the Bitmap Data Field. 
Row Number 
This data field contains the row offset that this image should start at. Value is in 
PIXELS. 
Column Number 
This data field contains the column offset that this image should start at. Value is in 
BYTES. 
Height 
This data field contains the number of rows (in pixels) that this image contains. 
Width 
This data field contains the number of columns (in bytes) that this image contains. 
Type 
Reserved – must be set to 00h. 
Bitmap Data 
This is the actual image data. 
Language Version Information 
This block contains data used for version control of the ILM. It contains variables that identify 
the particular language module that is currently stored in the system. 
The language module specifies both the language name and the Country Code. This is done 
because there are a number of languages (English, French, Spanish, etc.) that are shared by 
multiple nations but the reader is intended to be operate in a particular country (such as 
Canada). 
Table 54: Language Version Information 
Language Version Information 
Variable  Length (bytes)
Description/Example 
Language Name 
25 
ASCII String, Null Terminated – “Spanish\0” 
Abbreviation  4 
ASCII String, Null Terminated – “ES\0” ( ASCII-2 character 
Country Code)  or “ESP\0” (ASCII-3 character Country Code) or  
“724\0” (3 digit decimal number Country Code) 
Format 
1 
Unsigned 8-bit Integer 
Author 
10 
ASCII String, Null Terminated – “NCR\0” 
Version 
6 
ASCII String, Null Terminated – “1.3\0” 
ID  4  Unsigned 32-bit Integer 
Language Name is the name of the ILM language, using ASCII characters. 
Abbreviation is the Country Code listed in ISO 3166. The format is either ASCII-2 character, 
ASCII-3 character or a 3 digit decimal number. Regardless of method, it is stored in ASCII 
alphanumeric characters. 
The Format data field specifies the format of the Abbreviation field noted above. All follow the 
specification from ISO DOC 3166. 

NEO Interface Developers Guide    
    233 
Format Data Field 
Value  Description/Example 
01 
02 
03 
Alpha2 (2 character) – “ES\0” 
Alpha3 (3 character) – “ESP\0” 
Decimal (3 digit) – “724\0” 
Author is an ASCII string noting the customer that developed this language module. 
Version is an ASCII string, also customer defined. It identifies this language module by version 
number. 
ID is a value that is reserved for future use. It is currently NOT used. 
All fields are the length indicated. If (as is usually the case) the ASCII string does not occupy the 
entire data field, the remaining bytes MUST be padded with zeroes. 
The Language Version Information area is provided to the customer as a way to track which 
language is currently loaded into the reader. It can be accessed and values are returned to the 
POS. The intent is to facilitate automated updating through the POS. The POS can examine the 
existing language module currently stored, and then make appropriate decisions as to its use 
(i.e., updating the module). 
How the Language Version Information is used by the customer cannot be defined or enforced. It 
is only provided for identification and could be unused. 
However, value of 00h in this area is interpreted as indicating that the ILM area of flash memory 
is empty. Therefore, if the customer does edit the ILM area, they MUST update this Version 
Information area as well, if only to write arbitrary non-zero values to it. 
EMV Certificate Revocation List Commands 
The Certificate Revocation List (CRL) contains entries that include the RID, Key 
Index and Certificate Serial Numbers for cards that should be rejected. The 
kernel checks the CRL for entries matching the index and serial number of the 
Issuer Public Key Certificate provided by the card. If it is found the card is 
rejected. 
The CRL is maintained in non-volatile memory but a copy is kept in RAM to 
provide faster access during transactions.  A tag (DF26h) is defined to enable or 
disable the entire Revocation feature in the reader.  
The M/Chip 3.0 application is the only application capable of using the Certificate 
Revocation List feature. 
The firmware supports a maximum of 30 entries in the certificate revocation list. 

NEO Interface Developers Guide    
    234 
Get EMV Revocation Log Status (84-03) 
This command returns information about the EMV revocation log.  The 
information returned can be used by the terminal/POS to determine how to 
read the log. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
03h 
00 
00 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 …    
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
See Status 
Code Table
TLV Data 
Objects     
If the command is successful, the following data is returned.  All fields are 
encoded with MSB first. 
Offset 
Length 
(bytes)  Data Description 
00h 
4 
Version number 
04h 
4 
Number of records 
08h 
4 
Size of records 
Add Entry to EMV Revocation List (84-04) 
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 … 
Byte13+n  
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
04h 
00 
09 
The data field contains the revocation list entry: 
Offset 
Length 
(bytes)  Data Description 
Example 

NEO Interface Developers Guide    
    235 
00h 
5 
RID (packed hex format) 
A0 00 00 00 04 
04h 
1 
Key Index (packed hex format) 
F8 
08h 
3 
Certificate serial number (packed hex format) 
00 10 00 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
See Status 
Code Table 
00  00     
Delete All Entries for Single Index in EMV Revocation List (84-05) 
This command deletes all entries that match a key index and RID from the EMV 
revocation list.   
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 … 
Byte13+n  
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
05h 
00 
06 
The data field contains RID and key index for the records to be deleted. 
Offset 
Length 
(bytes) 
Data Description 
Example 
00h 
5 
RID (packed hex format) 
A0 00 00 00 04 
05h 
1 
Key Index (packed hex format) 
F8 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
See Status 
Code Table 00  00     
Delete All Entries from EMV Revocation List (84-06) 
This command deletes all entries from the EMV revocation list. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 

NEO Interface Developers Guide    
    236 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
06h 
00 
00 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
See Status 
Code Table 00  00     
Get EMV Revocation List (84-07) 
This command retrieves a sequence of consecutive records from the EMV 
revocation list.  The list may be retrieved in several command exchanges, 
depending on the size specified in the command and the number of entries in 
the list.   
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 … 
Byte13+n  
Byte 14+n
Byte 15+n
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
07h 
00 
00 
The data field specifies the following information: 
Offset 
Length 
(bytes)  Data Description 
00h 
2 
Size - maximum number of bytes to be retrieved (MSB first) 
02h 
2 
Starting record4 (MSB first) 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 … 
Byte13+n 
Byte 14+n
Byte 15+n
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
07h 
00 
00 
The data field will contain the maximum number of records that can fit in the 
size provided in the command.  No partial records are returned.  The maximum 
4
 For GR, this number must be less than 30.  The first record is 0. 

NEO Interface Developers Guide    
    237 
size of data bytes that can be returned is 282 bytes (12 + 9 * size of a list 
record). 
The data field is formatted as follows: 
Offset 
Length 
(bytes) 
Data Description 
00h 
4 
Number of records returned 
04h 
4 
Number of records remaining in the file 
08h 
4 
Record size 
0Ch 
varies 
Revocation list records 
Each record is formatted as follows: 
Offset 
Length 
(bytes) 
Data Description 
Example 
00h 
5 
RID (packed hex format) 
A0 00 00 00 03 
05h 
1 
Key Index (packed hex format) 
FE 
08h  3 
Certificate Serial Number (packed hex 
format) 
00 10 00 
Delete an Entry from EMV Revocation List (84-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  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 … 
Byte13+n  
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
84h 
0Dh 
00 
09 
The data field contains the information to select the EMV revocation list record: 
Offset 
Length 
(bytes)  Data Description 
Example 
00h 
5 
RID (packed hex format) 
A0 00 00 00 04 
05h 
1 
Key Index (packed hex format) 
F8 
06h 
3 
Certificate Serial Number (packed hex format) 
00 10 01 
Response Frame 

NEO Interface Developers Guide    
    238 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
84h 
See Status 
Code Table 00  00     
 EMV Exception Log List Commands 
Get EMV Exception Log Status (84-08) 
This command returns information about the EMV exception log. The version number, record size, and 
number of records contained in the file are returned. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
&Protocol 
Version 
Command  Sub-
Command 
Data Length 
(MSB) 
Data Length 
(LSB)  CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
84h 
08 
00h 
00h 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 14-
13+n 
Byte 
14+n 
Byte 15+n
Header Tag 
&Protocol 
Version 
Command  Status Code
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB)  CRC (MSB)
ViVOtech2\0
84h 
See Status 
Code Table 
00h  0Ch       
The data returned in a successful command contains the following information: 
Offset 
Length (bytes) 
Description 
00h 
4 
Version number 
04h 
4 
Number of records 
08h 
4 
Size of records 
Add Entry to EMV Exception List (84-09) 
This command adds an entry to the EMV exception list. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 14-
25 
Byte 26  Byte 27 
Header Tag 
&Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
84h  09  00h  0Ch 
See 
Below 
The exception list data is as follows: 

NEO Interface Developers Guide    
    239 
Offset  
Length (bytes) 
Description 
Example 
00h 
1 
PAN logical length in bytes (packed hex 
format). Must be <= 0Ah 
08h 
01h 
10 
PAN (packed hex format, padded with 'F' if 
required) 
5413339000001596FFFFh 
0Bh 
1 
Sequence number (packed hex format) 
00h 
Example Exception List File Data (in a non-null terminated ASCII text file):  
084761739001010010FFFF01085762739101010010FFFF0008112233445566778FFFFF050A112233445566778899
0F00  
The above file has four entries:  
08 4761739001010010FFFF 01 where PAN = 4761739001010010  
08 5762739101010010FFFF 00 where PAN = 5762739101010010  
08 112233445566778FFFFF 05 where PAN = 112233445566778  
0A 1122334455667788990F 00 where PAN = 1122334455667788990 
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 (LSB)  CRC (MSB) 
ViVOtech2\0
84h 
See Status 
Codes Table 
00h  00h     
Delete Entry from EMV Exception List (84-0A) 
This command deletes an entry from the EMV exception list. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 14-
25  Byte 26  Byte 27 
Header Tag 
&Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
84h  0A  00h  0Ch 
See 
Below 
The exception list data is as follows: 
Offset  
Length (bytes) 
Description 
Example 
00h 
1 
PAN logical length in bytes (packed hex 
format). Must be <= 0Ah 
08h 
01h 
10 
PAN (packed hex format, padded with 'F' if 
required) 
5413339000001596FFFFh 
0Bh 
1 
Sequence number (packed hex format) 
00h 
Example Exception List File Data (in a non-null terminated ASCII text file):  
084761739001010010FFFF01085762739101010010FFFF0008112233445566778FFFFF050A112233445566778899
0F00  
The above file has four entries:  
08 4761739001010010FFFF 01 where PAN = 4761739001010010  
08 5762739101010010FFFF 00 where PAN = 5762739101010010  
08 112233445566778FFFFF 05 where PAN = 112233445566778  
0A 1122334455667788990F 00 where PAN = 1122334455667788990 
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
Command 
Status Code 
Data Length 
Data Length 
CRC (LSB) 
CRC (MSB) 

NEO Interface Developers Guide    
    240 
&Protocol 
Version 
(MSB) 
(LSB) 
ViVOtech2\0
84h 
See Status 
Codes Table 
00h  00h     
Delete All Entries from EMV Exception List (84-0B) 
This command deletes all entries from the EMV exception list. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
&Protocol 
Version 
Command  Sub-
Command 
Data Length 
(MSB) 
Data Length 
(LSB)  CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
84h 
0B 
00h 
00h 
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 (LSB)  CRC (MSB) 
ViVOtech2\0
84h 
See Status 
Code Table  00h  00h     
Get EMV Exception List (84-0C) 
This command retrieves consecutive records from the EMV exception list. 
Command Frame   
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Bytes 14-
15 
Bytes 16-
17 
Byte 
18  Byte 19
Header Tag 
&Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Max 
number 
of bytes 
Starting 
Record 
CRC 
(LSB)
CRC 
(MSB) 
ViVOtech2\0 
84h 
0C 
00h 
04h 
N 
0-65535 
The maximum number of byte is a 16-bit binary number, MSB first. 
The starting record is the first record to be retrieved; expressed as a 16-bit binary number MSB first, value 
from 0-65535. 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13 
Bytes 14-
13+n  Byte 14+n
Byte 15+n 
Header Tag 
&Protocol 
Version 
Command
Status Code
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
84h 
See Status 
Code Table           
The data returned is the maximum number of transaction records that satisfy the command constrains. The 
nmber of bytes returned always is an integer multiple of the transaction record size(i.e., no partial records 
are returned) plus 12 decimal bytes. The maximum number of data bytes that can be returned in a single 
operation is limited to 4080 bytes. 
Offset 
Size in Bytes MSB First 
Description 
0 
4 
Number of records returned 
4 
4 
Number of records remaining in file 

NEO Interface Developers Guide    
    241 
8 
4 
Record size 
C 
n-C 
Exception list records 
The format of an exception list record (as returned in the Response Data) is as follows: 
Table 55: Exception List Record Format 
Offset 
Field 
Length (bytes) 
0 
PAN Length (Logical) 
1 
1 
PAN (right-padded with F if required) 
10 
11 
PAN Sequence Number 
1 
An example of an exception list records returned by this serial command is given below (only 
the data section of the response is given), along with an explanation. 
Data Section of the Response Frame5  Explanation 
08   47 61 73 90 01 01 00 10 FF FF   01 
08   57 62 73 91 01 01 00 10 FF FF   00 
08   11 22 33 44 55 66 77 8F FF FF   05 
0A   11 22 33 44 55 66 77 88 99 0F   00   
Rec 1: PAN = 4761739001010010 
Rec 2: PAN = 5762739101010010 
Rec 3: PAN = 112233445566778 
Rec 4: PAN = 1122334455667788990 
Generic Pass-through Commands 
The commands in this section provide the most basic capability to communicate 
directly with a PICC.  They provide control of the polling process, and exchange 
of application protocol data units (APDU).  These commands may be used to 
“extend” the capabilities of the ViVOpay reader to accept cards using 
application protocols that are not currently supported in the reader firmware. 
If the reader is not in Pass-Through mode, a “Pass-Through Mode Start” 
command must first be issued.  Otherwise, the commands in this section will 
result in an error. 
Pass-Through Mode Start/Stop (2C-01) 
The Pass-Through Mode Start/Stop command is used to enter and exit Pass-Through Mode.  The 
ViVOpay reader can only accept Pass-Through commands when it is in Pass-Through Mode. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
01h 
00h 
01h 
Mode 
5 
Spaces have been added in this example to increase readability; the space does not exist in the actual data. The data 
exists as hex bytes. 

NEO Interface Developers Guide    
    242 
Mode 
0 = Stop Pass-Through 
1 = Start Pass-Through 
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  2Ch 
See Status 
Code Table 00h  00h     
The Pass-Through Mode Start command must be used to enter Pass-Through Mode. 
The Pass-Through Mode Stop command can only be used in Pass-Through Mode.  If the reader 
is not in Pass-Through mode when the Pass-Through Mode Stop command is issued, the 
reader will respond with an error. 
Get PCD and PICC Parameters (2C-05) 
This command allows the terminal to retrieve PCD and PICC related parameters from the 
ViVOpay reader. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0 
2Ch 
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
2Ch  See Status 
Code Table
00h 
00h  
or  
0Fh 
See Table below
If a valid Command Frame is received from the terminal, the ViVOpay reader retrieves the 
parameters from the PCD and PICC. If the parameters are retrieved successfully, the reader 

NEO Interface Developers Guide    
    243 
returns a Response Frame with OK Status and Data containing the parameters given below. For 
details on the parameters, refer to ISO 14443. 
If the Command Frame contains any errors, or an error occurred while retrieving the parameters, 
then the reader sends a Response Frame with an appropriate Status. No data is returned in this 
case.  
Data Fields for the Response Frame (if Status = OK) 
Table 56: Get PCD and PICC Parameters Data Field 
Data 
Byte  Name  Length 
(bytes)  Format  Notes 
0-1  Reader Buffer Size  2   Binary 
Reader RF Buffer Size stored as a big-endian 
number. 
2-3  Max PICC Frame Size  2  Binary 
Maximum PICC Frame Size stored as a big-endian 
number. 
4 
CID 
1 
Binary 
CID 
5 
Block 
1 
Binary 
Block Number. 
6 
CID Supported 
1 
Binary 
CID Supported 
7-10  FWT  4  Binary 
Frame Waiting Time in ETUs. It is stored as a big-
endian number. 
11-14  D-FWT  4  Binary 
Delta FWT in ETUs. It is stored as a big-endian 
number. 
If you need to use these parameters, you should issue this command immediately after 
issuing a “Poll for Token” command.  This command simply reads the last parameters out of 
the control block used to set parameters in the RF chip.  
Poll for Token (2C-02) 
Once Pass-Through Mode is started, ViVOpay will not poll for any cards until the “Poll for Token” 
command is received. This command tells ViVOpay to start polling for a Type A or Type B PICC 
until a PICC is detected or a timeout occurs.  
This command automatically turns the RF Antenna on. 
If a PICC is detected within the specified time limit, ViVOpay activates it and responds back to 
the terminal with card related data such as the Serial Number.  
If no PICC is detected within the specified time limit, ViVOpay stops polling and responds back 
indicating that no card was found. No card related data is returned in this case. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14,15 
Byte 16 
Byte 17 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
02h 
00h 
02h 
See Below 

NEO Interface Developers Guide    
    244 
Data Fields for the Command Frame 
Table 57: Poll for Token Data Field for Command Frame 
Data Field  Length (bytes)  Description 
Timeout1 
1 
Time in Seconds Timeout1 cannot be zero 
seconds if Timeout2 is Zero. 
Timeout2 
1 
Multiplier for Time in multiples of 10 
milliseconds. 
Timeout2 
Time in ms 
0 
0 
1 
10 
2 
20 
: 
: 
255 
2550 
Together Timeout1 and Timeout2 are used by the ViVOpay reader to calculate the Timeout i.e. 
the time to wait for a PICC. For example: 
Table 58: Poll for Token Timeout 
Timeout1  Timeout2  Timeout 
0 
0 
Not Allowed 
0 
20 
0 Seconds, 200 ms 
0 
50 
0 Seconds, 500 ms 
0 
100 
1 Second 
1 
0 
1 Second 
1 
20 
1 Second, 200 ms 
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
2Ch 
See Status 
Code Table 
00h  Variable
below     
The Data field contains data only if the Status Code is OK. 

NEO Interface Developers Guide    
    245 
Table 59: Poll for Token Data Field for Response Frame (Status Code is OK) 
Data Field  Length 
(bytes) 
Description 
Card 
1 
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) 
      08h    Felica 
      09h   RCTIF Type B Prim 
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. 
Note: Most cards use a 4-byte UID, so the data field of the response is five (5) bytes long. 
However, some cards with 7-byte UID’s have entered the market (for example, ViVOcard3) 
and it is expected that cards with 10-byte UID’s will soon become available. All of these card 
types are handled by this command. 
Enhanced Poll for Token (2C-0C) 
Once Pass-Through Mode is started, ViVOpay waits until the Poll for Token command is received. 
This command tells ViVOpay to start polling for a Type A or Type B PICC until a PICC is detected 
or a timeout occurs. 
This command automatically turns the RF Antenna on. 
Note: (For Kiosk III only) This command and Poll for Token command(2c-02) can be canceled 
by command (05-01).for example: 
    1. Cancel Poll for Token command, 
         [TX] - 56 69 56 4F 74 65 63 68 32 00 2C 02 00 02 05 20 85 B8 
         [TX] - 56 69 56 4F 74 65 63 68 32 00 05 01 00 00 92 EF 
         [RX] - 56 69 56 4F 74 65 63 68 32 00 05 00 00 08 DF EF 36 04 00 07 00 00 77 FA 
    2. Cancel Enhanced Poll for Token command 
         [TX] - 56 69 56 4F 74 65 63 68 32 00 2C 0C 00 04 05 00 00 01 54 AB 
         [TX] - 56 69 56 4F 74 65 63 68 32 00 05 01 00 00 92 EF 
         [RX] - 56 69 56 4F 74 65 63 68 32 00 05 00 00 08 DF EF 36 04 00 07 00 00 77 FA 
If a PICC is detected within the speified time limit, ViVOpay activates it and responds back to 
the terminal with card related data, such as the Card Type and Serial Number (UID). 
If no PICC is detected within the specified time limit, ViVOpay stops polling and responds back 
indicating that no card was found. No card related data is returned in this case. 

NEO Interface Developers Guide    
    246 
9.1.1.2 Dual Application Cards 
Some cards have more than one type of application stored on them. These are known as Dual 
Application cards. At present, all these cards have an ISO-APDU compliant application as well as 
a Mifare application. 
To date, the only such supported dual application card is Card Type ‘07’, supporting ISO 14443 
Type A, Mifare. 
For normal ViVOpay transactions (i.e., not Pass-Through Mode), these cards are automatically 
handled as ISO 14443 applications. 
In Pass-Through Mode, the POS controls the polling mechanism. The POS can use a standard Poll 
for Token (2C-02), where Card Type ‘07’ establishes a Mifare session.   
Alternatively, the POS can issue an Enhanced Poll for Token (02-0C), where Card Type ‘07’ can 
establish an ISO 14443 session. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14,15 
Byte 16 
Byte 17 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(MSB) 
CRC    
(LSB) 
ViVOtech2\0
2Ch  0Ch  00h  04h 
See Table 
Below     
Table 60: Enhanced Poll for Token Data Field for Command Frame 
Data Field  Length (bytes)  Description 
Timeout1 
1 
Time in Seconds Timeout1 cannot be zero seconds if Timeout2 is 
Zero. 
Timeout2 
1 
Multiplier for Time in multiples of 10 milliseconds. 
Timeout2 
Time in ms 
0 
0 
1 
10 
2 
20 
: 
: 
255 
2550 
Transaction Type  2 
Initiate a transaction based upon the following masks (more than 
1 can be active): 
Mask  (hex) 
Action 
00 01 
Expect Card Type ‘07’ 
Force polling ISO 14443 
00 02 
PUPI Read deprecated by EMV 2.0 
00 03 
Force ISO 14443 Polling 
Set Single PUPI Read 
00 04 
… 
80 00 
RFU – Reserved for Future Use 

NEO Interface Developers Guide    
    247 
Together Timeout1 & Timeout2 are used by the ViVOpay reader to calculate the Timeout, i.e., 
the time to wait for a PICC. For example: 
Table 61: Enhanced Poll for Token Timeout 
Timeout1  Timeout2  Transaction Type
Timeout 
0  0  00 01 
Not Allowed 
Timeout error 
0  20  00 01 
0 Seconds, 200 ms 
Force ISO 14443 polling 
0 
50 
00 02 
PUPI Read deprecated by EMV 2.0 
0 
100 
00 00 
1 Second 
1  0  00 04 
Not Allowed 
Transaction Type Error 
1  0  00 03 
1 second  
Force ISO 14443 Polling 
Set Single PUPI Read 
1  20  00 01 
1 second  
Force ISO 14443 Polling 
Multiple Transaction Types in an Enhanced Poll for Token command are supported. That is, it is 
possible to enable both Single PUPI Read and forced ISO 14443 polling simultaneously.   
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
2Ch 
00 - OK 
?? – Fail 
00h  Variable
See Table Below
The data field contains data only if the Status Code is OK (i.e., = 00h). For more information on 
the status, please check the Status Code Table. 
Table 62: Enhanced Poll for Token Data Field for Response Frame 
Data Field  Length 
(bytes) 
Description 
Card 
1 
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)  

NEO Interface Developers Guide    
    248 
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. 
Note: Most cards use a 4-byte UID, so the data field of the response is five (5) bytes long. 
However, some cards with 7-byte UID’s have entered the market (for example, ViVOcard3) 
and it is expected that cards with 10-byte UID’s soon becomes available. All of these card 
types are handled by this command. 
9.1.1.3 Enhanced Poll for Token Usage 
This command can be substituted for the standard Poll for Token in any transaction taking 
place in Pass-Through Mode. Its differences in operation are noted as above; its other arguments 
should be identical to those of the standard Poll for Token that it replaces. 
Note: If you use an Enhanced Poll for Token command but have set all values in the 
Transaction Type field to zero, then the command performs a standard Poll for Token 
instead. 
Get ATR (2C-12) 
This pass-through command can be used to get the ATR received by the reader from the SAM 
when a Level 1 session was established. This command applies to the SAM interfaces 
(SAM1/SAM2).  
Before this pass-through command can be used, a Level 1 session must have been established on 
the contact interface to be used through the Enhanced Pass-through command (Poll for Token 
single shot command). 
Note: SAM interface is only supported in SRED devices. It is not supported in non-SRED 
versions. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC  
(MSB) 
ViVOtech2\0 
2Ch 
12h 
00h 
01h 
Interface 
Command Data 
Data Item  Length (bytes)  Description/Example 
Interface  1 
Allowed interfaces for which to get the ATR. 
      00h = retrieve last ATR received from PICC   
      21h = SAM1 (SRED version only) 
      22h = SAM2 (SRED version only) 
If a 21h or 22h is specified in the Data Field for any ViVOpay reader other than the VP5500, 
the result will be the same as if a 00h was specified. That is, any GetATR command only 
returns the last ATR received from the PICC. 

NEO Interface Developers Guide    
    249 
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
2Ch 
See Status 
Code Table 
00h  variable
ATR 
Terminate ISO Session (2C-16) 
Traditionally, pass-through sessions have been terminated by dropping the RF field.  However, 
the RCTIF test specification requires a graceful termination of a session, using either a DISC 
(Bprime) or a DESELECT (A and B).   
The TerminateISOSession command send the appropriate command to disconnect the session.  It 
will wait for the requisite timeout period, reset the field and then return a status. 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
16h 
00h 
00h 
The response frame is a simple confirmation that the session has been terminated.  The field is 
left in the desired state. 
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 
2Ch 
varies 
00h 
00h 
The status returned indicates: 
0 = any existing session was terminated.  
1 = no session was active (however the field will always be reset) 

NEO Interface Developers Guide    
    250 
Antenna Control (28-01) 
This command turns the RF Antenna ON or OFF. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(MSB) 
CRC    
(LSB) 
ViVOtech2\0 
28h 
01h 
00h 
01h 
Mode 
Mode: 
0 = Disable RF Antenna 
1 = Enable RF Antenna  
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  28h 
See Status 
Code Table 00h  00h     
Warnings on use of Antenna Off command: 
Turning off the antenna deactivates the RF field and returns the card to a Power Off state, 
terminating any existing connection.  A new “Poll for Token” command would need to be 
issued to establish a new conversation with a card. Turning the antenna off and then turning 
it back on is a useful way to reset the card to its Idle State where it will respond to polling 
commands. 
When exiting Pass-Through Mode, if the ViVOpay reader is returning to Auto Poll mode, it is 
advised to issue an “Antenna Control Enable RF Antenna” command before exiting to ensure 
the antenna is in the right state. 
Pass-through UI Control  
LED Control (0A-02) 
This command switches the specified ViVOpay LEDs off or on only when ViVOpay is in Pass-
Through Mode.  

NEO Interface Developers Guide    
    251 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14,15 
Byte 16 
Byte 17 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
0Ah 
02h 
00h 
02h 
below 
Table 63: LED Control Data Field 
Data Field  Length 
(bytes) 
Description 
LED# 
1 
00h: LED 0  (Power LED) 
01h: LED 1 
02h: LED 2 
03h: LED 3 
FFh: All 4 LEDs 
Where the LEDs are numbered 0, 1, 2, 3 counting from the left. 
Note: If you are using pass-through mode to control the Power LED (LED 
0), it is your responsibility to make sure that it behaves correctly. 
LED Status 
1 
00h: LED Off 
01h: LED On 
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  0Ah 
See Status 
Code Table 
00h  00h     
Buzzer Control (0B-xx) 
This command can be used to sound the ViVOpay Buzzer. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0
0Bh  See Below
00h  01h 
Buzzer 
Parameter     
Sub-Command  = 01h  N Short Beeps 
    = 02h  Single Long Beep of Specified Duration  

NEO Interface Developers Guide    
    252 
Table 64: Buzzer Control Data Field 
Data Field  Length (bytes)  Description 
Buzzer 
Parameter 
1 
If Sub-Command is Short Beeps  … 
Num Beeps    =     01h  One Short Beep 
           =     02h  Two Short Beeps 
           =     03h  Three Short Beeps
           =     04h  Four Short Beeps 
If Sub-Command is Long Beep … 
Duration          =     00h  200 ms   
           =     01h  400 ms   
           =     02h  600 ms   
           =     03h  800 ms 
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  0Bh 
See Status 
Code Table 00h  00h     
Pass-through Data Exchange 
Exchange Contactless Data (2C-03) 
This command allows the terminal to send, via ViVOpay, application-level APDUs to a PICC that 
supports ISO 14443-4 Protocol. The PICC response is sent back by ViVOpay to the Terminal.  
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
03h 
Variable 
Variable 
APDU Out 
APDU Out is the complete APDU that is to be sent to the PICC. The contents of the APDU depend 
on the application residing on the PICC and are out of the scope of this document.  
If a valid Command Frame is received from the terminal, ViVOpay sends the APDU data to the 
PICC and receives its response. ViVOpay treats the PICC response as unknown data and does not 
try to interpret it.  If the operation was successful, ViVOpay returns a Response Frame with an 
OK status and the response received from the PICC (APDU response).  
If the Command Frame contains any errors, or an error occurred during communication with the 
PICC, then ViVOpay sends a Response Frame with an appropriate Status. No Data is returned in 
this case.  

NEO Interface Developers Guide    
    253 
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
2Ch  See Status 
Code Table
Variable
Variable
APDU response 
Or  
None 
The Data field contains data only if the Status Code is OK. In this case, the data consists of 
“APDU Response” i.e. the response data that was received from the PICC. The contents of the 
response depend on the application residing on the PICC and are out of the scope of this 
document.  
For SRED device, the APDU data being received from the card/device by the reader will be 
checked for sensitive data elements using rule in “Secure Pass-Through Function”.  If found, and 
it has not been established that this transaction belongs to an AID or BIN on the White List, the 
Command will return a Parameter Not Supported error (0x06). 
PCD Single Command Exchange (2C-04) Protocol 2 
This command allows the terminal to send, via the ViVOpay reader, raw data to an ISO 14443 
PICC that does not support ISO 14443-4 Protocol (such as Mifare Standard or Mifare Ultralight). 
The PICC response is sent back by the reader to the terminal.   
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0
2Ch  04h  Variable
Variable
See Table 
below     
Table 65: PCD Single Command Exchange Data Field Protocol 2 
Data Field  Length 
(bytes) 
Description 
PCD Command 
1 
This is the command that is sent to the PCD Reader IC on the ViVOpay 
board. It tells the PCD what to do with the data sent with the 
command. The PCD commands supported and their values are given in 
the “PCD Cmd” Table below 
PCD Timeout 
4 
This is the RF communication timeout in ETUs stored as a 4-byte big-
endian number, where 1 ETU is 9.44 microseconds. The RF 
communication timeout guards the communication between the PCD 
reader IC and the PICC Card. The timeout is measured between the 
last bit sent to the PICC and the first bit received from the PICC. 

NEO Interface Developers Guide    
    254 
Data Field  Length 
(bytes) 
Description 
PCD Command 
Flags 
1 
These flags allow greater control over the way ViVOpay processes the 
command via the PCD Reader IC. Format of the PCD Command Flags 
byte is given in the “PCD Command Flags” Table below. 
Channel 
Redundancy 
Register 
1 
This value tells the PCD what data integrity checks to perform during 
communication with the PICC Card. The checks to perform at each 
stage are defined by the protocol (14443 Type A or B). The format of 
the PCD Command Flags byte is given in the “Channel Redundancy 
Register” Table below. 
Raw Data Out 
Variable 
Raw data that is sent to the PICC or to the PCD. 
The Command Frame contains some PCD parameters and raw data. The PCD Command 
Parameter is used by ViVOpay to determine what PCD function is to be carried out. The raw 
data is sent to the PICC for the Transceive command, or is used for LoadKey/Authentication. 
The contents of the data depend on the PICC and PCD and are out of the scope of this document.  
Table 66: PCD Commands Protocol 2 
PCD Command  Value  Description 
PCD LOADKEY 
19h 
Used for Loading Mifare Key into PCD for Authentication 
PCD AUTHENTICATE1  0Ch 
Used for PCD-based Mifare Authentication. This command 
results in both Level 1 and Level 2 authentication being 
performed automatically. 
PCD TRANSCEIVE 
1Eh 
Used to Send/Receive raw Data to/from the PICC 
Note: The PCD LOADKEY and PCD AUTHENTICATE1 functions may also be performed by the 
terminal directly by using the PCD Transceive Command. 
PCD Command Flags Table 
Bit#  Flag  Value  Meaning 
0 
Disable DF 
(DF=Disturbance 
Filter) 
1 
When response from PICC Card has been received, end of 
response is signaled regardless of errors. 
0 
When response from PICC Card has been received, if there 
are errors then the data received is flushed and we continue 
to receive.  
If there are no errors then end of response is signaled. 
1  Flush FIFO 
1 
PCD FIFO is flushed before starting this PCD command. 
0 
PCD FIFO is not flushed before starting this command. 
2-4 TxLastBits  000 
~111 
Used for transmission of bit oriented frames: TxLastBits 
defines the number of bits of the last byte that shall be 
transmitted.  
A 000 indicates that all bits of the last byte shall be 
transmitted. 
After transmission, TxLastBits is cleared automatically. 
5  DISABLE  1  Disable 

NEO Interface Developers Guide    
    255 
RXMULTIPLE 
FILTER  0  Enable(Default) 
6-7  RFU 00  Reserved for future use. 
Note: The definition of bit 5 is only to keep compatible with Kiosk II, it doesn't work, but this bit 
is occupied, and is not allowed for other usage.  
Table 67: PCD Channel Redundancy Register Protocol 2 
Bit#
Flag  Value  Meaning 
0  Parity Enable  1 
Parity bit inserted in transmitted data and expected in received 
data. 
0 
No parity bit inserted or expected. 
1  Parity Odd 
1 
Odd parity. 
0 
Even parity. 
2  Tx CRC Enable 
1 
CRC Bytes appended to transmitted data. 
0 
CRC Bytes not appended to transmitted data. 
3  Rx CRC Enable  1 
Last bytes of received data are interpreted as CRC bytes.  
Note: The CRC is not sent back to the terminal by ViVOpay. 
0 
No CRC expected. 
4  CRC-8 
1 
8-Bit CRC calculated. 
0 
16-Bit CRC calculated. 
5  CRC 3309 
1 
CRC-Calculation is done according to ISO /IEC3309 (ISO 14443B). 
0 
CRC-Calculation is done according to ISO 14443A. 
6 
RFU 
0 
Must always be zero. 
7 
RFU 
0 
Must always be zero. 
If a valid Command Frame is received from the terminal, ViVOpay sends the data to the PICC (or 
carries out the appropriate action) and receives the PICC response. The ViVOpay reader treats 
the response as unknown data and does not try to interpret it. If there is no error, the reader 
returns a Response Frame with OK Status and the Data received from the PICC (if any). The 
Response Frame also contains the result of the PCD Command (PCD Status). The PCD Status may 
indicate success or an Error Code.  
If the Command Frame contains any errors, or an error occurred during communication with the 
PICC (such as PICC removed from the field), then the reader sends a Response Frame with an 
appropriate Status. No Data is returned in this case.  
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
2Ch  See Status 
Code Table
Variable
Variable
See Table below 
OR 
None 

NEO Interface Developers Guide    
    256 
Table 68: PCD Single Command Exchange Data Field for Response 
Data Field  Length (bytes)  Description 
PCD Status 
1 
This field contains the result of the PCD Command. Possible values 
are given in the following table. 
PCD Status 
Description 
0 
OK 
-1 
No Tag Error (Card not present) 
-2 
CRC Error 
-3 
Empty 
-4 
Authentication Error 
-5 
Parity Error 
-6 
Code Error 
-7 
Card Type Error 
-8 
Serial Number Error 
-9 
Key Error 
-10 
Authentication not carried out for this 
Sector 
-11 
Bit Count Error 
-12 
Byte Count Error 
-13 
Idle 
-15 
Write Error 
-18 
Read Error 
-19 
FIFO Overflow Error 
-21 
Framing Error 
-22 
Access Error 
-23 
Unknown Command 
-24 
Collision Error 
-25 
Reset Error 
-27 
Access Timeout 
-31 
Coding Error 
-54 
Baud rate not supported by PCD 
-112 
Receive Buffer Overflow 
RcvdBits 
4 
Number of bits received  (stored as a big-endian number) 
Raw Data In 
0 or  
Variable 
The response data that is received from the PICC. The contents of 
the response depend on the application residing on the PICC and 
are out of the scope of this document. 
For SRED device, the Raw Data being received from the card/device by the reader will be 
checked for sensitive data elements using rule in “Secure Pass-Through Function”.  If found, and 
it has not been established that this transaction belongs to an AID or BIN on the White List, the 
Command will return a Parameter Not Supported error (0x06). 
9.1.1.4 Example:  Sending a HALTA Command to a Type A PICC 
Assuming that ViVOpay has been put into Pass-Through Mode, a Type A PICC has been detected 
using the Poll for Token command, and the terminal application has completed the transaction 
with the card, an ISO 14443 HALTA command can be sent to the PICC using the PCD Single 
Command Exchange command. Given below is a log of the command and data that the terminal 
would send to ViVOpay and also the responses that may be received from ViVOpay.  

NEO Interface Developers Guide    
    257 
The following serial data may be exchanged between a terminal/PC and a ViVOpay reader: 
Table 69: Halt a Command Exchange Between Terminal/PC and Reader 
Terminal 
ViVOpay 
Command Frame (“PCD Single Command 
Exchange”, PcdTransceive,  106 ETUs, 
[FlushFiFO=0, DisableDF=0], ChanRedReg=07)  
“ViVOtech2\0”  2Ch  04h  00h  09h 1Eh  00h 00h 
00h 6Ah  00h  07h 50h 00h <CRC><CRC>   
 Response Frame (OK,  NoTagError, RcvdBits=0) 
“ViVOtech2\0”  2Ch  00h 00h 05h FFh 00h 00h 00h 
00h <CRC><CRC> 
High Level Halt Command (2C-09) 
This command instructs the ViVOpay reader to send a HALT command to the card and can be 
used for any Type A or Type B card. This command can only be used once the reader has been 
put in Pass-Through mode and the “Poll for Token” command has indicated that a Card is 
present.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
09h 
00h 
01h 
Card Type 
Card Type: 
0x01 = Type A 
0x02 = Type B 
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  2Ch 
See Status 
Code Table
00h  00h     
Enhanced Pass-Through Command (2C-0B) 
This command instructs the reader to carry out several tasks while in Pass-Through Mode. This 
command is ONLY enabled in Pass-Through Mode. If the reader is not in Pass-Through Mode, the 
reader ignores this command. 

NEO Interface Developers Guide    
    258 
Note: SAM interface is only supported in SRED devices. It is not supported in non-SRED 
version. 
This command is used in three basic situations: 
1. To initiate a pass-through transaction 
2. To terminate a “successful” transaction 
3. To terminate a “failed” transaction 
This command is based in large part on the standard Set Message Led/Buzz command. It differs 
primarily in that: 
 Activation/Deactivation of interface 
 Turn On/Off Antenna (PICC) 
 Single-shot command processing 
 Poll for Token (PICC/ICC/SAM) 
 Sound the buzzer in various ways 
 Turn on or off any of the LED’s 
 Write text and amount messages to the display 
If this command is only used to set the Buzzer/LED then it works on the all readers. 
There are three cases depending on the LCD Message index number: 
Index 00h to 07h messages are directly display by the reader. Normally these messages are not 
set through this command. 
Index 08h to 0Bh messages can be set by the terminal. 
Index FFh indicates the terminal is setting LED/Buzzer only. 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
2Ch  0Bh 
07 + N  
OR  
7 + X + Y 
See Data Table
The format and contents of the data field in the Command Frame are given in the following 
table. 

NEO Interface Developers Guide    
    259 
Table 70: Enhanced Pass-Through Data Field 
Data Item 
Length 
(bytes)  Description 
Single-Shot 
Commands 
1 
This bitmask contains the following commands. If a bit is set (1), the 
command is issued by the reader in the proper order. If the command 
mask is cleared (0), the command is NOT executed. 
0000 0001 : Activate Interface (mutually exclusive) 
0000 0010 : Deactivate Interface (mutually exclusive) 
0000 0100 : Issue Poll For Token 
0000 1000 : Use Independent LED instead (mutually exclusive) 
0001 0000 : Use Independent Buzzer instead (mutually exclusive ) 
0010 0000 : Use Specified Interface 
0100 0000 : Reserved 
1000 0000 : Reserved 
For more information see Single-Shot Commands below. 
LCD Message 
Index (for 
readers with a 
display only) 
1 
00-07 is controlled by the reader and normally not set by this command 
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) 
08-0B is controlled by the terminal through this command 
08: Insert or Swipe card (Use Chip & PIN) 
09: Try Again(Tap Again) 
0A: Indicate the custom to present only one card (Present 1 card 
only) 
0B: Indicate the custom to wait for authentication/authorization 
(Wait) 
80 MASK – indicates the User has included a String1 character string to 
be displayed with the standard message. If 0x80 is present, then the 
message index (in the lower portion of the byte) is displayed and LCD 
String1 and LCD String2 are only used for the Amount and Balance 
messages. 
FF indicates not to set the LCD message which allows terminal to set 
LED/Buzzer only. 
EXAMPLE 1: Index = 00h, reader displays standard “Welcome” 
EXAMPLE 2: Index = 86h, reader displays standard 06h “Amount” 
message but also displays String1 (in this case String1 = “$3.95”) 
Beep Indicator  1 
00h:   No beep 
01h:   Single beep 
02h:   Double beep 
03h:   Three short beeps 
04h:   Four short beeps 
05h    One long beep of 200 ms 
06h    One long beep of 400 ms 
07h    One long beep of 600 ms  
08h    One long beep of 800 ms 
LED Number  1 
00h:     LED 0 (Power LED) 
01h:     LED 1  
02h:     LED 2 
03h:     LED 3 
FFh:     All LEDs 

NEO Interface Developers Guide    
    260 
Data Item 
Length 
(bytes)  Description 
Where the LEDs are numbered 0, 1, 2, 3 counting from the left.  
Note: If you are using past-through mode to control the Power LED (LED 
0), it is your responsibility to make sure that it behaves correctly. 
LED Status  1 
00h:    LED Off 
01h:    LED On 
Timeout1 
1 
Time in Seconds. Timeout1 cannot be zero seconds if Timeout2 is Zero. 
Timeout2 
1 
Multiplier for Time in multiples of 10 milliseconds. 
Timeout2 
Time in ms 
0 
0 
1 
10 
2 
20 
: 
: 
255 
2550 
LCD String1 
Message  X 
This field is included when LCD Message Index AND 80h = True. 
The field is X bytes long and consists of a simple character string. It 
contains NO formatting information, ONLY text characters. If LCD 
String1 Message and LCD String2 Message are included, then the 
reserved field must be included, with LCD String1 Message appearing 
immediately after it. 
Note: The string must be null terminated (00) to indicate the end of 
the string. 
LCD String2 
Message  Y 
The field is Y bytes long and consists of a simple character string. It 
contains NO formatting information, ONLY text characters. 
Note: The string must be null terminated (00) to indicate the end of 
the string. 
Selected 
Interface  Z 
This field is present when the Single-Shot Commands Byte, Specified 
Interface bit = 1: 
It is 1 byte long. 
Allowed Interface Values are: 
      00h = Contactless 
      20h = RFU  
      21h = SAM1 (SRED version only) 
      22h = SAM2 (SRED version only) 
Note: If this field is not present, the firmware will default to standard 
PICC behavior OR generate an error, depending upon which actions are 
indicated. 
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
2Ch 
See Status 
Code Table
00h  Variable
below     
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)

NEO Interface Developers Guide    
    261 
ViVOtech2\0
2Ch 
See Status 
Code Table
00h  Variable
below     
The message has been set to the requested message only if the Response Frame contains an OK 
Status Code.  
If the interface is SAM, the response is ATR. 
If the interface is Contactless Card, the response is as follows: If Poll for Token bit is disabled, 
no data is returned in the response. It is the same for the beep indicator. If Poll for Token bit is 
enabled, the response is the same as Poll for Token (2C-02) command.. 
Single Shot Commands  
The first data byte of the command lists several ‘single-shot’ commands. If the associated bit of 
this field is set, the indicated discrete operation is carried out. If the bit is cleared, the 
associated command is NOT carried out. 
If the Poll for Token bit is enabled, the reader checks the value of the Use Specified Interface 
bit. 
If Use Specified Interface bit = 0, reader polls for a PICC card. 
If Use Specified Interface bit = 1, reader attempts a Poll for Token operation on the interface 
specified in the Selected Interface byte 
9.1.1.5 Activate Interface 
This bit turns on the RF antenna for the contactless interface by default. 
If the “Use Specified Interface” bit in the Single-Shot Command byte is set, the specified 
interface will be activated: 
 Contactless turns on the RF antenna 
 SAM1, SAM2 activates the appropriate SAM  
9.1.1.6 Deactivate Interface 
This turns off the RF antenna for the contactless interface by default. 
If the Use Specified Interface bit in the Single-Shot Command byte is set, this bit turns off the 
indicated interface: 
 Contactless turns off the RF antenna 
 SAM1, SAM2 deactivates the appropriate SAM  
Note: The interface to be deactivated MUST be the one that is currently active. 
9.1.1.7 Poll for Token 
This bit executes a Poll for Token on the Contactless interface by default. 

NEO Interface Developers Guide    
    262 
If the Use Specified Interface bit in the Single-Shot Command byte is set, this bit performs a Poll 
for Token on the indicated interface: 
 Contactless performs a Poll for Token 
 SAM1, SAM2 performs a Poll for Token on appropriate SAM slot  
9.1.1.8 Use Independent Buzzer 
If the Use Independent Buzzer bit is set, the reader checks the Beep Indicator byte and calls the 
standard Buzzer Command (0B 01). 
If the bit is cleared, the reader checks the Buzzer byte and follows the Set Message Buzzer 
command (01 02). 
9.1.1.9 Use Independent LED 
If the Use Independent LED bit is set, the reader reads the included LED Number and Status 
bytes and then call the standard LED Command (0A 02). 
If the bit is cleared, the reader reads the included LED bytes and then calls the Set Message LED 
command (01 02). 
9.1.1.10 Mutual Exclusions 
This command has several elements that are mutually exclusive; the command fails if both are 
enabled.  
Antenna 
You cannot enable both the Switch On and Switch Off options. 
Independent LED 
Enabled 
Reader uses the LED Bytes and calls the standard 0A 02 LED command 
Independent LED 
Disabled 
Reader uses the LED Bytes and follows the SetMsg 01 02 LED command 
Independent Buzzer 
Enabled 
Reader uses the Buzzer Byte and calls the standard 0B 01 Buzzer command 
Independent Buzzer 
Disabled 
Reader uses the Buzzer Byte and follows the SetMsg 01 02 Buzzer command 
LED, Buzzer and Message operations all occur simultaneously. The order in which processes are 
executed depends upon the situation: 
If SWITCH ANTENNA ON is enabled: 
 Switch Antenna On 
 Perform any Message, LED, and Buzzer operations 
 Poll for Token 
If SWITCH ANTENNA OFF is enabled: 
 Perform any Message, LED, and Buzzer operations 
NEO Interface Developers Guide    
    263 
 Switch Antenna Off 
9.1.1.11 Example Using Enhanced Pass-Through Commands 
Currently, a typical command order used during a transaction flow: 
o Switch Antenna On 
o Set Message LED Buzz 
o Poll for Token 
o Exchange APDU (Select) 
o Exchange APDU (PPSE) 
o Exchange APDU (Get Processing Option) 
o Exchange APDU (Read Record 1.1) 
o Exchange APDU (Read Record 2.1) 
o Exchange APDU (Read Record 3.1) 
o Exchange APDU (Read Record 3.2) 
o Exchange APDU (Cryptogram) 
o LED On 
o Buzzer 
o Switch Antenna Off 
The Enhanced Pass-Through command order for the same transaction flow becomes: 
o Enhanced Pass-Through Control 
o Exchange APDU (Select) 
o Exchange APDU (PPSE) 
o Exchange APDU (Get Processing Option) 
o Exchange APDU (Read Record 1.1) 
o Exchange APDU (Read Record 2.1) 
o Exchange APDU (Read Record 3.1) 
o Exchange APDU (Read Record 3.2) 
o Exchange APDU (Cryptogram) 

NEO Interface Developers Guide    
    264 
o Enhanced Pass-Through Control 
The first command would be formatted as follows: 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
2Ch 
0Bh 
00h 
07h 
See Below 
Byte 0 
Single Shot  
Byte 1 
LCD Index 
Byte 2 
Beep 
Byte 3 
LED # 
Byte 4 
LED Status 
Byte 5 
Timeout1
Byte 6 
Timeout2
05 
01 
00 
00 
01 
01 
01 
In this first call of the Enhanced Pass-Through command: 
Byte 0 instructs the reader to single-shot the Turn Antenna On and Poll for Token commands 
Byte 1 instructs the reader to display message #1 on the display 
Byte 2 says that no buzzer is expected 
Byte 3 & 4 set the left-most LED on 
Byte 5 & 6 set the timeouts (see Timeout1 and Timeout2) 
The second command would be formatted as follows: 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
2Ch 
0Bh 
00h 
07h 
See Below 
Byte 0 
Single Shot  
Byte 1 
LCD Index 
Byte 2 
Beep 
Byte 3 
LED # 
Byte 4 
LED Status 
Byte 5 
Timeout1 
Byte 6 
Timeout2 
02 
04 
01 
FF 
02 
01 
01 
In this call of the Enhanced Pass-Through command: 
Byte 0 instructs the reader to single-shot the Turn Antenna Off command 
Byte 1 instructs the reader to display message #4 (Thank You) on the display 

NEO Interface Developers Guide    
    265 
Byte 2 says that give one short beep with the buzzer 
Bytes 3 & 4 set all 4 LEDs to blink on then off 
Bytes 5 & 6 set the timeouts (see Timeout1 and Timeout2) 
Exchange APDU Data (2C-13) 
Note: SAM interface is only supported in SRED devices. It is not supported in non-SRED 
version. 
This command allows exchange of application level APDU’s with the following: 
o PICC (contactless card) that is ISO 14443-4 compliant 
o SAMs 
An application level Command APDU meant for a card or SAM is sent to the reader in the 
Command Frame, along with the interface. The reader sends the APDU to the card/SAM. The 
response APDU received from the card/SAM is sent back by the reader in the Response Frame.  
Before this pass-through command can be used, a Level 1 session must have been established 
with a card on the interface to be used i.e., contactless (PICC) or contact (SAM1/SAM2) through 
the Enhanced Pass-through command (Poll for Token single shot command). 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC  
(MSB) 
ViVOtech2\0
2Ch  13h  Variable 
See 
Command 
Data Table 
Command Data 
Data Item  Length (bytes)  Description/Example 
Interface  1 
Allowed interfaces for which to get the ATR. 
       00h = Contactless 
       20h = RFU                                                                      
21h = SAM 1 (SRED version only) 
22h = SAM 2 (SRED version only) 
Command APDU  Variable 
Command APDU data that will be sent to the card via the 
specified interface. For SAMs, any command/response pair 
can be passed.  
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

NEO Interface Developers Guide    
    266 
Header Tag 
& Protocol 
Version 
Command
Status Code
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (MSB)
CRC (LSB)
ViVOtech2\0
2Ch 
See Status 
Code Table 
00h  variable
Response 
APDU 
For SRED device, if the interface is Contactless, the APDU data being received from the 
card/device by the reader will be checked for sensitive data elements using rule in “Secure 
Pass-Through Function”.  If found, and it has not been established that this transaction belongs 
to an AID or BIN on the White List, the Command will return a Parameter Not Supported error 
(0x06). 
Contact Card Power Off (2C-18) 
This command can close contact card power. When transaction is success, the card needs power 
off before remove card. 
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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
2Ch  18h      Command 
Data     
Command Data  
Data Item  Length (bytes)  Description/Example 
Interface  1  20h = ICC (VP4880C not supported) 
21h = SAM 1  
22h = SAM 2  
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  2Ch 
See 
Status 
Code 
Table 
00h  00h       

NEO Interface Developers Guide    
    267 
High Level Pass-Through Commands for Mifare Cards 
This section contains serial commands that implement higher level functionality for the Mifare 
Cards. These commands can only be used once the reader has been put in Pass-Through mode 
and the “Poll for Token” command has indicated that a Mifare Card is present. These commands 
do not work for non-Mifare cards.  
Mifare Authenticate Block (2C-06) 
This command allows the terminal to instruct the ViVOpay reader to authenticate the Mifare 
Card sector containing the specified block of data. The Key to be used is also specified by the 
terminal. This command is applicable only for Mifare Standard/Classic Cards.  
This command is not applicable for Mifare Ultralight Cards. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14–Byte 21 
Byte 22 
Byte 23 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
06h 
00h 
08h 
See Table below 
Table 71: Mifare Authentication Block Data Field 
Data Field  Length (bytes)  Description 
Block 
1 
Block Number in the Mifare Card for which the relevant sector 
must be authenticated.  
Key Type 
1 
Specifies which type of key to use for authentication. It can 
have the following values.   
01h:  Key A        02h:  Key B 
Key 
6 
Value of the Key 
For details on these fields, refer to the relevant Mifare Specifications 
This command does not actually perform the authentication.  It sets the key to be used for 
the subsequent authentication.  The actual authentication will be performed before the next 
read or write operation.  If a sector boundary is crossed, the reader will attempt to 
authenticate using the key that was established with this command. 
After receiving the Command Frame, the ViVOpay reader verifies the data and if the data is 
valid, it interacts with the Mifare card to authenticate the sector containing the specified block. 
If this operation is successful, the ViVOpay reader sends a Response Frame with an OK Status. If 
the operation fails or the data was invalid, then the reader returns a Response Frame with an 
appropriate Status.  
Response Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 

NEO Interface Developers Guide    
    268 
Header Tag & 
Protocol 
Version 
Command  Status Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)  CRC (LSB) 
ViVOtech2\0  2Ch 
See Status 
Code Table 
00h  00h     
If the card in the field is not a Mifare card, a 0Ch (Sub-command not allowed) will be returned 
in the status code. 
Mifare Read Blocks (2C-07) 
Use this command to read data from one or more blocks on the Mifare Card. The terminal can 
instruct the reader to read up to 15 blocks using this command. If more than one block is 
defined, then the reader automatically reads the starting block and the blocks that follow. For 
multi-block reads, the sector trailer will be skipped.  Sector trailer’s may be read (except that 
the keys will not be visible) using a single block read. 
If the card specified is a Mifare Standard card, then the terminal must have successfully sent at 
least one Mifare Authenticate Block command to the reader for the first block to read.  This 
does not authenticate the block; it stores a key for use by the reader as it performs reads and 
writes. 
If the card specified is a Mifare Standard card and the read command specifies a single block 
read, then the reader tries to read the data regardless of whether the block is a sector 
trailer block. 
If the card specified is a Mifare Standard card, and the read is a multi-block read, then the 
reader skips reading the sector trailer blocks that contain the Keys (since the Keys cannot be 
read). Skipped blocks are not included in the block count. While reading blocks in a Mifare 
Standard Card, if the read requires access to the next sector, then the ViVOpay reader carries 
out authentication for this block/sector automatically by using the Key Type and Key Value that 
were set in the Mifare Authenticate Block command to authenticate the sector for the Starting 
Block via the Mifare Authenticate Block command.   
Block reads and writes that span multiple sectors assume that the keys to authenticate those 
sectors are the same as the one that was set using the Mifare Authenticate Block command. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14,15 
Byte 16 
Byte 17 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
07h 
00h 
02h 
See Table below 

NEO Interface Developers Guide    
    269 
Table 72: Mifare Read Block Data Field 
Data Field  Length 
(bytes) 
Description 
Card & Block 
Count 
1 
Card Type:  [Bit 7..4] 
     This can only indicate the following cards 
  Mifare Type A (Standard) 
  Mifare Type A (Ultralight) 
      The values for these card types are defined in the “Poll for Token”  
      command (consider only the lower 4 bits). 
Block Count: [Bit 3..0] 
      This is the number of 16-byte blocks that are read.  
      The Block Count cannot be greater than 15. 
      This count does not include the skipped blocks if the card is a Mifare 
      Standard card. 
Start Block 
1 
This is the card block number from which the reader starts reading. 
After receiving the Command Frame the ViVOpay reader verifies the parameters. If the 
parameters are valid, then it reads the data from the card. If this operation is successful, the 
ViVOpay reader sends a Response Frame containing a Status of OK and the data that was read. If 
the operation fails or one or more parameters were invalid, then the reader sends a Response 
Frame containing an appropriate Status, but no data. 
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
2Ch  See Status 
Code Table
Variable
Variable
Data Read from 
Card 
OR  
None 
If the Status is OK, then the Data Length depends on the number of blocks read and the card 
type.  
DataLen = Blocks Read * (Bytes per Block for Card).  
If there was an error or no data was read, then the Data Length is zero. 
For SRED device, the data being received from the card/device by the reader will be checked 
for sensitive data elements using rule in “Secure Pass-Through Function”.  If found, and it has 
not been established that this transaction belongs to an AID or BIN on the White List, the 
Command will return a Parameter Not Supported error (0x06). 
9.1.1.12 Reading Mifare Ultralight Cards 
Mifare Ultralight cards differ from Mifare Cards.  For Mifare Standard Cards the block size is 16 
bytes. However, for Mifare Ultralight Cards the block (page) size is 4 bytes.  When reading 

NEO Interface Developers Guide    
    270 
Mifare Ultralight cards, Block Count is taken to mean the number of 16 byte blocks (each 
consisting of four 4-byte pages).  However, for Mifare Ultralight cards, the Start Block 
represents a 4-byte page. 
For example, if the card is a Mifare Ultralight card, and a read is requested starting at Block 3 
and Block Count is 1 then 16 bytes of data are returned consisting of Page # 3, 4, 5 & 6. And if a 
read is requested starting at Block 3 and Block Count is 2 then 16*2=32 bytes of data are 
returned consisting of Page # 3, 4, 5, 6, 7, 8, 9, and 10. 
Typically, Mifare Ultralight Cards are read by the ViVOpay reader, but are not written.  This 
is because they are typically used for disposable applications such as ticketing. 
Mifare Write Blocks (2C-08) 
Use this command to instruct the ViVOpay reader to write data to one or more blocks on the 
Mifare Card. The terminal can instruct ViVOpay to write up to 15 blocks of data using this 
command. If more than one block is defined, then the reader automatically writes to the 
starting block and the blocks that follow.  
The block size depends on the type of Mifare card being accessed. For Mifare Standard Cards the 
block size is 16 bytes. For Mifare Ultralight Cards the block size is 4 bytes. 
If the card specified is a Mifare Standard card, then the terminal must have successfully sent at 
least one Mifare Authenticate Block command to the reader for the first block to write.  This 
does not authenticate the block; it stores a key for use by the reader as it performs reads and 
writes. 
If the card specified is a Mifare Standard card and the write command is a single block write, 
the reader tries to write the data regardless of whether the block is a sector trailer block or not. 
If the card specified is a Mifare Standard card, and the write is a multi-block write, then the 
reader skips writing to the sector trailer blocks that contain the Keys. Skipped blocks are not 
included in the block count. While writing blocks to a Mifare Standard Card, if the write requires 
access to the next sector, then the ViVOpay reader carries out authentication for this 
block/sector automatically by using the Key Type and Key Value that were used by the terminal 
to authenticate the sector for the Starting Block via the Mifare Authenticate Block command. 
Block reads and writes that span multiple sectors assume that the keys to authenticate those 
sectors are the same as the one that was set using the Mifare Authenticate Block 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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(MSB)  CRC    (LSB)
ViVOtech2\0 
2Ch 
08h 
Variable 
Variable 
See Table below 

NEO Interface Developers Guide    
    271 
Table 73: Mifare Write Block Data Field 
Data Field  Length 
(bytes) 
Description 
Card & Block Count 
1 
Card Type:  [Bit 7..4] 
This can only indicate the following cards 
   Mifare Type A (Standard) 
   Mifare Type A (Ultralight) 
The values for these card types are defined in the “Poll for Token” 
command (consider only the lower 4 bits). 
Block Count: [Bit 3..0] 
This is the number of blocks that are written. The Block Count cannot be 
greater than 15. This count does not include the skipped blocks if the 
card is a Mifare Standard card. 
Start Block 
1 
This is the card block number from which the reader starts writing. 
Data to Write 
Variable 
(multiple 
of block 
size) 
Data to write to the Card. 
The length of the data to be written to the card depends on the number 
of blocks to be written and the card type.    
After receiving the Command Frame the ViVOpay reader verifies the parameters. If the 
parameters are valid, it writes the data to the card. If this operation is successful, the ViVOpay 
reader sends a Response Frame with a Status of OK.  
If the Command Frame is invalid or the write operation fails then the reader sends a Response 
Frame with an appropriate Status. 
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  2Ch 
See Status 
Code Table
00h  00h     
Mifare ePurse Command (2C-0A) 
Use this command to instruct the ViVOpay reader to carry out Debit, Credit and Backup 
operations on value blocks in a Mifare card. These functions require that the related data blocks 
be formatted as a value block and that operations and keys used match the defined Access 
Conditions for that sector.  
The following illustration shows the format of a value block: 

NEO Interface Developers Guide    
    272 
Table 74: ePurse Value Block Format 
A Debit function subtracts a given amount from a Mifare value block and stores the result in the 
same block. A Credit function adds a given amount to a Mifare value block and stores the result 
in the same block. A Backup function reads a value block and stores a copy of it in another value 
block in the same authenticated sector.  
This command is flexible in that it allows any number of Debit, Credit or Backup function blocks 
to be embedded within one Command Frame in any order, with or without keys specified, as 
long as the total number of bytes is within the size capability of one Pass-Through command. 
Operations are performed in the order they are specified. 
For instance, a Purse Command could simply contain one Debit function to debit a value block 
by a specified amount. If a key and key type is included they are used to authenticate the block 
and the debit function is performed. If no key information is included the key and key type used 
in the previous Mifare Authentication command is used.  
In another case, the Purse Command could contain a Credit function to credit a value block by a 
specific amount and a Backup function to backup the resulting balance to another value block 
somewhere on the card. Each command could include a specific key for the block being 
addressed, or omit the key information and let the reader use the last known key. 
Note: The default key and key type are overwritten each time a key is encountered while 
processing a Purse Command. The initial default values are those set when the Mifare 
Authenticate Block command is received. That key type and key are used until another key is 
encountered, at which point the new key becomes the default key for subsequent 
transactions. If purse commands are used without key information then the terminal must 
have successfully sent at least one Mifare Authenticate Block command to the reader for the 
first block. 
Warning:  Multiple ePurse command blocks can be included in one command; each command 
contains a count of the number of command blocks included in the command. 
If the count of command blocks specified is not equal to the actual number of command 
blocks included in the command, an error may or may not be returned to the user. 
If the count of command blocks is greater than the actual number of command blocks 
specified, all command blocks available are acted upon and an error is returned. 
If the count of command blocks is less than the actual number of command blocks in the 
command, only the number of commands specified in the count is acted upon but no error is 
returned. 

NEO Interface Developers Guide    
    273 
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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (MSB)
CRC (LSB)
ViVOtech2\0 
2Ch 
0Ah 
Variable 
Variable 
See Table below 
Table 75: Mifare ePurse Command Data Field 
Data Field  Length 
(bytes) 
Description 
Mode, Card Type & 
Operation Count 
1 
7 
6 
5 
4 
3 
2 
1 
0 
1 = Inc 
0 = Dec  Card Type  Operation Count 
Increment / Decrement Flag: [Bit 7] 
 Set to 1 instructs reader to Add to (Credit) amount. 
 Set to 0 instructs reader to Subtract from (Debit) amount. 
Card Type:  [Bit 6..4] 
This can only indicate Mifare Type A (Standard) card (3, as defined in 
the “Poll for Token” command). 
Operation Count: [Bit 3..0] 
This is the number of operation command blocks contained within the 
rest of the Purse Function data area.  
Purse Function 
Blocks 
Variable 
[1] 
Series of any combination of supported Purse Function blocks 
(Debit/Credit, Backup).  Refer to the description of each individual 
Command Frame below.  
Debit / Credit Function Block (with Key specified) 
Byte  
0 
Byte  
1 
Byte 
2 
Byte 
3 
Byte 
4 
Byte 
5 
Byte  
6 
Byte  
7 
Byte 
8 
Byte 
9 
Byte 
10
Byte 
11
Byte 
12
Value 
Block 
Number 
Command 
Length  Amount  Key 
Type
Key 
  0Bh  See Table below  
See 
Table 
See Table 
Debit / Credit Function Block (using default Key) 
Byte 0 
Byte 1 
Byte 2 
Byte 3 
Byte 4 
Byte 5 
Value Block 
Number 
Command 
Length 
Amount 
04h 
See Table 
Table 76: Mifare ePurse Data Field for Debit/Credit Function Block 
Data Field  Length (bytes)
Description 
Amount 
4 
Amount to be added (Debit) or subtracted (Credit) in Little-Endian 
format. Mode of operation (+ or - ) is specified by most significant bit 

NEO Interface Developers Guide    
    274 
of first  data byte in Purse Command (Mode, Card Type and Operation 
Count)
Key Type 
1 
Specifies which type of key to use for authentication. It can have the 
following values.   
01h:  Key A        02h:  Key B 
Key 
6 
Value of the Key 
For details on these fields, refer to the relevant Mifare Specifications. 
Backup Function Block (with Key specified) 
Byte  
0 
Byte  
1 
Byte 
 2 
Byte  
3 
Byte  
4 
Byte 
5 
Byte 
6 
Byte 
7 
Byte 
8 
Byte 
9 
Backup 
Block 
Number 
Command 
Length 
Primary  
Block  
Number 
Key Type
Key 
See Table 
below  08h  See Table below  
See Table 
below 
See Table below 
Backup Function Block (using default Key) 
Byte 0 
Byte 1 
Byte 2 
Backup Block 
Number 
Command Length 
Primary Block  
Number 
See Table below 
01h 
See Table below  
Mifare ePurse backup commands are distinguished from Debit/Credit operations by the value 
in the Command Length field. 
Table 77: Mifare ePurse Data Field for Backup Function Block 
Data Field  Length (bytes)
Description 
Backup Block Number  
1 
Number of destination value block to be used for backup. 
Command Length 
1 
Set to 01h or 08h, depending on whether a key type and key 
are supplied. 
Primary Block Number  
1 
Number of source value block to be copied. 
Key Type 
1 
Present only if Command Length = 08h 
Specifies which type of key to use for authentication. It can 
have the following values.   
01h:  Key A        02h:  Key B
Key 
6 
Present only if Command Length = 08h 
Value of the Key 
For details on these fields, refer to the relevant Mifare Specifications. 
After receiving the Command Frame the ViVOpay reader verifies the parameters. If the 
parameters are valid, it performs the operations specified in the order in which they appear 
within the Purse Command Data Frame.  

NEO Interface Developers Guide    
    275 
Note: Although it is possible to include multiple value operations (Debit or Credit) in one 
command, because there is only a single one-bit flag to specify the Debit or Credit mode all 
value commands within one Purse Command must be either Debit or Credit functions.  
(However, backup operations may be included because they are distinguished by the 
command length field). 
If all operations are successful, the ViVOpay reader sends a Response Frame with a Status of OK. 
If the Command Frame is invalid or any of the operations fail then the reader sends a Response 
Frame with an appropriate Status. 
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  2Ch 
See Status 
Code Table
00h  00h     
Examples 
Application: Perform a Debit operation. Subtract 2000 from value block number 20H using last 
key specified. Blue shaded area shows the Debit function block within the Purse Command 
Frame. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data Length 
(MSB) 
Data Length 
(LSB) 
Mode, 
Card Type,
Operation 
Count 
Value Block
Debit Cmd 
Length 
ViVOtech2\0
2Ch  0Ah  00h  07h  31h  20h  04h 
Byte 17 
Byte 18 
Byte 19 
Byte 20 
Byte 21 
Byte 22 
Debit Amount  CRC MSB  CRC LSB 
D0h  07h  00h  00h     
Application: Perform a Credit operation. Add 100 to value block number 20H specifying Key A. 
Blue shaded area shows the Credit function block within the Purse Command Frame. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data Length 
(MSB) 
Data Length 
(LSB) 
Mode, 
Card Type,
Operation 
Count 
Value Block
Credit Cmd 
Length 
ViVOtech2\0
2Ch  0Ah  00h  0Eh  B1h  20h  0Bh 
Byte 17 
Byte 18 
Byte 19 
Byte 20 
Byte 21 
Byte 22 
Byte 23 
Byte 24 

NEO Interface Developers Guide    
    276 
Credit Amount  Key Type
Key 
64  00  00  00  01  Ka  Kb  Kc 
Byte 25 
Byte 26 
Byte 27 
Byte 28 
Byte 29 
Key  CRC MSB  CRC LSB 
Kd  Ke  Kf     
Application: Perform a Debit operation with Backup. Subtract 300 from value block number 20H 
specifying Key A and backup the result to value block number 21H using the same key. Blue 
shaded area shows the Debit function block and yellow shaded area shows the Backup function 
block within the Purse Command Frame. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data Length 
(MSB) 
Data Length 
(LSB) 
Mode, 
Card Type,
Operation 
Count 
Value Block
Debit Cmd 
Length 
ViVOtech2\0
2Ch  0Ah  00h  11h  32h  20h  0Bh 
Byte 17 
Byte 18 
Byte 19 
Byte 20 
Byte 21 
Byte 22 
Byte 23 
Byte 24 
Debit Amount  Key Type
Key 
2Ch  01  00  00  01  Ka  Kb  Kc 
Byte 25 
Byte 26 
Byte 27 
Byte 28 
Byte 29 
Byte 30 
Byte 31 
Byte 32 
Key  Backup 
Block 
Backup Cmd 
Length 
Primary 
Block  CRC MSB  CRC LSB 
Kd  Ke  Kf  21h  01h  20h     
Application: Perform a Backup (value copy) operation only. Copy the value amount from block 
1CH to block 1DH specifying Key B. Yellow shaded area shows the Backup function block within 
the Purse Command Frame. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data Length 
(MSB) 
Data Length 
(LSB) 
Mode, 
Card Type,
Operation 
Count 
Backup 
Block 
Backup 
Cmd Length
ViVOtech2\0
2Ch  0Ah  00h  0Bh  31h  1Dh  08h 
Byte 17 
Byte 18 
Byte 19 
Byte 20 
Byte 21 
Byte 22 
Byte 23 
Byte 24 
Primary 
Block  Key Type
Key 

NEO Interface Developers Guide    
    277 
1Ch  02h  Ka  Kb  Kc  Kd  Ke  Kf 
Byte 25 
Byte 26 
CRC MSB  CRC LSB 
 High Level Pass-Through Commands for NFC Cards 
This section contains serial commands that implement higher level functionality for the NFC 
Cards. These commands do not work for non-NFC cards. 
NFC Commands (2C-40) 
This command uses Data[0] in command data field to implement different functions. This 
command should be used in Pass-Through mode and command with “Poll for a NFC Tag” data 
should be used first. Command with other data can only be used once the “Poll for a NFC Tag” 
command has indicated that a NFC tag is present.  
NFC Commands 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 
14 ...Byte 
13+n 
Byte 14+n
Byte 15+n
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC(MSB)
CRC(LSB)
ViVOtech2\0
2Ch  40  00  00 
See 
Below     
Individial commands in NFC command set are distingushed as to parameters in Data field.  
Table 78: NFC Command Set List 
Command  Data 
length  Command Data Field Description 
Poll for a NFC Tag  2 
Data[0]: FFh 
Data[1]: Timeout (in second) 
Tag1 Static Get All Data  1  Data[0]: 11h 
Tag1 Static Read a Byte  2 
Data[0]: 12h 
Data[1]: Address of the data  
Tag1 Static Write a Byte  3 
Data[0]: 13h 
Data[1]: Address of the data 

NEO Interface Developers Guide    
    278 
Data[2]: Data to be written 
Tag1 Static Write a Byte NE
3 
Data[0]: 14h 
Data[1]: Address of the data 
Data[2]: Data to be written 
Tag1 Dynamic Read a 
Segment  2 
Data[0]: 15h 
Data[1]: Address of the segment 
Tag1 Dynamic Read 8 Bytes  2 
Data[0]: 16h 
Data[1]: Address of the data 
Tag1 Dynamic Write 8 Bytes
10 
Data[0]: 17h 
Data[1]: Address of the data 
Data[2]~Data[9]: Data to be written 
Tag1 Dynamic Write 8 Bytes 
NE  10 
Data[0]: 18h 
Data[1]: Address of the data 
Data[2]~Data[9]: Data to be written 
Tag2 Read Data (16 bytes)  2 
Data[0]: 21h 
Data[1]: Address of the data 
Tag2 Write Data (4 bytes)  6 
Data[0]: 22h 
Data[1]: Address of the data 
Data[2]~Data[5]: Data to be written 
Tag2 Select Sect  2 
Data[0]: 23h 
Data[1]: Sect number 
Tag3 Read Data  variable
Data[0]: 41h 
Data[1]: Number of services, value n. 
Data[2]~Data[2n+1]: Service code list 
Data[2n+2]: Number of blocks, value m. 
Data[2n+3....]: Block list, length is 2m~3m 
Tag3 Write Data  variable
Data[0]: 42h 
Data[1]: Number of services, value n. 

NEO Interface Developers Guide    
    279 
Data[2]~Data[2n+1]: Service code list 
Data[2n+2]: Number of blocks, value m. 
Data[2n+3....]: Block list, length is 2m~3m 
Data[...]: Block data, length is 16m 
Tag4 Command  variable
Data[0]: 0x81 
Data[1]~Data[n]: data 
NFC Response 
Byte 0-9  Byte 10  Byte 11  Byte 
12  Byte 13 
Byte 
14 ...Byte 
13+n 
Byte 14+n
Byte 15+n
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
length 
(MSB)
Data 
length 
(LSB) 
Data  CRC(MSB)
CRC(LSB)
ViVOtech2\0
2Ch 
See Status 
Code Table 
00  00 
See 
Below 
Table 79: NFC Command Set Response Data List 
Command Response  Data length  Command Response Data Field Description 
Poll for a NFC Tag  variable  Data[0]: Card type 
     00h   None (Card Not Detected or Could not Active) 
      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)  
      0Ah    NFC Tag 1 
      0Bh    NFC Tag 2 
      0Ch    NFC Tag 3 
      0Dh    NFC Tag 4 
Data[1...]: 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. 
Others  variable  Returned data from card 

NEO Interface Developers Guide    
    280 
For details on these data field, refer to the relevant NFC Specifications. 
For SRED device, if the command isn’t  “Poll for a NFC Tag”, the data being received from the 
card/device by the reader will be checked for sensitive data elements using rule in “Secure 
Pass-Through Function”.  If found, and it has not been established that this transaction belongs 
to an AID or BIN on the White List, the Command will return a Parameter Not Supported error 
(0x06). 
Secure Pass-Through Function 
Note: In SRED device, Pass-Through mode is called Secure Pass-Through Mode. 
(1) General Introduction 
In Secure Pass-Thru mode the reader will not allow the exposure of sensitive financial data 
from the reader unless the data from the card provides an Application Identifier (AID) or a Bank 
Identification Number (BIN) that is listed in the White List. An AID or BIN added to the White List 
is a guarantee that the AID or BIN is not used for a financial transaction.  
   In Secure Pass-Thru mode, if the AID or BIN is not in the White List, then all data returned 
from the card is parsed and analyzed to detect sensitive financial data before that data is 
provided in the transaction response. If any sensitive financial data is found only an error is 
returned and no data from the card is provided for the entire transaction. 
Note: In Secure Pass-Through Function, use the entire PAN as input BIN to compare with the 
BIN in White List 
(2) Secure Pass-Thru White List 
   The White List is loaded with MAC verification. The White List is a list of AID’s and BIN’s that 
will be used to determine if data that appears to be financial data will be allowed and shown in 
clear text.   
   If an AID selected is on the Secure Pass-Thru White List, all data for that transaction will be 
shown in clear text regardless of whether it is sensitive financial data or not. The Selected AID is 
not dependent on the occurrence of PPSE or List of AID’s selection methods. If the AID selected 
is not on the Secure Pass-Thru White List, all data received from PICC will be parsed searching 
for sensitive financial data. Any TLV or structure on the SRED list of protected financial data will 
cause the Pass-Thru command response to return a Parameter Not Supported error status (0x06) 
with no data. 
   If a BIN is found in a track data TLV or track data structure, that is also in the White List, all 
data for that transaction will be shown in clear text regardless of whether it is sensitive 
financial data or not. If the BIN is not on the White List the Pass-Thru command response will 
return a Parameter Not Supported error status (0x06) with no data. Since the BIN is embedded 
in track data, the fact that there was a BIN indicates sensitive data was found.   

NEO Interface Developers Guide    
    281 
Note: In either the matching AID or matching BIN scenarios, if sensitive data is retrieved in a 
command prior to the command where the AID or BIN that matches the White List is found, the 
transaction response will return a Parameter Not Supported status (0x06) error with no data.   
WARNING – No Card Association AID’s may be added to the white list. For example the AID’s 
for Mastercard, Visa, Amex, etc. may NOT be added to the White List.    
(1) Handling Sensitive Financial Data 
   Any TLV or structure on the SRED list of protected financial data will cause the Pass-Thru 
command response to return a Parameter Not Supported status (0x06) with no data returned. 
SRED List of Protected Financial Data 
TLV 
Name 
Find Method 
56 
Track 1 Equivalent Data 
Match EMV TLV 
57 
Track 2 Equivalent Data 
Match EMV TLV 
5A 
Application PAN 
Match EMV TLV 
5F20 
Cardholder Name 
Match EMV TLV 
5F24 
Application Expiration Date 
Match EMV TLV 
5F30 
Service Code 
Match EMV TLV 
9F27 
Cryptogram Information 
Data 
Match EMV TLV 
9F60 
CVC3Track1 
Match EMV TLV 
9F61 
CVC3Track2 
Match EMV TLV 
9F6B 
Track 2 Data 
Match EMV TLV 
none 
Track 1 
Matches ISO/IEC 7813 format for Track 1. See 
details in Track 1 Format Test below. 
none 
Track 2 
Matches ISO/IEC 7813 format for Track 2. See 
details in Track 2 Format Test below. 
none 
Track 3 
Matches ISO/IEC 4909:2006 format for Track 3. See 
details in Track 3 Format Test below.   
(2) Accessing SAMs in Pass- Thru Mode 
   In Secure Pass-Thru SAM access is always clear data. The SAM will never contain sensitive 
financial data. 
(3) Pass-Thru Command Need to be parsed for sensitive financial data 
Cmd-Sub 
Name 
2C-03 
Exchange APDU 
2C-04 
PCD Single Command Exchange 
2C-07 
Read Mifare Block 
2C-13 
Exchange APDU 
2C-40 
NFC Commands 
(4) Secure Pass-Thru White List 
WARNING – No Card Association AID’s may be added to the white list. For example the AID’s 
for Mastercard, Visa, Amex, etc. may NOT be added to the White List.    

NEO Interface Developers Guide    
    282 
White List related commands can only be used when Pass-Through mode is started. 
Set White List (2C-50) 
This command allows saving the new “White List” in the reader. The list is authenticated by 
appending a keyed-hash message authentication code (HMAC-SHA256, RCF-2104) to the message. 
The key is called MAC DUKPT Key.  This key is loaded into device using ViVOpay Key Management 
Architecture with key slot 3. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 
12 
Byte 
13  Byte 14,15  Byte 16
Byte 17
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
2Ch  50h  var  var  See Tables 
Below     
Set White List Data Field 
Data Field  Length 
(bytes)
Description 
White List 
Var up 
to 512
The actual white list. See format of White List below.  
Tag: FFEE0C      Format: Constructed  
HMAC  36  32 bytes HMAC-SHA256 of the white list (RFC-2104) using 
MAC DUKPT Key. The white list to do MAC verification is the 
value of FFEE0C TLV.  
Tag: DFEF23      Format: binary  
KSN  14  10 bytes current MAC DUKPT Key Sequence Number. Device 
uses current MAC DUKPT Key to do MAC verification. 
Tag: DFEE12     Format: binary 
The White List is composed of the following proprietary TLV’s, some of which may be embedded 
with wildcard symbols.  
White List Format 
Data Field  Length 
(bytes)  Description 
BIN 
Var up 
to 19 
A single BIN with possible wildcards.  
Tag: DFEF21      Format: ASCII ‘0-9’,’*’,’?’ 
AID  Var up 
to 32 
A single AID with possible wildcards.    
Tag: DFEF22      Format: ASCII ‘A-Z’,‘0-9’,’*’,’?’ 
BIN Range  var  Contains two BIN’s (DFEF21). Any BIN including and between the 
first BIN and second BIN is considered to be nonfinancial 
regardless of content. No wildcards allowed.   
Tag: FFEE0A     Format: TLVs 

NEO Interface Developers Guide    
    283 
Data Field  Length 
(bytes)  Description 
AID Range 
var 
Contains two AID’s (DFEF22). Any AID including and between the 
first AID and second AID is considered to be nonfinancial 
regardless of content. No wild cards allowed.    
Tag: FFEE0B     Format: TLVs 
Possible Wild Cards 
Wildcard 
Symbol 
Description of wildcard 
* 
The asterisk in a wildcard matches any character zero or more times. For 
example, "1234*" matches anything beginning with "1234" which means "1234", 
"12345", and "123456789" are all matched. 
? 
A question mark matches a single character once. For example, "1?34" matches 
"1234" and "1934". The question mark can also be used more than once. For 
example, "1??4" would match both of the above examples as well as "1984".  
Note: 
(1) Wildcards cannot be used in the AID’s or BIN’s used in the Range TLV’s (FFEE0A and FFEE0B). 
(2) The white list may contain several  single BIN TLVs or several  single AID TLVs or several  BIN 
range TLVs or several AID Range TLVs.  
(3) For all BIN Range and AID Range, the fist and second BIN or AID must have the same length, 
the first BIN or AID must be less than the second BIN or AID. 
Response Frame 
Byte 0-9  Byte 10  Byte 
11  Byte 12  Byte 13  Byte 14 …   
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Comman
d 
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\
0  2Ch 
See 
Status 
Codes
00h  00h  None     
If the White List is authenticated by the HMAC, the White List will be saved and used for 
transaction processing. If the White List is not authenticated the status response will be 0x0A 
Failed.  If the input White List format is error, the status response will be 0x0A Failed.   
Get White List (2C-51) 
This command retrieves the White List. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 
12 
Byte 
13  Byte 14,15  Byte 16
Byte 17
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB) 
CRC 
(MSB) 

NEO Interface Developers Guide    
    284 
Byte 0-9  Byte 10  Byte 11  Byte 
12 
Byte 
13  Byte 14,15  Byte 16
Byte 17
ViVOtech2\0
2Ch 
See 
Status 
Codes 
var  var  Response 
Data      
Response Frame 
Byte 0-9  Byte 10  Byte 
11  Byte 12  Byte 13  Byte 14 …   
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Comman
d 
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\
0  2Ch  Status
Variable  Variable 
Response 
Data     
Response Data - See tables for Set White List above for the White List format and options. 
Data Field  Length 
(bytes)
Description 
White List  Var  The actual white list. See format of White List in Set White 
List section above.  
Tag: FFEE0C      Format: Constructed  
Clear White List (2C-52) 
This command instructs the reader to clear the white list. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 
12 
Byte 
13  Byte 14,15  Byte 16
Byte 17
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
2Ch 
52h 
00h 
00h 
None 
Response Frame 
Byte 0-9  Byte 10  Byte 
11  Byte 12  Byte 13  Byte 14 …   
Byte 13+n 
Byte 
14+n 
Byte 
15+n 
Header Tag 
& Protocol 
Version 
Comman
d 
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\
0  2Ch  Status
00h  00h  None     
If the White List is removed successfully status response will be ok.   

NEO Interface Developers Guide    
    285 
(5) Parsing and Analysis of Data provided by Card 
This section provides detailed instructions which are the primary methods used to determine if a 
card contains sensitive financial data. Whether the data received by the reader from the card is 
raw data, an APDU or Mifare data, all data will be parsed for recognizable sensitive financial 
data as defined in “SRED List of Protected Financial Data”.  
Note: Use the entire PAN as input BIN to compare with the BIN in White List 
Input BIN compare with BIN in White List examples: (AID comparison uses the same rule) 
If input BIN is “123456789012”, BIN in white list is “123”, so BIN is not in the white list. 
if input BIN is “123456789012”, BIN in white list is “123*”, so BIN is in the white list 
if input BIN is “123456789012”, BIN in white list is “12345678901234”, so BIN is not in the white 
list 
The following steps will be used to parse the data: 
Step1 - BER-TLV parsing 
First the data is parsed to determine if they follow the standard BER-TLV structure. If the data 
does follow the BER-TLV structure then each TLV will be evaluated to determine if any match 
the sensitive financial TLV’s listed in“SRED List of Protected Financial Data”.    
BER-TLV Rules 
 0x84 TLV detected that is not “2PAY.SYS.DDF01” (PPSE directory) should be compared to 
the AID’s in the white list. 
 Any TLV in “SRED List of Protected Financial Data” that contains the PAN should be used to 
compare to the BIN’s in the white list (0x5A, 0x56, 0x57, 0x9F6B) 
 If BIN and/or AID not on any white list, look for any TLV’s from the Appendix A list. 
Step2 - Data Structures parsing  
If the data does not follow the standard BER-TLV format then the data is evaluated to determine 
if an image similar to Track data can be found. 
Track Data Structure Rules 
Track 1 ASCII: 
 Start Sentinel (STX= “%”)  
 End Sentinel (ETX = “?”)  
 Format Code (FC = “B”) 
 Separator after the PAN (FS = “^”) 
 Max PAN 19 digits. Minimum Card Brand PAN size is 12.  
 Max record length 79 characters 
1. If the Start Sentinel is found, followed by the Format Code, with the Separator within 12 to 
19 characters after the Format Code, then sensitive data has been found. 
2. If no Start Sentinel is found, but the Format Code followed by the Separator within 12 to 19 
characters after the Format Code is found, then sensitive data has been found. 
3. If no Start Sentinel and no Format code found, but the Separator is found within 12 to 19 
characters from the start of data, then sensitive data has been found.   
If sensitive data has been found, pull out the BIN and compare to white list, if not in white list 
then block this data. 
NEO Interface Developers Guide    
    286 
Examples: 
Found with Test #1 – PAN length >11 < 20  
%B6279257749132343^TEST CARD/VIVOPAY^10128130072? 
Found with Test #2 – PAN length >11 < 20 
B6279257749132343^TEST CARD/VIVOPAY^10128130072  
Found with Test #3 – PAN length >11 < 20 
6279257749132343^TEST CARD/VIVOPAY^10128130072 
Track 2 ASCII: 
 Start Sentinel (STX= “;”)  
 End Sentinel (ETX = “?”) 
 Separator after the PAN (FS = “=”) 
 Max PAN 19 digits. Minimum Card Brand PAN size is 12.  
 Max record length 40 characters 
1. If the Start Sentinel is found, followed by the Separator within 12 to 19 characters after the 
Start Sentinel, then sensitive data has been found. 
2. If no Start Sentinel, but the Separator is found within 12 to 19 characters from the start of 
data , then sensitive data has been found.   
If sensitive data has been found, pull out the BIN and compare to white list, if not in white list 
then block this data. 
Examples: 
Found with Test #1 – PAN length >11 < 20  
;6279257749132340=10128130072104350000? 
Found with Test #2 – PAN length >11 < 20 
6279257749132340=10128130072104350000 
Track 3 ASCII: 
 Start Sentinel (STX= “;”)  
 End Sentinel (ETX = “?”) 
 Format Code (FC = “0x00 – 0x99”) 
 Separator after the PAN (FS “=”) 
 Max PAN 19 digits. Minimum Card Brand PAN size is 12. 
 Max record length 107 characters 
1. If the Start Sentinel is found, and the Format Code is found, followed by the Separator 
within 12 to 19 characters from the Format Code, then sensitive data has been found. 
2. If no Start Sentinel, but the Format Code is found and the Separator is found within 12 to 19 
characters from the Format Code, then sensitive data has been found.   
3. If no Start Sentinel, and no Format Code is found, but the Separator is found within 12 to 19 
characters from the start, then sensitive data has been found.   
If sensitive data has been found, pull out the BIN and compare to white list, if not in white list 
then block this data. 
Examples: 
Found in Test #1 – PAN length >11 < 20 
;011234567890123445=724724100000000030300XXXX040400099010=******==1=00? 
Found In Test #2 – PAN length >11 < 20 
NEO Interface Developers Guide    
    287 
011234567890123445=724724100000000030300XXXX040400099010=******==1=00 
Found In Test #3 – PAN length >11 < 20 
1234567890123445=724724100000000030300XXXX040400099010=******==1=00 

NEO Interface Developers Guide    
    288 
10.0 Secure Communication 
Special Considerations for Secure Communications 
Take time to familiarize yourself with certain key differences in device usage that come into 
play when secure communications are required (as described below).  
Burst mode 
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. 
Data Output 
When secure communications are enabled, all magstripe data output (MSR) will be encoded 
according to the rules described in ID TECH P/N #80000403-001, Enhanced Encrypted MSR Data 
Output Format. All other encrypted output will conform to ID TECH P/N 80000404-001, ID Tech 
Encrypt Data Format in Command/Response Specification for IC Communication. The former 
(encrypted MSR) is a fixed-layout data encoding scheme with ID TECH proprietary semantics for 
flag values, field meanings, etc. The latter (encrypted EMV/ICC) is a TLV-based format using 
industry standard TLV (tag/length/value) encoding conventions, with a mix of industry-standard 
EMV tags and ID TECH proprietary tags.  
For further information (including actual data in the two output styles), see the appendix called 
TDES Data Encryption Examples, and/or consult the appendix on Enhanced Encrypted MSR Data 
Output Format. 
Encryption Algorithms 
The reader uses TDES encryption by default. During the authentication phase, the reader will 
use TDES in ECB mode. Once the reader and terminal are authenticated, the data field in the 
command/response frames is encrypted with Cipher Block Chaining (TDES-CBC). 
Only the data fields of the ViVOpay command/response frames are encrypted. The 14-byte 
preamble consisting of the command header, command, sub-command, and status fields, will 
not be encrypted. 

NEO Interface Developers Guide    
    289 
Secure Data Exchange 
Data is encrypted using TDES-CBC. Once a session is established, the initial vector will never be 
reset to its initial value until a new session is established. Thus, the chaining extends across 
packets and ensures the order of packets. The result is that a session is encrypted in a 
unique/per-instance non-repeatable way, to make replay attacks all but impossible. 
Padding of Data Fields 
Padding is usually required for the CBC algorithm, because TDES will require that data blocks be 
a multiple of 8 bytes long, for example (whereas AES will require data blocks to be a multiple of 
16 bytes). Since the length field in the ViVOpay frame indicates the length of the encrypted 
data field, there must be a way to recognize the actual data (in order to recover the data as it 
existed before padding). 
The order of operations for sending frames: 
1. Insert pads so that data length is a multiple of 8. 
2. Encrypt using CBC. 
3. Do DLE insertion. 
The order of operations for receiving frames: 
1. Do DLE deletion. 
2. Do decryption using CBC.  
3. Remove pads. 
If the data is a multiple of 8, then there will be eight pads of 0x08. 
If the data was one less than a multiple of 8, then there is one pad of 0x01. 
For all other cases, there are n pads of 0x0n, where n is between 1 and 8. The following 
examples illustrate padding: 
Actual Data Falls on an 8-Byte Boundary 
Byte 0-9 
Byte 
10  Byte 11
Byte 12
Byte 13
Byte 14 + x  Byte 23
Byte 24
Header Tag & 
Protocol 
Version 
Cmd
Sub 
Cmd 
Length
(MSB) 
Length
(LSB) 
Encrypted Data (n bytes) 
Pad: 08h, 08h, 08h, 08h, 
08h, 08h, 08h, 08h 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0      00h  Varies
Varies (always multiple of 
8 bytes) + 8 bytes 08h pad
Varies
Varies 
Actual Data is One Less than 8-Byte Boundary 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 –n + 1 
Byte 23 
Byte 24 
Header Tag 
& Protocol 
Version 
Cmd  Sub 
Cmd 
Length 
(MSB) 
Length 
(LSB) 
Encrypted Data:  
Pad: 01h 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
    00h  Varies 
Varies (always 
multiple of 8 bytes) 
Last byte = 01h 
Varies  Varies 

NEO Interface Developers Guide    
    290 
Actual Data is less than 8-Byte Boundary 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 -n 
Byte 23 
Byte 24 
Header Tag
& Protocol
Version 
Cmd  Sub 
Cmd 
Length
(MSB) 
Length
(LSB) 
Encrypted Data, 
Pad: n pads of 0x0n, 
where n is between 1 
and 8 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\
0      00h  Varies 
Varies (always multiple 
of 8 bytes) 
Pad example, 03h, 03h, 
03h. 
Varies  Varies 
Set Data Encryption Key Variant Type (C7-2F) 
This command exists to specify the key variant type of Data encryption Key, and MUST be used 
before the initial loading of the Data encryption Key into the device. The key variant type 
CANNOT be changed once the Data encryption Key is present. It must remain either Data Variant 
or PIN Variant. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Sub- 
Command 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  2Fh  00  01 
Key Variant 
Type     
Encryption Type 
Description 
0 
Data Variant 
1 
Pin Variant 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data length 
(LSB)  CRC(MSB)  CRC(LSB) 
ViVOtech2\0  C7h 
See Status Code 
Table 
00  00     
Get Data Encryption Key Variant Type (C7-30) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte15 
Header Tag & 
Protocol Version
Command  Sub- 
Command 
Data length
(MSB) 
Data 
length 
(LSB) 
CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  30h  00  00     
Response Frame 

NEO Interface Developers Guide    
    291 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data1  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h 
See Status 
Code Table  00  01 
Key Variant 
Type     
Encryption Type 
Description 
0 
Data Variant 
1 
Pin Variant 
Set DUKPT Key Encryption Type (C7-32) 
This command exists to specify the encryption type of Data encryption Key, and MUST be used 
before the initial loading of the Data encryption Key into the device. The encryption type 
CANNOT be changed once the Data encryption Key is present. It must remain either TDES or AES. 
Note: This command is only supported in NSRED device. In SRED device, only TDES algorithm 
is used to encrypt transaction output sensitive data. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Sub- 
Command 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  32h  00  01 
Encryption 
Type 
Encryption Type 
Description 
0 
TDES 
1 
AES 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data length 
(LSB)  CRC(MSB)  CRC(LSB) 
ViVOtech2\0  C7h 
See Status Code 
Table  00  00     
Get DUKPT Key Encryption Type (C7-33) 
Note: This command is only supported in NSRED device. In SRED device, only TDES algorithm 
is used to encrypt transaction output sensitive data. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte15 
Header Tag & 
Command 
Sub- 
Data length 
Data 
CRC 
CRC 

NEO Interface Developers Guide    
    292 
Protocol Version 
Command 
(MSB) 
length 
(LSB) 
(MSB) 
(LSB) 
ViVOtech2\0  C7h  33h  00  00     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data1  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h 
See Status 
Code Table  00  01 
Encryption 
Type     
Encryption Type 
Description 
0 
TDES 
1 
AES 
Example data (top line: command; bottom line: response) 
TDES: 
56 69 56 4F 74 65 63 68 32 00 C7 33 00 00 1A 9B  
56 69 56 4F 74 65 63 68 32 00 C7 00 00 01 00 AC 7F 
AES: 
56 69 56 4F 74 65 63 68 32 00 C7 33 00 00 1A 9B  
56 69 56 4F 74 65 63 68 32 00 C7 00 00 01 01 BC 5E 
Set Data Encryption Enable Flag (C7-36) 
This command is meant to be used once (only), to turn encryption ON permanently. It elevates 
the security status of the device. This is meant to be an irreversible event.  
Note: This command is supported only in non-SRED devices. In SRED devices, the reader is 
always encryption-enabled and this command is unsupported. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Sub- 
Command 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  36h  00  01 
Encryption 
Enable Flag
Encryption 
Type 
Description 
Bit 0  0 -> CT/CL EMV Data Encryption Disable (default) 
1 -> CT/CL EMV Data Encryption Enable 
Bit 1  0 -> MSR/MSD Data Encryption Disable (default) 

NEO Interface Developers Guide    
    293 
1 -> MSR/MSD Data Encryption Enable 
         Bit 2~7 
Reserve 
Note: MSR/MSD Encryption Disable and EMV Encryption Enable isn’t allowed. 
When MSR/MSD or EMV Encryption is enabled and Data encryption Key exists, Burst Mode is 
disabled (always OFF) 
Note: KIOSKIII NSRED default value is MSR/MSD Data Encryption Enable and EMV Data 
Encryption Disable. 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data length 
(LSB)  CRC(MSB)  CRC(LSB) 
ViVOtech2\0  C7h 
See Status Code 
Table  00  00     
When Data Encryption is disabled, device will always respond plaintext data 
When Data Encryption is enabled, device will output data as follows: 
(1) When Data encryption Key does not exist, the commands below will respond plaintext 
data for NSRED device, respond status code 0x90 and no data for SRED device. 
(2) When Data encryption Key exists and is valid, the commands below will respond 
encrypted data. 
(3) When Data encryption Key exists and exhausted, the commands below will respond 
status code 0x91 and no data. 
Commands: 
(1) Activate Transaction Command (02-01/02-40) 
(2) Get Transaction Result Command (03-00/03-40) 
Device Current Status/Command Setting/Device Operation/Output Matrix 
(Data encryption Key exists and valid) 
Current  Encryption 
Status  Command Encryption Setting 
Device 
Operation
Output after Setting 
MSR/MSD_OFF, 
EMV_OFF 
0x00 
MSR/MSD_OFF, EMV_OFF (0x00)
Keep  MSR/MSD plaintext,  EMV plaintext 
MSR/MSD _OFF, EMV _ON (0x01)
Refuse   MSR/MSD plaintext,  EMV plaintext 
MSR/MSD ON, EMV_OFF (0x02)  Update  MSR/MSD encryption,  EMV plaintext 
MSR/MSD _ON, EMV_ON (0x03)  Update  MSR/MSD encryption,  EMV encryption 
MSR/MSD_ON, 
EMV_OFF 
0x02 
MSR/MSD_OFF, EMV_OFF (0x00)
Refuse   MSR/MSD encryption,  EMV plaintext 
MSR/MSD _OFF, EMV _ON (0x01)
Refuse   MSR/MSD encryption,  EMV plaintext 
MSR/MSD ON, EMV_OFF (0x02)  Keep   MSR/MSD encryption,  EMV plaintext 
MSR/MSD _ON, EMV_ON (0x03)  Update   MSR/MSD encryption,  EMV encryption 
MSR/MSD_ON, 
EMV_ON 
MSR/MSD_OFF, EMV_OFF (0x00)
Refuse   MSR/MSD encryption,  EMV encryption 
MSR/MSD _OFF, EMV _ON (0x01)
Refuse   MSR/MSD encryption,  EMV encryption 

NEO Interface Developers Guide    
    294 
0x03 
MSR/MSD ON, EMV_OFF (0x02)  Refuse  MSR/MSD encryption,  EMV encryption 
MSR/MSD _ON, EMV_ON (0x03)  Keep  MSR/MSD encryption,  EMV encryption 
Get Data Encryption Enable Flag (C7-37) 
Note: This command is only supported in Non-SRED version devices, not supported in SRED 
version devices. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte15 
Header Tag & 
Protocol Version
Command  Sub- 
Command 
Data length
(MSB) 
Data 
length 
(LSB) 
CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  37h  00  00     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte14  Byte 15
Byte16 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data1  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h 
See Status 
Code Table  00  01 
Encryption 
Enable Flag
Encryption 
Type 
Description 
Bit 0  0 -> CT/CL EMV Data Encryption Disable (default) 
1 -> CT/CL EMV Data Encryption Enable 
Bit 1  0 -> MSR/MSD Data Encryption Disable (default) 
1 -> MSR/MSD Data Encryption Enable 
         Bit 2~7 
Reserve 
Set MSR Secure Parameters (C7-38) 
This command allows setting parameters that determine encrypted output from MSR sessions. 
Use it to force encryption data output to include various kinds of data per Enhanced Encrypted 
MSR Data Output When Encryption is Turned On with C7-38 Command. Consult the table in that 
Appendix (A.13) to see the types of output that can occur. 
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  Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 

NEO Interface Developers Guide    
    295 
ViVOtech2\0  C7h  38h  00h  05h 
MSR Secure 
Parameters 
TVL 
MSR Secure Parameters TVL objects 
Tag 
Data Object Name 
Description 
Format 
Length 
DFDE04 
MSR Encryption Option 
Encryption Option (Forced encryption 
or not) 
Bit 0: T1 force encrypt 
Bit 1: T2 force encrypt 
Bit 2: T3 force encrypt 
Bit 3: T3 force encrypt when card 
type is 80 
Default value is 0x08. 
b 
1 
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 
C7h 
See Status 
Code Table 
ViVOtech2\
0  C7h  38h 00h  05h 
MSR Secure 
Parameters 
TVL 
Get MSR Secure Parameters (C7-39) 
This command can get parameters from flash setting.  
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  Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0  C7h  39h  00h  03h 
MSR Secure 
Parameters 
TVL 
MSR Secure Parameters TVL objects 
Tag 
Data Object Name 
Description 
Format 
Length 
DFDE04 
MSR Encryption Option 
Encryption Option (Forced encryption 
or not) 
Bit 0: T1 force encrypt 
Bit 1: T2 force encrypt 
Bit 2: T3 force encrypt 
Bit 3: T3 force encrypt when card 
type is 80 
Default value is 0x08. 
b 
1 
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

NEO Interface Developers Guide    
    296 
Header Tag 
& Protocol 
Version 
Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC   
(MSB) 
CRC   
(LSB) 
ViVOtech2\
0 
C7h 
See Status 
Code Table 
00h  05h  TLV     
Key Injection and Related Commands 
Set Remote Key Injection Timeout (C7-2D) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte14  Byte 15  Byte 16
Byte17
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data1  Data2  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
C7h  2Dh  00  02 
Timeout 
(MSB) 
Timeout 
(LSB) 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status 
Data 
length 
(MSB) 
Data length 
(LSB)  CRC(MSB)  CRC(LSB) 
ViVOtech2\0  C7h 
See Status Code 
Table  00  00     
Timeout is in second, value scope is [120, 3600]. If timeout, remote key injection is canceled.  
Get Remote Key Injection Timeout (C7-2E) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte15 
Header Tag & 
Protocol Version
Command  Sub- 
Command 
Data length
(MSB) 
Data 
length 
(LSB) 
CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0  C7h  2Eh  00  00     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte14  Byte 15  Byte 16
Byte17
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data1  Data2  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
C7h 
See Status 
Code Table
00  00 
Timeout 
(MSB) 
Timeout 
(LSB)     
Timeout is in second, value scope is [120, 3600]. If timeout, remote key injection is canceled. 

NEO Interface Developers Guide    
    297 
Check DUKPT Keys (81-02) 
This command checks and returns the state of the DUKPT key associated with each slot.  
Slot 2: RKI-KEK (NSRED and SRED device support, use in Remote Key Injection) 
Slot 3: MAC DUKPT Key (SRED device support, for future use) 
Slot 5: Data encryption Key (NSRED and SRED device support, use to encrypt transaction output 
sensitive 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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
81h  02h  00h  00h  None     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 ~ 13+n  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  81h  See Status 
Code Table  00h  00h or 
0Ch 
Nothing  
or Key States     
If successful, the returned Status Code is 00h and the response data will contain the key states 
for 12 slots. Most of these slots are reserved for future use. Only the supported slot indexes will 
contain key states. The format of the data returned on success is given below. 
Response Data (When Status is OK) 
Data Item  Length 
(bytes)  Description 
Key States  12 (0Ch)  This data item contains the Key States for 12 DUKPT Key slots. 
Each byte represents the Key State for a single slot.  
Possible values for each Key State are: 
     00h: Unused          (Slot is supported but no key injected) 
     01h: Valid              (A valid key is available in this slot) 
     02h: End of Life     (The key on this slot has reached end of life) 
     FFh: Not Available (This slot is not supported) 
If the command is not successful, then the Status Code will not be 00h and no data is returned. 

NEO Interface Developers Guide    
    298 
Check DUKPT Key (81-04) 
This command checks whether a valid DUKPT key is stored at the specified slot and if a valid key 
is found then some basic information related to the type of key is returned. The actual Key data 
is never returned.  
This command can be used to check whether a key is already present before injecting a key in a 
slot to prevent overwriting an existing DUKPT key. 
Slot 2: RKI-KEK (NSRED and SRED device support, use in Remote Key Injection) 
Slot 3: MAC DUKPT Key (SRED device support, for future use) 
Slot 5: Data encryption Key (NSRED and SRED device support, use to encrypt transaction output 
sensitive 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
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0
81h  04h  00h  01h  Key Slot     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14-13+n  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  81h  See Status 
Code Table  00h  variable
Nothing  
or Key States     
If the Command Frame is valid, then the Status Code will be OK and the response data will 
contain the key state and other key related data as shown in the following table. If the 
Command Frame is not valid, then the Status Code will not be OK and no data will be returned. 
Response Data (When Status is OK) 
Byte  Field Name  Description  Encoding 
0  Key State  Key State for the DUKPT key associated with the specified slot. 
Possible values for the Key State are: 
     00h: Unused          (Slot is supported but no key injected) 
     01h: Valid              (A valid key is available in this slot) 
     02h: End of Life     (The key on this slot has reached end of 
life) 
     FFh: Not Available (This slot is not supported) 
Mandatory Field. 
Binary 

NEO Interface Developers Guide    
    299 
Byte  Field Name  Description  Encoding 
1-2  Key Usage  ‘K0’ – Use to encrypt or wrap other keys 
‘D0’ – Use to encrypt Data 
‘M0’ – Use to do MAC Verification (only SRED device support) 
Present only if key state indicates a valid key. 
2AN 
3  Algorithm  ‘A’, hex 0x41, AES 
‘T’, hex 0x54. Triple DES 
‘D’, hex 0x44. Single DES 
Present only if key state indicates a valid key. 
1AN 
4  Mode of Use
'N' No special restrictions 
‘B’ Both Encryption and Decryption 
'E' Encryption only  
'D' Decryption only 
Present only if key state indicates a valid key. 
1AN 
5-6  Key Version 
Number 
‘00’, hex 0x3030.  
If set to ‘00’ key version number is not used. Key version is not 
supported in this version of the specifications 
Present only if key state indicates a valid key. 
2AN 
Get DUKPT Key Serial Number (KSN) (81-0A) 
Host can use this command to retrieve the KSN of the selected DUKPT key. 
Slot 2: RKI-KEK (NSRED and SRED device support, use in Remote Key Injection) 
Slot 3: MAC DUKPT Key (SRED device support, for future use) 
Slot 5: Data encryption Key (NSRED and SRED device support, use to encrypt transaction output 
sensitive data) 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command  Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Key Index  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
81h 
0Ah 
00h 
01h 
Key slot 
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 
81h 
Status Code 
00h 
variable 
KSN 
If the Command Frame is valid, the slot was supported and the DUKPT Key is valid, the Status 
Code will be OK and the data portion will have the content described below. If the Command 
Frame is not valid or the slot is unsupported or DUKPT Key is not valid, then the Status Code will 
not be OK and no data will be returned. 

NEO Interface Developers Guide    
    300 
Get KSN Response Data 
Data Item  Length 
(bytes)  Description 
KSN  20 
KSN of selected DUKPT key 
Format: ASCII (no null terminator) 

NEO Interface Developers Guide    
    301 
11.0 Improved Collision Detection 
Issues with Standard Collision Detection 
This firmware supports the EMV Contactless Communication Protocol Specification. While the 
EMV specification defines collision detection, there are often physical constraints which prevent 
collision detection resolving within the timing limits outlined in the specification.  
For instance, multiple cards in the field cannot always be detected reliably. If a particular card 
responds more quickly to RF polling, or if a card has a stronger antenna, then the signal will lock 
to that card. (This problem is not limited to ID TECH equipment.) Card geometry can also be a 
major factor in collision detection.  
The following bullets explain some of the difficulties associated with multiple card presentation: 
 When a single type A and single type B card are presented side-by-side the reader will 
detect collisions without much difficulty: 
 When two cards are stacked on top of one another, the faster card or the card that is closer 
to the PCD will be activated. This is because the slower card or the card that is further from 
the PCD suffers insufficient power, interference from the other card, or timing that falls 
outside the boundaries defined in the EMV specification. 
 Presenting two cards of the same type side by side (e.g. A || A) will suffer from the same 
problems described in the previous bullet, because the RF power draw from one card can 
negatively impact the communication and/or power of the other card. 

NEO Interface Developers Guide    
    302 
The six possible multiple card presentation scenarios are listed in the table below. 
Scenario
Card Type
Orientation
1 
A / B 
Stacked 
2 
A / B 
Fanned 
3 
A / A 
Stacked 
4 
A / A 
Fanned 
5 
B / B 
Stacked 
6 
B / B 
Fanned 
Note: Card Type B / B (scenarios 5 & 6) are inherently difficult to detect. When multiple 
type B cards are presented they should detune one another. If there is minimal detuning then 
no collision would be detected.  
Collision Detection Modes 
The firmware features two mutually-exclusive collision detection modes, Standard Collision 
Detection and Improved Collision Detection, which are described in the subsections below. 
11.1.1.1 Standard Collision Detection 
Standard Collision Detection, also known as EMEA Anti-Collision Detection, is enabled by default, 
as it maximizes the chances of completing a transaction. In this mode, if a collision event is 
detected, the reader will back off and resume polling.  
Media removal events are handled as per the EMEA requirements for collision. When detecting a 
collision a media removal UI event is triggered (all LEDs off, 2 tone alert, and appropriate 
message for LCD equipped units), a small delay is then introduced before returning to polling.  
Note:  
It is important to understand that the procedure outlined above will repeat if the collision is 
not resolved. Also, the media removal event only operates when the EMEA UI is enabled (tag 
'FF F8' = '03'). Finally, this procedure occurs automatically without interaction from the 
integrated system and will operate for the duration of the Timeout period, as set by Activate 
Transaction. 

NEO Interface Developers Guide    
    303 
The reader will then continue to retry the transaction; until either, the collision issue has been 
resolved (and a transaction takes place), or until the transaction timeout expires. In the latter 
case, the timeout will contain the timeout status (0x08) and timeout cause in the data field 
(0x21, collision error). 
Note: In this mode, if a collision is detected, the reader will interpret further 
‘Communication Error’ or ‘Card Not Present’ events as being caused by collision. 
11.1.1.2 Improved Collision Detection 
Enabling this mode disables Standard Collision Detection mode and changes reader behavior:  
1. While polling, the reader will attempt to find the PICC using the standard polling 
method.  
2. If a collision is detected, the reader will abort the transaction and notify the POS.  
3. It will report this with an error in the data field of its response (0x21, collision error). 
Tag DF7F enables/disables Improved Collision Detection. When this tag is set to zero (default 
value), Improved Collision mode is disabled. When this tag is set to another value (1-255), 
Improved Collision mode is enabled.  
When Improved Collision mode is enabled, the DF7F tag value defines the number of successful 
sequential polling attempts required for signal lock. For example, if tag DF7F = 3, then the 
reader must detect a card successfully three times in a row before the firmware decides this is a 
successful polling attempt. Given the same conditions, the reader must fail to detect a card 
three times in a row before the firmware decides this is a 'card not present' polling attempt. 
To reiterate, Improved Collision Detection requires a specified number of polling attempts to 
complete without an EMV collision event before the RF signal is locked to a specific card. If an 
EMV collision event is reported, the transaction will end and return a collision status code.  
The following table summarizes the tag-related information provided above. 
Feature  Tag  Length
Value  Notes 
Improved Collision 
Detection 
DF7F  
1 byte 
0 = default 
Improved Collision Detection Disabled. 
(i.e. one successful polling attempt is 
sufficient for signal lock) 
1 – 255 
Improved Collision Detection Enabled. 
Number of successful sequential polling 
attempts required for signal lock. 
In this new mode, the collision scenarios have been improved in the following manner: 
4. Increased sensitivity to improve collision detection generally. Previously, silent card and 
garbled receive were not identified in the same manner as a standard collision. 
5. If the transaction times out due to any of the collision methods described previously, the 
serial response will reflect this in its error state, with Status Code 0x08 (Time Out) and Error 
Code 0x21 (Collision Error). 

NEO Interface Developers Guide    
    304 
Example 
Assume a reader has enabled Improved Collision Detection with tag DF7F = 3. When two cards 
are placed within view of the reader, the following polling results are obtained. 
Polling Attempt 
1 
2 
3 
Polling Result 
OK 
OK  
L1C 
These results show that the first and second polling attempts are successful; but, the third 
polling attempt reports an EMV L1 collision (e.g. a slower or weaker signal). This collision 
detection would result in immediate termination of the transaction and the reader returning a 
collision status code. In contrast, if Standard Collision Detection mode was enabled instead, 
then the reader would accept the first attempt and the transaction would proceed with the first 
card detected. 
NEO Interface Developers Guide    
    305 
12.0 Kiosk III Boot Loader 
This section only applies to the Kiosk III reader, describes the designation of Kiosk III boot loader 
version from 'KIOSKIII-BL-V3.00.010' on. 
The Boot Loader controls initial operation after reset and also provides the means to program 
the Flash memory,  
Kiosk III has two types of products: Non-SREd and SRED. This boot loader can be used in both 
types of Kiosk III device. 
Description 
KIOSK III Boot Loader controls initial operation after reset and also provides the means to 
program the flash memory which operate over both RS232 and USB interface.  
KIOSK III uses a freescale K21 chip with 1M bytes embedded flash. The flash is divided into three 
zones: boot-loader, configuration and application. As for boot-loader zone, it is divided into 
three zones: BIM(boot image manager), boot-loader 1 and boot-loader 2. BIM cannot be updated, 
application can be updated by boot-loader, boot-loader1 can be updated by boot-loader2, and 
boot-loader2 can be updated by boot-loader1.  
Boot loader code is executed every time the reader is powered on or reset. 
If a valid user program is not found, the firmware downloader is invoked. If a valid user program 
is found, then the execution control is transferred to it after 3 seconds waiting, during this 
waiting time, user can invoke firmware downloader by sending boot load commands. 
The firmware data to be updated to device is protected by firmware RSA key, which is RSA key 
under RSA-2048. Firmware data is encrypted by firmware RSA private key, and must be 
authenticated by firmware RSA public key when the data are all loaded into device. The 
updated firmware data won't be valid before authentication succeed. The firmware RSA public 
key is injected into device during manufacturing. 
Boot Procedure 
After any reset or power up the Kiosk III boot loader is the first code executed. Boot loader then 
check whether the main application exists. If the application exists, boot loader waits 3 seconds 
for user to send boot load commands. If user send boot load commands inside the waiting time, 
the firmware downloader is invoked and a firmware image is to be downloaded. If user does not 
send boot loader commands inside the waiting time, then boot loader passes control to the main 
application. If the main application does not exist then boot loader invoke the firmware 
downloader and waits for a firmware image to be downloaded. 
After power up or reboot, boot-loader gets the control of the chip, and then does the following 
tasks in order. 
a)  BIM reads and compares boot-loader1 and boot-loader2 flag, selects the newer and passes 
the control to it. 
b)  The selected boot-loader check the reason of reboot. If the reboot reason is that the 
application did the reboot in favor of entering boot-loader mode, then go to step f). 
c)  Check whether an application exists in application zone or not. If not, go to step f). 
d)  Wait boot loader commands from host for 3 seconds, if received boot load command, 
invoke firmware downloader; if boot load command not received, go to e). 

NEO Interface Developers Guide    
    306 
e)  Transfer the control of the chip to application. 
f)   wait for boot-loader commands from host. 
Communication Protocol 
All Firmware downloader commands are following Protocol 2. . 
Firmware Downloader File Name Format 
Firmware download file name is formatted as: '[firmware version]_[clear/encrypted]_[port].txt' 
 [firmware version]:  
If the file is to update application, then [firmware version] is application main version. For 
example: 'NEO v1.00.012'. 
If the file is to update boot loader, then [firmware version] is boot loader version. for 
example: 'KIOSKIII-BL-V3.00.010'. 
If the file is to update both, then [firmware version] is showed as application main version 
and boot loader version linked with '&'. For example: ' NEO v1.00.012 & KIOSKIII-BL-
V3.00.010' 
 [clear/encrypted]:  
'ENC' means this download file is encrypted 
'CLR' means this download file is not encrypted  
If file name not marked with 'ENC' or 'CLR', that is encrypted file. 
If firmware key is valuable in device, please use encrypted download file. 
If firmware key is not valuable in device, please use clear download file. 
Note: Encrypted download files are generally used in firmware updating. Clear download 
files are only prepared for device recovery in special accidents. 
 [port]: 
If the file is for RS232 port, then [port] is 'RS232'. If the file is for USBHID port, then [port] 
is 'USBHID'. 
' NEO v1.00.016_CLR_RS232.txt' 
' NEO v1.00.016_CLR_USBHID.txt' 
' NEO v1.00.016_ENC_RS232.txt ' 
'NEO v1.00.016_ENC_ USBHID.txt' 
' KIOSKIII-BL-V3.00.014_CLR_RS232.txt' 
' KIOSKIII-BL-V3.00.014_CLR_USBHID.txt' 
' KIOSKIII-BL-V3.00.014_ENC_RS232.txt' 
'KIOSKIII-BL-V3.00.014_ENC_ USBHID.txt' 
' NEO v1.00.016 & KIOSKIII-BL-V3.00.014_CLR_RS232.txt' 
' NEO v1.00.016 & KIOSKIII-BL-V3.00.014_CLR_USBHID.txt' 
' NEO v1.00.016 & KIOSKIII-BL-V3.00.014_ENC_RS232.txt' 
' NEO v1.00.016 & KIOSKIII-BL-V3.00.014_ENC_USBHID.txt' 

NEO Interface Developers Guide    
    307 
Firmware Downloader Data Format 
Firmware download file is coded in ASCII text. Firmware download commands and expected 
responses are embed in text file one command per line. Host can retrieve each command in 
order and convert the command from ASCII code to hex data then send them to Kiosk III device, 
then compare the response from Kiosk III device with expected response next to the command in 
text file. 
Firmware download file data format is as: '[prefix][data]' 
Prefix 
Data Example 
Description 
'#' 
'XXXXX...' 
Data follow '#' is comments only. 
'<START:' 
None 
No data needed, just specify the 
starting of download. 
'TIMEOUT:' 
'1000' 
Recommended timeout between 
command and response, unit is ms. 
'SLEEP:' 
'2000' 
Host sleep, unit is ms. 
'SEND:' 
' 5669564F746563683200C7110000F23D' 
Data is the command to be sent to 
device. 
Note: Data format is different between 
RS232 port and USBHID port. 
'WAIT:' 
' 5669564F746563683200C7000000866E' 
Data is the response expected to the 
command above line. 
Note: Data format is different between 
RS232 port and USBHID port. 
'END>' 
None 
No data needed, just specify the ending 
of download. 
Examples: 
 NEO v1.00.012_RS232.txt 
    #RS232 version 
<START: 
TIMEOUT:1000 
SEND:5669564F746563683200C7410000ACF3 
SLEEP:2000 
SEND:5669564F746563683200C7110000F23D 
WAIT:5669564F746563683200C7000000866E 
SEND:5669564F746563683200C7120001014A91 
  WAIT:5669564F746563683200C7000000866E 
  SEND: 5669564F746563683200C71301008A8D92719D9D....... 
  WAIT:5669564F746563683200C7000000866E 
  ...... 
  ...... 
  ...... 
WAIT:5669564F746563683200C7000000866E 
SEND:5669564F746563683200C71500083230313530393234BE8B 
WAIT:5669564F746563683200C7000000866E 
SEND:5669564F746563683200C716000077AD 
WAIT:5669564F746563683200C7000000866E 
    END>     
 NEO v1.00.012_USBHID.txt 
#USBHID version 
<START: 

NEO Interface Developers Guide    
    308 
TIMEOUT:1000 
    SEND:015669564F746563683200C7410000ACF300000000000...... 
SLEEP:2000 
    SEND:015669564F746563683200C7110000F23D00000000000...... 
    WAIT:015669564F746563683200C7000000866E00000000000...... 
  ...... 
  ...... 
  ...... 
  SEND: 015669564F746563683200C71500083230313530393234BE8B000000000...... 
  WAIT:015669564F746563683200C7000000866E000000000000...... 
  SEND:015669564F746563683200C716000077AD000000000000...... 
  WAIT:015669564F746563683200C7000000866E000000000000...... 
  END> 
Download Firmware Steps 
When host wants to update firmware to Kiosk III device, please do as following steps: 
step 1:  Power on Kiosk III device. 
step 2:  Configure the communication ports and establish connection between host and Kiosk III  
 device. 
step 3:  Host selects the right firmware download file, parses data, then finishes the whole  
 commands. 
step 4:  End 
Firmware Downloader Commands 
Enter Boot Loader Process from Main Application (C7-41) 
Host must use this command to let reader reboot into boot loader mode if reader is running in 
main application. No response for this command and just reset reader immediately. 
If reader is running in boot loader, this command is not needed. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version
Command  Sub-Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC (MSB)
ViVOtech2\0 
C7h 
41h 
00h 
00h 
Get Boot Loader Version (C7-10) 
This command is used to retrieve the boot loader version. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 

NEO Interface Developers Guide    
    309 
Header Tag & 
Protocol Version
Command  Sub-Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC (MSB)
ViVOtech2\0 
C7h 
10h 
00h 
00h 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 
14 ...Byte 
13+n 
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  C7h 
See Status 
Code Table 00h  00h 
See Below 
Response data is the version of the boot loader.  
For example: ' KIOSKIII-BL-V1.00.001' 
Start Update Process (C7-11) 
This is the first command sent by host to open a firmware update process. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version
Command  Sub-Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC (MSB)
ViVOtech2\0 
C7h 
11h 
00h 
00h 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 
00h  00h     
Erase Boot/Application Space(C7-12) 
This command is used to erase corresponding zones in the flash. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0 
C7h 
12h 
00h 
01h 
See Below 
Data:  0x01  Erase application space 
          0x02  Erase boot loader space 
          0x03  Erase application and boot loader space 
When this command is received, reader will store a dirty flag in flash. 
Response Frame 

NEO Interface Developers Guide    
    310 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 00h  00h     
Send Encrypted Firmware Check Value(C7-13) 
This command is used to send firmware check-value to the device. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 - 
Byte 269  Byte 270
Byte 271
Header Tag & 
Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0 
C7h 
13h 
01h 
00h 
See Below 
In this command, data length must be 256 bytes. the 256 bytes data are encrypted firmware 
check value. It is a SHA256 digest of the plaint firmware encrypted by firmware RSA public key. 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 00h  00h     
Send Plaint Firmware Check Value(C7-23)This command is used to send firmware check-value to 
the device. 
This command is supported later than KIOSKIII-BL-V3.00.007. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 - 
Byte 269  Byte 270
Byte 271
Header Tag & 
Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0 
C7h 
23h 
00h 
20h 
See Below 
In this command, data length must be 32 bytes. the 32 bytes data are plaint firmware check 
value. It is a SHA256 digest of the plaint firmware. 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 
00h  00h     

NEO Interface Developers Guide    
    311 
Send Firmware Data (C7-14) 
This command is sent by host to program specified address in application zone or boot loader 
zone. One command can send 2048 bytes data block which is 2048 bytes plaint firmware data 
XOR with the 32 bytes firmware check value. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 - 
Byte 2065  Byte 2066
Byte 
2067 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC (LSB)
CRC 
(MSB) 
ViVOtech2\0 
C7h 
14h 
01h 
00h 
See Below 
In this command, data length must be 2052 bytes: 
The first 4 bytes are the address where the firmware data in this command should be put in 
reader flash. 
The other 2048 bytes are firmware plaint data XOR with the 32 bytes firmware check value and 
will be XOR with 32 bytes firmware check value by reader, then reader update the plaint 
firmware data into the right address got from the first 4 bytes. 
Item 
Start Address 
End Address 
Main Application 
0x00020000 
0x000B7FFF 
Boot Loader 1 
0x00008000 
0x00013FFF 
Boot Loader 2 
0x00014000 
0x0001FFFF 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 00h  00h     
End Update Process (C7-15) 
This is the last command sent by host to close a firmware update process. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13 
Byte 14 - 
Byte 21 
Byte 22  Byte 23 
Header Tag & 
Protocol 
Version 
Command
Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
C7h 
15h 
00h 
08h 
See Below 
In this command, data length must be 8 bytes: 'YYYYMMDD', exp: '20150605'. 
When this command is received, reader will do the following: 
1. Clear the dirty flag. 
2. If updated firmware is main application, reader then encrypts the firmware check value by 
the 32 bytes inherent key using AES256 algorithm(Inherent key is a 32-byte random number 
that protected by K21 tamper). The 32 bytes encrypted check value is stored in flash. If 
updated firmware is boot loader, the check value is ignored, will not be store in flash. 
3. If updated firmware is boot loader, reader stores boot loader sequence number and time 
stamp in flash. 

NEO Interface Developers Guide    
    312 
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 (LSB)
CRC (MSB)
ViVOtech2\0  C7h 
See Status 
Code Table 00h  00h     
Start Application (C7-16) 
Host can use this command to make boot loader reboot reader, and then enter main application. 
No response for this command and just reset reader immediately. 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol Version
Command  Sub-Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC (MSB)
ViVOtech2\0 
C7h 
16h 
00h 
00h 
Firmware Downloader Command Processing Flow 
Firmware downloader commands must be sent to device in sequence as below. 

NEO Interface Developers Guide    
    313 
Send Encrypted Firmware 
Check Value
(C7-13)
Send Plaint Firmware 
Check Value
(C7-23)
N
N
Y
Y
Enter Boot 
Loader Process
(C7-41)
Start Update 
Process
(C7-11)
Erase Boot/Application 
Space
(C7-12)
Firmware Key 
Valiable?
Send Firmware Data
(C7-14)
Firmware Data 
Finished?
End Update Process
(C7-15)
Start Application
(C7-16)  

NEO Interface Developers Guide    
    314 
13.0 UniPay 1.5 & UniPay III Commands 
Set PMC Status (F0-00) 
This command is used to set Power Management status. When Power Management is On, reader 
will go to LLS for power saving in Idle Time, and go to Power Off Mode when staying in LLS over 
Sleep Time. 
Reader does not go to LLS when Idle Time is set to 0, but stays on Run Mode. Also, the NFC 
controller does not go to Power-Down Mode when Idle Time is set to 0. 
Note: VP4880, VP4880E, and VP4880C do not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
F0h  00h      Command 
Data     
Command Data 
Data Field  Length (bytes)  Description/Example 
Idle Time  1  Idle Time (default: 05h) 
00h = Power Management turn off 
01h ~ FFh= on, reader would go to sleep in 01h ~ FFh 
second 
Sleep Time   1  
Sleep Time (default: 14h) 
00h = do not stay in Low Power Mode, go to Power Off 
Mode directly 
01h ~ FFh = stay in Low Power Mode and go to Power Off 
Mode in 01h ~ FFh second 
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  F0h 
See 
Status 
Code 
Table 
00h  00h       

NEO Interface Developers Guide    
    315 
Get PMC Status (F0-01) 
This command is used to Get Power Management status. 
Note: VP4880, VP4880E, and VP4880C do not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
F0h  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  F0h 
See 
Status 
Code 
Table 
    Response Data
Command Data 
Data Field  Length (bytes)  Description/Example 
Idle Time  1  Idle Time (default: 05h) 
00h = Power Management turn off 
01h ~ FFh= on, reader would go to sleep in 01h ~ FFh 
second 
Sleep Time   1  
Sleep Time (default: 14h) 
00h = do not stay in Low Power Mode, go to Power Off 
Mode directly 
01h ~ FFh = stay in Low Power Mode and go to Power Off 
Mode in 01h ~ FFh second 
Get Battery Level (F0-02) 
This command is used to battery level. 

NEO Interface Developers Guide    
    316 
Note: VP4880, VP4880E, and VP4880C do not support this command. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag 
& Protocol 
Version 
Command  Sub-Command
Data Length 
 (MSB) 
Data Length 
 (LSB) 
CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
F0h  02h  00h  00h     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14  Byte 15  Byte 16 
Header Tag 
& Protocol 
Version 
Command
Status Code
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC   
(MSB) 
CRC   
(LSB) 
ViVOtech2\
0  F0h  See Status 
Code Table
00h  01h  Level     
Level
content   
>= 0xD2
Battery power full   
<= 0xC0
Battery power low   
Shut Off the Power (F0-0F) 
This command is used to shut off the power. 
Note: VP4880, VP4880E, and VP4880C do not support this 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
Sub-
Command
Data 
Length 
(MSB)
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0
F0h  0Fh  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  F0h  See Status 
Code Table
00h  00h       
NEO Interface Developers Guide    
    317 

NEO Interface Developers Guide    
    318 
14.0 ViVOpay Vendi reader Commands 
Configure Buttons (F0-F4) 
This command configures the buttons on the ViVOpay Vendi reader. Both the SWIPE and DONE 
buttons can be independently disabled with this command. This command also sets the TAP 
disable time for when the SWIPE button is pressed. When the SWIPE button is enabled, the 
contactless reader is turned off for the programmed delay time so that a false read does not 
occur when the user wishes to swipe a dual contactless/MagStripe card.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 to 16 
Byte 17 
Byte 18 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0 
F0h 
F4h 
00h 
03h 
Done 
Swipe  
Delay 
If Done (Byte 14) is set to 01h, the Done switch is enabled. If Done (Byte 14) is set to 00h, the 
DONE switch is disabled. When the DONE button is pressed, the byte string: “02 02 5B 2F” is 
sent to the serial port (5B 2F are the 2 CRC bytes). Pressing the DONE button also displays 
“DONE” on the LCD display. 
If Swipe (Byte 15) is set to 01h, the Swipe Card switch is enabled. If Swipe (Byte 15) is set to 00h 
the Swipe Card switch is disabled.  The Swipe Card button sends the 4 bytes “02 03 4B 0E” to 
the serial port (4B 0E are the 2 CRC bytes). The Vendi can be configured to disable the 
contactless reader for a specified number of seconds. The only visual indication is that the LCD 
flashes when it writes “Please swipe card” on the LCD and then immediately rewrites the 
default message. 
The Delay is an unsigned delay value in seconds. This should probably not be set to values larger 
than 30 seconds (Byte 16). 
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  F0h 
See Status 
Code Table 
00h  00h     
The reader switches configuration only if the Response Frame contains an OK Status Code. No 
data is returned in the response. 
Get Button Configuration (F0-F5) 
This command reads the button configuration from the ViVOpay Vendi reader.  

NEO Interface Developers Guide    
    319 
Command Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)
CRC    (MSB)
ViVOtech2\0 
F0h 
F5h 
00h 
00h 
Response Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 to 16 
Byte 17 
Byte 18 
Header Tag 
& Protocol 
Version 
Command
Status 
Code 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC   
(MSB)
CRC   
(LSB) 
ViVOtech2\
0  F0h 
See Status 
Code Table
00h  03h 
Done 
Swipe  
Delay 
Swipe  
Delay 
Done is a Boolean value; if it is set to 0 the DONE switch is disabled. 
Swipe is a Boolean value; if it is set to 0 the SWIPE CARD switch is disabled. 
Delay is an unsigned 8 bit delay value in seconds. 
Disable Blue LED Sequence (F0-F6) 
This command stops the blue LEDs on the ViVOpay Vendi reader from flashing in left to right 
sequence and turns the LEDs off, and contactless function is disable at the same time.  
Command Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data Length 
(MSB) 
Data Length 
(LSB)  CRC (LSB)
CRC (MSB)
ViVOtech2\0 
F0h 
F6h 
00h 
00h 
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  F0h 
See Status 
Code Table 
00h  00h     

NEO Interface Developers Guide    
    320 
Enable Blue LED Sequence (F0-F7) 
Use this command to control the blue LED behavior on the Vendi reader. If you send this 
command with a Data Length 00h, the reader begins a continuous LED sequence and contactless 
function is enable. To customize the LED behavior, you can define a sequence of up to eight LED 
behaviors, but contactless function would keep disable if F0-F6 CMD has been issue. Custom LED 
behavior can also be set for a continuous cycle. To exit a continuous LED sequence, send a 
Disable Blue LED Sequence Command to the reader. 
Command Frame  
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13 
Byte 14-n 
Byte 
n+1 
Byte n+2
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data Length 
(LSB) 
Sequence 
Data  CRC 
(LSB) 
CRC 
(MSB) 
ViVOtech2\0
F0h  F7h  00h 
00h=continuous 
sequence 
04h to 
19h=custom 
4 to 25 
bytes, if 
present     
Sequence Data 
Byte 0 
Byte 1 
Byte 2-3 
Byte 4 
Byte 5-6 
Byte 7 – 24 
Cycles  LEDs  Duration  LED  Duration  Additional 
LED/Durations 
0 = Cycle 
once 
1 = Repeat 
LED State 
Bitmap 
Given in 
multiples of 10 
millisecond 
LED State 
Bitmap 
Given in 
multiples of 10 
millisecond 
You can define up to 8 
LED and duration 
pairs. 
LED State Bitmap 
Bit  Description 
8 
Left blue LED, 0 = off, 1 = on 
7 
Center Blue LED, 0 = off, 1 = on 
6 
Right Blue LED0 = off, 1 = on 
5 
Yellow LED, 0 = off, 1 = on 
4 
Reserved for future use 
3 
Reserved for future use 
2 
Reserved for future use 
1 
Reserved for future use 
Response Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 

NEO Interface Developers Guide    
    321 
Header Tag & 
Protocol 
Version 
Command  Status Code  Data Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (MSB)
CRC (LSB) 
ViVOtech2\0  F0h 
See Status 
Code Table 
00h  00h     
LCD Display Clear (F0-F9) 
This command clears the LCD display.  
Command Frame  
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB)
ViVOtech2\0 
F0h 
F9h 
00h 
00h 
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  F0h 
See Status 
Code Table 
00h  00h     
Note: Issuing this command disables LCD management by the reader. To resume LCD 
management by the reader, send a Set Configuration (‘04 00’) with a UI Scheme (tag ‘FF F8’) 
with value chosen at integration. However, firmware control of the LCD does not initiate 
until after a transaction event. Therefore any UI messaging linked to the initiation of a 
transaction (i.e. prompt for presentation or amount display) must be written to the LCD 
before issuing an Activate Transaction. At the same time, to read LCD source and get 
“Internal “ after issuing LCD Display Clear(F0-F9), this feature implemented on the Vendi 
follows. 
Turn Off Yellow LED (F0-FA) 
This command turns off the ViVOpay Vendi reader yellow LED. This LED is located below the 
three blue LEDs.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
F0h 
FAh 
00h 
00h 

NEO Interface Developers Guide    
    322 
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  F0h 
See Status Code 
Table 00h  00h     
Turn On Yellow LED (F0-FB) 
This command turns on the ViVOpay Vendi reader yellow LED. This LED is located below the 
three blue LEDs.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB) 
ViVOtech2\0 
F0h 
FBh 
00h 
00h 
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  F0h 
See Status Code  
Table 00h  00h     
Buzzer On/Off (F0-FE) 
This command causes the buzzer to beep once.  
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Header Tag & 
Protocol 
Version 
Command  Sub-
Command 
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
CRC (LSB)  CRC (MSB)
ViVOtech2\0 
F0h 
FEh 
00h 
00h 

NEO Interface Developers Guide    
    323 
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  F0h 
See Status 
Code Table 
00h  00h     
LCD Display Line 1 Message (F0-FC) 
Use this command to display text on the LCD display. On the Vendi reader the LCD is a 2-line 
character display. Valid messages for the first line of text are between 1 and 16 printable 
characters long. If the text message is greater than 16 bytes but not more than 32 bytes, byte 
17 and onward are displayed as a second row of text. Messages with more than 32 bytes are 
rejected with an unknown subcommand status code. All messages are left justified on the LCD 
display. 
Note: Issuing this command disables LCD management by the reader. To resume UI 
management by the reader, send a Set Configuration (‘04 00’) with a UI Scheme (tag ‘FF F8’) 
with value chosen at integration. However, firmware control of the LCD does not initiate 
until after a transaction event. Therefore any LCD messaging linked to the initiation of a 
transaction (i.e. prompt for presentation or amount display) must be written to the LCD 
before issuing an Activate Transaction. At the same time, to read LCD source and get 
“Internal “ after issuing LCD DisplayLine 1 Message (F0-FC), this feature implemented on the 
Vend, and Vendi follows. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14  - 
(Byte 14+n-1_ 
Byte 
(14+n) 
Byte 
(14+n +1) 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0 
F0h 
FCh 
00h 
Msg len 
LCD message 
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  F0h 
See Status 
Code Table 00h  00h     
LCD Display Line 2 Message (F0-FD) 
This command displays the command’s message on line 2 of the LCD display. On the Vendi 
reader the LCD is a 2-line character display. Valid messages are between 1 and 16 printable 

NEO Interface Developers Guide    
    324 
characters long. Any message that is longer than 16 bytes is rejected with an unknown 
subcommand status code. All messages are left justified on the LCD display. 
Note: Issuing this command disables LCD management by the reader. To resume LCD 
management by the reader, send a Set Configuration (‘04 00’) with a UI Scheme (tag ‘FF F8’) 
with value chosen at integration. However, firmware control of the LCD does not initiate 
until after a transaction event. Therefore any UI messaging linked to the initiation of a 
transaction (i.e. prompt for presentation or amount display) must be written to the LCD 
before issuing an Activate Transaction. At the same time, to read LCD source and get 
“Internal “ after issuing LCD Display Line 2 Message (F0-FD), this feature implemented on the 
Vend, and Vendi follows. 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14 +n 
Byte 
14+n+1 
Byte 
15+n=2 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC (LSB)
CRC (MSB)
ViVOtech2\0 
F0h 
FDh 
00h 
Msg len 
LCD message 
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  F0h 
See Status 
Code Table 00h  00h     

NEO Interface Developers Guide    
    325 
15.0 ApplePay VAS, SmartTap2.1 and Other Special 
Functions 
ApplePay VAS Functionality 
NEO firmware has built-in support for Apple Value Added Services Protocol (hereinafter called 
Apple VAS). For detailed information on how Apple VAS works, consult Apple's developer site at 
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/Pass
Kit_PG/index.html#//apple_ref/doc/uid/TP40012195-CH1-SW1. The following discussion 
assumes that you are familiar with the basic concepts behind ApplePay VAS. 
Overview 
In order to process an ApplePay VAS transaction, the terminal’s merchant records must first be 
set. This should be done using TLVs sent in the Set Merchant Record (04-11) command (discussed 
further below).  
A Merchant ID (of the form "Pass.com.apple.wallet.vas.prodtest") is generally associated with a 
hash value and (optionally) a URL. The hash is just a SHA-256 hash of the Merchant ID string 
itself. For example, the Merchant ID “pass.com.apple.wallet.vas.prodtest,” in hex, is 
represented as 70 61 73 73 2e 63 6f 6d 2e 61 70 70 6c 65 2e 77 61 6c 6c 65 74 2e 76 61 73 2e 70 
72 6f 64 74 65 73 74. (Spaces are inserted for clarity.) When a byte array containing those values 
is hashed, the resulting SHA-256 value is 3C C7 0E D8 9A 9D 43 54 BE 98 30 AB 58 D8 9C 6F E7 E6 
2B AC A9 39 D2 A6 85 1D FC 60 2E A7 98 F7.  
Limitations 
Note that a NEO device can store at most 6 Merchant Records for Apple VAS. This means the 
device can natively support up to 6 loyalty programs (per transaction) at a time. 
Note to Developers 
If you are sending commands via the “Send NEO Command” in the Universal Demo, or using 
device_sendDataCommand() in the SDK, only the command, subcommand, and data fields need 
to be sent. The header, data length, and CRC will be dynamically calculated and inserted into 
the command string, automatically, by the SDK. 
 ACT Parameters for ApplePay VAS 
The Activate Transaction (ACT) parameters required for the ApplePay VAS functionality are 
communicated via the ApplePay VAS Container TLV (tag FFEE06). The FFEE06 TLV must be 
provided in the ACT command (02-01 or 02-40) if an ApplePay VAS transaction is desired. 

NEO Interface Developers Guide    
    326 
   Tag 9F26 ApplePay Terminal Capabilities Information   
Byte 1: Format 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Description 
x 
x 
x 
x 
x 
x 
x 
x 
RFU, Bits b8-b1 shall be set to 0  
Byte 2: Terminal Type 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Description 
0 
- 
- 
- 
- 
- 
- 
- 
VAS Supported 
1 
- 
- 
- 
- 
- 
- 
- 
VAS Not Supported 
- 
0 
- 
- 
- 
- 
- 
- 
Touch ID Required 
- 
1 
- 
- 
- 
- 
- 
- 
Touch ID not Required 
- 
- 
- 
- 
0 
0 
0 
0 
Payment Terminal 
- 
- 
- 
- 
0 
0 
0 
1 
Transit Terminal 
- 
- 
- 
- 
0 
0 
1 
0 
Access Terminal 
- 
- 
- 
- 
0 
0 
1 
1 
Wireless handoff Terminal 
- 
- 
- 
- 
0 
1 
0 
0 
App Handoff Terminal 
- 
- 
- 
- 
1 
1 
1 
1 
Other Terminal 
- 
- 
- 
- 
- 
- 
- 
- 
All other values are RFU 
TLV 
Name 
Presence 
Description 
9F26 
ApplePay Terminal 
Capabilities Information (see 
table below for more 
information) 
Rqrd 
Determines how the reader handles 
the VAS and/or Payment flow.  
This data comprises 4 Bytes. 
Byte 1: RFU 
Byte 2: Terminal Type 
Byte 3: RFU 
Byte 4: Terminal Mode 
See table further below. 
9F22 
ApplePay Terminal 
Application Version Number 
Rqrd 
Hard-defined as 01.00 for now. 
9F2B 
ApplePay VAS Filter 
Opt 
If not provided filtering will not be 
performed by the mobile. 
DF01 
ApplePay VAS Protocol 
87654321 
-------0 URL VAS 
Protocol 
-------1 FULL VAS 
Protocol 
------0- No VAS Beeps 
------1- VAS Beeps 
-----0-- EMEA Comm 
Error 
-----1-- Silent Comm 
Error 
Opt 
If not provided the following settings 
are used by default: 
 Full VAS protocol 
 No beeps for VAS 
 EMEA Communications Error 
Handling  
If provided the bits define the 
settings. 

NEO Interface Developers Guide    
    327 
Byte 3: RFU 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Description 
x 
x 
x 
x 
x 
x 
x 
x 
RFU, Bits b8-b1 shall be set to 0  
Byte 4: Terminal Mode 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Description 
x 
x 
x 
x 
x 
x 
x 
x 
Terninal in VAS App OR Payment Mode 
Terminal in VAS App AND Payment Mode 
Terminal in VAS App Only Mode 
Terminal in Payment Mode Only 
Bits b8-b3 shall be set to 0 
All other values are RFU 
          Byte 4: Terminal Mode polling Loop 
ApplePay Terminal 
Capabilities Information
Card Filter Settings 
00 
PICC_POLL_TYPE_APPLE_VAS_OR_PAY, 
PICC_POLL_TYPE_A and 
PICC_POLL_TYPE_B 
01 
PICC_POLL_TYPE_APPLE_VAS_AND_PAY, 
PICC_POLL_TYPE_A and 
PICC_POLL_TYPE_B 
10 
PICC_POLL_TYPE_APPLE_VAS_ONLY, 
PICC_POLL_TYPE_A and 
PICC_POLL_TYPE_B 
11 
PICC_POLL_TYPE_APPLE_PAY_ONLY, 
PICC_POLL_TYPE_A and 
PICC_POLL_TYPE_B 
EXAMPLES (Activate Transaction Command Examples for ApplePay VAS) 
Command sent using the SDK (VAS-only transaction): 
dtVendi.ctls_startTransaction(10,0,0,60,Common.getByteArray("FFEE06189F22020100
9F2604000000039F2B050100000000DF010101")); 
Using firmware commands: 
Note: Some firmware examples use command 02-01, but 02-40 (encryption-enabled Activate 
Transaction) may also be used. 
VAS Only Activate Transaction (02-40) 
56 69 56 4F 74 65 63 68 32 00 02 40 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 
22 02 01 00 9F 26 04 00 00 00 02 9F 2B 05 01 00 00 00 00 DF 01 01 01 33 FE 
Command Sent Breakdown: 
 56 69 56 4F 74 65 63 68 32 00 – ViVOTech2 header 
 02 40 – Start transaction command 
 00 29 – Data Length 
 30 – Time out 
 9F 02 06 00 00 00 00 00 01 – Transaction amount 
NEO Interface Developers Guide    
    328 
 9C 01 00 – Transaction Type 
 FF EE 06 – ApplePay VAS Collective 
 18 - length of ApplePay VAS collective 
 9F 22 02 01 00 - ApplePay Terminal AVN 
 9F 26 04 00 00 00 02 - ApplePay terminal Capabilities - 02 = VAS only 
 9F 2B 05 01 00 00 00 00 - AppplePay VAS Filter (optional) 
 DF 01 01 01 – 
 33 FE – CRC-16 
Vendi Response: 
56 69 56 4F 74 65 63 68 32 00 02 57 00 FF D1 FF EE 12 0A 62 99 49 01 2C 00 04 
60 01 AC FF EE 06 82 00 D9 9A 03 14 08 15 9F 21 03 17 32 53 9F 25 20 3C C7 0E 
D8 9A 9D 43 54 BE 98 30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 85 1D FC 60 2E 
A7 98 F7 9F 2A 00 9F 27 3E 93 1C 1A 60 4A 46 09 9E 21 EC 88 6D EF CC 8C B8 8B 
CA 03 CC 4B C6 62 0C C1 8F 8C 10 5A 7A F1 4F 9B 3C D9 E3 36 4E 9C 8C BF E0 90 
34 10 B1 58 3C 3D 63 AC 9F CC 48 9C A8 76 AE 8C B3 E5 62 9F 25 20 3C C7 0E D8 
9A 9D 43 54 BE 98 30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 85 1D FC 60 2E A7 
98 F7 9F 2A 00 9F 27 3E 93 1C 1A 60 4A 46 09 9E 21 EC 88 6D EF CC 8C B8 8B CA 
03 CC 4B C6 62 0C C1 8F 8C 10 5A 7A F1 4F 9B 3C D9 E3 36 4E 9C 8C BF E0 90 34 
10 B1 58 3C 3D 63 AC 9F CC 48 9C A8 76 AE 8C B3 E5 62 9F 39 01 07 FF EE 01 04 
DF 30 01 00 DF EE 26 01 D1 ED CA 
Vendi Response Breakdown: 
 56 69 56 4F 74 65 63 68 32 00 – ViVOTech2 header 
 02 – Act Command returned 
 57 – Status. 57 = no payment occurred 
 00 FF – Data length 
 D1 – Attribution byte  
 FF EE 12 0A 62 99 49 01 2C 00 04 60 01 12 - KSN tag (FFEE12), length 
0x0A, KSN bytes. Transaction is encrypted. 
 FF EE 06 - Apple Pay Vas container 
 00 82 - Data length 
 D9 9A 03 14 08 15 9F 21 03 17 32 53 9F 25 20 3C C7 0E D8 9A 9D 43 54 BE 
98 30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 85 1D FC 60 2E A7 98 F7 9F 
2A 00 9F 27 3E 93 1C 1A 60 4A 46 09 9E 21 EC 88 6D EF CC 8C B8 8B CA 03 
CC 4B C6 62 0C C1 8F 8C 10 5A 7A F1 4F 9B 3C D9 E3 36 4E 9C 8C BF E0 90 
34 10 B1 58 3C 3D 63 AC 9F CC 48 9C A8 76 AE 8C B3 E5 62 9F 25 20 3C C7 
0E D8 9A 9D 43 54 BE 98 30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 85 1D 
FC 60 2E A7 98 F7 9F 2A 00 9F 27 3E 93 1C 1A 60 4A 46 09 9E 21 EC 88 6D 
EF CC 8C B8 8B CA 03 CC 4B C6 62 0C C1 8F 8C 10 5A 7A F1 4F 9B 3C D9 E3 
36 4E 9C 8C BF E0 90 34 10 B1 58 3C 3D 63 AC 9F CC 48 9C A8 76 AE 8C B3 
E5 62 9F 39 01 07 FF EE 01 04 DF 30 01 00 DF EE 26 01 D1 – 
 ED CA – CRC 
NEO Interface Developers Guide    
    329 
VAS Or Pay Activate Transaction (02-01) 
56 69 56 4F 74 65 63 68 32 00 02 01 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 
22 02 01 00 9F 26 04 00 00 00 00 9F 2B 05 01 00 00 00 00 DF 01 01 01 09 CA 
VAS And Pay Activate Transaction (02-01) 
56 69 56 4F 74 65 63 68 32 00 02 01 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 
22 02 01 00 9F 26 04 00 00 00 01 9F 2B 05 01 00 00 00 00 DF 01 01 01 6A 8F 
VAS Only Activate Transaction (02-01) 
56 69 56 4F 74 65 63 68 32 00 02 01 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 
22 02 01 00 9F 26 04 00 00 00 02 9F 2B 05 01 00 00 00 00 DF 01 01 01 CF 40 
Pay Only Activate Transaction (02-01) 
56 69 56 4F 74 65 63 68 32 00 02 01 00 29 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 06 18 9F 
22 02 01 00 9F 26 04 00 00 00 03 9F 2B 05 01 00 00 00 00 DF 01 01 01 AC 05 
Transaction Responses 
 Both the ApplePay VAS response and the normal payment transaction response will be 
provided in a single returned data record. Whether returned in response to a blocking ACT 
or a non-blocking ACT, it will be the same. As described above, there are ApplePay VAS 
scenarios where either the VAS transaction or the payment transaction may not be 
performed. In those scenarios you will only see the results of the transaction that was 
actually performed. Only when both VAS and payment transactions are performed will you 
see both transaction responses in the same returned data record. 
The Payment transaction response will not change. The VAS transaction response will be 
embedded in the proprietary ApplePay VAS Container TLV (0xFFEE06). Each Merchant ID and 
its associated data will be shown in sequence. 
Transaction Response for Combined Payment and VAS 
56 69 56 4F 74 65 63 68 32 00 – Serial Command header 
02 – Command 
23 – Status – for the payment transaction only. In this example it indicates a Request for 
Online Authorization 
nn nn – length of entire response (VAS and Pay) 
xx - Start of payment response. Payment response format has not changed.  
xx – End of payment response. 
FFEE06 nn - ApplePay VAS Container  
  9A nn – Date 
  9F21 nn - Time 
  9F25 nn – Merchant ID a 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data 
  9F25 nn – Merchant ID b 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data    
  .  .  . 
  9F25 nn – Merchant ID n 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data 
xx xx – CRC for entire response 
NEO Interface Developers Guide    
    330 
Transaction Response for VAS Only (No Payment) 
56 69 56 4F 74 65 63 68 32 00 – Serial Command header 
02 – Command 
57 – Status for the payment transaction. 0x57 indicates there was no payment transaction.  
nn nn – length of entire response (VAS) 
FFEE06 nn - ApplePay VAS ContainerViVOpay 
  9A nn – Date 
  9F21 nn - Time 
  9F25 nn – Merchant ID a 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data 
  9F25 nn – Merchant ID b 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data    
  .  .  . 
  9F25 nn – Merchant ID n 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data 
xx xx – CRC for entire response 
Transaction Response for VAS VAS Failure in Select 
56 69 56 4F 74 65 63 68 32 00 – Serial Command header 
02 – Command 
57 – Status for the payment transaction. 0x57 indicates there was no payment transaction.  
nn nn – length of entire response (VAS) 
FFEE06 nn - ApplePay VAS ContainerViVOpay 
  9A nn – Date 
  9F21 nn - Time 
  DF02 nn – ApplePay VAS Failure Report 
xx xx – CRC for entire response 
ApplePay VAS Failure Report 
DF0204206A8002 
DF02 - ApplePay VAS Failure Report Tag 
04 – Length of ApplePay VAS Failure Report 
20 = Error Code, See IDG for Error Code Encoding 
6A80 – SW1-SW2 Status from last APDU received 
02 – RF State failure occurred in. 02 = Select 
Transaction Response for VAS Failure in Get Data 
56 69 56 4F 74 65 63 68 32 00 – Serial Command header 
02 – Command 
57 – Status for the payment transaction. 0x57 indicates there was no payment transaction.  
nn nn – length of entire response (VAS) 
FFEE06 nn - ApplePay VAS ContainerViVOpay 
  9A nn – Date 
  9F21 nn - Time 
  9F25 nn – Merchant ID a 
DF02 nn – ApplePay VAS Failure Report for Merchant ID a 
  9F25 nn – Merchant ID b 
  9F2A nn – Mobile Token 
  9F27 nn – VAS Data    
  .  .  . 
  9F25 nn – Merchant ID n 
  9F2A nn – Mobile Token 

NEO Interface Developers Guide    
    331 
  9F27 nn – VAS Data 
xx xx – CRC for entire response 
Set Merchant Record (04-11) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14 …    
Byte 14+n-1  Byte 14+n
Byte15+n
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
04  11h  63h 
See Data 
Format below 
Data Field for Command Frame 
Data Field  Length 
(bytes)
Description 
Merchant Record Index 
1 
The valid value is 1--6. 
ID Present 
1 
1: The Merchant ID is valid, 
0: The Merchant ID is not valid. 
Merchant ID 
32 
The tag is 9F25. 
Length of Merchant URL 
1 
Can be zero, if no URL is used. 
Merchant URL (optional) 
64 
The tag is 9F29. 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status  Data length 
(MSB) 
Data length 
(LSB)  CRC(MSB)
CRC(LSB)
ViVOtech2\0  04h 
See Status Code 
Table 
00  00     
EXAMPLE 
Set Merchant Record command using the SDK: 
idtVendi.device_sendDataCommand("041101013CC70ED89A9D4354BE9830AB58D89C6FE7E62B
ACA939D2A6851DFC602EA798F700000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000", 
false,resDataStruct); 
Set Merchant Record command via raw firmware commands: 
56 69 56 4F 74 65 63 68 32 00 04 11 00 63 01 01 3C C7 0E D8 9A 9D 43 54 BE 98 
30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 85 1D FC 60 2E A7 98 F7 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 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 25 B1 
Breakdown of command sent: 
 56 69 56 4F 74 65 63 68 32 00 – ViVOtech2\0 header 

NEO Interface Developers Guide    
    332 
 04 – Set Merchant Command 
 11 – Set Merchant Sub-Command 
 00 63 – Data Length 
 01 - Merchant Index number 
 01 - Merchant ID is enabled 
 3C C7 0E D8 9A 9D 43 54 BE 98 30 AB 58 D8 9C 6F E7 E6 2B AC A9 39 D2 A6 
85 1D FC 60 2E A7 98 F7 - Merchant ID (this is the SHA-256 hash of the 
IDTech Pass having the name "pass.com.apple.wallet.vas.prodtest") 
 00 - Length of VAS URL. In this example, none was provided. 
 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 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
– URL if provided 
 25 B1 – CRC-16 
Vendi Response: 
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Breakdown of Vendi Response: 
56 69 56 4F 74 65 63 68 32 00 – ViVOtech2\0 Header 
04 – Command 
00 – Status (see table “Status Codes For Protocol 2“) 
00 00 – data 
AE 16 - CRC 
Get Merchant Record (03-11) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14  Byte 15
Byte16
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB)
ViVOtech2\0
03  11h  01 
Merchant Record 
Index(1-6)     
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14 …    
Byte 14+n-1  Byte 14+n
Byte15+n
Header Tag 
& Protocol 
Version 
Command
Status 
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
03 
See Status 
Code 
Table 
63h  See Data 
Format below     
Data Field for Response Frame 

NEO Interface Developers Guide    
    333 
Data Field  Length 
(bytes)
Description 
Merchant Record Index 
1 
The valid value is 1--6. 
ID Present 
1 
1: The Merchant ID is valid, 
0: The Merchant ID is not valid. 
Merchant ID 
32 
The tag is 9F25. 
Length of Merchant URL 
1 
Merchant URL 
64 
The tag is 9F29. 
Peer To Peer Functionality 
The Peer To Peer functionality can only be used in Pass-Through mode. It allows the sending and 
receiving of NDEF messages to/from a mobile device. See https://learn.adafruit.com/adafruit-
pn532-rfid-nfc/ndef for more information about NDEF payload composition. 
Peer To Peer Send A Message (C7-9A) 
Command Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13
Byte 14 …    
Byte 14+n-1  Byte 14+n
Byte15+n
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
C7h  9Ah  Variable 
See Data 
Format below 
Peer To Peer Send A Message Data Field for Command Frame 
Data Field  Length (bytes)  Description 
Timeout 
1 
Time in Seconds.  
Message 
Variable 
NDEF message to be sent to the phone 
Response Frame 
Byte 0-9  Byte 10  Byte 11  Byte 12  Byte 13  Byte 14  Byte 15 
Header Tag & 
Protocol 
Version 
Command  Status  Data length 
(MSB) 
Data length 
(LSB)  CRC(MSB)
CRC(LSB)
ViVOtech2\0  C7h 
See Status Code 
Table 
00  00     
Peer To Peer Receive A Message (C7-9B) 
Command Frame 

NEO Interface Developers Guide    
    334 
Byte 0-9  Byte 10  Byte 11  Byte 12
Byte 13
Byte 14  Byte 15  Byte16 
Header Tag 
& Protocol 
Version 
Command
Sub- 
Command
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
C7  9Bh  00h  01h 
Timeout 
(1 byte, time in 
seconds) 
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 
Data 
length 
(MSB) 
Data 
length 
(LSB) 
Data  CRC 
(MSB) 
CRC 
(LSB) 
ViVOtech2\0
C7h  See Status 
Code Table
Variable 
See Data 
description 
below 
If Status code is OK, Data Field for Response Frame is a message received from the phone. 
Otherwise, Data Length is zero and no data for Response Frame. 
Messages conform to NDEF (https://learn.adafruit.com/adafruit-pn532-rfid-nfc/ndef). 
 Asynchronous Media Tracking (Only for Kiosk III) 
 This feature is to generate notifiation events to indicate that a card has arrived in or departed 
form the RF field. Reader has the ability to send out Asynchronous Packet of card arrival or card 
removal to the POS in real-time. 
The Asynchronous Packet for Meida Tracking is :  
07 50 [Payload] [CRC] 
   07 - Async MTAS Packet 
   50 - Status OK 
   [Payload] - Tag DFEF36 (3 byte Tag ID, 1 byte length, 4 data bytes) 
   [CRC] - 2 byte CRC 
This feature can be enabled by setting the bits appropriately in the first byte of MTAS. It is done 
via the Set Configuration Command (04-00), This is the only way to set this tag. 
If CL media arrival reporting is enabled, reader will send out a Asynchronous Packet to the POS 
to tell card arriving. This feature is supported in both Native mode and Pass Through mode. 
For example: 07 50 DF EF 36 04 03 0B 00 00 CC 8F 
If CL media removal reporting is enabled, reader will send out a Asynchronous Packet to the POS 
to tell card removal. This feature is only supported in Native mode. 
For example: 07 50 DF EF 36 04 03 11 00 00 48 2D 
Send Media Status Tracking Asynchronously in Pass Through Mode 
Card removal reporting  is not supported in Pass Through mode,  
If CL media arrival reporting bit is set, reader will send out a Asynchronous Packet when reader 
detects a card during Poll for Token command (standard or enhanced).  

NEO Interface Developers Guide    
    335 
Send Media Status Tracking Asynchronously in Native Mode 
If any the control bits for this TLV are set, then this TLV will be sent back to the POS 
asynchronously during a transaction. 
If more than one control bit were set, then its probable that the TLV will be returned multiple 
times during a single transaction. For exmaple, the reader might return the TLV when a 
contactless card is detected, and then later return the TLV again when the remval of the 
contactless card takes place. 
Send Media Status Tracking Asynchronously in Auto Switch 
If Auto Switch is enabled and reader goes into Auto Switch mode, reader will only report card 
arrival, and when Auto Switch happen, reader gets into Pass Through mode, so card removal 
won't be reproted. 
Determine Card Presence (Only for Kiosk III) 
This feature is only supported in Native Mode.  
This feature is not designed to collect any card data at all, and won't detect card is in the field 
between transactions. It is simply detect the status of the RF. 
This feature is implemented by Detect Card Presence Command 
Detect Card Presence Command (02-05) 
Command Frame 
Byte 0-9 
Byte 10 
Byte 11 
Byte 12 
Byte 13 
Byte 14 
Byte 15 
Byte 16 
Header Tag 
& Protocol 
Version 
Command
Sub-
Command
Data 
Length 
(MSB) 
Data 
Length 
(LSB) 
Data  CRC     
(LSB) 
CRC    
(MSB) 
ViVOtech2\0 
02h 
05h 
00 
01 
Timeout 
Data Item  Length 
(bytes)  Description 
Timeout 
1 
Time in seconds that the reader waits for a card to be presented 
before timing out and returning an Error response.  The reader will 
continue to poll for this amount of time if no card is found. Format: 
Binary 

NEO Interface Developers Guide    
    336 
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
02h 
See Status 
Code Table
If a card presence is detected by this command, the "Data" field will be the MTAS data(Tag 
DFEF36 (3 byte Tag ID, 1 byte length, 4 data bytes)) 
If no card presence is detect by this command, then reader will response timeout. 
MSR Equivalent Data Function 
Proprietary tags DFEF4B, DFEF4C, and DFEF4D provide a way for track data (and optionally, PAN 
data) to be supplied in conjunction with an EMV transaction, with or without sentinels, in a form 
similar to the form track data would take in a conventional MSR transaction. 
DFEF4C and DFEF4D TLV will only appear in the response of 02-40/03-40 commands for 
successful transaction. 
Tag DFEF4B 
Tag DFEF4B is a configuration tag. Use it to tell your reader which tracks you want to receive in 
tag DFEF4D, whether or not to use sentinels, and whether or not to include the PAN as a 
separate string.  
Byte 1: 
8 
7 
6 
5 
4 
3 
2 
1 
NOTES 
- 
- 
- 
- 
- 
- 
- 
X 
0 – Disable Track 3 Sentinels 
1 – Enable Track 3 Sentinels 
- 
- 
- 
- 
- 
- 
X 
- 
0 – Disable Track 2 Sentinels 
1 – Enable Track 2 Sentinels 
- 
- 
- 
- 
- 
X 
- 
- 
0 – Disable Track 1 Sentinels 
1 – Enable Track 1 Sentinels 
- 
- 
- 
- 
X 
- 
- 
- 
0 – Disable Track 3 
1 – Enable Track 3 
- 
- 
- 
X 
- 
- 
- 
- 
0 – Disable Track 2 
1 – Enable Track 2 
- 
- 
X 
- 
- 
- 
- 
- 
0 – Disable Track 1 
1 – Enable Track 1 

NEO Interface Developers Guide    
    337 
- 
X 
- 
- 
- 
- 
- 
- 
0 – Disable PAN 
1 – Enable PAN 
X 
- 
- 
- 
- 
- 
- 
- 
0 – All Data Elements Found 
1 – Only First Element Found
Byte 2: RFU 
Byte 3: RFU 
You can use the top bit of the first byte of DFEF4B to control search behavior: If the bit is ON, 
all data elements requested will be provided (if they exist). If the bit is OFF, only the first 
element found will be retrieved and placed in DFEF4D. 
If you request multiple data items, they will be concatenated. To know the original lengths of 
the items, you must retrieve and inspect Tag DFEF4C (see below). 
To use tag DFEF4B, add it (as a TLV) to your terminal configuration settings.Use Set 
Configuration (04-00) command to send the settings to your device as you normally would.  
NOTE: If this tag does not exist in Terminal Settings, tags DFEF4C and DFEF4D will not be 
generated.  
The default value of this tag is 0x12 (Track 2 enabled, with Sentinels). 
Data Search Order 
When "Only First Element Found" (bit 8 = 1) is set in DFEF4B, Tag DFEF4D will be populated 
with a single data element according to the following search order 
Track 2, Tag 57 (converted to alpha numeric format) 
Track 2, Tag 9F6B 
Track 2, Tag 5F22 
Track 1, Tag 56 
Track 1, Tag 5F21 
PAN, Tag 5A (converted to alpha numeric format) 
Track 3, Tag 58 
Track 3, Tag 5F23  
Regardless of the original format, the data will be placed in the DFEF4D tag in alpha numeric 
format, such that after decryption (and with padding removed) the data will look similar to: 
3b343736313733393030313031303031303d31353132323031313134333837383038393f 
Which means that after rendering it as ASCII, it would look like: 
;4761739001010010=15122011143878089? 
When "All Data Elements Found" (BIT 8), is specified in DFEF4B, Tag DFEF4D will be populated 
with a single instance of each requested data element, according to the following order: 
Track 1 requested (bit 6 = 1). Includes first instance of: 
Tag 56 = Track 1 Equivalent  
Tag 5F21 = Track 1, identical to the data coded 
Track 2 requested (bit 5 = 1). Includes first instance of: 
NEO Interface Developers Guide    
    338 
Tag 57 = Track 2 Equivalent (converted to alpha numeric format) 
Tag 9F6B = Track 2 Data 
Tag 5F22 = Track 2, identical to the data coded 
Track 3 requested (bit 4 = 1). Includes first instance of: 
Tag 58 = Track 3 Equivalent 
Tag 5F23 = Track 3, identical to the data coded 
PAN requested (bit 7 = 1). Includes: 
Tag 5A = PAN (converted to alpha numeric format) 
Sentinels 
For any found data element of Track1, Track2 or Track3, sentinels will be included or not 
included according to the preferences set in bits 1, 2 and 3. 
Compressed Numeric Elements 
For any data element captured as compressed numeric, the following rules shall apply: 
Padding (0xf) shall not be included 
Center separators: 0xd shall be converted to 0x3d ("=") 
Data shall be encoded as ASCII representation of binary data  
example 0x123f = 0x313233 = "123" (ignore padding) 
example 0x1234 = 0x31323334 = "1234"  
example 0x123d456f = 0x3132333d343536 = "123=456"  
Tag DFEF4C 
If tag DFEF4B is set, tags DFEF4C will appear in transaction output. 
This tag's 6-byte value provides the native lengths of tracks 1, 2, and 3, and the PAN (if 
applicable). Two bytes are reserved for future use. 
<Track 1 Length><Track 2 Length><Track 3 length><PAN length><RFU><RFU> 
A length of 0 indicates track disabled in DFEF4B or data not available. This tag also serves as an 
indicator of which data element was found first, when "Only First Element Found" is enabled in 
DFEF4B. 
Tag DFEF4D 
If tag DFEF4B is set, tags DFEF4D will appear in transaction output. 
This variable-length tag contains track and/or PAN data, encrypted. The exact contents will 
vary depending on values supplied previously in DFEF4B (see above).  
The track data will present track data if it is a MSD transaction, present track Equivalent data if 
it is a EMV transaction. 
When TDES or AES encryption have been used in conjunction with traditional DUKPT, decrypt 
the data normally, using the 10-byte KSN found in tag DFEE12. 

NEO Interface Developers Guide    
    339 
SmartTap2.1 Function 
ACT parameters for Smart Tap2.1 
The ACT parameters required for the Smart Tap2.1 function are embedded in the Smart 
Tap2.1 Container (FFEE08). The FFEE08 TLV is optional, but must be provided in the ACT if 
a Smart Tap2.1 transaction is desired. 
Terminal Mode: 
b8 
b7 
b6 
b5 
b4 
b3 
b2 
b1 
Description 
0 
0 
0 
0 
RFU 
x 
x 
x 
x 
0000: Get VAS OR Payment Mode 
0001: Get VAS AND Payment Mode 
0010: Get VAS Only Mode 
0011: Payment Mode Only 
0101: Push VAS AND Payment Mode 
0110: Push VAS Only Mode 
1000: Secure Get VAS OR Payment Mode 
1001: Secure Get VAS AND Payment Mode 
1010: Secure Get VAS Only Mode 
Activate Command Examples for Smart Tap2.1: 
a) Get VAS or Pay Activate Transaction 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 00 
00 FD A3 
Where: 00 is the Terminal Mode, and 00 is the service request type. 
b) Get VAS AND Pay Activate Transaction 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 01 
00 CE 92 
Where: 01 is the Terminal Mode, and 00 is the service request type. 
c) Get VAS Only Activate Transaction: 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 02 
00 9B C1 
Where: 02 is the Terminal Mode, and 00 is the service request type. 
d) Pay Only Activate Transaction: 
56 69 56 4F 74 65 63 68 32 00 02 01 00 12 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 01 03 
74 FA 
Offset 
Name 
Presence 
Description 
0 
Terminal Mode 
M 
Determines how the reader handles 
the VAS and/or Payment flow. See 
below table for Terminal Mode. 
1…. 
Data 
O 
NEO Interface Developers Guide    
    340 
Where: 03 is the Terminal Mode. 
e) Push VAS AND Pay Activate Transaction 
56 69 56 4F 74 65 63 68 32 00 02 01 00 xx 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 xx 05 
xx xx xx xx xx xx 
Where: 05 is the Terminal Mode, and xx xx xx xx is the new_service_record and service_status. 
f) Push VAS Only Activate Transaction: 
56 69 56 4F 74 65 63 68 32 00 02 01 00 xx 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 xx 06 
xx xx xx xx xx xx 
Where: 06 is the Terminal Mode, and xx xx xx xx is the new_service_record and service_status 
g) Secure Get VAS or Pay Activate Transaction 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 08 
00 74 0A 
Where: 08 is the Terminal Mode, and 00 is the service request type. 
h) Secure Get VAS AND Pay Activate Transaction 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 09 
00 47 3B 
Where: 09 is the Terminal Mode, and 00 is the service request type. 
i) Secure Get VAS Only Activate Transaction: 
56 69 56 4F 74 65 63 68 32 00 02 01 00 13 30 9F 02 06 00 00 00 00 00 01 9C 01 00 FF EE 08 02 0A 
00 12 68 
Where: 0A is the Terminal Mode, and 00 is the service request type. 
Transaction Responses 
Both the Smart Tap2.1 VAS response and the normal payment transaction response will be 
provided in a single returned data record. The VAS transaction response will be embedded 
in the proprietary Smart Tap2.1 VAS Container TLV (0xFFEE08). 
Transaction Response for Combined Payment and VAS 
56 69 56 4F 74 65 63 68 32 00 02 Status length-of-entire-response (VAS and Pay) Payment-
response Smart-Tap2.1-VAS response (Use container FFEE08) CRC 
VAS container FFEE08: 
   xx xx: SW1, SW2 
   Data: Optional, NDEF record. 
Transaction Response for VAS Only (No Payment) 
56 69 56 4F 74 65 63 68 32 00 02 57 00 6A FF EE 08 82 00 64 90 00 94 03 2F 61 73 76 94 01 06 
69 04 02 71 79 79 71 54 03 1F 63 75 73 94 03 06 63 69 64 04 12 34 56 78 90 19 01 03 03 54 63 70 
6C 00 65 6E 54 03 02 63 75 74 04 7B 54 03 27 61 73 76 94 01 05 69 05 01 F7 97 98 54 02 19 6C 79 
94 03 09 6F 69 64 04 72 51 FF AD 80 8D 91 BA 54 01 06 6E 9F 3D 
56 69 56 4F 74 65 63 68 32 00 – Serial Command header 
02 – Command 
57 – Status for the payment transaction. 0x57 indicates there was no payment transaction.  
00 6A – length of entire response (VAS) 
FFEE08 - VAS Container 
  00 64 – Length of VAS data 
  90 00 – SW1, SW2 
  94 ….6E – NDEF record 

NEO Interface Developers Guide    
    341 
9F 3D – CRC for entire response 
SmartTap configuration 
  There are several configurations for device. Below is the list together with the 
corresponding tags. 
a) Merchant ID: 9F16 
b) Store location ID: DFEF66 
c) Terminal ID: 9F1C 
d) Merchant Name: 9F4E 
e) Merchant Category: 9F15 
f) POS Capabilities Bitmaps: DFEF67 This value defines the capabilities of the terminal 
g) Retry Times: DFEF68 This value defines the retry times if errors occurred. 
h) Select OSE support: DFEF69 0x01 means support Select OSE APDU, while 0x00 means NOT. 
i) Skip Second Select support: DFEF6A 0x01 means skip second select, while 0x00 means NOT. 
j) Stop Payment if smart tap2.1 failed support: DFEF6B 
k) Pre-Signed support: DFEF6C 
Command: Use command 04-03 to set SmartTap2.1 configuration. The 
command should include the group number (DF EE 2D) as the first TLV data, and 
Smart Tap2.1 AID (9F06) as the second TLV. 
Below is an example to set Smart Tap configuration to group 2: 
56 69 56 4F 74 65 63 68 32 00 04 03 00 23 DF EE 2D 01 02 9F 06 07 A0 00 00 04 
76 D0 00 9F 16 04 00 BC 61 4E DF EF 66 00 9F 1C 00 9F 4E 00 9F 15 00 xx xx 
Long term private key update 
To maintain SmartTap2.1 function, a long term private key should be stored in the device. 
Kelso use method 2 to update long term private key: 
[SmartTap2.1-Part1-NFCProtocol-v0.975.pdf, page 47] The terminal vendor encrypts the private key 
using a key encryption key. The encrypted private key is provided to the merchant. The merchant 
configures the VAS command with the encrypted private key as a parameter. The terminal uses the 
corresponding key decryption key already in the terminal to decrypt the encrypted private key. 
The input long term key (37 bytes) format: 
Version: 4 bytes 
Compressed Key: 33 bytes (A zero followed by long term private key) 
Command: Use command C7-62 to set long term key 
The key parameter (Version + Compressed Key) is encrypted using ID TECH’s 
private RSA-2048-Key. 
To set the long term private key: 
56 69 56 4F 74 65 63 68 32 00 C7 62 01 20 encrypted-data (256 bytes) plain-
data-hash (32 bytes) xx xx 
Note: According to Google, a new command is added to update plaintext long 
term private key. 

NEO Interface Developers Guide    
    342 
The input long term key (36 bytes) format: 
Version: 4 bytes 
Long term private key: 32 bytes 
Command: Use command C7-65 to set plaintext long term private key 
To set the plaintext long term private key: 
56 69 56 4F 74 65 63 68 32 00 C7 65 00 24 Version (4 bytes) plain-data-LTPK 
(32 bytes) xx xx 
Flowcharts for SmartTap2.1 
There are 3 Smart Tap 2.1 flowcharts. 
Get VAS DATA 
a) Start up the RF field. 
b) Wait for phone to touch. 
c) Send 
Select OSE command 
to select OSE payment. 
d) Send 
Select SmartTap 2 command 
to select Smart Tap 2.1 payment. 
e) Send 
Get SmartTap Data Command 
to get Smart Tap 2.1 data. 
f) Send 
Get Additional SmartTap Data 
to get additional Smart Tap 2.1 data. 
g) Close down the RF connection. 
This flowchart does not need any sign and encryption/decryption. 
Secure Get VAS DATA 
a) Start up the RF field. 
b) Wait for phone to touch. 
c) Send 
Select OSE command 
to select OSE payment. 
d) Send 
Select SmartTap 2 command 
to select Smart Tap 2.1 payment. 
e) Send 
Negotiate SmartTap Secure Session 
to establish Smart Tap Secure Session. 
f) Send 
Get SmartTap Data Command 
to get secured Smart Tap 2.1 data. 
g) Send 
Get Additional SmartTap Data 
to get additional secured Smart Tap 2.1 data. 
h) Close down the RF connection. 
 This flowchart uses signing and decryption: 
i. Before step c) uses ECC algorithm to generate ephemeral ECC key pair. 
ii. In step e) uses ECDSA to sign Terminal data and Mobile data. 
iii. After step g) uses ECDH to obtain shared secret, HKDF to obtain shared key, AES to decrypt 
SmartTap data. 
PUSH VAS DATA 
a) Start up the RF field. 
b) Wait for phone to touch. 
c) Send 
Select OSE command 
to select OSE payment. 
d) Send 
Select SmartTap 2 command 
to select Smart Tap 2.1 payment. 
e) Send 
Negotiate SmartTap Secure Session 
to establish Smart Tap Secure Session. 
f) Send 
Push SmartTap Data Command 
to push Smart Tap 2.1 data. 
g) Send more 
Push SmartTap Data Command 
to push additional Smart Tap 2.1 data. 
h) Close down the RF connection. 
This flowchart uses signing only: 
i. Before step c) uses ECC algorithm to generate ephemeral ECC key pair. 
NEO Interface Developers Guide    
    343 
ii. In step e) uses ECDSA to sign Terminal data and Mobile data. 

NEO Interface Developers Guide    
    344 
16.0 Sample Scenarios and Frame Flow 
Contactless MagStripe Transactions in Auto Poll Mode 
For a contactless MagStripe transaction, the reader does not require any setup data from the 
terminal. 
1. Command: Set Poll Mode (Auto Poll) 
Header  Cmd
Sub-
Cmd
DLen 
(MSB)
DLen 
(LSB)  Data  CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 32 00 
01h 
01h 
00h 
01h 
00 
F6h 
24h 
ViVOtech2\0      DLen = 1 decimal 
Auto Poll 
Mode     
Response: OK 
Header  Cmd
Status 
Code 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
56 69 56 4F 74 65 63 68 32 00 
01h 
00 
00h 
00h 
12h 
53h 
ViVOtech2\0 
OK 
DLen = 0 decimal 
None 
Reader starts polling for cards. The Terminal should keep checking for data from the reader. If a 
card has been read, data is available, otherwise there is no data. The Get Transaction Result 
command is for retrieving the data. This command is not required for the reader to poll for 
cards or to carry out a transaction.  
2. Command: Get Transaction Result 
Header  Cmd
Sub-
Cmd 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 32 
00  03h  00h  00h  00h    3Bh
FFh 
ViVOtech2\0     
DLen = 0 
decimal 
None     
Response: OK, No Track Data, No Clearing Record i.e. No Transaction 
Header  Cmd
Status 
Code 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
56 69 56 4F 74 65 63 68 32 
00 
03h  00h  00h  03h  00 00 00  8Dh  D0h
ViVOtech2\0    OK  DLen = 3 
decimal 
T1 Len = 0, T2 Len = 
0, 
Clearing Record Not 
Present 
Reader continues to poll for cards. No Card has been presented so far.  

NEO Interface Developers Guide    
    345 
3. Command: Get Transaction Result 
Header  Cmd
Sub-
Cmd
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(LSB)
CRC 
(MSB)
56 69 56 4F 74 65 63 68 32 
00 
03h  00h  00h  00h    3Bh
FFh 
ViVOtech2\0     
DLen = 0 
decimal  None     
Response: OK, No Track Data, No Clearing Record i.e. No Transaction 
Header  Cmd
Status 
Code
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(MSB)
CRC 
(LSB)
56 69 56 4F 74 65 63 68 32 
00 
03h  00h  00h  03h  00 00 00  8Dh  D0h
ViVOtech2\0    OK  DLen = 3 
decimal 
T1 Len = 0, T2 Len = 
0, 
Clearing Record Not 
Present 
Reader continues to poll for cards. No Card has been presented so far. 
Reader continues to poll for cards. Card presented and accepted by the reader. 
4. Command: Get Transaction Result 
Header  Cmd
Sub-
Cmd 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 32 00 
03h 
00h 
00h 
00h 
3Bh 
FFh 
ViVOtech2\0 
DLen = 0 decimal 
None 
Response: OK, Track1, Track2 Data available 
Header  Cmd
Status 
Code 
DLen 
(MSB)
DLen 
(LSB)
Data 
56 69 56 4F 74 65 63 68 
32 00 
03h
00  00h  64h  3Ch 
42 35 34 31 33 31 32 33 34 35 
36 37 
ViVOtech2\0    OK  DLen = 100 dec
T1Len= 
60 
(dec) 
Track 1 Data 
“B54131234567” 
Data 
38 34 38 30 38 5E 53 4D 49 54 48 2F 4A 4F 48 4E 5E 30 35 30 38 31 30 31 33 33 35 33 37 33 33 33 36 30 37 
32 32 32 
Track 1 Data  
“84808^SMITH/JOHN^050810133537333607222” 

NEO Interface Developers Guide    
    346 
Data 
32 32 37 32 34 31 31 31 31 
33  25h 
35 34 31 33 31 32 33 34 35 36 37 38 34 38 30 38 3D 30 35 30 38 
31 30 31 
Track1 Data 
2272411113 
T2Len= 
37 (dec)
Track 2 Data 
“5413123456784808=0508101” 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
39 36 30 37 39 39 37 32 34 32 31 38 33 
00h 
F1h 
FBh 
Track 2 Data 
9607997242183 
Clearing Record 
Not Present 
Contactless MagStripe card was presented and accepted by the reader before the Get 
Transaction Result command. Track 1 and Track 2 data returned in response. 
Contactless MagStripe Transactions in Poll on Demand Mode 
For a contactless MagStripe transaction, the reader does not require any setup data from the 
terminal.  
1. Command: Set Poll Mode (Poll on Demand) 
Header  Cmd
Sub-
Cmd 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 32 
00  01h
01h  00h  01h  01h  D7h
34h 
ViVOtech2\0     
DLen = 1 
decimal 
Poll on Demand Mode     
Response: OK 
Header  Cmd
Status 
Code
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(MSB)
CRC 
(LSB)
56 69 56 4F 74 65 63 68 32 
00 
01h
00h  00h  00h    12h  53h 
ViVOtech2\0    OK 
DLen = 0 
decimal  None     
Reader stops polling for cards. Terminal has to issue an Activate command to allow the reader 
to poll for a card and carry out a transaction.  
2. Command: Activate (MagStripe/EMV) 
Header  Cmd
Sub-
Cmd 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 32 
00  02h
01h  00h  01h  0Ah  6Eh
6Bh 
ViVOtech2\0 
DLen = 1 
Timeout = 10 Seconds 

NEO Interface Developers Guide    
    347 
decimal 
(decimal) 
Reader starts polling for cards. No card is presented. Reader stops polling after 10 seconds and 
sends back a response indicating timeout. 
Response: Error (Timeout) i.e. No Card Detected. 
Header  Cmd
Status 
Code
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(MSB)
CRC 
(LSB)
56 69 56 4F 74 65 63 68 32 
00 
02h
08h  00h  00h    20h  2Eh 
ViVOtech2\0   
Time 
Out 
DLen = 0 
decimal  None     
Reader is not polling for cards. 
3. Command: Activate (MagStripe/EMV) 
Header  Cmd
Sub-
Cmd
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(LSB)
CRC 
(MSB)
56 69 56 4F 74 65 63 68 32 
00 
02h
01h  00h  01h  0Ah  6Eh
6Bh 
ViVOtech2\0     
DLen = 1 
decimal 
Timeout = 10 Seconds 
(decimal)     
Reader starts polling for cards. A contactless MagStripe card is presented within 10 seconds. 
Reader completes transaction, even if more than ten seconds pass since Activate command was 
received. After completing transaction the reader does not restart polling and just sends back 
the response containing the Track1 and Track2 data. 
Response: OK, Track1, Track2 Data available 
Header  Cmd
Status 
Code 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
56 69 56 4F 74 65 63 68 
32 00  02h
00  00h  64h  3Ch 
42 35 34 31 33 31 32 33 34 35 
36 37 
ViVOtech2\0    OK  DLen = 100 dec
T1Len= 
60 
(dec) 
Track 1 Data 
“B54131234567” 
Data 
38 34 38 30 38 5E 53 4D 49 54 48 2F 4A 4F 48 4E 5E 30 35 30 38 31 30 31 33 33 35 33 37 33 33 33 36 30 37 
32 32 32 
Track 1 Data  
84808^SMITH/JOHN^050810133537333607222 
Data 
32 32 37 32 34 31 31 31 31 
33 
25h 
35 34 31 33 31 32 33 34 35 36 37 38 34 38 30 38 3D 30 35 30 38 
31 30 31 
Track1 Data 
2272411113 
T2Len= 
37 (dec)
Track 2 Data 
“5413123456784808=0508101” 

NEO Interface Developers Guide    
    348 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
39 36 30 37 39 39 37 32 34 32 31 38 33 
00h 
F6h 
7Fh 
Track 2 Data 
“607997242183 
Clearing Record 
Not Present     
EMV (M/Chip) Transaction in Poll on Demand Mode 
The correct CA Public Keys required by the Cards that is read have already been set up using the 
Key Management Commands (refer to Key Management). This operation needs to be done only 
once for each key. Keys are retained over power cycles by the reader. 
1. Command: Set Poll Mode (Poll on Demand) 
Header  Cmd
Sub-
Cmd
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(LSB)
CRC 
(MSB)
56 69 56 4F 74 65 63 68 32 
00 
01h
01h  00h  01h  01h  D7h
34h 
ViVOtech2\0     
DLen = 1 
decimal  Poll on Demand Mode     
Response: OK 
Header  Cmd
Status 
Code
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(MSB)
CRC 
(LSB)
56 69 56 4F 74 65 63 68 32 
00  01h
00  00h  00h    12h  53h 
ViVOtech2\0    OK 
DLen = 0 
decimal 
None     
Reader stops polling for cards. Terminal has to issue an Activate command to allow the reader 
to poll for a card and carry out a transaction.  
2. Command: Set Configuration (Terminal Country Code, Transaction Currency Code) 
Header  Cmd
Sub-
Cmd 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(LSB) 
CRC 
(MSB) 
56 69 56 4F 74 65 63 68 
32 00  04h
00h  00h  0Ah 
9F 1A 02 00 
56  
5F 2A 02 09 
78  69h
03h 
ViVOtech2\0      DLen = 10  
decimal 
TLV 
Terminal 
Country 
Code 
TLV Trans 
Currency  
Code 
Assuming the current terminal values is used for all other parameters (unless specified 
otherwise in Activate command). 

NEO Interface Developers Guide    
    349 
Response: OK 
Header  Cmd
Status 
Code 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
56 69 56 4F 74 65 63 68 32 
00  04h
00  00h  00h    AEh  16h 
ViVOtech2\0    OK 
DLen = 0 
decimal 
None     
Reader is still not polling for cards. 
Note: These parameter values may not apply to all cards. The terminal has to make sure that 
correct values have been defined for the parameters based on card requirements otherwise a 
transaction fails. 
3. Command: Activate (MagStripe/EMV) 
Header  Cmd
Sub-
Cmd
DLen 
(MSB)
DLen 
(LSB)
Data 
CRC 
(LSB)
CRC 
(MSB)
56 69 56 4F 74 65 63 68 
32 00  02h
01h  00h  06h  0Ah 
9A 03 05 08 
18  77h
1Dh 
ViVOtech2\0      DLen = 1 
decimal 
Timeout = 
10 
Seconds 
(decimal) 
TLV 
Transaction 
Date 
Reader starts polling for cards. A contactless EMV (M/Chip) card is presented within 10 seconds. 
Reader completes transaction, even if more than ten seconds pass since Activate command was 
received. After completing transaction the reader does not restart polling and just sends back 
the response containing the Clearing Record data. 
Response: OK, Clearing Record and additional Data available 
Header  Cmd
Status 
Code 
DLen 
(MSB) 
DLen 
(LSB) 
Data 
56 69 56 4F 74 65 63 68 32 
00  02h
00  00h  ABh  00h  00h  01h 
ViVOtech2\0    OK  DLen = 171 dec 
T1Len = 
0 (dec) 
T2Len = 0 
(dec) 
Clearing Record 
Present 
Data 
E1 56 9F 1A 02 01 58 9F 02 06 00 00 00 00 00 01 5F 2A 02 09 01 9A 03 05 08 02 9C 01 00 95 05 00 00 00 00 
00 9F 37 
Clearing Record (DE 055) 
Data 
04 84 77 98 32 82 02 58 80 9F 26 08 02 BB 21 5D D9 06 94 01 9F 27 01 40 9F 10 12 02 10 90 08 01 22 30 00 
00 00 00 
Clearing Record (DE 055) 
Data 
00 00 00 00 15 00 FF 9F 36 02 00 D0 
5A 08 54 12 34 00 00 00 00 
5F 34 01 00 
5F 24 03 10 07 

NEO Interface Developers Guide    
    350 
19 
31 
Clearing Record (DE 055)  TLV App PAN 
TLV PAN Seq 
Num 
TLV App 
Expiration Date
Data 
50 0A 4D 61 73 74 65 72 43  61 72 
64 
9F 34 03 00 1F 
03 
9F 45 02 DA 
C0 
9F 4C 08 00 00 00 00 00 00 00 
00 
TLV Application Label  CVM Results 
Data Auth 
Code 
ICC Dynamic Number 
Data 
57 13 54 12 34 00 00 00 00 19 D1 00 72 01 14 43 14 31 00 
00 0F  56 00  9B 02 C8 00 
TLV Track 2 Equivalent Data 
TLV Track 1 
Equivalent Data 
Transaction Status 
Information 
Data 
CRC 
(MSB) 
CRC 
(LSB) 
5F 20 1A 53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 
20 20 20   27h 60h 
Cardholder Name 

NEO Interface Developers Guide    
    351 
Appendix A.1: User Experience Illustration  
Following are list of messages and the message flow for one user experience.   
Table 80: Summary of LCD Messages 
User Interface States  ViVOtech User Experience 
Idle 
00: Idle Message (Welcome) 
Polling 
01: Present card (Please Present Card) 
Time out or Transaction Cancel  
02: Time Out or Transaction cancel (No Card) 
Transaction In Progress 
03: Transaction between reader and card is in the middle 
(Processing…) 
Transaction Succeed 
04: Transaction Pass (Thank You) 
Transaction Fail 
05: Transaction Fail (Fail) 
Configurable messages 
06: Amount (Amount  $ 0.00 Tap Card) 
07: Balance or Offline Available funds (Balance $ 0.00) 
08: Insert or Swipe card (Use Chip & PIN) 
09: Try Again(Tap Again) 
0A: Indicate the custom to present only one card 
(Present 1 card only) 
0B: Indicate the custom to wait for 
authentication/authorization (Wait) 
The flow diagram below illustrates how an external UI may be controlled, using asynchronous UI 
events. 

NEO Interface Developers Guide    
    352 

NEO Interface Developers Guide    
    353 
Appendix A.2: Audible User Interface 
Some readers do not have an LCD display.  In that case, audible tones and lights indicate the 
status and when an action must be taken. 
The following table describes the audible user interface tones 
Table 4: Definition of Audible Tones 
Tone Name  Sound 
Alert  
Two short beeps 
Card Read Complete  
One long beep 
Check Phone  
Three short beeps 
The Alert tone is an indication to the card user that something unusual has occurred and some 
action must be taken (for example, insert a card, swipe a card, check your mobile phone, use 
one card at a time, etc.). 
The following table describes the audible tones emitted by the reader for each of the interfaces 
under various conditions: 
Table 5 : Meaning of Audible Tones by Interface 
Card/ Interface Type  Tone   Reason for Tone 
Contactless 
Check Phone 
Consumer interaction required (user 
needs to do something on the phone, 
such as enter a PIN) 
Alert 
Card Read Error 
 Collision Detected 
 Unsupported Card  
 Application Error 
 No Response after Restart (only for 
VCPS2.1.1 and ExpressPay 3.0) 
Card Read Complete + 
Alert 
Card Read Complete and Card Error 
 Card Read Complete & switch to 
another interface 
Card Read Complete 
Transaction Approved, Offline  
 Transaction Declined Offline (see status 
and error codes) 
 Transaction Approved Online  
 Transaction Declined Online 
Contact 
Alert 
Card Removed 
 Transaction terminated with Error 
 Switch from Contact to MagStripe 
Interface 
Card Read Complete 
Transaction Approved, Offline 
 Transaction Declined, Offline 
 Transaction Approved, Online 
Transaction Declined, Online 
MagStripe 
Alert 
Card Swipe Error 
Card Read Complete 
Card Swiped Successfully 
NEO Interface Developers Guide    
    354 
Appendix A.3: Configurable AID Use Examples 
This is the communications between a Configurable AID capable reader and an attached PC 
simulating a POS.  
Disable System AID 
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 04 00 0A 9F 06 07 A0 00 00 00 04 10 10 25 59 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the DCA Command (Delete Configurable AID - Cmd 4, Sub Cmd 4)  
9F06 07 A0 00 00 00 04 10 10 – Selects the AID Number  
Enable System AID 
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 02 00 0E FF E4 01 00 9F 06 07 A0 00 00 00 04 10 10 D2 A8 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 07 00 00 2B 86 
Uses the SCA Command (Set Configurable AID - Cmd 4, Sub Cmd 2)  
FFE4 01 00 - Selects Group 0 
9F06 07 A0 00 00 00 04 10 10 – Selects the AID Number  
Add a New Configurable AID 
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 02 00 18 FF E4 01 00 9F 06 05 B0 12 34 56 78 FF E2 01 03 FF E1 
01 01 FF E5 01 0A 09 AB 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the SCA Command (Set Configurable AID - Cmd 4, Sub Cmd 2)  
NEO Interface Developers Guide    
    355 
FFE4 01 00 - Selects Group 0 
9F06 05 B0 12 34 56 78 – Selects the AID Number  
FFE2 01 03 – Selects Application Flow 
FFE1 01 01 – Enables Partial Selection 
FFE5 01 0A – Specify Maximum Partial Selection Length 
Delete a Configurable AID  
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 04 00 08 9F 06 05 B0 12 34 56 78 DF 97 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the DCA Command (Delete Configurable AID - Cmd 4, Sub Cmd 4)  
9F06 05 B0 12 34 56 78 – Specifies the AID to delete. 
Create a New Group  
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 03 00 0D FF E4 01 01 FF F1 06 00 00 00 01 00 00 64 03 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the SCG Command (Set Configurable Group - Cmd 4, Sub Cmd 3)  
FFE4 01 01 – Specify the NEW group number 1.  
FFF1 06 00 00 00 01 00 00 - Terminal Transaction Limit. 
Connect Existing AID to a Different Group  
NEO Interface Developers Guide    
    356 
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 02 00 18 FF E4 01 01 9F 06 05 B0 12 34 56 78 FF E2 01 03 FF E1 
01 01 FF E5 01 0A FF 7E 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the SCA Command (Set Configurable AID - Cmd 4, Sub Cmd 2)  
FFE4 01 01 – Specify the NEW group number 1. 
9F06 05 B0 12 34 56 78 - Specifies the AID. 
FFE2 01 03 – Selects Application Flow 
FFE1 01 01 – Enables Partial Selection 
FFE5 01 0A – Specify Maximum Partial Selection Length 
NEO Interface Developers Guide    
    357 
Return Existing AID to Group 0  
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 02 00 18 FF E4 01 00 9F 06 05 B0 12 34 56 78 FF E2 01 03 FF E1 
01 01 FF E5 01 0A 09 AB 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the SCA Command (Set Configurable AID - Cmd 4, Sub Cmd 2)  
FFE4 01 00 – Specify Group number 0. 
9F06 05 B0 12 34 56 78 - Specifies the AID. 
FFE2 01 03 – Selects Application Flow 
FFE1 01 01 – Enables Partial Selection 
FFE5 01 0A – Specify Maximum Partial Selection Length 
Delete a Group  
From POS → 
56 69 56 4F 74 65 63 68 32 00 04 05 00 04 FF E4 01 01 0C 5D 
From Reader ←  
56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Uses the DCG Command (Delete Configurable Group - Cmd 4, Sub Cmd 5) 
FF E4 01 01  - Specify Group number to delete.  

NEO Interface Developers Guide    
    358 
Appendix A.4: Demo Utilities and Sample Code 
The following PC-based demo utilities and sample code are available from IDTECH on request. 
Item 
Description 
ViVOPing.zip 
Visual C++ Project and C files containing the sample code given in 
Appendix A.1 in this document. 
ViVOPing.exe 
Executable File for the sample code given in this Document. 
RFIDRead.exe 
Demo Utility that polls ViVOpay for Track Data. 
Sample_RFIDRead.zip 
Source Code for the RFIDRead Utility (demonstrates use of Ping as 
well as Get Track Data Commands). 
NEO Interface Developers Guide    
    359 
Appendix A.5: Firmware FAQ 
The following FAQs attempt to answer common issues: 
Q1. How do I identify the reader type from my application? 
A. You can identify the reader type by checking the firmware: 
Q2. Can you tell me which Terminal Types the reader supports? 
A. The Vendi reader supports terminal type 24 – unattended, online only. 
Q3. How many keys can I load onto the reader? 
A. For CA public key, there is no limitation till the flash is full. 
  The Kiosk III reader allows for storage of up to a maximum of 60 keys which are uniquely 
identified as a key index in each payment scheme(RID). 
Q4. How can I guarantee that all settings are erased in my reader when I 
load a new release of firmware? 
A. Use the Set Configuration Defaults Command (04-09) to re-initialize the setting to default 
values. 
Q5. Why does my MasterCard application ignore the Terminal Contactless 
Transaction Limit (FFF1) and the CVM Required Limit (FFF5) Tags? 
A. The Terminal Contactless Transaction Limit (FFF1) and the CVM Required Limit (FFF5) Tags 
are used by Visa and not by MasterCard. MasterCard uses the Floor Limit and the CVM List 
structure described in the MasterCard specifications. 
Q6. How do I enable Maestro cards in reader? 
A. To enable Maestro cards, apply the following script. 
---------CUT--------- 
AID SET 
FFE4 01 00                    ; Group 0 
9F06 07 A0 00 00 00 04 30 60  ; AID Number 
NEO Interface Developers Guide    
    360 
;FFE6 01 00                   ; AID Disabled OFF 
END 
---------CUT--------- 
Q7. What applications are supported? 
A. The following applications are supported and certified. 
EMVCo 
-  CCPS 2.3.1 
MasterCard 
-  M/Chip v3.02 
-  M/Stripe v3.3 
Visa 
-  VCPS (qVSDC & MSD)  2.1.3 
-  Reader Implementation Notes 1.1 Licensed (IRWIN-compliant) 
Amex 
-  ExpressPay 3.0 
Discover 
-  Discover DPAS 1.0 Zip 3.1.2, v1.00 
Interac 
-  Flash 1.5 
Q8. Whenever I try to load a key into the device it fails, with the error 
EMV_KM_EC_NO_FREE_KEY_SLOTS. Why is that? 
A. You must first delete a key from a slot before you can load a new one. 
Q9. How do I manage the FAIL message on the reader? 
A. The way that we expect it to work is when a transaction error occurs; the reader sends error 
codes back to the host. The host can use the error code to determine the appropriate message 
to display on the reader using Control User Interface command. You may wish to replace the 
message FAIL (05) with a more user friendly message or a blank message and manage it yourself. 

NEO Interface Developers Guide    
    361 
Q10. Why am I receiving timeouts when I try to load CAP keys into my 
reader using the key loading API? 
A.  A possible reason for the time out is because the ‘Data Length’ in the Command Frame is 
greater than the actual data length of the data field being sent, therefore the ViVOpay reader 
waits for more data and times out. Please ensure that the data length matches the actual size 
of the data field being sent. 
Q11. On certain Visa cards the PAN (tag 5A) and Application Expiration 
Date (tag 5F24) are returned as zero length. Shouldn’t the reader provide 
both PAN and expiry date because the Visa Contactless Payment 
Specification, Protocol 2.0.2 says: "Note that the PAN and the Expiration 
Date are obtained by the reader from the Track 2 Equivalent Data"? 
A. The reader will only return those tags if they are present in the card, they will then be 
provided in the transaction results. 
Note: The reader will not provide the tags if the card does not send then in the Response 
Frame. 
Q12. I am using the Configurable AID features and my application is not 
able to correctly identify all Visa Cards. 
A. Visa requires partial selection of the AIDs to be set in all PayWave applications. Please ensure 
that partial selection is enabled as shown below. 
---------CUT--------- 
AID SET 
FFE4 01 02                     ; Group 
9F06 07 A0 00 00 00 03 10 10   ; Visa 
FFE5 01 10                     ; include both of these tags Max AID length and 
FFE1 01 01                    ; allow partial selection 
END 
---------CUT--------- 
Note: Partial selection is enabled by default for specific System AIDs (including Visa) but 
when you reprogram the AID you have to specifically enable partial selection. 
NEO Interface Developers Guide    
    362 

NEO Interface Developers Guide    
    363 
Appendix A.6: TDES Data Encryption Examples 
Examples are given for MSR data as well as ICC data. Note that data for the former will be in a 
different format than data for the latter. The former uses the Enhanced Encrypted MSR Data 
Output Format (see later appendix, or see ID TECH document P/N 80000403-001). By contrast, 
ICC data comes back as TLV data, preceded by a ViVOtech2 header with command and response 
bytes and two length bytes, and followed by a 16-bit CRC. 
Step 1: Data encryption Enable 
[TX] - 56 69 56 4F 74 65 63 68 32 00 C7 36 00 01 01 B7 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 C7 00 00 00 86 6E 
Step 2: Do a transaction 
Example: Burst Mode OFF and Poll on Demand mode 
Burst off 
[TX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 04 FF F7 01 00 B9 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Poll on demand 
[TX] - 56 69 56 4F 74 65 63 68 32 00 01 01 00 01 01 D7 34  
[RX] - 56 69 56 4F 74 65 63 68 32 00 01 00 00 00 12 53 
Activate transaction and then Swipe card or Tap card 
[TX] - 56 69 56 4F 74 65 63 68 32 00 02 01 00 0A 0A 9F 02 06 00 00 00 00 
10 00 AB 6C  
[RX] - MSR and contactless Card DATA As below 
--MSR card data 
The data will come back in the Enhanced Encrypted MSR Data Output Format, framed as follows: 
<Preamble> <Attribution> < MSR TLV> <CRC> 
See Appendix A.11 for format details. 
Raw data:  
Raw data:  
56 69 56 4F 74 65 63 68 32 00     Protocol Header (ViVOtech2\0) 
02              Command  
00            Status Code 
01 3D            Data Length MSB & LSB 

NEO Interface Developers Guide    
    364 
88                                                                  Attribution 
DF EE 23                                                        MSR Tag 
82                                                                 MSR Data length indicator 
01 25                                                             MSR Data length 
02 1F 01 80 1F 44 28 00 83 9B 25 2A                Enhanced Encrypted MSR Field Data 
36 35 31 30 2A 2A 2A 2A 2A 2A 2A 2A                (see Appendix A.11 for format) 
30 30 32 36 5E 43 41 52 44 2F 49 4D  
41 47 45 20 30 33 20 20 20 20 20 20  
20 20 20 20 20 20 20 5E 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 3F 2A 3B 36 35 31 30 2A  
2A 2A 2A 2A 2A 2A 2A 30 30 32 36 3D  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 3F 2A C7 27  
B0 60 AB FC 2B 62 4C 4D 6E 59 96 E2  
2D 84 8D 87 D6 E3 82 0D 57 37 4F 6D  
3F B3 1F 75 06 1A DC 17 89 FB C3 C7  
50 C7 5D 06 65 00 04 08 CA B4 CA 0C  
62 47 62 EE 86 0F BD 54 17 E0 FD D5  
7E 1D A9 C9 FA 98 FB DF 49 CA CE 1B  
DC 33 AA 1A DD A5 D6 52 C6 FC CF C5  
DC A9 46 A8 07 1F 1C 13 1B 7F E6 5F  
75 06 01 CE C6 1E 8A 64 0E 1C 2B EC  
80 D4 51 48 AB 78 7E 8B 8D 05 DC 8A  
C9 07 9E FC 98 53 27 0B ED B9 10 02  
52 D6 AA D8 46 CB 85 69 24 FE 7C 93  
52 0B 36 DA D9 25 00 00 00 00 00 00  
00 00 00 00 62 99 49 01 2C 00 04 60  
00 01 C1 0B 03 
9F 39 01 90                                                    Point of Service (POS) Entry Mode 
FF EE 01 04                                                    ViVOPay Group Tag 
DF 30 01 0C                                                   Track Data Source 
DF EE 26 01 88                                               Encrypt Information 
76 EA            CRC (MSB & LSB) 
NEO Interface Developers Guide    
    365 
-- MasterCard Contactless (PayPass) card example: 
The data will come back in the encrypted ICC format: 
<PREAMBLE><Attribution Byte><KSN TLV><Track1 TLV(optional)><Track2 
TLV(optional)><Clear Record TLV(optional)><Other TLVs><CRC> 
The preamble is 14 bytes, as before (see example immediately above). The Attribution Byte will have a 
value of 0x81 or 0x83 for contactless TDES or AES, respectively. (The lowest bit is a Contactless flag. The 
second bit is a TDES/AES flag. The highest bit is a Encryption State flag. See Chapter 9.) The TLV data 
section consists of tag, length, value triplets. The CRC is a 16-bit cyclic redundancy check of the entire data 
packet, including the preamble. 
Raw data: 
56 69 56 4F 74 65 63 68 32 00 02 23 01 98 81 FF EE 12 0A 62 99 49 01 2C 
00 04 60 00 02 82 02 00 00 95 05 00 00 00 00 00 9A 03 14 08 10 9C 01 00 
5F 2A 02 08 40 9F 02 06 00 00 00 00 10 00 9F 03 06 00 00 00 00 00 00 9F 
06 07 A0 00 00 00 04 10 10 9F 09 02 00 02 9F 1A 02 08 40 9F 1E 08 30 30 
30 30 30 30 30 30 9F 21 03 12 02 37 9F 33 03 00 00 E8 9F 34 03 00 00 00 
9F 35 01 25 9F 36 02 05 AB 9F 37 04 0F 0A 1A E5 9F 39 01 91 9F 53 01 00 
DF 81 29 08 30 F0 F0 00 30 F0 FF 00 FF 81 06 44 DF 81 2A C1 20 10 18 E2 
2A 40 63 49 89 C9 4B B1 01 3A D7 4A F6 1D 64 CF 42 5F 33 83 0A 9B BB 63 
46 20 7A 72 76 DF 81 2B C1 10 16 DA F4 11 79 F9 0B A4 DC D0 64 31 65 31 
CA B0 DF 81 15 06 00 00 00 00 00 FF FF 81 05 79 50 0A 4D 61 73 74 65 72 
43 61 72 64 84 07 A0 00 00 00 04 10 10 9F 6D 02 00 01 56 C1 40 A5 14 AD 
F8 E6 42 DA 3B 13 17 F5 D3 E6 65 B8 2B 4B E4 DE 13 C3 9F 98 2D D2 18 48 
5E 2B 45 9E 3C B1 23 A5 A3 0B B8 08 2C DF B8 BF 07 8C D3 63 EA 19 00 4A 
B7 5F A6 61 B6 D2 06 6B 0A AA BC F9 B7 9F 6B C1 18 79 95 EB 5E 9A F6 6A 
B9 F6 2F 23 74 13 EE 51 75 1A A1 A9 84 75 68 95 D6 FF EE 01 3C DF 30 01 
00 DF 31 C1 20 68 0B 25 F6 29 04 FA 8B D6 F8 BB 6C 64 A5 CD C6 10 A0 A7 
60 B1 B4 80 AA 67 9B D5 27 CD 39 F5 BA DF 32 C1 10 38 32 34 F5 6A D7 99 
CF 9C 4C 46 06 06 BC BC F9 DF EE 26 01 81 F8 99  
Parsed data: 
Head  : 56 69 56 4F 74 65 63 68 32 00 02 23  
Data  : 01 98 81  
Tag  : FF EE 12  
Length  : 0A  
Value  : 62 99 49 01 2C 00 04 60 00 02  
Tag  : 82  
Length  : 02  
Value  : 00 00  
Tag  : 95  
Length  : 05  
Value  : 00 00 00 00 00  
Tag  : 9A  
Length  : 03  
Value  : 14 08 10  
Tag  : 9C  
NEO Interface Developers Guide    
    366 
Length  : 01  
Value  : 00  
Tag  : 5F 2A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 02  
Length  : 06  
Value  : 00 00 00 00 10 00  
Tag  : 9F 03  
Length  : 06  
Value  : 00 00 00 00 00 00  
Tag  : 9F 06  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 09  
Length  : 02  
Value  : 00 02  
Tag  : 9F 1A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 1E  
Length  : 08  
Value  : 30 30 30 30 30 30 30 30  
Tag  : 9F 21  
Length  : 03  
Value  : 12 02 37  
Tag  : 9F 33  
Length  : 03  
Value  : 00 00 E8  
Tag  : 9F 34  
Length  : 03  
Value  : 00 00 00  
Tag  : 9F 35  
Length  : 01  
Value  : 25  
Tag  : 9F 36  
Length  : 02  
Value  : 05 AB  
Tag  : 9F 37  
Length  : 04  
Value  : 0F 0A 1A E5  
NEO Interface Developers Guide    
    367 
Tag  : 9F 39  
Length  : 01  
Value  : 91  
Tag  : 9F 53  
Length  : 01  
Value  : 00  
Tag  : DF 81 29  
Length  : 08  
Value  : 30 F0 F0 00 30 F0 FF 00  
*****Embedded TLV Begin (FF 81 06 )***** 
Tag  : FF 81 06  
Length  : 44  
Tag  : DF 81 2A  
Length  : C1 20  
Value(Encryption Data): 
10 18 E2 2A 40 63 49 89 C9 4B B1 01 3A D7 4A F6 1D 64 CF 42 5F 33 83 0A 9B BB 63 46 20 7A 72 
76  
Value(Decryption Data): 
DF 81 2A 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00  
Tag  : DF 81 2B  
Length  : C1 10  
Value(Encryption Data): 
  16 DA F4 11 79 F9 0B A4 DC D0 64 31 65 31 CA B0  
Value(Decryption Data): 
  DF 81 2B 07 00 01 00 00 01 00 2F 00 00 00 00 00  
Tag  : DF 81 15  
Length  : 06  
Value  : 00 00 00 00 00 FF  
*****Embedded TLV End (FF 81 06 )***** 
*****Embedded TLV Begin (FF 81 05 )***** 
Tag  : FF 81 05  
Length  : 79  
Tag  : 50  
Length  : 0A  
Value  : 4D 61 73 74 65 72 43 61 72 64  
Tag  : 84  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 6D  
Length  : 02  
Value  : 00 01  
Tag  : 56  
Length  : C1 40  
Value(Encryption Data): 
NEO Interface Developers Guide    
    368 
A5 14 AD F8 E6 42 DA 3B 13 17 F5 D3 E6 65 B8 2B 4B E4 DE 13 C3 9F 98 2D D2 18 48 5E 2B 45 9E 
3C  
B1 23 A5 A3 0B B8 08 2C DF B8 BF 07 8C D3 63 EA 19 00 4A B7 5F A6 61 B6 D2 06 6B 0A AA BC F9 
B7  
Value(Decryption Data): 
56 3E 42 35 32 35 36 38 33 32 30 33 30 30 30 30 30 30 30 5E 53 75 70 70 6C 69 65 64 2F 4E 6F 74  
5E 31 32 31 32 35 30 32 38 38 33 31 30 31 34 35 31 31 35 32 31 31 31 31 31 31 31 31 31 31 31 32  
Tag  : 9F 6B  
Length  : C1 18  
Value(Encryption Data): 
79 95 EB 5E 9A F6 6A B9 F6 2F 23 74 13 EE 51 75 1A A1 A9 84 75 68 95 D6  
Value(Decryption Data): 
9F 6B 13 52 56 83 20 30 00 00 00 D1 21 25 02 32 21 01 45 11 52 2F 00 00  
*****Embedded TLV End (FF 81 05 )***** 
*****Embedded TLV Begin (FF EE 01 )***** 
Tag  : FF EE 01  
Length  : 3C  
Tag  : DF 30  
Length  : 01  
Value  : 00  
Tag  : DF 31  
Length  : C1 20  
Value(Encryption Data): 
68 0B 25 F6 29 04 FA 8B D6 F8 BB 6C 64 A5 CD C6 10 A0 A7 60 B1 B4 80 AA 67 9B D5 27 CD 39 F5 
BA  
Value(Decryption Data): 
DF 31 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00 00  
Tag  : DF 32  
Length  : C1 10  
Value(Encryption Data): 
38 32 34 F5 6A D7 99 CF 9C 4C 46 06 06 BC BC F9  
Value(Decryption Data): 
DF 32 0D 30 30 30 31 30 30 30 30 30 31 30 30 32  
*****Embedded TLV End (FF EE 01 )***** 
Tag  : DF EE 26  
Length  : 01  
Value  : 81  
Tail  : F8 99 

NEO Interface Developers Guide    
    369 
Burst Mode OFF and Auto Poll Mode 
Burst mode OFF 
[TX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 04 FF F7 01 00 B9 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Auto poll 
[TX] - 56 69 56 4F 74 65 63 68 32 00 01 01 00 01 00 F6 24  
[RX] - 56 69 56 4F 74 65 63 68 32 00 01 00 00 00 12 53 
Swipe card or Tap card 
Get transaction result 
[TX] - 56 69 56 4F 74 65 63 68 32 00 03 00 00 00 3B FF  
[RX] -MSR and contactless Card DATA As below 
--MSR card data 
56 69 56 4F 74 65 63 68 32 00     Protocol Header (ViVOtech2\0) 
03             Command 
00                                                                  Status Code 
01 3D            Data Length MSB & LSB 
88                                                                  Attribution 
DF EE 23                                                        MSR Tag 
82                                                                  MSR Data length indicator 
01 25                                                             MSR Data length 
02 1F 01 80 1F 44 28 00 83 9B 25 2A                 Enhanced Encrypted Field Data 
36 35 31 30 2A 2A 2A 2A 2A 2A 2A 2A                (see Appendix A.11 for format) 
30 30 32 36 5E 43 41 52 44 2F 49 4D  
41 47 45 20 30 33 20 20 20 20 20 20  
20 20 20 20 20 20 20 5E 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 3F 2A 3B 36 35 31 30 2A  
2A 2A 2A 2A 2A 2A 2A 30 30 32 36 3D  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 3F 2A C7 27  
B0 60 AB FC 2B 62 4C 4D 6E 59 96 E2  
2D 84 8D 87 D6 E3 82 0D 57 37 4F 6D  
3F B3 1F 75 06 1A DC 17 89 FB C3 C7  
50 C7 5D 06 65 00 04 08 CA B4 CA 0C  
62 47 62 EE 86 0F BD 54 17 E0 FD D5  
7E 1D A9 C9 FA 98 FB DF 49 CA CE 1B  
DC 33 AA 1A DD A5 D6 52 C6 FC CF C5  
DC A9 46 A8 07 1F 1C 13 1B 7F E6 5F  
NEO Interface Developers Guide    
    370 
75 06 01 CE C6 1E 8A 64 0E 1C 2B EC  
80 D4 51 48 AB 78 7E 8B 8D 05 DC 8A  
C9 07 9E FC 98 53 27 0B ED B9 10 02  
52 D6 AA D8 46 CB 85 69 24 FE 7C 93  
52 0B 36 DA D9 25 00 00 00 00 00 00  
00 00 00 00 62 99 49 01 2C 00 04 60  
00 01 C1 0B 03 
9F 39 01 90                                                    Point of Service (POS) Entry Mode 
FF EE 01 04                                                    ViVOPay Group Tag 
DF 30 01 0C                                                   Track Data Source 
DF EE 26 01 88                                               Encrypt Information 
FD 71            CRC (MSB & LSB) 
-- MasterCard Contactless (PayPass) card data 
Raw data: 
56 69 56 4F 74 65 63 68 32 00 03 23 01 98 81 FF EE 12 0A 62 99 49 01 2C 
00 04 60 00 04 82 02 00 00 95 05 00 00 00 00 00 9A 03 14 08 10 9C 01 00 
5F 2A 02 08 40 9F 02 06 00 00 00 00 00 01 9F 03 06 00 00 00 00 00 00 9F 
06 07 A0 00 00 00 04 10 10 9F 09 02 00 02 9F 1A 02 08 40 9F 1E 08 30 30 
30 30 30 30 30 30 9F 21 03 12 02 53 9F 33 03 00 00 E8 9F 34 03 00 00 00 
9F 35 01 25 9F 36 02 05 AC 9F 37 04 3E CE 50 B9 9F 39 01 91 9F 53 01 00 
DF 81 29 08 30 F0 F0 00 30 F0 FF 00 FF 81 06 44 DF 81 2A C1 20 C6 9A 82 
5D 19 7A 9E AE FC CF 50 39 66 88 21 C2 C9 EF 3B A9 B6 30 32 0E 7F 19 C0 
4A A0 77 C0 EC DF 81 2B C1 10 92 95 3B 08 DF EA 80 31 E5 7F BB D2 91 55 
3A 38 DF 81 15 06 00 00 00 00 00 FF FF 81 05 79 50 0A 4D 61 73 74 65 72 
43 61 72 64 84 07 A0 00 00 00 04 10 10 9F 6D 02 00 01 56 C1 40 AA 67 C3 
F5 0A 86 04 3B A9 B3 86 09 C8 88 D5 20 69 24 2D 63 AC 2B 8F 05 83 67 F3 
66 44 EB 61 D2 70 F9 61 A4 7B 91 60 4C 7C A5 C9 AA 09 9E 2C 53 FA 7E 6E 
C9 C7 8D EC AF C0 91 D9 37 ED 30 F6 26 9F 6B C1 18 0E 0C 92 E0 FC 96 1A 
19 EC EB E1 E8 40 E4 8B D1 37 7F B0 9C DF 6D EB D6 FF EE 01 3C DF 30 01 
00 DF 31 C1 20 FC 47 AC 22 D0 C7 AE 1B E9 A4 AD F2 7F 8E 60 B1 4E F0 92 
73 5D EF CE 9B BA 3D CA BF B1 48 40 BB DF 32 C1 10 A3 1C EC AE 13 AF 03 
7C 3A DE EC 45 7B BC DA 8A DF EE 26 01 81 28 F9 
Parsed data: 
Head  : 56 69 56 4F 74 65 63 68 32 00 03 23  
Data  : 01 98 81  
Tag  : FF EE 12  
Length  : 0A  
Value  : 62 99 49 01 2C 00 04 60 00 04  
Tag  : 82  
Length  : 02  
Value  : 00 00  
NEO Interface Developers Guide    
    371 
Tag  : 95  
Length  : 05  
Value  : 00 00 00 00 00  
Tag  : 9A  
Length  : 03  
Value  : 14 08 10  
Tag  : 9C  
Length  : 01  
Value  : 00  
Tag  : 5F 2A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 02  
Length  : 06  
Value  : 00 00 00 00 00 01  
Tag  : 9F 03  
Length  : 06  
Value  : 00 00 00 00 00 00  
Tag  : 9F 06  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 09  
Length  : 02  
Value  : 00 02  
Tag  : 9F 1A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 1E  
Length  : 08  
Value  : 30 30 30 30 30 30 30 30  
Tag  : 9F 21  
Length  : 03  
Value  : 12 02 53  
Tag  : 9F 33  
Length  : 03  
Value  : 00 00 E8  
Tag  : 9F 34  
Length  : 03  
Value  : 00 00 00  
Tag  : 9F 35  
Length  : 01  
Value  : 25  
NEO Interface Developers Guide    
    372 
Tag  : 9F 36  
Length  : 02  
Value  : 05 AC  
Tag  : 9F 37  
Length  : 04  
Value  : 3E CE 50 B9 
Tag  : 9F 39  
Length  : 01  
Value  : 91  
Tag  : 9F 53  
Length  : 01  
Value  : 00  
Tag  : DF 81 29  
Length  : 08  
Value  : 30 F0 F0 00 30 F0 FF 00  
*****Embedded TLV Begin (FF 81 06 )***** 
Tag  : FF 81 06  
Length  : 44  
Tag  : DF 81 2A  
Length  : C1 20  
Value(Encryption Data): 
C6 9A 82 5D 19 7A 9E AE FC CF 50 39 66 88 21 C2 C9 EF 3B A9 B6 30 32 0E 7F 19 C0 4A A0 77 C0 
EC  
Value(Decryption Data): 
DF 81 2A 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00  
Tag  : DF 81 2B  
Length  : C1 10  
Value(Encryption Data): 
92 95 3B 08 DF EA 80 31 E5 7F BB D2 91 55 3A 38  
Value(Decryption Data): 
DF 81 2B 07 00 01 00 00 01 00 2F 00 00 00 00 00  
Tag  : DF 81 15  
Length  : 06  
Value  : 00 00 00 00 00 FF  
*****Embedded TLV End (FF 81 06 )***** 
*****Embedded TLV Begin (FF 81 05 )***** 
Tag  : FF 81 05  
Length  : 79  
Tag  : 50  
Length  : 0A  
Value  : 4D 61 73 74 65 72 43 61 72 64  
Tag  : 84  
Length  : 07  
NEO Interface Developers Guide    
    373 
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 6D  
Length  : 02  
Value  : 00 01  
Tag  : 56  
Length  : C1 40  
Value(Encryption Data): 
AA 67 C3 F5 0A 86 04 3B A9 B3 86 09 C8 88 D5 20 69 24 2D 63 AC 2B 8F 05 83 67 F3 66 44 EB 61 
D2  
70 F9 61 A4 7B 91 60 4C 7C A5 C9 AA 09 9E 2C 53 FA 7E 6E C9 C7 8D EC AF C0 91 D9 37 ED 30 F6 
26  
Value(Decryption Data): 
56 3E 42 35 32 35 36 38 33 32 30 33 30 30 30 30 30 30 30 5E 53 75 70 70 6C 69 65 64 2F 4E 6F 74  
5E 31 32 31 32 35 30 32 30 35 39 31 30 31 34 35 32 31 35 33 31 31 31 31 31 31 31 31 31 31 31 32  
Tag  : 9F 6B  
Length  : C1 18  
Value(Encryption Data): 
0E 0C 92 E0 FC 96 1A 19 EC EB E1 E8 40 E4 8B D1 37 7F B0 9C DF 6D EB D6  
Value(Decryption Data): 
9F 6B 13 52 56 83 20 30 00 00 00 D1 21 25 02 51 71 01 45 21 53 2F 00 00  
*****Embedded TLV End (FF 81 05 )***** 
*****Embedded TLV Begin (FF EE 01 )***** 
Tag  : FF EE 01  
Length  : 3C  
Tag  : DF 30  
Length  : 01  
Value  : 00  
Tag  : DF 31  
Length  : C1 20  
Value(Encryption Data): 
FC 47 AC 22 D0 C7 AE 1B E9 A4 AD F2 7F 8E 60 B1 4E F0 92 73 5D EF CE 9B BA 3D CA BF B1 48 40 
BB  
Value(Decryption Data): 
DF 31 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00 00  
Tag  : DF 32  
Length  : C1 10  
Value(Encryption Data): 
A3 1C EC AE 13 AF 03 7C 3A DE EC 45 7B BC DA 8A  
Value(Decryption Data): 
DF 32 0D 30 30 30 31 30 30 30 30 30 31 30 30 32  
*****Embedded TLV End (FF EE 01 )***** 
Tag  : DF EE 26  
Length  : 01  
Value  : 81  
Tail  : 28 F9 

NEO Interface Developers Guide    
    374 
Appendix A.7: AES Data Encryption Examples 
Examples are given for MSR data as well as ICC data. Note that data for the former will be in a 
different format than data for the latter. The former uses the Enhanced Encrypted MSR Data 
Output Format (see later appendix, or see ID TECH document P/N 80000403-001). By contrast, 
ICC data comes back as TLV data, preceded by a ViVOtech2 header with command and response 
bytes and two length bytes, and followed by a 16-bit CRC. 
Step 1 Data encryption Enable 
[TX] - 56 69 56 4F 74 65 63 68 32 00 C7 36 00 01 01 B7 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 C7 00 00 00 86 6E 
Step 2 Do a transaction 
Burst Mode OFF and Poll on Demand Mode 
Burst off 
[TX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 04 FF F7 01 00 B9 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Poll on demand 
[TX] - 56 69 56 4F 74 65 63 68 32 00 01 01 00 01 01 D7 34  
[RX] - 56 69 56 4F 74 65 63 68 32 00 01 00 00 00 12 53 
Activate transaction and then Swipe card or Tap card 
[TX] - 56 69 56 4F 74 65 63 68 32 00 02 01 00 0A 0A 9F 02 06 00 00 00 00 
10 00 AB 6C  
[RX] - MSR and contactless Card DATA As below 
--MSR card data 
56 69 56 4F 74 65 63 68 32 00     Protocol Header (ViVOtech2\0) 
02              Command  
00            Status Code 
01 4D            Data Length MSB & LSB 
8A                                                                  Attribution 
DF EE 23                                                        MSR Tag 
82                                                                 MSR Data length indicator 
01 35                                                             MSR Data length 
02 2F 01 80 1F 44 28 00 93 9B 25 2A               Enhanced Encrypted MSR Field Data 
36 35 31 30 2A 2A 2A 2A 2A 2A 2A 2A              (see Appendix A.11 for format) 
NEO Interface Developers Guide    
    375 
30 30 32 36 5E 43 41 52 44 2F 49 4D  
41 47 45 20 30 33 20 20 20 20 20 20  
20 20 20 20 20 20 20 5E 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 3F 2A 3B 36 35 31 30 2A  
2A 2A 2A 2A 2A 2A 2A 30 30 32 36 3D  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 3F 2A EB AB  
97 04 89 00 E7 C6 5D BC FB BC F9 B3  
B5 CA FC 1F 2C A0 AF 39 EC D2 C0 84  
15 E4 E9 B9 9D 06 A3 BB B0 91 70 E1  
76 B2 C2 17 90 88 84 22 A8 3C D7 12  
EA B5 DC A4 A7 0B 5D A0 65 9B C1 73  
09 31 92 1F 7B 23 2E F6 FA 1D A4 0A  
65 19 BB E1 39 4D 80 EC E5 50 73 BB  
BD 82 99 65 D2 EF E2 91 26 97 BA 56  
C4 62 C8 18 70 F2 DE 1C AC 97 95 6C  
0E 48 5E 8C 9F BB 62 EE 55 E7 47 B1  
43 94 B2 D7 F4 31 51 48 AB 78 7E 8B  
8D 05 DC 8A C9 07 9E FC 98 53 27 0B  
ED B9 10 02 52 D6 AA D8 46 CB 85 69  
24 FE 7C 93 52 0B 36 DA D9 25 00 00  
00 00 00 00 00 00 00 00 62 99 49 01  
2C 00 04 60 00 01 59 23 03 
9F 39 01 90                                                                Point of Service (POS) Entry Mode 
FF EE 01 04                                                                ViVOPay Group Tag 
DF 30 01 0C                                                               Track Data Source 
DF EE 26 01 8A                                                           Encrypt Information 
B4 A2              CRC (MSB & LSB) 
-- MasterCard Contactless (PayPass) card data 
The data will come back in the encrypted ICC format: 
<PREAMBLE><Attribution Byte><KSN TLV><Track1 TLV(optional)><Track2 
TLV(optional)><Clear Record TLV(optional)><Other TLVs><CRC> 
The preamble is 14 bytes, as before (see example immediately above). The Attribution Byte will have a 
value of 0x81 or 0x83 for contactless TDES or AES, respectively. (The lowest bit is a Contactless flag. The 
second bit is a TDES/AES flag. The highest bit is a Encryption State flag. See Chapter 9.) The TLV data 
section consists of tag, length, value triplets.The CRC is a 16-bit cyclic redundancy check of the entire data 
packet, including the preamble. 
Raw data: 
56 69 56 4F 74 65 63 68 32 00 02 23 01 A1 83 FF EE 12 0A 62 99 49 01 2C 
00 04 60 00 02 82 02 00 00 95 05 00 00 00 00 00 9A 03 14 08 10 9C 01 00 
5F 2A 02 08 40 9F 02 06 00 00 00 00 10 00 9F 03 06 00 00 00 00 00 00 9F 
NEO Interface Developers Guide    
    376 
06 07 A0 00 00 00 04 10 10 9F 09 02 00 02 9F 1A 02 08 40 9F 1E 08 30 30 
30 30 30 30 30 30 9F 21 03 12 03 12 9F 33 03 00 00 E8 9F 34 03 00 00 00 
9F 35 01 25 9F 36 02 05 AD 9F 37 04 12 1A 26 E5 9F 39 01 91 9F 53 01 00 
DF 81 29 08 30 F0 F0 00 30 F0 FF 00 FF 81 06 44 DF 81 2A C1 20 41 9C 87 
3B C8 E8 0E 5A 20 3D 75 E4 36 55 44 BA 2A EA BE 84 A5 9D F5 CE 68 60 FA 
85 B6 A6 C8 81 DF 81 2B C1 10 D2 0A FE 17 44 FC 6D 4E 7D 57 33 94 31 6F 
5F A9 DF 81 15 06 00 00 00 00 00 FF FF 81 05 81 81 50 0A 4D 61 73 74 65 
72 43 61 72 64 84 07 A0 00 00 00 04 10 10 9F 6D 02 00 01 56 C1 40 32 16 
A8 D7 1F 47 35 4B 66 69 F7 33 05 C7 4F 74 0B C3 1C 52 13 C5 D9 53 04 CD 
BB DF 56 10 D1 AE DE 51 5D 08 D6 CB C6 EA 55 74 89 48 FB 78 25 55 B0 EF 
50 66 4B 5A 71 BD 29 C0 0E 25 C2 E1 0B 86 9F 6B C1 20 4F 23 3E 0D CE 3E 
D4 E2 84 A8 D8 91 29 DE 84 FE D3 C6 67 A4 8F F6 13 97 6B D4 0D 68 C3 DF 
62 4A FF EE 01 3C DF 30 01 00 DF 31 C1 20 F5 C5 F0 6A 13 8A 8F 5E B6 51 
5B 72 6C 2F 0B 78 8F E4 38 6C A2 1E 05 7F D8 C5 B4 DF 75 E9 CC 1A DF 32 
C1 10 5F 6E DE AA 68 C6 DE FD 61 8C 5C 54 51 95 07 6D DF EE 26 01 83 B8 
33 
Parsed data: 
Head  : 56 69 56 4F 74 65 63 68 32 00 02 23 
Data  : 01 A1 83  
Tag  : FF EE 12  
Length  : 0A  
Value  : 62 99 49 01 2C 00 04 60 00 02  
Tag  : 82  
Length  : 02  
Value  : 00 00  
Tag  : 95  
Length  : 05  
Value  : 00 00 00 00 00  
Tag  : 9A  
Length  : 03  
Value  : 14 08 10  
Tag  : 9C  
Length  : 01  
Value  : 00  
Tag  : 5F 2A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 02  
Length  : 06  
Value  : 00 00 00 00 10 00  
Tag  : 9F 03  
Length  : 06  
Value  : 00 00 00 00 00 00  
Tag  : 9F 06  
Length  : 07  
NEO Interface Developers Guide    
    377 
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 09  
Length  : 02  
Value  : 00 02  
Tag  : 9F 1A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 1E  
Length  : 08  
Value  : 30 30 30 30 30 30 30 30  
Tag  : 9F 21  
Length  : 03  
Value  : 12 03 12  
Tag  : 9F 33  
Length  : 03  
Value  : 00 00 E8  
Tag  : 9F 34  
Length  : 03  
Value  : 00 00 00  
Tag  : 9F 35  
Length  : 01  
Value  : 25  
Tag  : 9F 36  
Length  : 02  
Value  : 05 AD  
Tag  : 9F 37  
Length  : 04  
Value  : 12 1A 26 E5  
Tag  : 9F 39  
Length  : 01  
Value  : 91  
Tag  : 9F 53  
Length  : 01  
Value  : 00  
Tag  : DF 81 29  
Length  : 08  
Value  : 30 F0 F0 00 30 F0 FF 00  
*****Embedded TLV Begin (FF 81 06 )***** 
Tag  : FF 81 06  
Length  : 44  
Tag  : DF 81 2A  
NEO Interface Developers Guide    
    378 
Length  : C1 20  
Value(Encryption Data): 
41 9C 87 3B C8 E8 0E 5A 20 3D 75 E4 36 55 44 BA 2A EA BE 84 A5 9D F5 CE 68 60 FA 85 B6 A6 C8 
81  
Value(Decryption Data): 
DF 81 2A 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00  
Tag  : DF 81 2B  
Length  : C1 10  
Value(Encryption Data): 
D2 0A FE 17 44 FC 6D 4E 7D 57 33 94 31 6F 5F A9  
Value(Decryption Data): 
DF 81 2B 07 00 01 00 00 01 00 2F 00 00 00 00 00  
Tag  : DF 81 15  
Length  : 06  
Value  : 00 00 00 00 00 FF  
*****Embedded TLV End (FF 81 06 )***** 
*****Embedded TLV Begin (FF 81 05 )***** 
Tag  : FF 81 05  
Length  : 81 81  
Tag  : 50  
Length  : 0A  
Value  : 4D 61 73 74 65 72 43 61 72 64  
Tag  : 84  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 6D  
Length  : 02  
Value  : 00 01  
Tag  : 56  
Length  : C1 40  
Value(Encryption Data): 
  32 16 A8 D7 1F 47 35 4B 66 69 F7 33 05 C7 4F 74 0B C3 1C 52 13 C5 D9 53 04 CD BB DF 56 
10 D1 AE  
  DE 51 5D 08 D6 CB C6 EA 55 74 89 48 FB 78 25 55 B0 EF 50 66 4B 5A 71 BD 29 C0 0E 25 C2 
E1 0B 86  
Value(Decryption Data): 
  56 3E 42 35 32 35 36 38 33 32 30 33 30 30 30 30 30 30 30 5E 53 75 70 70 6C 69 65 64 2F 
4E 6F 74  
  5E 31 32 31 32 35 30 32 35 37 38 31 30 31 34 35 33 31 30 33 31 31 31 31 31 31 31 31 31 
31 31 32  
Tag  : 9F 6B  
Length  : C1 20  
Value(Encryption Data): 
4F 23 3E 0D CE 3E D4 E2 84 A8 D8 91 29 DE 84 FE D3 C6 67 A4 8F F6 13 97 6B D4 0D 68 C3 DF 62 
4A  
Value(Decryption Data): 
9F 6B 13 52 56 83 20 30 00 00 00 D1 21 25 02 55 91 01 45 31 03 2F 00 00 00 00 00 00 00 00 00 00  
NEO Interface Developers Guide    
    379 
*****Embedded TLV End (FF 81 05 )***** 
*****Embedded TLV Begin (FF EE 01 )***** 
Tag  : FF EE 01  
Length  : 3C  
Tag  : DF 30  
Length  : 01  
Value  : 00  
Tag  : DF 31  
Length  : C1 20  
Value(Encryption Data): 
F5 C5 F0 6A 13 8A 8F 5E B6 51 5B 72 6C 2F 0B 78 8F E4 38 6C A2 1E 05 7F D8 C5 B4 DF 75 E9 CC 
1A  
Value(Decryption Data): 
DF 31 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00 00  
Tag  : DF 32  
Length  : C1 10  
Value(Encryption Data): 
5F 6E DE AA 68 C6 DE FD 61 8C 5C 54 51 95 07 6D  
Value(Decryption Data): 
DF 32 0D 30 30 30 31 30 30 30 30 30 31 30 30 32  
*****Embedded TLV End (FF EE 01 )***** 
Tag  : DF EE 26  
Length  : 01  
Value  : 83  
Tail  : B8 33 

NEO Interface Developers Guide    
    380 
Burst Mode OFF and Auto Poll Mode 
Burst mode OFF 
[TX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 04 FF F7 01 00 B9 2E  
[RX] - 56 69 56 4F 74 65 63 68 32 00 04 00 00 00 AE 16 
Auto poll 
[TX] - 56 69 56 4F 74 65 63 68 32 00 01 01 00 01 00 F6 24  
[RX] - 56 69 56 4F 74 65 63 68 32 00 01 00 00 00 12 53 
Swipe card or Tap card 
Get transaction result 
[TX] - 56 69 56 4F 74 65 63 68 32 00 03 00 00 00 3B FF  
[RX] MSR and contactless Card DATA As below 
--MSR card data 
56 69 56 4F 74 65 63 68 32 00     Protocol Header (ViVOtech2\0) 
03              Command  
00            Status Code 
01 4D             Data Length MSB & LSB 
8A                                                                 Attribution 
DF EE 23                                                        MSR Tag 
82                                                                 MSR Data length indicator 
01 35                                                             MSR Data length 
02 2F 01 80 1F 44 28 00 93 9B 25 2A                Enhanced Encrypted MSR Field Data 
36 35 31 30 2A 2A 2A 2A 2A 2A 2A 2A              (see Appendix A.11 for format) 
30 30 32 36 5E 43 41 52 44 2F 49 4D  
41 47 45 20 30 33 20 20 20 20 20 20  
20 20 20 20 20 20 20 5E 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 3F 2A 3B 36 35 31 30 2A  
2A 2A 2A 2A 2A 2A 2A 30 30 32 36 3D  
2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  
2A 2A 2A 2A 2A 2A 2A 2A 3F 2A EB AB  
97 04 89 00 E7 C6 5D BC FB BC F9 B3  
B5 CA FC 1F 2C A0 AF 39 EC D2 C0 84  
15 E4 E9 B9 9D 06 A3 BB B0 91 70 E1  
76 B2 C2 17 90 88 84 22 A8 3C D7 12  
EA B5 DC A4 A7 0B 5D A0 65 9B C1 73  
09 31 92 1F 7B 23 2E F6 FA 1D A4 0A  
NEO Interface Developers Guide    
    381 
65 19 BB E1 39 4D 80 EC E5 50 73 BB  
BD 82 99 65 D2 EF E2 91 26 97 BA 56  
C4 62 C8 18 70 F2 DE 1C AC 97 95 6C  
0E 48 5E 8C 9F BB 62 EE 55 E7 47 B1  
43 94 B2 D7 F4 31 51 48 AB 78 7E 8B  
8D 05 DC 8A C9 07 9E FC 98 53 27 0B  
ED B9 10 02 52 D6 AA D8 46 CB 85 69  
24 FE 7C 93 52 0B 36 DA D9 25 00 00  
00 00 00 00 00 00 00 00 62 99 49 01  
2C 00 04 60 00 01 59 23 03 
9F 39 01 90                                                                Point of Service (POS) Entry Mode 
FF EE 01 04                                                                ViVOPay Group Tag 
DF 30 01 0C                                                               Track Data Source 
DF EE 26 01 8A                                                           Encrypt Information  
BB 8C              CRC (MSB & LSB)
NEO Interface Developers Guide    
    382 
-- MasterCard Contactless (PayPass) card data 
Raw data: 
56 69 56 4F 74 65 63 68 32 00 03 23 01 91 83 FF EE 12 0A 62 99 49 01 2C 
00 04 60 00 03 82 02 00 00 95 05 00 00 00 00 00 9A 03 14 08 10 9C 01 00 
5F 2A 02 08 40 9F 02 06 00 00 00 00 00 01 9F 03 06 00 00 00 00 00 00 9F 
06 07 A0 00 00 00 04 10 10 9F 09 02 00 02 9F 1A 02 08 40 9F 1E 08 30 30 
30 30 30 30 30 30 9F 21 03 12 09 12 9F 33 03 00 00 E8 9F 34 03 00 00 00 
9F 35 01 25 9F 36 02 14 97 9F 37 04 71 33 B7 9A 9F 39 01 91 9F 53 01 00 
DF 81 29 08 30 F0 F0 00 30 F0 FF 00 FF 81 06 44 DF 81 2A C1 20 7E 75 B6 
C3 C9 56 2F F0 9F 96 0B 3D D7 6D 14 05 88 88 46 66 BB 7C 77 E9 EA 08 BB 
E7 4B 64 67 3E DF 81 2B C1 10 25 7D 55 0C 4B 98 A3 58 37 BA C9 4D EC 49 
4C 32 DF 81 15 06 00 00 00 00 00 FF FF 81 05 81 81 50 0A 4D 61 73 74 65 
72 43 61 72 64 84 07 A0 00 00 00 04 10 10 9F 6D 02 00 01 56 C1 40 E0 A0 
6E E3 6D B6 D0 DA E7 AE C5 5B 62 6E 1E 6E A7 A0 BD 32 4B B6 F9 56 4A 42 
62 D5 B1 BB 27 14 B6 6E 69 EF 72 61 AD 9F 48 52 38 12 23 E9 8B C6 86 8F 
7A B8 7B FA A1 04 18 7C 67 D0 13 21 F5 67 9F 6B C1 20 F0 30 4E EB A0 63 
0A E1 6E EA D6 F6 2A 0A CC 46 04 D6 17 68 AA 4D 06 5D 62 87 B0 76 EB FE 
D6 B4 FF EE 01 2C DF 30 01 00 DF 31 C1 10 96 82 E1 B2 47 DC 01 59 98 D0 
FF A6 00 C3 37 C3 DF 32 C1 10 00 2C 77 11 34 E8 1D 52 52 84 54 42 27 71 
00 27 DF EE 26 01 83 E6 31 
Parsed data: 
Head  : 56 69 56 4F 74 65 63 68 32 00 03 23 
Data  : 01 A1 83  
Tag  : FF EE 12  
Length  : 0A  
Value  : 62 99 49 01 2C 00 04 60 00 03  
Tag  : 82  
Length  : 02  
Value  : 00 00  
Tag  : 95  
Length  : 05  
Value  : 00 00 00 00 00  
Tag  : 9A  
Length  : 03  
Value  : 14 08 10  
Tag  : 9C  
Length  : 01  
Value  : 00  
Tag  : 5F 2A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 02  
Length  : 06  
Value  : 00 00 00 00 00 01  
NEO Interface Developers Guide    
    383 
Tag  : 9F 03  
Length  : 06  
Value  : 00 00 00 00 00 00  
Tag  : 9F 06  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 09  
Length  : 02  
Value  : 00 02  
Tag  : 9F 1A  
Length  : 02  
Value  : 08 40  
Tag  : 9F 1E  
Length  : 08  
Value  : 30 30 30 30 30 30 30 30  
Tag  : 9F 21  
Length  : 03  
Value  : 12 03 18  
Tag  : 9F 33  
Length  : 03  
Value  : 00 00 E8  
Tag  : 9F 34  
Length  : 03  
Value  : 00 00 00  
Tag  : 9F 35  
Length  : 01  
Value  : 25  
Tag  : 9F 36  
Length  : 02  
Value  : 05 AE  
Tag  : 9F 37  
Length  : 04  
Value  : F8 BF B4 C4  
Tag  : 9F 39  
Length  : 01  
Value  : 91  
Tag  : 9F 53  
Length  : 01  
Value  : 00  
Tag  : DF 81 29  
NEO Interface Developers Guide    
    384 
Length  : 08  
Value  : 30 F0 F0 00 30 F0 FF 00  
*****Embedded TLV Begin (FF 81 06 )***** 
Tag  : FF 81 06  
Length  : 44  
Tag  : DF 81 2A  
Length  : C1 20  
Value(Encryption Data): 
8A 25 46 F5 06 C6 62 6A 6E 9F CD E4 9D 3D 87 0F 4B 39 95 83 6C 0E 69 A6 A5 B2 36 CA 2B 6F 
EB E0  
Value(Decryption Data): 
DF 81 2A 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 
00  
Tag  : DF 81 2B  
Length  : C1 10  
Value(Encryption Data): 
CB CF 47 87 FE 98 8E CA C7 75 18 61 3E E0 49 D2  
Value(Decryption Data): 
DF 81 2B 07 00 01 00 00 01 00 2F 00 00 00 00 00  
Tag  : DF 81 15  
Length  : 06  
Value  : 00 00 00 00 00 FF  
*****Embedded TLV End (FF 81 06 )***** 
*****Embedded TLV Begin (FF 81 05 )***** 
Tag  : FF 81 05  
Length  : 81 81  
Tag  : 50  
Length  : 0A  
Value  : 4D 61 73 74 65 72 43 61 72 64  
Tag  : 84  
Length  : 07  
Value  : A0 00 00 00 04 10 10  
Tag  : 9F 6D  
Length  : 02  
Value  : 00 01  
Tag  : 56  
Length  : C1 40  
Value(Encryption Data): 
6A 85 B3 98 02 AC D6 6A B7 5D AB 39 17 AD F1 DE 35 78 57 46 D8 AA E3 0D 0A 3B 5B E7 67 AD 
C1 BF  
FE CD 7D 9A 53 F1 F1 F3 77 55 35 4E C1 60 0C 0D 3F B8 28 BA 67 8F 73 8C 70 2E 8B 23 54 1F 
DC F5  
Value(Decryption Data): 
NEO Interface Developers Guide    
    385 
56 3E 42 35 32 35 36 38 33 32 30 33 30 30 30 30 30 30 30 5E 53 75 70 70 6C 69 65 64 2F 4E 6F 
74  
5E 31 32 31 32 35 30 32 32 32 32 31 30 31 34 35 34 31 37 33 31 31 31 31 31 31 31 31 31 31 31 
32  
Tag  : 9F 6B  
Length  : C1 20  
Value(Encryption Data): 
1F 3D 43 55 15 93 7A A3 F9 4D 67 D5 56 78 DB 44 89 D7 EE A7 D5 2D 67 0D B6 E6 F7 16 83 21 
E5 39  
Value(Decryption Data): 
9F 6B 13 52 56 83 20 30 00 00 00 D1 21 25 02 05 51 01 45 41 73 2F 00 00 00 00 00 00 00 00 00 
00  
*****Embedded TLV End (FF 81 05 )***** 
*****Embedded TLV Begin (FF EE 01 )***** 
Tag  : FF EE 01  
Length  : 3C  
Tag  : DF 30  
Length  : 01  
Value  : 00  
Tag  : DF 31  
Length  : C1 20  
Value(Encryption Data): 
D0 11 1B C1 20 27 BA 4A B5 8D 84 BE B0 D1 FF 73 FC 4A 80 94 C8 F0 35 D2 91 F4 FD CF 02 B3 
3B 96  
Value(Decryption Data): 
DF 31 18 30 30 30 31 30 30 30 30 30 31 30 30 31 31 31 31 31 31 31 31 31 31 31 32 00 00 00 00 
00  
Tag  : DF 32  
Length  : C1 10  
Value(Encryption Data): 
09 57 32 31 63 68 79 8F EF 6C C9 D9 0F 27 AC 82  
Value(Decryption Data): 
DF 32 0D 30 30 30 31 30 30 30 30 30 31 30 30 32  
*****Embedded TLV End (FF EE 01 )***** 
Tag  : DF EE 26  
Length  : 01  
Value  : 83  
Tail  : 91 CC 
NEO Interface Developers Guide    
    386 
Appendix A.8: Transaction Results for MSD2.0.2 AC3.0 
Cryptogram17 
The following provides information on the transaction results returned for MSD2.0.2 AC3.0 
Cryptogram17 transaction. 
[Header]       56 69 56 4F 74 65 63 68 32 00  
[Command byte] 02  
[Status Code]  23  
[Length]       01 66  
[T1]  4C  
42 34 30 30 35 35 37 38 30 30 30 30 33 38 36 36 33 5E 43 41 52 44 
48 4F 4C 44 45 52 2F 56 49 53 41 5E 31 30 31 32 32 30 31 30 31 32 
33 34 30 31 32 33 34 30 30 30 30 30 30 30 30 30 30 35 35 36 31 30 
31 31 32 33 36 35 30 30 30 30  
[T2]  25  
34 30 30 35 35 37 38 30 30 30 30 33 38 36 36 33 3D 31 30 31 32 32 
30 31 30 31 32 33 34 31 32 33 30 31 36 35 31  
[Clearing Record present] 01  
[Clearing Record] E1 7C  
9F 66 04 80 80 00 00  
9F 02 06 00 00 00 00 01 00  
9F 37 04 02 45 70 24  
5F 2A 02 08 40  
9F 26 08 74 13 75 A7 11 47 47 93  
9F 10 07 06 01 11 03 A0 00 00  
9F 36 02 00 A5  
9A 03 01 10 29  
9C 01 22  
95 05 00 00 00 00 00  
82 02 00 80  
9F 1A 02 08 40  
9F 03 06 00 00 00 00 00 00  
9F 6E 04 00 00 00 01  
9F 7C 1B 00 06 49 53 53 55 45 52 00 0B 50 52 4F 50 52 49 45 54 41 52 59 
00 04 44 41 54 41  
[End of clearing record] 
9F 6C 00  
5A 00  
5F 34 01 01  
5F 24 00  
50 0B 56 49 53 41 20 43 52 45 44 49 54  
57 13 40 05 57 80 00 03 86 63 D1 01 22 01 01 23 41 23 01 65 1F  
56 00  
9B 02 00 00  
5F 20 0F 43 41 52 44 48 4F 4C 44 45 52 2F 56 49 53 41  
9F 07 00  
9F 0D 05 FF FF FF FF FF  
9F 0E 05 00 00 00 00 00  
9F 0F 05 FF FF FF FF FF  
9F 06 07 A0 00 00 00 03 10 10  
9F 5D 00  
9F 74 00  
5F 25 00  
[CRC] 4D 0D 

NEO Interface Developers Guide    
    387 
AC3.0 Additional Tags Definition: 
Customer Exclusive 
Data 
9F7C 
TLV format 
Fixed length 
32 bytes 
This field is available for the issuer’s 
discretionary use. If the issuer 
wishes to put data in this field and 
have Visa act on it, they will need to 
contact Visa to have identifiers 
provided for that purpose. As is the 
current practice with other fields, 
Visa will transfer the issuer-selected 
data without viewing the information 
contained in the field. Issuer is 
responsible for ensuring its use of 
the field complies with all applicable 
laws and its own privacy policy. 
Note: The length of this field may be 
expanded to 255 in the future. 
Form Factor Indicator 
9F6E 
TLV format 
Fixed length  
4 bytes 
This field contains indicators about 
the attributes of cardholder’s device 
and the technology used for 
communication between the 
cardholder’s device and the 
acquiring POS device. 
For a list of valid values, refer to the 
Visa Contactless Payment 
Specification, Protocol 2.0.2, 
Including Additions and Clarification 
3.0, Personalization Profile—U.S. 
Region Implementation. 
Appendix A.9: Preparing Bitmaps for Use with ILM  
The serial ILM commands for language support require bitmap images to display messages. In 
place of 22 text string messages, ILM commands use 22 bitmap images to display messages. 
These bitmaps are downloaded to the reader as described in Download ILM Message Command.  
The bit map images used for ILM support must be modified before they can be downloaded to 
the reader. You need to make the following changes: 
 Replace the standard bmp header with a ViVOpay header 
 Invert the image orientation (top to bottom) 
 Invert the image color (black to white) 
 Reduce image size by cropping unused pixels 
All processing of regular monochrome bitmaps must be done before attempting to download the 
images to the reader. You cannot download color or grayscale images.  

NEO Interface Developers Guide    
    388 
ViVOpay BMP Header 
For each bitmap image, you must replace the standard bitmap header with a simplified ViVOpay 
header. The ViVOpay bitmap header is 12 bytes of data in the format shown in the following 
table, prefixed to the actual bitmap data: 
Bytes 
0-1 
Bytes 
2-3 
Bytes 
4-5 
Bytes 
6-7 
Bytes 
8-9 
Bytes 
10-11 
Bytes 
12…n 
Bitmap 
Length 
Row 
Number 
Column 
Number  Height  Width  Reserved  Bitmap 
data 
All variables in the header are 2 bytes long. 
Bitmap Length 
This data field contains the total number of bytes in the Bitmap Data Field. 
Row Number 
This data field contains the row offset that this image should start at. Value is in 
PIXELS. 
Column Number 
This data field contains the column offset that this image should start at. Value is 
in BYTES. 
Height 
This data field contains the number of rows (in pixels) that this image contains. 
Width 
This data field contains the number of columns (in bytes) that this image contains. 
Reserved 
This data field is reserved for future image manipulation options. 
Bitmap Data 
This is the actual image data. 
Inverting the Image  
The ViVOpay LCD expects each row of data in the opposite order than is in the bitmap. To invert 
the image you can employ row swapping. Assuming the bitmap is a 128 x 64 pixel image, each 16 
bytes of data constitutes one “row” of 128 pixels (128 pixels / 8 pixels/byte = 16 bytes). 
Reversing the order of each 16 bytes of data in this case inverts the image. 

NEO Interface Developers Guide    
    389 
Inverting the Color 
Compared to a regular monochrome bitmap, the image used with ILM commands has inverted 
color. White areas of the bitmap must be black and black areas white. To invert the color, each 
bit of a bitmap image must be reversed by performing a NOT operation on each byte of image 
data. 
For example, suppose that 8 pixels were stored as 0x43 (0100 0011 in binary). This value must 
be reversed with the logical NOT to become 0xBC (1011 1100 in binary). Thus, 0xBC on an LCD 
matches 0x43 displayed on a PC monitor. 
Image Cropping 
Although message bitmaps can be sent at maximum screen size, cropping the images speeds the 
download and uses less memory. Cropping MUST be done after all other processing of the bitmap 
image. Other operations may be done in any order (as long as cropping is done last). 
Cropping the image requires that you include the row number, column number, height and 
width parameters in the ViVOpay header. The Column Number/Row Numbers define where the 
upper-left corner of the bitmap is positioned. The Height and Width parameters determine the 
area the bitmap takes up on the LCD screen.  
 For example, here is a 128x64 pixel bitmap: 
Here is the same image with unnecessary white space cropped out. It is now 50x10 pixels: 
Cropping must be expressed in byte boundaries instead of pixels. For example, suppose you 
want to crop pixels 0 – 11 of a row of 128 pixels. Byte 0 (containing pixels 0-7) can be cropped 
NEO Interface Developers Guide    
    390 
but Byte 1 (containing pixels 8-15) cannot be cropped, since it contains bits of non-cropped data. 
Thus, in this case, the cropping would begin at the Byte 1 (i.e., Column 1 boundary). 

NEO Interface Developers Guide    
    391 
The following diagram shows how the header parameters are derived. 
The Row Number refers to the number of rows, each of which is a row of pixels. The Column 
Number refers to a byte location. So Row varies from 0 to 63, and the Column varies from 0 to 
15. 
Example 
The following is a simple example of a bitmap which measures 24x4 pixels (24 pixels per row, 4 
rows). All bitmap values shown are arbitrary (and in hexadecimal). 
Note: This example does NOT include image cropping. 
ACTUAL BMP: 
[14-byte BMP file header] + [40 byte DIB header] + 
[Bitmap Data = (11 00 00 00) (22 00 01 00) (33 00 01 00) (44 00 00 00)] 
First remove the headers. 
[Bitmap Data = (11 00 00 00) (22 00 01 00) (33 00 01 00) (44 00 00 00)] 
Then invert the image by swapping the rows. In this example, each row is 32 bits, i.e., 4 bytes 
long. Row 1 is swapped with the last row (4), Row 2 is swapped with the next-to-last row (3) and 
so on. 
0 
1 
2 
. 
. 
. 
. 
62 
63 
0  1  
NEO Interface Developers Guide    
    392 
[Bitmap Data = (44 00 00 00) (33 00 01 00) (22 00 01 00) (11 00 00 00)] 
Next reverse the bits. 
[Bitmap Data = (BB FF FF FF) (CC FF FE FF) (DD FF FE FF) (EE FF FF FF)] 
Analyze the image. If the image needs to be cropped for white space reduction, do it now. 
Calculate positioning parameters and generate the ILM header. 
[12 byte ILM header] + 
[Bitmap Data = [BB FF FF FF] [CC FF FE FF] [DD FF FE FF] [EE FF FF FF]] 
This modified image data is now ready to be displayed or stored on the ViVOpay LCD.  

NEO Interface Developers Guide    
    393 
Appendix A.10: Default Configuration 
ViVOpay readers are set to operate out of the box for many applications. This appendix 
describes the default operating mode and default TLV data object values that have not been 
previously covered. 
Refer to the Configuration Tag Tables for default TLV values. 
Communication Speed 
The default baud rate for most units is 19200. The baud rate itself is a configurable parameter 
that can be set as described in the Interface Developer's Guide. The ViVOpay readers can 
communicate on any COM port specified by the integrators application. Handshaking is disabled 
(8 N 1). 
Please note, baud rate for the ViVOpay Vendi reader is 9600. 
Polling Mode 
The default configuration for the firmware is Auto Poll. While operating in Auto Poll, the reader 
is constantly polling for contactless cards. When a card is presented to the field, reader 
completes the data exchange. Transaction data is obtained by the POS via GET TRANSACTION 
RESULT, READ FULL TRACK DATA, or a Burst Mode configuration. This poll mode is best suited 
for contactless-magstripe data transactions (i.e. PayPass Mag Stripe & payWave MSD).   
Auto Poll mode is not compatible with the EMEA User Interface configuration or M/Chip 3.0 
applications.  If you are using the EMEA UI or M/Chip 3.0, then you should configure the 
polling mode to be “Poll on Demand”.  Refer to the Set Poll Mode (01-01) command. 
Burst Mode 
While operating in Burst Mode, any time a valid contactless card is presented to the reader and 
the transaction completes successfully, the Burst Mode Payload Packet is immediately 
transmitted to the POS. The payload packet primarily consists of Track 1 and Track 2 data. 
The default configuration for the firmware is Bust Mode, Auto-Off. When configured in this 
fashion Burst Mode is fully active until receiving a transaction command (i.e. ACTIVATE 
TRANSACTION, GET TRANSACTION RESULT, etc.) at which time Burst Mode is disabled until the 
next power cycle. 
Burst Mode is only valid for contactless applications returning magstripe Track 1 and Track 2 
data, such as PayPass Magstripe & Visa payWave MSD.   
To configure burst mode, refer to the Global Configuration Tags table, tag FFF7h. 
The magstripe reader itself always operates in burst mode, regardless of the burst mode settings 
defined in the EMV parameters, meaning that any swipe at the magstripe reader will result in a 
payload packet immediately being sent across the serial interface. 
Burst mode output from the magstripe reader can be disabled with the Burst mode parameter.  
Refer to the Global Configuration Tags table, tag FFF7h. 
RTC/LCD/Buzzer/LED Source 
The ViVOpay readers are designed with flexibility in regards to the source of the Real Time 
Clock (RTC), Liquid Crystal Display (LCD), Buzzer, and Light Emitting Diodes (LED). Each of these 
components can be set to use a source internal or external to the ViVOpay unit. These 

NEO Interface Developers Guide    
    394 
components can also be disabled by setting the source to "none". As a default the source of each 
of these components is set as follows: 
RTC:    Internal for units with an RTC.  External for units without an RTC 
LCD:    Internal  
Buzzer:   Internal  
LED:    Internal 
To configure the RTC/LCD/Buzzer/LED source, refer to the Set/Get Source for 
RTC/LCD/Buzzer/LED (01-05) command. 

NEO Interface Developers Guide        
    395 
Default Message Index 
The LCD message set applied by the ViVOpay unit depends on the User Interface (UI), tag 'FF F8'.  As previously defined, the default UI is 
ViVOpay, and when setting a new UI (Visa Wave or EMEA) the associated message index must be loaded.   
The various UI message indexes are structured as follows. 
Message 
Index 
Dot Matrix LCD Display Message 
Indication  ViVOtech 
UI Scheme = '00' 
VisaWave 
 UI Scheme = '02' 
EMEA 
UI Scheme = '03' 
Language  Line
0x00 
  WELCOME  WELCOME  WELCOME 
ENG 
L1: 
L2:
"    Welcome     " 
"                " 
"    Welcome     " 
"                " 
"    Welcome     " 
"                " 
FRA 
L1: 
L2:
"   Bienvenue    " 
"                " 
"   Bienvenue    " 
"                " 
"   Bienvenue    " 
"                " 
ENG&FRA 
L1: 
L2: 
"    Welcome     " 
"   Bienvenue    " 
"    Welcome     " 
"   Bienvenue    " 
"    Welcome     " 
"   Bienvenue    " 
0x01 
TAP_OR_SWIPE_CARD 
THANK_YOU 
TAP_OR_SWIPE_CARD 
ENG 
L1: 
L2:
"  Please Tap Or " 
"   Swipe Card   " 
"   Thank You    " 
"                " 
"  Please Tap Or " 
"   Swipe Card   " 
FRA 
L1: 
L2:
"   Présentez    " 
"   carte SVP    " 
"     Merci      " 
"                " 
"   Présentez    " 
"   carte SVP    " 
ENG&FRA 
L1: 
L2: 
"  Tap Or Swipe" 
" Presentez Carte" 
"   Thank You    " 
"     Merci      " 
"Tap Or Swipe " 
" Presentez Carte" 
0x02 
NO_CARD 
THANK_YOU 
NO_CARD 
ENG 
L1: 
L2: 
"    No Card     " 
"                " 
"   Thank You    " 
"                " 
"    No Card     " 
"                " 
FRA 
L1: 
L2: 
"  Aucune carte  " 
"                " 
"     Merci      " 
"                " 
"  Aucune carte  " 
"                " 
ENG&FRA 
L1: 
L2:
"    No Card     " 
"  Aucune carte  " 
"   Thank You    " 
"     Merci      " 
"    No Card     " 
"  Aucune carte  " 
0x03 
PROCESSING 
TRANSACTION_COMPLETED 
NOT_CONNECTED 
ENG 
L1: 
L2: 
"   Processing   " 
"                " 
"   Transaction    " 
"   Completed    " 
"      Not       " 
"   Connected    " 
FRA 
L1: 
"    En cours    " 
"   Transaction    " 
"      Pas       " 

NEO Interface Developers Guide        
    396 
L2: 
"                " 
"    Terminée     " 
"   connecté     " 
ENG&FRA 
L1: 
L2: 
"   Processing   " 
" En Traitement  " 
"Transaction Done" 
"Transaction Comp" 
" Not Connected  " 
"  Pas connecté  " 
0x04 
THANK_YOU 
USE_OTHER_VISA_CARD 
CARD_READ_OK 
ENG 
L1: 
L2: 
"   Thank You    " 
"                " 
"   Please Use   " 
"Other VISA Card " 
"  Card Read OK  " 
"  Remove Card   " 
FRA 
L1: 
L2:
"     Merci      " 
"                " 
"  Utilisez une  " 
"autre carte VISA" 
" Lecture Carte OK  " 
"Retirez la carte" 
ENG&FRA 
L1: 
L2:
"   Thank You    " 
"     Merci      " 
"Use Other Card  " 
"Autre carte VISA " 
" Remove the card" 
"Retirez la carte" 
0x05 
CARD_FAIL 
SWIPE_CARD 
CARD_FAIL 
ENG 
L1: 
L2: 
"      Fail      " 
"                " 
"Use Alternative " 
" Payment Method " 
"      Fail      " 
"                " 
FRA 
L1: 
L2:
"      Échec     " 
"                " 
"   Insérez ou   " 
" Passez la carte " 
"      Échec     " 
"                " 
ENG&FRA 
L1: 
L2:
"  Card Failure  " 
"  Échec Carte   " 
"   Swipe Card   " 
"Passez la carte" 
"  Card Failure  " 
"  Échec Carte   " 
0x06 
AMOUNT 
1_CARD 
AMOUNT 
ENG 
L1: 
L2:
"    Amount:     " 
"                " 
"  Present One   " 
"   Card Only    " 
" Present Card:  " 
"                " 
FRA 
L1: 
L2:
"    Montant:    " 
"                " 
" Présentez une  " 
"  seule carte   " 
"Présentez carte:" 
"                " 
ENG&FRA 
L1: 
L2: 
"Amount/Montant: " 
"                " 
" Present 1 Card " 
"Présentez 1 Cart" 
"Purchase/Achat: " 
"                " 
0x07 
BALANCE 
INTERNATIONAL_CARD 
BALANCE 
ENG 
L1: 
L2: 
"    Balance:    " 
"                " 
" International  " 
"   Card Only    " 
"   Available:   " 
"                " 
FRA 
L1: 
L2: 
"     Solde:     " 
"                " 
" Internationale " 
" Carte Seulement" 
"   Disponible:  " 
"                " 
ENG&FRA 
L1: 
L2:
" Balance/Solde: " 
"                " 
" Card/Carte " 
"International(e) " 
"   Available:   " 
"   Disponible:  " 
0x08 
USE_CHIP_N_PIN 
TRY_AGAIN 
SWIPE_CARD 
ENG 
L1: 
L2: 
"    Use Chip    " 
"     & PIN      " 
"     Please     " 
"    Try Again   " 
"Use Alternative " 
" Payment Method " 
FRA 
L1: 
L2:
"    Utilisez    " 
"     la puce     " 
"   Ré-essayez    " 
"                " 
"   Insérez ou   " 
"Passez la carte" 
ENG&FRA 
L1: 
L2:
" Use Chip & PIN " 
"Utilizer la puce" 
"Please Try Again" 
"   Ré-essayez    " 
"    Swipe Card  " 
"Passez la carte" 
0x09 
TRY_AGAIN 
INTERNATIONAL_CARD 
TRY_AGAIN 
ENG 
L1: 
"     Please     " 
" International  " 
"    Try Again   " 

NEO Interface Developers Guide        
    397 
L2: 
"    Try Again   " 
"   Card Only    " 
"                " 
FRA 
L1: 
L2: 
"   Ré-essayez    " 
"                " 
" Internationale " 
" Carte Seulement" 
"   Ré-essayez    " 
"                " 
ENG&FRA 
L1: 
L2:
"Please Try Again" 
"   Ré-essayez    " 
" Card/Carte " 
"International(e) " 
"    Try Again   " 
"   Ré-essayez    " 
0x0A 
1_CARD 
SIGN_RECEIPT 
1_CARD 
ENG 
L1: 
L2:
"  Present One   " 
"   Card Only    " 
"     Please     " 
"  Sign Receipt  " 
"  Present One   " 
"   Card Only    " 
FRA 
L1: 
L2:
" Présentez une  " 
"  seule carte   " 
" Signez le recu " 
"                " 
" Présentez une  " 
"  seule carte   " 
ENG&FRA 
L1: 
L2:
" Present 1 Card " 
"Présentez 1 Cart" 
"  Sign Receipt " 
" Signez le recu " 
"Present 1 Card  " 
"Présentez 1 Cart" 
0x0B 
WAIT 
SIGN_RECEIPT 
WAIT 
ENG 
L1: 
L2:
"  Please Wait   " 
"                " 
"     Please     " 
"  Sign Receipt  " 
"  Please Wait   " 
"                " 
FRA 
L1: 
L2:
"    Attendez    " 
"                " 
"" Signez le recu " 
"                " 
"    Attendez    " 
"                " 
ENG&FRA 
L1: 
L2: 
"  Please Wait   " 
"    Attendez    " 
"  Sign Receipt " 
" Signez le recu " 
"  Please Wait   " 
"    Attendez    " 
0x0C 
REMOVE_CARD 
ENTER_PIN 
REMOVE_CARD 
ENG 
L1: 
L2:
"     Please     " 
"  Remove Card   " 
"     Please     " 
"   Enter PIN    " 
"     Please     " 
"  Remove Card   " 
FRA 
L1: 
L2: 
"    Enlevez     " 
"   carte SVP    " 
"Entrez votre " 
"      code      " 
"    Enlevez     " 
"   carte SVP    " 
ENG&FRA 
L1: 
L2:
"   Remove Card  " 
" Retirez  la Carte" 
"PIN EntryRequire" 
"Code exige" 
"   Remove Card  " 
" Retirez la Carte" 
0x0D 
APPROVED 
AVAIL_OFFLINE_AMOUNT 
APPROVED 
ENG 
L1: 
L2: 
"    Approved    " 
"                " 
" Offline Amount " 
"                " 
"    Approved    " 
"                " 
FRA 
L1: 
L2:
"    Approuvé    " 
"                " 
"    Montant     " 
"   hors ligne   " 
"    Approuvé    " 
"                " 
ENG&FRA 
L1: 
L2:
"    Approved    " 
"    Approuvé    " 
" Offline Amount " 
"  Mt hors ligne " 
"    Approved    " 
"    Approuvé    " 
0x0E 
NOT_AUTHORIZED 
ENTER_PIN 
DECLINED 
ENG 
L1: 
L2:
"      Not       " 
"   Authorized   " 
"     Please     " 
"    Enter PIN   " 
"    Declined    " 
"                " 
FRA 
L1: 
L2:
"       Non      " 
"    autorisé    " 
"Entrez votre " 
"      code      " 
"     Refusé     " 
"                " 
ENG&FRA 
L1: 
L2: 
" Not Authorized " 
"  Non autorisé  " 
"PIN EntryRequire" 
"Code exige" 
"    Declined    " 
"     Refusé     " 

NEO Interface Developers Guide        
    398 
0x0F 
DECLINED 
SIGNATURE_REQUIRED 
Reserved MSG16 
ENG 
L1: 
L2: 
"    Declined    " 
"                " 
"   Signature    " 
"    Required    " 
"                " 
"                " 
FRA 
L1: 
L2:
"     Refusé     " 
"                " 
"   Signature    " 
"     Requise   " 
"                " 
"                " 
ENG&FRA 
L1: 
L2:
"    Declined    " 
"     Refusé     " 
"SignatureRequire" 
"Signature Requise"6 
"                " 
"                " 
0x10 
TERMINATED 
Reserved MSG17 
Reserved MSG17 
ENG 
L1: 
L2:
"   Terminated   " 
"                " 
"                " 
"                " 
"                " 
"                " 
FRA 
L1: 
L2:
"    Terminé     " 
"                " 
"                " 
"                " 
"                " 
"                " 
ENG&FRA 
L1: 
L2: 
" Cannot Process " 
" Ne Peut Procés " 
"                " 
"                " 
"                " 
"                " 
0x11 
TRY_OTHER_INTERFACE 
TAP_OR_SWIPE_CARD 
TRY_OTHER_INTERFACE 
ENG 
L1: 
L2:
"    Try Other   " 
"    Interface   " 
"  Present Card  " 
"                " 
"    Try Other   " 
"    Interface   " 
FRA 
L1: 
L2: 
"Autre Interface " 
"                " 
" Présentez" 
"votre carte" 
"Autre Interface " 
"                " 
ENG&FRA 
L1: 
L2: 
"AnotherInterface" 
"Autre Interface " 
" Purchase/Achat  " 
"                " 
"AnotherInterface" 
"Autre Interface " 
0x12 
USE_OTHER_CARD 
REMOVE_CARD 
USE_OTHER_CARD 
ENG 
L1: 
L2: 
" Use Other Card " 
"                " 
"     Please     " 
"  Remove Card   " 
" Use Other Card " 
"                " 
FRA 
L1: 
L2:
" Use Other Card " 
"                " 
"     Enlevez    " 
"votre carte SVP " 
" Use Other Card " 
"                " 
ENG&FRA 
L1: 
L2:
" Use Other Card " 
"                " 
"  Remove Card   " 
"Retirez la Carte" 
" Use Other Card " 
"                " 
0x13 
TIMEOUT 
PROCESSING 
TIMEOUT 
ENG 
L1: 
L2:
"    Time Out    " 
"                " 
"   Processing   " 
"                " 
"    Time Out    " 
"                " 
FRA 
L1: 
L2:
"    Time Out    " 
"                " 
"    En cours    " 
"                " 
"    Time Out    " 
"                " 
ENG&FRA 
L1: 
L2: 
"    Time Out    " 
"                " 
"   Processing   " 
" En Traitement  " 
"    Time Out    " 
"                " 
0x14 
CANCEL 
DECLINED 
CANCEL 
ENG 
L1: 
"     Cancel     " 
"    Declined    " 
"     Cancel     " 
6 String length over 16 characters, LCD displays first 16 characters only. 

NEO Interface Developers Guide        
    399 
L2: 
"                " 
"                " 
"                " 
FRA 
L1: 
L2: 
"     Annuler    " 
"                " 
"     Refusé     " 
"                " 
"     Annuler    " 
"                " 
ENG&FRA 
L1: 
L2:
"     Cancel     " 
"     Annuler    " 
"    Declined    " 
"     Refusé     " 
"     Cancel     " 
"     Annuler    " 
0x15 
ONLINE 
TERMINATED 
ONLINE 
ENG 
L1: 
L2:
"  Authorizing   " 
"                " 
"   Terminated   " 
"                " 
"   Authorizing  " 
"                " 
FRA 
L1: 
L2:
" En Traitement  " 
"                " 
"    Terminé     " 
"                " 
"  En Traitement " 
"                " 
ENG&FRA 
L1: 
L2:
"   Processing   " 
"  En Traitement " 
" Cannot Process " 
" Ne Peut Procés " 
"   Processing   " 
"  En Traitement " 
0x16 
SEE_PHONE 
SEE_PHONE 
SEE_PHONE 
ENG 
L1: 
L2:
"    See Phone   " 
"                " 
"    See Phone   " 
"                " 
"    See Phone   " 
"                " 
FRA 
L1: 
L2:
"Entrée d'un code" 
"                " 
"Entrée d'un code" 
"                " 
"Entrée d'un code" 
"                " 
ENG&FRA 
L1: 
L2: 
" PassCode Entry " 
"Entrée d'un code" 
" PassCode Entry " 
"Entrée d'un code" 
" PassCode Entry " 
"Entrée d'un code" 
0x17 
NOT_ACCEPTED 
NOT_ACCEPTED 
NOT_ACCEPTED 
ENG 
L1: 
L2:
"  Not Accepted  " 
"                " 
"  Not Accepted  " 
"                " 
"  Not Accepted  " 
"                " 
FRA 
L1: 
L2: 
"   Pas accepté  " 
"                " 
"   Pas accepté  " 
"                " 
"   Pas accepté  " 
"                " 
ENG&FRA 
L1: 
L2:
"  Not Accepted  " 
"   Pas accepté  " 
"  Not Accepted  " 
"   Pas accepté  " 
"  Not Accepted  " 
"   Pas accepté  " 
0x18 
INSERT_CARD 
INSERT_CARD 
INSERT_CARD 
ENG 
L1: 
L2: 
"  Insert Card   " 
"                " 
"  Insert Card   " 
"                " 
"  Insert Card   " 
"                " 
FRA 
L1: 
L2:
"Insérez la carte" 
"                " 
"Insérez la carte" 
"                " 
"Insérez la carte" 
"                " 
ENG&FRA 
L1: 
L2:
"  Insert Card   " 
"Insérez la carte" 
"  Insert Card   " 
"Insérez la carte" 
"  Insert Card   " 
"Insérez la carte" 
0x19 
REFUND 
REFUND 
REFUND 
ENG 
L1: 
L2:
"     Refund     " 
"                " 
"     Refund     " 
"                " 
"     Refund     " 
"                " 
FRA 
L1: 
L2:
" Remboursement " 
"                " 
" Remboursement " 
"                " 
" Remboursement " 
"                " 
ENG&FRA 
L1: 
L2: 
"Refund" 
"Remboursement " 
"Refund" 
" Remboursement " 
"Refund" 
"Remboursement" 

NEO Interface Developers Guide        
    400 
0x1A 
STOP 
STOP 
STOP 
ENG 
L1: 
L2: 
"      STOP      " 
"                " 
"      STOP      " 
"                " 
"      STOP      " 
"                " 
FRA 
L1: 
L2:
"    Arrêtez     " 
"                " 
"    Arrêtez     " 
"                " 
"    Arrêtez     " 
"                " 
ENG&FRA 
L1: 
L2:
"      STOP      " 
"    Arrêtez     " 
"      STOP      " 
"    Arrêtez     " 
"      STOP      " 
"    Arrêtez     " 

NEO Interface Developers Guide  
    401 
Appendix A.11: Enhanced Encrypted MSR Data Output Format 
Definitive information on this format can be found in ID TECH document #80000403-001, Enhanced 
Encrypted MSR Data Output Format. Request a copy from your ID TECH representative. 
Note that data conforming to this standard will (as with EMV data) be framed within a ViVOtech2 
standard header or "preamble" (consisting of 14 bytes: ViVOtech2\0, command byte, response byte, 
two-byte length), at the beginning, plus a two-byte CRC at the end: 
<PREAMBLE><Attribution Byte><MSR TLV>< Point of Service (POS) Entry Mode TLV>< 
ViVOPay Group TLV>< Encrypt Information TLV><CRC> 
The 24 data fields can be parsed as shown below. Note that the first field is STX (0x02) and the last 
field is ETX (0x03). It's essential to inspect the flag bits in fields 8 and 9 to determine which of several 
optional fields are present, and also to determine whether encrypted fields are present (in which case, 
padding must be taken into account; see detailed description hereunder). 
The CRC is calculated using ALL upstream bytes of the data output (that is, using the preamble as well 
as the 24 fields of data). 
MSR DATA OUTPUT FORMAT 
Field #
Length 
in Bytes 
Optional  Field Name 
1 
1 
STX 
2 
2 
Data Length 
3 
1 
Card Encode Type 
4 
1 
Track Status 
5 
1 
Track1 data length 
6 
1 
Track2 data length 
7 
1 
Track3 data length 
8 
1 
Clear/mask data sent status 
9 
1 
Encrypted/Hash data sent status 
10 
Variable 
Y 
Track1 clear/mask data  
11 
Variable 
Y 
Track2 clear/mask data  
12 
Variable 
Y 
Track3 clear/mask data  
13 
Variable 
Y 
Track1 encrypted data  
14 
Variable 
Y 
Track2 encrypted data  
15 
Variable 
Y 
Track3 encrypted data  
16 
8 
Y 
Session ID (Security level 4 only) 
17 
20 
Y 
Track1 hashed (if encrypted) 
18 
20 
Y 
Track2 hashed (if encrypted) 
19 
20 
Y 
Track3 hashed (if encrypted) 
20 
10 
Y 
Reader Serial Number 
21 
10 
Y 
KSN 
22 
1 
LRC (XOR of all bytes from Field 3 to 21 inclusive) 
23 
1 
CheckSum (sum of all bytes from Field 3 to 21 
inclusive; take the low 8 bits of sum, only) 
24 
1 
ETX 
The presence/absence of Optional fields can be determined by inspecting flag bits in fields 8 and 9.  
Field 1: STX 

NEO Interface Developers Guide  
    402 
Start of Text. 0x02. 
Field 2: Data Length 
Data Length low byte comes first if it is output format 1, then Data Length high byte. 
Data Length high byte comes first if it is output format 2,then Data Length low byte. (Output format 2 
applies only to insert readers, not contactless.) 
Field 3: Card Encode Type: 
Value   Encode Type Description 
80  ISO 7813/ISO 4909/ABA format 
81  AAMVA format   
83  Other  
84  Raw; un-decoded format. All tracks are encrypted and no mask data is sent. No track indicator 
‘01’, ‘02’ or ‘03’ in front of each track. 
85  JIS II    Only supported in some products 
86     JIS I    Only supported in some products 
87  JIS II    SecureKey and Secure MIR 
Field 4: Track Status 
MSR sampling and decode status 
MSB                   LSB 
0 
0 
B5 
B4 
B3 
B2 
B1 
B0 
B0  1: Track 1 decode success (0: Track 1 decode fail)   
B1  1: Track 2 decode success (0: Track 2 decode fail) 
B2  1: Track 3 decode success (0: Track 3 decode fail) 
B3  1: Track 1 sampling data exists (0: Track 1 sampling data does not exist) 
B4  1: Track 2 sampling data exists (0: Track 2 sampling data does not exist) 
B5  1: Track 3 sampling data exists (0: Track 3 sampling data does not exist) 
  B6  0—reserved for future 
  B7  0—reserved for future 
Field 5: Track1 data length 
Field 6: Track2 data length 
Field 7: Track3 data length 
These one-byte values are the length of the actual Track data. It indicates the number of bytes 
in the Track masked data field. It should be used to separate Track 1, Track 2 and Track 3 data 
after decrypting Track encrypted data field. 
For ISO 7813 and ISO 4909 compliant Financial Transaction Cards: 
Track 1 maximum length is 79 alphanumeric characters. 
Track 2 maximum length is 40 numeric digits. 
Track 3 maximum length is 107 numeric digits. 
Field 8: Clear/mask data sent status byte and bit 0 is the least significant bit. 
  Bit 0: 1--- if Track1 clear/mask data present  
  Bit 1: 1--- if Track2 clear/mask data present 
  Bit 2: 1--- if Track3 clear/mask data present 
  Bit 3: 1— if fixed key; 0 DUKPT Key Management   
    Fixed key is only supported in some products 
  Bit 4:  0- TDES; 1 - AES     
Bit 5:  0- No requirement to use IC (1st digit in Service Code is different from 2 or 6; 1- Use IC 
where feasible (1st digit in Service Code is 2 or 6) 
Bit 6: 1--  Pin Encryption Key; 0 – Data Encryption Key   
    Refer ANSI X9.24 2009 Page 56 for details. 
  Bit7: 1 – Serial # present; 0- not present 
NEO Interface Developers Guide  
    403 
Field 9: Encrypted data sent status 
  Bit 0: if 1—track1 encrypted data present  
  Bit 1: if 1—track2 encrypted data present 
  Bit 2: if 1—track3 encrypted data present 
  Bit 3: if 1—track1 hash data present 
  Bit 4: if 1—track2 hash data present 
  Bit 5: if 1—track3 hash data present 
  Bit 6: if 1—session ID present  
  Bit 7: if 1—KSN present 
Fields 13, 14, & 15: These fields are the encrypted Track data, using either TDES-CBC or AES-CBC with 
initial vector of 0. If the original data is not a multiple of 8 bytes for TDES or a multiple of 16 bytes 
for AES, the reader pads the original data with trailing zeros. Hence, the length of the encrypted data 
could be greater than the length of the original (unencrypted) data. 
The key management scheme is DUKPT. For DUKPT, the key used for encrypting data is called the Data 
Key. Data Key is generated by first taking the DUKPT Derived Key XOR’d with 
0000000000FF00000000000000FF0000 to get the resulting intermediate variant key. The left side of the 
intermediate variant key is then TDES encrypted with the entire 16-byte variant as the key.  After the 
same steps are preformed for the right side of the key, combine the two key parts to create the Data 
Key. 
Note that Tracks 1, 2 and 3 of card data are encrypted separately. In order to get the number of bytes 
for each track’s encrypted data field, the field length is always a multiple of 8 bytes for TDES or 
multiple of 16 bytes for AES. (This value will be zero if there was no data on a track.) Once the 
encrypted data has been decrypted, all padding bytes need to be removed. The number of bytes of 
decoded track 1, 2, or 3 data is indicated by the track 1, 2, or 3 unencrypted length field (Fields 5, 6 
and 7, respectively). 
Field 16: Session ID (Security level 4 only; not applicable to Kiosk II/III nor Vendi) 
Field 17: Track1 hashed (if encrypted and hash track1 allowed) 
Field 18: Track2 hashed (if encrypted and hash track2 allowed) 
Field 19: Track3 hashed (if encrypted and hash track3 allowed) 
SHA-1 is used for non-SRED products and 20 zeroes are used for SRED products. Refer to applicable 
product manual for details. 
SHA-1 is used to generate hashed data for track 1 to track 3 unencrypted data. It is 20 bytes long for 
each track. This is provided with two purposes in mind: One is for the host to ensure data integrity by 
comparing this field with a SHA-1 hash of the decrypted Track data, as a safeguard against unexpected 
noise in data transmission. The other purpose is to enable the host to store a token of card data for 
future use without keeping the sensitive card-holder data itself. This token may be used for comparison 
with the stored hash data to determine if they are from the same card. 
Field 20: Reader Serial Number (optional); always 10 bytes (pad with leading 0x30 if <10 digits) 
Field 21: KSN (DUKPT only) 
Field 22: CheckLRC 
XOR of all data from Card Encode Type to end of KSN for Output Format 1 (contactless); XOR of all data 
before CheckLRC for Output Format 2 (insert readers). 
Field 23: CheckSum   Field Omitted if Output Format 2 (insert readers). 
Sum 
  Bottom 8 bits of SUM of all bytes values from Card Encode Type to end of KSN.  
Field 24: ETX 
NEO Interface Developers Guide  
    404 
End of Text (0x03).  
NEO Interface Developers Guide  
    405 
Appendix A.12: Encrypted Data Format, TLV-Based 
The information below is based, in part, on ID TECH P/N 80000502-001, ID Tech Encrypted Data Output 
Formats. Consult the latest version of that document for more information. 
For data passed in Tag/Length/Value (TLV) format, the Length value will be used to signal encryption 
and/or masking of the Value being received. If the bottom 5 bits are ON (that is, if Byte & 0x1F == 0x1F), 
then the next byte is also part of the tag. Likewise, if the most significant bit is ON (that is, if Byte & 0x80 
== 0x80), then the next byte is also part of the tag. 
Examples: 
  8F 02 03 04:  Tag = 8F 
  9F 02 03 04:  Tag = 9F02 
  BF A2 92 82:  Tag = BFA292 
Length 
  If the most significant bit (b7) of length is OFF, then that byte is, itself, the data length of the data 
to follow. 
  If the most significant bit (b7) is ON, then the lower nibble specifies the number of following bytes 
that contain the length of the data to follow. 
Standard TLV Examples 
  6F 12 13 14 15 . . .:  Tag is 6F, Length is 12, Data starts at 13 
  9F 20 81 82 83 84 . . .:  Tag is 9F20, Length is the 1 byte after 81, which is 0x82, data starts at 83 
  DF 81 01 82 01 02 03 . . .:  Tag is DF8101, Length is the 2 bytes after 82, which is 0x0102, data 
starts at 03 
Using Length Byte to Flag Mask and Encryption (IDTech Enhanced TLV) 
The Length bit shall be used when data is masked or encrypted: 
Bit 7 will be set to 1 
Bit 6 will be set to 1 if there is encryption 
Bit 5 will be set to 1 if there is a mask 
Bits 0-4 signify the amount of bytes that follow specifying the data length 
IDTech Enhanced TLV Examples 
  6F 12 13 14 15 . . .:  Tag is 6F, Length is 12, Data starts at 13, no mask/enc. 
  9F 20 C1 82 83 84 . . .:  Tag is 9F20, Length is the 1 byte after C1, which is 0x82, data is 
encrypted, data starts at 83 
  DF 81 01 A2 01 02 03 . . .:  Tag is DF8101, Length is the 2 bytes after A2, which is 0x0102, data 
is masked, data starts at 03 
Using Length Byte to Flag Mask and Encryption (IDTech Enhanced TLV): 
The Length bit shall be used when data is masked or encrypted: 
Bit 7 will be set to 1 
Bit 6 will be set to 1 if there is encryption 
Bit 5 will be set to 1 if there is a mask 
Bits 0-4 signify the amount of bytes that follow specifying the data length 
IDTech Enhanced TLV Examples: 
  6F 12 13 14 15 . . .:  Tag is 6F, Length is 12, Data starts at 13, no mask/enc. 

NEO Interface Developers Guide  
    406 
  9F 20 C1 82 83 84 . . .:  Tag is 9F20, Length is the 1 byte after C1, which is 0x82, data is 
encrypted, data starts at 83 
  DF 81 01 A2 01 02 03 . . .:  Tag is DF8101, Length is the 2 bytes after A2, which is 0x0102, data 
is masked, data starts at 03 
Encrypted/Masked TAG Note 
The following table shows the tags that will be encrypted and/or masked: 
Tag  Data Object
Note  Plaintext
Mask and format
Encryption and 
format 
5A  Application 
PAN 
   None  Mask 
5A A1 Len 
<value> 
This Value must 
be Masked 
according to 
PreCtlNum and 
PostCtlNum, then 
output. 
Encryption 
5A C1 Len 
<value> 
9F1F  Track 1 
Discretionary 
Data 
   None  None  Encryption 
9F 1F Cx Len 
<value> 
9F20  Track 2 
Discretionary 
Data 
   None  None  Encryption 
9F 20 Cx Len 
<value> 
57  Track 2 
Equivalent 
Data 
   None  None  Encryption 
57 Cx Len 
<value> 
56  Track 1 Data
1. MasterCard-Paypass 
(MagStripe) defines it 
2. DiscoverZip defines it. 
3. Visa MSD – Do not Define. 
4. Amex – Do not Define. 
5. PBOC– Do not Define. 
None  None  Encryption 
56 Cx Len 
<value> 
5F20  Cardholder 
Name 
   Full 
Plaintext 
None  None 
5F24  Expire Date     Full 
Plaintext 
None  None 
5F30  Service Code
   Full 
Plaintext 
None  None 
9F6B  Track 2 Data
1. MasterCard-Paypass 
(MagStripe) defines it 
2. DiscoverZip – Do not Define. 
None  None  Encryption 
9F 6B Cx Len 
<value> 

NEO Interface Developers Guide  
    407 
3. Visa MSD –Define it for ‘Card 
CVM Limit’. Now Do Not Encrypt 
it in Visa MSD. 
4. Amex – Do not Define. 
5. PBOC–Define it for ‘Card CVM 
Limit’. Now Do Not Encrypt it in 
PBOC. 
If it is used for Track2 Data. The 
value need be encrypted, then 
Output. 
FFEE13
Track 1 Data
1. DiscoverZip Need Use it. 
2. Visa MSD Need Use it. 
3. Amex Need Use it. 
4. PBOC Need Use it. 
None  None  Encryption 
FF EE 13 Cx Len 
<value> 
FFEE14
Track 2 Data
1. DiscoverZip Need Use it. 
2. Visa MSD Need Use it. 
3. Amex Need Use it. 
4. PBOC Need Use it. 
None  None  Encryption 
FF EE 13 Cx Len 
<value> 
Tag  Data Object  Note  Plaintext  Mask and format  Encryption and format 
DF812A  DD Card Track 1     None  None  Encryption 
DF 81 2A Cx Len <value>
DF812B  DD Card Track 2     None  None  Encryption 
DF 81 2B Cx Len <value>
DF31  DD Card Track 1     None  None  Encryption 
DF 31 Cx Len <value> 
DF32  DD Card Track 2     None  None  Encryption 
DF 32 Cx Len <value> 
Note: 
1. DiscoverZip has 56 Tag (Track 1 Data) and Formal Track1 & 2 Data (No Tags). So DiscoverZip will have 56, FF EE 13, FF 
EE 14 (3 Tags) later. 
2. Visa MSD, Amex, PBOC will have FF EE 13, FF EE 14 (2 Tags for Formal Track 1 & 2 Data) later. 
NEO Interface Developers Guide  
    408 
Track 1 (Tag 56) & 2 (Tag 9F6B) Mask Configuration Note 
Masked Area 
The data format of each masked track is ASCII or Hex. The clear data includes start and end sentinels, 
separators, first N, last M digits of the PAN, card holder name, expiry date and service code. The rest of 
the characters should be masked using mask character.  
1. Set PrePANClrData (N) 
1 byte parameter, range is 0~6, default value 4 
2. Set PostPANClrData (M) 
1 byte parameter, range is 0~4, default value 4 
3. Set DisplayExpirationDataID 
1 byte parameter, value is 0x30 (Mask) / 0x31 (Not Mask), default value 0x31 
4. Set MaskCharID (Mask Character) for Ascii Code Track Data 
1 byte parameter, range is 0x20~0x7E, default value 0x2A (*) 
5. Set MaskCharID (Mask Character) for Hex Code Track Data 
1 nibble parameter sent as byte value, range is 0x0A~0x0F, default value 0x0C 
6. Set ExpireDateOutputOpt 
1 byte parameter, value is 0x30 (Output Masked for Tag 57 and Only Output EncryptedValue for Tag 
5F24) / 0x31 (Output Plaintext), default value 0x31 
Example: 
  ASCII Pan clear data:  “012345678912” 
  Pre-PAN clear data characters:  5 
  Post-PAN clear data characters:  3 
  Mask Character = “*” 
  Masked Value = “01234****912” 
Hex value clear data:  0x012345678912 
  Pre-PAN clear data characters:  5 
  Post-PAN clear data characters:  3 
  Mask Character = 0x0C 
  Masked Value = 0x01234CCCC912 
Other Tag Value Mask Configuration Note 
1. Set PrePANClrData (N) 
1 byte parameter, range is 0~6, default value 4 
2. Set PostPANClrData (M) 
1 byte parameter, range is 0~4, default value 4 
3. Set MaskCharID (Mask Character) for Ascii Code Value 
1 byte parameter, range is 0x20~0x7E, default value 0x2A (*) 
4. Set MaskCharID (Mask Character) for Hex Code Value 
1 byte parameter, range is 0x0A~0x0F, default value 0x0C 
NEO Interface Developers Guide  
    409 
5. In 57 Tag Value, the data before 0xDx is PAN data, it need be Masked as Tag 5A Value.  
5. In 57 Tag Value, in the data 0xDy ym ms xz, yy mm is expiry date, and sxz is service code, they Need 
Not be Masked. 
6. In 57 Tag Value, the data after 0xDy ym ms xz are Other data, they need be Masked. 
Detailed – TLV Encrypted Response Format 
Example of Encrypting a TLV 
Example 1 
1. Plaintext 5A TLV data (5A 08 47 61 73 90 01 01 00 10) 
2. Encrypt this TLV data (5A 08 47 61 73 90 01 01 00 10) to be 16 bytes Encrypted Data (XX XX XX XX 
XX XX XX XX XX XX XX XX XX XX XX XX): 
  For TDES mode: The Length should be multiple of 8. If it was not multiple of 8, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 8). 
  For AES mode: The Length should be multiple of 16. If it was not multiple of 16, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 16). 
3. Re-Create New TLV data for Mask: 
  TAG is 5A 
  Length is A1 08: 
  A1 – Bit 7 is  1  note followed data length bytes. Bit 5 is  1 note data is Masked. Bit 0~4 (1)  data 
note followed n bytes (1 byte) data length.  
  08 – followed 8 bytes data 
  Data is 47 61 CC CC CC CC 00 10 (0x0C is Mask Data) 
4. Re-Create New TLV data for Encryption: 
  TAG is 5A 
  Length is C1 10: 
  C1 – Bit 7 is 1 note followed data length bytes. Bit 6 is 1 note data is Encrypted. Bit 0~4 (1) data 
note followed n bytes (1 byte) data length.  
  10 – followed 16 bytes data 
  Data is XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
Example 2 
1. Plaintext 57 TLV data (57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 58 98 93 89) 
2. Encrypt this TLV data (57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 58 98 93 89) to be 24 (TDES 
mode) or 32 bytes (AES mode) Encrypted Data: 
  For TDES mode: The Length should be multiple of 8. If it was not multiple of 8, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 8). 
  For AES mode: The Length should be multiple of 16. If it was not multiple of 16, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 16). 
NEO Interface Developers Guide  
    410 
3. Re-Create New TLV data for Mask: 
  TAG is 57 
  Length is A1 11: 
  A1 – Bit 7 is  1  note followed data length bytes. Bit 5 is  1 note data is Masked. Bit 0~4 (1)  data 
note followed n bytes (1 byte) data length.  
  11 – followed 17 bytes data 
  If  ExpireDataOutputOpt  was  set  “Output  Plaintext”,  expiry  date  and  service  code  all  Need  Not  be 
Masked. Data is 47 61 CC CC CC CC 00 10 D1 51 22 01 CC CC CC CC CC (0x0C is Mask Data): 
 47 61 73 90 01 01 00 10 is PAN, it Need be Masked same as 5A Tag Value 
  In D1 51 22 01, 1 51 2 is expiry date (2015year, December), 2 01 is service code, they all Need 
Not be Masked. 
  Followed them all Need be Masked. 
  If  ExpireDataOutputOpt  was  set  “Output  Plaintext”,  expiry  date  and  service  code  all  Need  Not  be 
Masked. Data is 47 61 CC CC CC CC 00 10 DC CC C2 01 CC CC CC CC CC (0x0C is Mask Data): 
 47 61 73 90 01 01 00 10 is PAN, it Need be Masked same as 5A Tag Value 
  In D1 51 22 01, 1 51 2 is expiry date (2015year, December) and Need be Masked, 2 01 is service 
code and it Need Not be Masked. 
  Followed them all Need be Masked. 
4. Re-Create New TLV data for Encryption (TDES mode): 
  TAG is 57 
  Length is C1 18: 
  C1 – Bit 7 is 1 note followed data length bytes. Bit 6 is 1 note data is Encrypted. Bit 0~4 (1) data 
note followed n bytes (1 byte) data length.  
  18 – followed 24 bytes data 
  Data is XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
Example 3 
1. Plaintext 9F 20 TLV data (9F 20 05 01 94 60 02 7F) 
2. Encrypt this TLV data (9F 20 05 01 94 60 02 7F) to be 8 (TDES mode) or 16 bytes (AES mode) 
Encrypted Data: 
  For TDES mode: The Length should be multiple of 8. If it was not multiple of 8, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 8). 
  For AES mode: The Length should be multiple of 16. If it was not multiple of 16, unit should zero 
padded y bytes data follow automatically (the length +y should be multiple of 16). 
3. Need Not Mask: 
4. Re-Create New TLV data for Encryption (TDES mode): 
  TAG is 9F 20 
  Length is C1 08: 
  C1 – Bit 7 is 1 note followed data length bytes. Bit 6 is 1 note data is Encrypted. Bit 0~4 (1) data 
note followed n bytes (1 byte) data length.  
  08 – followed 8 bytes data 
  Data is XX XX XX XX XX XX XX XX 
Example 4 
  If all TLVs are same level. 
NEO Interface Developers Guide  
    411 
Raw data: 57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 58 98 93 89 5A 08 47 61 73 90 01 01 00 10 84 
07 A0 00 00 00 03 10 10 9F 20 05 01 94 60 02 7F 
New data: 57 A1 11 47 61 CC CC CC CC 00 10 D1 51 22 01 CC CC CC CC CC 57 C1 18 XX XX XX XX 
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 5A A1 08 47 61 CC CC CC CC 
00 10 5A C1 10 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 84 07 A0 00 00 00 03 10 10 
9F 20 C1 08 XX XX XX XX XX XX XX XX 
  If all TLVs are not same level (PayPass application list Record). 
Raw Data:  
<FF 81 06 (Tag00)> <82 01 70 (Len00)> <TLV10> <TLV11>  
<FF 81 01 (Tag12)> <7F (Len12)> <TLV20> <TLV21> 57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 
58 98 93 89 5A 08 47 61 73 90 01 01 00 10 84 07 A0 00 00 00 03 10 10 9F 20 05 01 94 60 02 7F < 
TLV23 > … <TLV2n>  
<FF 81 01 (Tag13)> <7F (Len13)> <TLV20> <TLV21> 57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 
58 98 93 89 5A 08 47 61 73 90 01 01 00 10 84 07 A0 00 00 00 03 10 10 9F 20 05 01 94 60 02 7F < 
TLV23 > … <TLV2n>  
<TLV14> … <TLV1n> 
<FF 81 05 (Tag01)> <60 (Len01)> <TLV10> <TLV11> 57 11 47 61 73 90 01 01 00 10 D1 51 22 01 17 58 
98 93 89 5A 08 47 61 73 90 01 01 00 10 84 07 A0 00 00 00 03 10 10 9F 20 05 01 94 60 02 7F <TLV13> 
<TLV14> … 
New data: 
<FF 81 06 (Tag00)> <82 01 D5 (Len00)> <TLV10> <TLV11>  
<FF 81 01 (Tag12)> <81 B0 (Len12)> <TLV20> <TLV21> 57 A1 11 47 61 CC CC CC CC 00 10 D1 51 
22 01 CC CC CC CC CC 57 C1 18 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX XX 5A A1 08 47 61 CC CC CC CC 00 10 5A C1 10 XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX XX XX 84 07 A0 00 00 00 03 10 10 9F 20 C1 08 XX XX XX XX XX XX XX XX < 
TLV23 > … <TLV2n>  
<FF 81 01 (Tag13)> <81 B0 (Len13)> <TLV20> <TLV21> 57 A1 11 47 61 CC CC CC CC 00 10 D1 51 
22 01 CC CC CC CC CC 57 C1 18 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX XX 5A A1 08 47 61 CC CC CC CC 00 10 5A C1 10 XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX XX XX 84 07 A0 00 00 00 03 10 10 9F 20 C1 08 XX XX XX XX XX XX XX XX <TLV24> … 
<TLV2n>  
<TLV14> … <TLV1n> 
<FF 81 05 (Tag01)> <91 (Len01)> <TLV10> <TLV11> 57 A1 11 47 61 CC CC CC CC 00 10 D1 51 22 01 
CC CC CC CC CC 57 C1 18 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX 
XX XX XX 5A A1 08 47 61 CC CC CC CC 00 10 5A C1 10 XX XX XX XX XX XX XX XX XX XX XX XX 
XX XX XX XX 84 07 A0 00 00 00 03 10 10 9F 20 C1 08 XX XX XX XX XX XX XX XX <TLV14> 
<TLV15> … 
Command Format 
L2 commands do not carry sensitive data, hence the command can be plaintext. 
Response Formats 
KSN will be TLV format 
1.  3 bytes KSN Tag – DF EE 12 (FFEE12 is reserved for existing contactless products – it will later 
be replaced with DFEE12.) 
2.  1 byte Len – 0A 
NEO Interface Developers Guide  
    412 
3.  10 bytes KSN 
Contact L2 Response Format 
06 + <Transaction Result > <Attribution> [<TLV>] 
Where: 
1.  Transaction Result: 2 bytes (Approve, Decline, Other) 
2.  Attribution: 1 Byte 
  BIT0 – Card Type: 0 – Contact Card 
  BIT2,1 – Encryption Mode: 00 – TDES Mode, 01 – AES Mode 
  BIT3 – Card Type: 0 – Contact/Contactless Card. 1 – MSR. (For ViVOpay IDG) 
  BIT6~4 – Reserved 
  BIT7 – Encryption Status: 0 – Encryption OFF. 1 – Encryption ON. (For ViVOpay IDG) 
3.  <TLV> is optional only if transaction was Approved or Declined 
  <TLV> will include KSN as first tag (DFEE12) if new or changed since last KSN value. 
  Encryption (bit 6) and Masking (bit5) flags will be utilized as appropriate in the Length component of 
the TLV element 
Contactless L2 Response Format 
06 + <Status Code > <Error Code >< Attribution > [<TLV>] 
Where: 
1.  Status Code: 1 Byte. The usage is the same as in KioskII/KioskIII project and are used to specify if 
transaction was approved or declined. 
2.  Error  Code:  1  Byte.  The  usage  is  the  same  as  in  KioskII/KioskIII  project  and  are  used  to specify if 
transaction was approved or declined. 
3.  Attribution: 1 Byte 
  BIT0 – Card Type: 1 – Contactless Card 
  BIT2,1 – Encryption Mode: 00 – TDES Mode, 01 – AES Mode 
  BIT3 – Card Type: 0 – Contact/Contactless Card. 1 – MSR. (For ViVOpay IDG) 
  BIT6~4 – Reserved 
  BIT7 – Encryption Status: 0 – Encryption OFF. 1 – Encryption ON. (For ViVOpay IDG) 
4.  <TLV> is optional only if transaction was Approved or Declined 
  <TLV>  will  include  KSN  as  first  tag  (Tag  should  be  DFEE12,  FFEE12  is  reserved  for  existed 
contactless products – Later  it should be  replaced with DFEE12.) if new or changed since last 
KSN value. 
  Encryption (bit 6) and Masking (bit5) flags will be utilized as appropriate in the Length component of 
the TLV element 

NEO Interface Developers Guide  
    413 
Appendix A.13: Enhanced Encrypted MSR Data Output When 
Encryption is Turned On with C7-38 Command 
Enhanced Encrypted MSR Data Output Format for Bank Card 
When the C7-38 command is used, the parameter you supply (first column) will determine what kind of 
output occurs (remaining columns). For example, a parameter value of 0x00 results in masked Track 1 
and Track 2 data, cleartext data for Track 3, and encrypted and hashed (E+H) data for Tracks 1 & 2. 
C7-38 Parameter Value: 
Clear / Mask Data 
Encrypted / Hash Data 
Track 3 
Track 2 
Track 1 
Track 3 
Track 2 
Track 1 
Force Encryption with
0x00(0000) 
C 
M 
M 
E+H 
E+H 
0x01(0001) 
C 
M 
E+H 
E+H 
0x02(0010) 
C 
M 
E+H 
E+H 
0x03(0011) 
C 
E+H 
E+H 
0x04(0100) 
M 
M 
E+H 
E+H 
E+H 
0x05(0101) 
M 
E+H 
E+H 
E+H 
0x06(0110) 
M 
E+H 
E+H 
E+H 
0x07(0111) 
E+H 
E+H 
E+H 
0x08(1000) 
M 
M 
E+H 
E+H 
E+H 
0x09(1001) 
M 
E+H 
E+H 
E+H 
0x0A(1010) 
M 
E+H 
E+H 
E+H 
0x0B(1011) 
E+H 
E+H 
E+H 
0x0C(1100) 
M 
M 
E+H 
E+H 
E+H 
0x0D(1101) 
M 
E+H 
E+H 
E+H 
0x0E(1110) 
M 
E+H 
E+H 
E+H 
0x0F(1111) 
E+H 
E+H 
E+H 
  C:Clear Data. M:Mask Data. E:Encrypted Data. H:Hash Data 
Enhanced Encrypted MSR Data Output Format for non-Financial Card  
C7-38 Parameter Value: 
Clear / Mask Data 
Encrypted/ Hash 
Data 
Track 
3 
Track 
2 
Track 
1 
Track 
3 
Track 
2 
Track 
1 
Force 
Encryption 
(non-Bank 
Card) 
0x00(0000) 
C 
C 
C 
0x01(0001) 
C 
C 
E+H 
0x02(0010) 
C 
C 
E+H 
0x03(0011) 
C 
E+H 
E+H 
0x04(0100)
C 
C  E+H
0x05(0101)
C 
  E+H
  E+H
0x06(0110)
    C  E+H
E+H   
0x07(0111)
      E+H
E+H  E+H
0x08(1000)
C 
C 
C       
0x09(1001)
C 
C 
      E+H

NEO Interface Developers Guide  
    414 
0x0A(1010)
C 
  C    E+H   
0x0B(1011)
C 
      E+H  E+H
0x0C(1100)
C 
C  E+H
0x0D(1101)
C 
  E+H
  E+H
0x0E(1110)
    C  E+H
E+H   
0x0F(1111)
      E+H
E+H  E+H
                                C:Clear Data. M:Mask Data. E:Encrypted Data. H:Hash Data. 

NEO Interface Developers Guide  
    415 
Appendix A.14: Glossary
The following terms are relevant to this document: 
Term  Definition 
AAC 
Application Authentication Cryptogram 
AEF 
Application Elementary File (EMV) 
AELx 
Evaluation Assurance Level (1 ..7) 
AFL 
Application File Locator 
AID 
Application Identifier 
AIP 
Application Interchange Profile 
API 
Application Programming Interface or  
Application Priority Indicator (tag 87) 
APDU 
Application Protocol Data Unit 
ARQC 
Authorization Request Cryptogram 
ASK 
Amplitude Shift Key 
ATC 
Application Transaction Counter 
ATR 
Answer To Reset 
AUC 
Application Usage Control 
BER 
Basic Encoding Rules (ASN.1) 
CAT 
Cardholder Activated Terminals 
CCC 
Compute Cryptographic Checksum 
CDA 
Combined Dynamic Data Authentication/Application Cryptogram Generation (EMV) 
CID  
Cryptogram Information Data 
CVC 
Card Verification Code 
CVM 
Cardholder Verification Method, EMV Book 3, C3 
CVV 
Card Verification Value (That’s the 3 digit number on the back of cards) 
DCVV 
Dynamic CVV 
DDA 
Dynamic Data Authentication (EMV) 
DF 
Dedicated File  (7816-4) 
DOL 
Data Object List 
EF  
Elementary File  (7816-4) 
EMV 
Europay MasterCard Visa (EMVCo LLC) 
IIN 
Issuer Identification Number 
IPC 
Inter Process Communications 
KSI 
Key set index 
LRC 
Longitudinal Redundancy Check 
MP 
Master File (7816-4) 
MSD 
Magnetic Stripe Data 
NFC  
Near Field Communications 
PAN 
Primary Account Number 
PCD 
Proximity coupling device 
PICC 
Proximity card 
PN511 
FeliCa Chip from Philips 
POS 
Point of Sale (terminal) 
PPSE 
Proximity Payment Selection (or System) Environment 
PSE 
Partial Selection something 
PTS 
Protocol Type Selection 
PUPI 
Pseudo Unique PICC Identifier 
qVSDC 
Quick Visa Smart / Debit Credit 
RID 
Registered Application Provider Identifier 
RN 
Random Number 
SAK 
Select Acknowledge 
SAM 
Security Access Module, communicated via 7816-3 in T=0. 
SDA 
Static Data Authentication (EMV) 
SFGI 
Startup Frame Guard Interval (or time Integer) 
SFI 
Short File Identifier (EMV) 

NEO Interface Developers Guide  
    416 
Term  Definition 
SID 
SAM ID inside of reader 
T=0 
Protocol Type, T=0 is the asynchronous half duplex character transmission protocol. 
T=1 
Protocol Type, T=1 is the asynchronous half duplex block transmission protocol. 
TAK 
Terminal Authentication Key 
TC 
Transaction Certificate 
TID 
Terminal ID 
TLV 
Tag Length Value 
TSI 
Transaction Status Information, EMV Book 3, C7 
TTQ 
Terminal Transaction Qualifier 
TVR 
Terminal Verification Results, EMV Book 3, C5 
UN 
Unknown Number 
XOR 
Exclusive OR 

NEO Interface Developers Guide  
    417 
Appendix A.15: Revision History 
Version
Date  Change 
NEO 
1.0.0 
Rev. 50 
2/28/15 
Added EMV Exception Log List Commands (9.10) 
 Added NFC Commands (9.15) 
 Added Key Management Parameter Commands (10.2) 
 Added Status Codes 0x90 (Account DUKPT Key not exist) and 0x91 (Account 
DUKPT Key KSN exhausted). 
 Added Masked Output Data Parameter (tag FFEE1D). 

NEO Interface Developers Guide  
    418 
Version
Date  Change 
NEO 
v1.00 
Rev. 51 
3/27/2015 
Part number changed to NEO 1.0.0 
 Add note in 10.1, ' Note: This section is not available for Kiosk III/ Vendi.' 
 Title of 10.2 changed to ' DUKPT Key Management Parameter Commands' 
Marked Output Data Parameter(FFEE1D) format changed 
 Command D0-01 response 
frame removed RID/ Key Index. 
 Command 02-01 added project 
name "Vendi" in note "Kiosk III don't support ViVOcomm and DesFire cards". 
 Command 2C-13 removed note 
"This command only applies to the VP5500 product.  It is not supported on other 
readers". 
 Commands 02-03/ 02-04 were 
removed. 
 Commands 07-xx series were 
removed. 
 Commands 13-xx series were 
removed. 
 Commands 15-01/ 16-01 were 
removed. 
 Commands 50-01/ 50-03 were 
removed. 
 Commands 01-03/ 01-04 were 
removed. 
 Command 14-01 removed 
VP5000 example, replaced by Vendi. 
 Command 2C-0B removed 01-
03/ 01-04 or VP5500 related description. 
 Command 01-02 removed 01-
03/ 01-04 related description. 
 Tag FFFB added new values 05. 
 Section 4.1 added project name 
"Vendi" in note "Protocol 1 is not supported by Kiosk III". 
 Section 9.7 added 01/ 03 sub-
command; 9.7.1/ 9.7.3 sections. 
 Section 5.1/ 9.2 removed 
"thirteen" wording for system AID description. 
 Section 10.2 removed note "Key 
Management Parameter commands in this section are only used by Kiosk III/ 
Vendi.". 
 Section 3.0/ 9.1.9/ 10.4 
removed "Kiosk II" wording. 
 Section 3.0 added "USB" in 
description "All of the readers have an RS232 Serial Interface". 
 Section 10.4 (USB Flash Boot 
Loader) was removed. 
 All sections removed Vend/DTc 
wording, replaced by "Vendi". 
 All sections removed GR x.x.x 
or Global Reader related wording. 
 All sections removed SAM 
related description. 
 All sections removed VP5000 
wording, replaced by "graphic reader". 
 All sections removed EEPROM 
wording, replaced by "flash memory". 
 Appendix A.6 removed Q&A 
that related to ViVOpay 5000, 07-xx series, 01-03 and 01-04 cmd; corrected some 
answers to meet current design. 
 Appendix A.8 corrected some 
description to meet current design. 
 Table 1 (Hardware Cross 
Reference) removed other readers except Kiosk III; added new reader "Vendi".  
 Table 2 (Commands Sorted by 
Command Name) removed note "f  Requires Firmware Version 1.2.0 or higher". 
 Table 3 (Commands Sorted by 
Command Number) added 84-0E/ 84-0F commands; 29-00_P2 command removed 
note "Kiosk II only"; removed note "f  Requires Firmware Version 1.2.0 or higher".. 
 Table 12 (System AIDs) added 1 

NEO Interface Developers Guide  
    419 
Version
Date  Change 
Table 15 (PayPass Default Group Configuration TLVs) some tags added new 
note: 
Tag 9F35 added new note "Vendi default value is 24". 
Tag 9F40 added new note "Vendi default values are 60 00 00 00 01". 
Tag 9F53 added new note "Vendi default value is 00". 
Tag 9F7C added new note "Vendi default values are 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 01". 
Tag FFF8 added new note "Vendi default value is 03". 
Tag FFFC added new note "Vendi default value is 04". 
 Table 19 (System AID Default Configuration TLVs) added 1 new AID; some 
AIDs added new note: 
New AID: A0 00 00 01 52 30 10 (Discover Application) 
MasterCard: "Vendi default value, FFE3 = 40, FFE9 = 02 00 01" 
J/Speedy: d"Vendi default value, FFE2 = FF" 
MXI: "Vendi default value, FFE2 = FF" 
Interac: "Vendi default value, FFE2 = 15" 
 Table 46 (Enhanced Poll for 
Token Data Field for Command Frame) transaction type added value 00 03. 
Table 56 (Enhanced Pass-Through Data Field) corrected LED 2 as value 02h. 
NEO 
v1.00 
Rev. 52 
4/1/2015 
Appendix A.5, add description for Kiosk III design. '
 The Kiosk III reader allows for 
storage of up to a maximum of 60 keys which are uniquely identified as a 
key index in each payment scheme(RID).' 
 Add new tag FFEE1E in Table 13. 
NEO 
v1.00 
Rev. 53 
4/27/2015 
Add Kiosk III Boot Loader (10.5) 
NEO 
v1.00 
Rev. 54 
4/27/2015 
Updated Format 
NEO 
v1.00 
Rev. 55 
6/19/2015 
1. Update Table 2&3: 
  > Delete command Load DUKPT Key Type (C7-30) 
 > Add check DUKPT Key type (81-02) 
 > Add Load Initial DUKPT Key request 
2. Update Table 13: 
 > Tag FFF3 byte 1, add SmartTap support flag 
3. Update Table 14: 
 > Tag FFF4, add D-PAS reader risk flags definition 
4. Update Table 19: 
 > Add default D-PAS AID settings 
5. Add 02-01 command response format for D-PAS and SmartTap transaction. 
6. Add notes for commands Set Serial Number and Get serial Number (9.1.11 and 
9.1.12) 
7. Modified 10.2 DUKPT Key Management Parameter Commands 
8. Modified 10.4 Kiosk III Boot Loader 

NEO Interface Developers Guide  
    420 
Version
Date  Change 
NEO 
v1.00 
Rev. 56 
6/29/2015 
Table 2 (Commands Sorted by Command Name): added 1 cmd 09-00. 
Table 3 (Commands Sorted by Command Number): added 1 cmd 09-00. 
Table 13 (Global Configuration TLVs): corrected some notes for Vendi. 
Table 14 (Group Configuration TLVs): corrected some notes for Vendi; created 1 tag 
9F41 
Table 15 (PayPass Default Group Configuration TLVs): corrected some notes for 
Vendi. 
Table 18 (New): added configuration TLVs of Group 2. 
Table 20 (System AID Default Configuration TLVs): corrected some notes for Vendi. 
---------- 
CMD 04-09: added 6 data objects that did not be modified, DF891B/ FE02/ FE03/ 
DF891A/ FE05/ FEFE 
CMD 09-01: added 1 table to describe the value for Vendi.  
CMD 09-02: corrected the length of tag DF61, the value for K21 and the example. 
CMD F0-F6: added descriptions. 
CMD F0-F7: added descriptions. 
CMD F0-F9: added descriptions in note. 
CMD F0-FC: added descriptions in note. 
CMD F0-FD: added descriptions in note. 
---------- 
Appendix A.8: corrected default message index (ENG/ FRA/ ENG&FRA). 
NEO 
v1.00 
Rev.57 
7/15/2015 
1. Update 5.1.5 User-defined TLV Groups 
> Add note for American Express and Discover 
2. Update 9.3.1 Activate Transaction Command (02-01) 
   > Update special description for Discover D-PAS and SmartTap application 
3. Modify 10.2 DUKPT Key Management Parameter Commands 
> Add 10.2.6 Set Data Encryption Enable Flag (C7-36) 
> Add 10.2.7 Get Data Encryption Enable Flag (C7-37) 
4. Add Encrypted response format in below commands 
> Activate Transaction Command (02-01) 
> Get Transaction Result Command (03-00) 
> Pass Through- Exchange Contactless Data (2C-03) 
> Pass Through-PCD Single Command Exchange (2C-04) 
> Pass Through-Get PCD and PICC Parameters(2C-05) 
> Pass Through-Mifare Read Blocks (2C-07) 
> Auto-Poll Burst Mode 
NEO 
v1.00 
Rev.58 
8/4/2015 
# Added support for the following SRED items 
1.  Add Encrypted response format in below commands 
> Pass Through-Exchange APDU Data (2C-13) 
> Pass Through-NFC Command (2C-40) 
2. Modify Pass Through commands encryption response format: 
2C-03, 2C-04, 2C-05, 2C-07, 2C-13,2C-40 
Raw data of Encrypted data field is <2 bytes plaintext Data Field 
Length><whole plaintext Data Field><Padding (0x00)> 
3. Add SRED note for response format in commands:  
> C7-36, C7-37,  
> 02-01, 03-00, 2C-03, 2C-04, 2C-05, 2C-07, 2C-13,2C-40 
> Auto-Poll Burst Mode response 
4. Add SAM interface in commands: 2C-0B, 2C-12, 2C-13.  
SAM interface is only supported by SRED version device 
# Other changes: 
5. Replace SmartTap with AndroidPay SmartTap 
6. Modify response format of Enhanced Pass-Through Command (2C-0B) 
7. Add special TLV for Paypass application in Activate Command response (02-01) 
NEO 
v1.00 
Rev.59 
9/25/2015 
1. Modify response format of 2C-0B command (add SAM interface description). 
2. Update 10.4 Kiosk III Boot Loader 

NEO Interface Developers Guide  
    421 
Version
Date  Change 
NEO 
v1.00 
Rev.60 
10/10/2015 
Correct 2C-12 command description  
NEO 
v1.00 
Rev.61 
10/23/2015 
Add peer to peer function commands: 
1. Peer To Peer Send A Message (C7-9A) 
2. Peer To Peer Receive A Message (C7-9B) 
NEO 
v1.00 
Rev. 62 
10/21/2015 
(KT) 
1.1.1
“MasterCard Contactless (PayPass) Capability” added to explain the 
continued use of the name “PayPass” despite MasterCard’s deprecation of 
that name 
1.1.2 Disclaimer added to remind users that Protocol 1 is now deprecated 
Corrected Protocol 1 to Protocol 2 in a reference to table of Protocol 2 commands. 
Fixed table numbering. 
Appendix A.6 “TDES Data Encryption Examples” added. 
Appendix A.7 “AES Data Encryption Examples” added. 
Subsequent appendices renumbered. 
Appendix A.10 modified to remove redundant discussion of Secure Communications. 
Appendix A.11 added (MSR Data Output Format). 
Discussion of 80-series commands removed. 
Private commands relevant to key injection removed. 
Various Notes involving SRED readers clarified. 
NEO 
v1.00 
Rev. 63 
10/27/2015  
1.LCD Display Table, update string “ Echec” to “ Échec” 
2.Update Vendi response of 09-20, 
 ASCII format “CL AID,MasterCard PayPass M/Chip v3.0.2, v1.00,,<CR><LF> “ To CL 
AID, MasterCard PayPass M/Chip v3.0.2, Vendi v1.0.0,,<CR><LF> and Hex Format 
3.  Add C7-38 and C7-39 for MSR configuration. 
10/29/2015 
(KT)  Fix “Wingding text” issues, fix stray symbols. 
Rev. 64 
11/9/2015 
Added more Notes for MSR parsing table of Appendix A.11, to explain all the fields in 
detail. 
Added Appendix for “Encrypted Data Format, TLV-Based” 
Rev. 65 
11/12/2015 
1. Add status code 70h(Antenna Error) and note for protocol 2. 
2. Add note for '3.0 Serial Communication Interface' to suggest customer not to plug 
in/out serial communication interfaces during the device power on. 
NEO 
v1.00 
Rev. 66 
12/01/2015 
1. Fix description error in “Get Admin DUKPT Key Status” (C7-2F) command 
2. Add Kiosk III Amex 9F33 and 9F6E configuration description in “User-defined TLV 
Groups” 
3. Add Status code 0x80 (Use another card) and 0x81 (Insert or swipe card) 

NEO Interface Developers Guide  
    422 
Version
Date  Change 
Rev. 67 
12/4/2015 
(KT)  Add clarifications to Section 10: Enabling encryption is a one-time-only event (it 
cannot be disabled), but non-encrypted data will necessarily occur if a DUKPT key is 
not present. 
Clarification to Sec. 10 on data output formats and parsing of same. 
Add enhanced descriptions in Appendix A.6, A.7, A.11 of sample data and parsings. 
Rev.68 
12/8/2015 
Add Appendix A.13 :Enhanced Encrypted MSR Data Output Format for Force 
Encryption 
Fixed typo in C7-33 (length byte should be 0x01, not zero). 
Rev.69 
1/5/2016 
1. Add command “Check DUKPT Keys (81-02)” 
2. Add command “Check DUKPT Key (81-04)” 
3. Add command “Get DUKPT Key Serial Number(KSN) (81-0A)” 
4. Add command “Set Temporary Baud Rate (30-02)” 
5. Modify “Set Data Encryption Enable Flag (C7-36)” description 
6. Add “When encryption is enabled, burst mode is disabled” related description 
7. Delete encrypted data format in Burst Mode 
8. Modify encryption description in “Activate Transaction(02-01)” and “Get 
Transaction Result (03-00)” commands 
9. Add DFEE26 TLV description in “Activate Response TLVs” table 
10. Correct encrypted data format to be  
<PREAMBLE><Attribution Byte><KSN TLV><Track1 TLV or 
00h><Track2 TLV or 00h><Clear Record Flag Byte><Clear 
Record TLV(optional)><Other TLVs><CRC> 
In Appendix A.5 and A.6 
11. Update Encrypted Contactless data example in Appendix A.6 and A.7 
Rev.70 
1/14/2016 
1. Add ApplePay VAS Function 
2. Modify encryption output data format to be <Attribution byte><TLV data> 

NEO Interface Developers Guide  
    423 
Version
Date  Change 
Rev.71 
1/18/2016 
1. Correcet Set Temporary Baud Rate(30-02) Command Frame Sub-Command value. 
2.Correct Table34 Tag DFEE26 Description, Format and Length. 
3. Modify Table for Success Transaction--Encrypted data field format for Contactless 
card. 
4. Add Table for Success Transaction--Encrypted data field format for MSR card. 
5. Correct Table "Get Transaction Result Encrypted data field format for contactless 
card". 
6. Add Table "Get Transaction Result Encrypted data field format for MSR card. 
7. Modify Appendix A.5: Firmware FAQ Q13 Encrypted EMV and Enhanced Encrypted 
MSR layout. 
8. Update Appendix A.6:TDES Data Encrypted Exmaple  
9. Update Appendix A.7:AES Data Encrypted Exmaple 
10. Modify Appendix A.11: Enhanced Encrypted MSR Data Output Format 
Rev.72 
1/19/2016 
1. Correct description of “NFC Tag Command (2C-40)” 
2. Correct description of ApplePay VAS commands 
Set Merchant Record (04-11) 
Get Merchant Record (03-11) 
Rev. 73 
1/19/2016 
(KT)  Regenerate TOC and fix format issues. 
Remove Q13 of FAQ. 
Rev. 74 
1/2/2016 
(Yidong)  1.  Add Key Slot Note in 81-02,81-04,81-0A commands 
2.  Correct description error in “Set Temporary Baud Rate (30-02)” 
3. Add description in “Activate Transaction Command (02-01)” Failed Transaction-
Encrypted Data Field Format:“KSN of DUKPT Account Key. If only TLV Error code is 
present and no other TLV data, this field is not present.” 
4. Add note in Peer To Peer Function part: “Peer To Peer function can only be used 
in Pass-Through mode” 
5. Correct descryption error in Appendix A.6, A.7 Contactless examples 
6. Correct descryption error in “Set DUKPT Key Encryption Type (C7-32)”: “The 
encryption type CANNOT be changed once the Account DUKPT Key is present” 
7. Delete encryption response format tables in Pass-Through related commands (2C-
03,2C-04,2C-05,2C-07,2C-13,2C-40) 

NEO Interface Developers Guide  
    424 
Version
Date  Change 
Rev. 75 
2/2/2016 
(Erin)  1. Modified Kiosk III Boot Loader descriptions for download file name format. 
2. Add Kiosk III boot loader commands and firmware downloader command 
processing flow. 
3. Add 2 boot loader command status codes to protocol 2 status code table. 
Rev. 76 
2/2/2016 
(Richard)  1. Modified product type of Vendi, and add product type of Unipay III and Unipay 
1.5, response of CMD 09-01 
2. Modified HW Information of Venid, and add product type of Unipay III and Unipay 
1.5, response of CMD 09-14 
Rev. 77 
2/25/2016 
(Yidong)  1. Add processing steps for Discover D-PAS Issuer Update and AndroidPay SmartTap in 
“Activate Transaction Command (02-01)” description 
2. Add FFEE01 TLV into “Activate Transaction Command (02-01)” Activate Command 
TLVs table (Table-32) 
Rev. 78 
3/3/2016 
(Yidong)  1. Add module type “AppSpe” for 09-20 command. 
2. Add description for 09-20 command 
Rev. 79 
3/14/2016 
(Ching-Wei)  1. Add Command 04-0A 
Rev. 80 
4/5/2016 
(Yidong)  1. Add Secure Pass-Through Function 
2. Add MAC DUKPT Key description in 81-02, 81-04, 81-0A 
3. Add description of response in Secure Pass-Through Mode for 2C-03, 2C-04, 2C-07, 
2C-13, 2C-40 
Rev. 81 
4/26/2016 
(Yidong)  Add Error Codes 80h-85h that now used in ApplePay VAS. 
Rev. 82 
5/10/2016 
(Ching-Wei)  1.Add Tag DF891C. (Interac Retry Limit) 
2.Update Tag FFEE1D 4 bytes change to 5 bytes 
Rev. 83 
5/10/2016 
(Yidong) 
1. Remove white list function in Secure Pass-Through Function 
2. Activate Transaction Response Frame Encrypted Data Format refer to “80000404-
001 ID-Tech Encrypt Data Format In Command Response Specification v.63F” 
Rev. 84 
5/16/2016 
(StevenChen)
Correct Tag FFE1 Description 
Rev. 85 
5/18/2016 
(Yidong) 
1.Return FFE1 Description to Rev.83 
2.Remove C7-2F command (use Vivopay Key Loading to load Admin DUKPT Key) 
3.Add Slot 2 (Admin DUKPT Key) into 81-02, 81-04, 81-0A 
4. Transaction output data encryption refer to “80000404-001 ID-Tech Encrypt Data 
Format In Command Response Specification v.63F” 
5. Add “Activate Command Examples for ApplePay VAS” 
6. Add Note in C7-32, C7-33 command “This command is only supported in NSRED 
device. In SRED device, only TDES algorithm is used to encrypt transaction output 
sensitive data.” 
7. Add “Note: KioskIII operates in AutoPoll mode by default” in Set Poll Mode (01-01)  

NEO Interface Developers Guide  
    425 
Version
Date  Change 
Rev. 86 
5/23/2016 
(StevenChen)
Add Tag DFEF2C Description 
Rev. 87 
5/27/2016 
(Yidong) 
1. Add White List in Secure Pass-Through function 
2. Add Kiosk III American Express Gonfiguration Group rule  
3. Add FFEE1C TLV description in Table 20-Global Configuration TLVs 
4. Add Key Usage ‘A’ (AES), Mode of use ‘B’ (both encryption and decryption) in 81-
04 command 
Rev. 88 
6/1/2016 
(Yidong) 
1. Add AndroidPay SmartTap Activate Command examples 
2. Add AndroidPay SmartTap Special TLV 
Rev. 89 
6/12/2016 
(Yidong) 
1. Modify KioskIII default value in “American Express Default Group 2 Configuration 
TLVs” 
2. Modify DFEE26 TLV and Attribution description (add bit for Contactless EMV/MSD 
indication) 
Rev. 90 
6/27/2016 
(Yidong) 
1.Modify AndroidPay SmartTap description in “Table25: AID Configuration TLVs” 
2.Modify  Special  Flow  Code  description  in  “Special  TLV  for  Discover  D-PAS  and 
AndroidPay SmartTap” 
3.Correct mistakes in “EMV Exception Log List Commands” 
Rev. 91 
7/16/2016 
(Erin) 
1. Add description of tag DFEF36 (MTAS) 
2. Add description of Poll for Token command, it can be canceled by command (05-
01). 
3. Add new feature " Asynchronous Media Tracking" 
4. Add new feature "
Determine Card Presence" 
Rev. 92 
8/1/2016 
(Ching-Wei)  1.Update Tag 9F26 for ApplePay Terminal Capabilities Information 
Rev. 93 
8/30/2016 
(Yidong)  1. change “Account DUKPT Key” to “Data encryption Key” 
change “Admin DUKPT Key” to “RKI-KEK” 
Rev. 94 
9/2/2016 
(Erin)  Change  "  PCD  Single  Command  Exchange  (2C-04)  Protocol  2", "  PCD  Command 
Flags Table" bit 5 definition 
Rev. 95 
9/5/2016 
(Richard)  Remove version number “1.00” in file name 
Remove “NEO v1.00” in cover 
Rev. 96 
9/20/2016 
(Yidong) 
Add “Set Data Encryption Key Variant Type(C7-2F)” 
Add “Get Data Encryption Key Variant Type(C7-30)” 
Rev. 97 
10/6/2016 
(Kas Thomas)
Add updated tables for 03-00. 
Add documentation of 02-40 command. 
Add commands 29-06, -07, -08, -09, -17; 2C-18; 30-03. 
Add F0-00, F0-01, F0-02, F0-0F commands. 
Add 60-series commands. 
Add 61-series commands. 
Rev. 98 
10/11/2016 
(Charles Lin) 
Modify 02-01, 02-40, 03-00 command description.  
Add command 03-40 description 
Add Mode/Transaction Output Format Matrix—NSRED Device Contactless card 
Add Mode/Transaction Output Format Matrix—SRED Device Contactless card 
Modify C7-36, C7-37 command description.  
Add Device Current Status/Command Setting/Device Operation/Output Matrix. 
Add MSR Equivalent Function (DFEF4B, DFEF4C, DFEF4D) 
Rev. 99 
11/07/2016 
(Charles Lin) 
Add AndroidPay SmartTap AID in System AID list 
Rev. 100 
11/18/2016 
(Erin Liang) 
Add Set/Get Cable Type commands 

NEO Interface Developers Guide  
    426 
Version
Date  Change 
Rev. 101 
11/28/2016 
(Charles Lin) 
Add Note about Power LED in Set/Get Source for RTC/LCD/Buzzer/LED(01-05) 
command 
Rev. 102 
01/19/2017 
(Kas Thomas)
ApplePay VAS discussion expanded/amplified, with additional examples (SDK 
methods in addition to firmware commands).  
Rev. 103 
02/07/2017 
(Erin Liang) 
Modify the descritpion of Clean Torn Transaction Log (84-0F) command final 
response format. 
Rev. 104 
2/10/2017 
(Ginger Wu) 
Removed the following text from page 192.   
“Reference files: 
[1] Android Pay SmartTap NFC Reader Technical Specification Version 1.3 
[2] SmartTap Tester User Guide Version 0.1” 
Rev. 105 
2/13/2017 
(Kas Thomas)
Added clarifications to 9F39 tag (code 07 always means contactless). 
Added C7-38 command info for non-financial cards in Appendix A.13 
Rev. 106 
02/21/2017 
(Erin Liang) 
1. Correct tag 57 data format in Table 35. 
2. Add comments for tag DFEF4D. 
   " The track data will present track data if it is a MSD transaction, present 
track Equivalent data if it is a EMV transaction." 
Rev. 107 
02/24/2017 
(Lyndon Lin)  Change KSN description in Set White List (2C-50) command: 
“10 bytes current MAC DUKPT Key Sequence Number. Device uses current 
MAC DUKPT Key to do MAC verification.” 
Rev. 108 
4/11/2017 
(Kas Thomas)
Correct the C7-9A and 9B peer-to-peer command description and add clarification 
about NDEF. 
Rev. 109 
5/15/2017 
(Erin)  1. Add CUP AIDs in System AID for Kiosk III. 
2. Modify global configuration tag FFF3 from '07 FF' to '0F FF', and modify tag FFF3 
definition, add CUP config.
Rev. 110 
6/5/2017 
(ChingWei)  1.Update Tag 9F4E for contact max length 30 -> 64 
2.Add Status code for protocol 2 (60, 61, 62,63) 
3.Add Command 03-40 in Table 2 
Rev. 111 
6/13/2017 
(ChingWei)  Add determine ApplePay transactions tag (DFEF7A) in Active Transaction Command. 
Rev. 112 
8/3/2017 
(Erin) 
1. Add Status Code 31h (Request Online PIN) for CUP. 
2. Add (02-07) command for CUP 
3. Add CUP TTQ default value for configurable groups 
4. Add description of tag DFEF2F, DFEF73, DFEE3F, 99, 9F5B. 
Rev. 113 
8/15/2017 
Add 04-0A, F0-F4, 03-40, D0-01, and D0-02 to command tables Table 2 & 3). 
Rev. 114 
8/25/2017 
(Erin) 
1. Add card type for Felica and B Prim(2c-02) 
2. Add Terminate ISO Session command (2C-16) for B Prim 
Rev. 115 
4/09/2017 
(Richard) 
1. Update description of tag DFEF7A that support android pay 
2. add value of tag DFEF7B -> 2: android pay or android vas 
Rev. 116 
8/09/2017 
(Jiliang Ge) 
1. Delete AndroidPay SmartTap1.3 support. 
2. Add SmartTap2.1 support. 
NEO Interface Developers Guide  
    427 
CE cation 
RF Exposure 
This equipment complies with CE radiation exposure limits set forth for an uncontrolled 
environment.This equipment should be installed and operated with minimum distance 0cm 
between the radiator&your body. 
Specification 
This radio equipment operates with the following frequency bands and maximum radio-
frequency power. 
BLE : 0dBm 
EU DECLARATION OF CONFORMITY 
Hereby, ID TECH declares that the radio equipment type [IDMR-PBTX3133TEB, X=8:VP3600; 
X=9:VP3500] is in compliance with Directive 2014/53/EU. 
The full text of the EU declaration of conformity is available at the following Internet address: 
http://www.idtechproducts.com 
NEO Interface Developers Guide  
    428 
FCC Worning 
Please note that changes or modifications not expressly approved by the party responsible for 
compliance could void the user’s authority to operate the equipment. Note: This equipment has been 
tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC 
Rules. These limits are designed to provide reasonable protection against harmful interference in a 
residential installation. This equipment generates, uses and can radiate radio frequency energy and, 
if not installed and used in accordance with the instructions, may cause harmful interference to radio 
communications. However, there is no guarantee that interference will not occur in a particular 
installation. If this equipment does cause harmful interference to radio or television reception, which 
can be determined by turning the equipment off and on, the user is encouraged to try to correct the 
interference by one or more of the following measures: —Reorient or relocate the receiving antenna.  
—Increase the separation between the equipment and receiver. 
—Connect the equipment into an outlet on a circuit different from that to which the receiver is 
connected.  
—Consult the dealer or an experienced radio/TV technician for help.  
This equipment complies with radio frequency exposure limits set forth by the FCC for an 
uncontrolled environment.  
This device must not be co-located or operating in conjunction with any other antenna or transmitter. 
The USB cabel: Easily connect the mPOS device with Bluetooth or USB cable to different types of 
iOS and Android smartphones and tablets. 
This device complies with part 15 of the FCC Rules. Operation is subject to the following two conditions: 
(1) This device may not cause harmful interference, and (2) this device must accept any interference 
received, including interference that may cause undesired operation.

NEO Interface Developers Guide  
    429 
Canada Regulations:  
This device complies with Industry Canada’s licence-exempt RSSs. Operation is subject to the 
following two conditions:  
(1) This device may not cause interference; and  
(2) This device must accept any interference, including interference that may cause undesired 
operation of the device.  
Le présentappareilestconforme aux CNR d’Industrie Canada applicables aux appareils radio exempts 
de licence. L’exploitationestautorisée aux deux conditions suivantes :  
(1) l’appareil ne doit pas produire de brouillage;  
(2) l’utilisateur de l’appareildoit accepter tout brouillageradioélectriquesubi, mêmesi le 
brouillageest susceptible d’encompromettre le fonctionnement.  
NEO Interface Developers Guide  
    430