0% found this document useful (0 votes)
13 views44 pages

Simple Connect Protocol API and Guide - 8 - 1217

The document provides an API and guide for the Simple Connect Protocol Version 0.0.6, detailing how to establish data connections between ExaDigm terminals and POS devices using USB or network connections. It includes message formats, semi-integration messages, and additional protocols for various functionalities such as card reading and printing. The document is intended for third-party developers and outlines configuration steps, message definitions, and examples for effective integration.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views44 pages

Simple Connect Protocol API and Guide - 8 - 1217

The document provides an API and guide for the Simple Connect Protocol Version 0.0.6, detailing how to establish data connections between ExaDigm terminals and POS devices using USB or network connections. It includes message formats, semi-integration messages, and additional protocols for various functionalities such as card reading and printing. The document is intended for third-party developers and outlines configuration steps, message definitions, and examples for effective integration.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Simple Connect Protocol Version 0.0.

6
API and Guide

2861 Pullman Street, Santa Ana, CA 92705 | Phone. 949.486.0320 | Fax. 949.486.0333 | www.exadigm.com
Simple Connect Protocol Version 0.0.6 – API and Guide

Copyright © ExaDigm, Inc.


All Rights Reserved.
Printed in USA

Warranty
The information contained in this document is subject to change without notice. ExaDigm
makes no warranty of any kind with regard to this material, including, but not limited to, the
implied warranties or merchantability and fitness for a particular purpose. ExaDigm shall not be
liable for errors contained herein or for incidental or consequential damages in connection with
the furnishing, performance, or use of this material.

© ExaDigm, Inc. Page 2 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

Table of Contents

1.0 Document Revision History....................................................................................................5


2.0 Scope and Background.......................................................................................................... 7
3.0 Getting Started....................................................................................................................... 7
4.0 Data Connection.................................................................................................................... 8
4.1 USB Connection.............................................................................................................8
4.1.1 USB Connection Configuration.............................................................................8
4.2 Network Connection........................................................................................................8
4.2.1 Network Connection Configuration........................................................................8
5.0 Message Formats.................................................................................................................. 9
5.1 Conventions for Message Data.......................................................................................9
6.0 Semi-Integration Messages.................................................................................................10
6.1 Semi-Integration Protocols............................................................................................10
6.1.1 Protocol for Processing Transactions..................................................................10
6.1.2 Protocol for Batch Summary Report and Batch Settlement Report.....................10
6.2 Semi-Integration Message Definitions...........................................................................11
6.2.1 XCRP [POS → Terminal] – Begin Processing Transaction..................................11
6.2.2 XCRT [Terminal → POS] – Report Transaction Status........................................15
6.2.3 XCRS [Terminal → POS] – Send Batch Settlement Data (summary)..................19
6.2.4 XCRZ [Terminal → POS] – Send Batch Settlement Data (detail)........................21
6.2.5 XRPT – Send Report Data..................................................................................23
6.3 Status Messages.......................................................................................................... 25
6.3.1 ACK (OK) Response Message............................................................................25
6.3.2 Error Response Message...................................................................................25
6.3.3 EOT Message.....................................................................................................25
7.0 Additional Messages............................................................................................................ 26
7.1 Protocols for Additional Messages................................................................................26
7.1.1 UI Messages.......................................................................................................26
7.1.2 Printer Messages................................................................................................26
7.1.3 Card Reader Messages......................................................................................26
7.2 UI Messages................................................................................................................. 27
7.2.1 XUID [POS → Terminal] – Display Dialog Box....................................................27
7.2.2 XUII [POS → Terminal] – Display Input Box........................................................29
7.2.3 XUIM [POS → Terminal] – Display Menu............................................................29
7.2.4 XUIR [Terminal → POS] – Return User Response..............................................30

© ExaDigm, Inc. Page 3 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.2.5 XUIS [POS → Terminal] – Request Signature capture........................................31


7.2.6 XUIX [POS → Terminal] – Exit Custom UI Message Mode.................................32
7.3 Printer Messages.......................................................................................................... 32
7.3.1 XPRP [POS → Terminal] – Print Plain-text Data to Printer..................................32
7.4 Status Messages.......................................................................................................... 33
7.4.1 XSIQ [POS→ Terminal] – Request Terminal Status............................................33
7.4.2 XSIS [Terminal → POS] – Report Terminal Status..............................................33
7.5 Card Reader Messages................................................................................................35
7.5.1 XCRK [POS → Terminal] – Send Public Key.......................................................36
7.5.2 XCRR [POS → Terminal] – Start Credit/Debit Card Reading Operation..............37
7.5.3 XCRD [Terminal → POS] – Receive Credit/Debit Card Data...............................39
8.0 Message Examples.............................................................................................................. 40
8.1 Semi-Integrated Message Examples............................................................................40
8.1.1 Display main menu..............................................................................................40
8.1.2 Display admin menu............................................................................................41
8.1.3 Perform settlement..............................................................................................42
8.1.4 Reprint receipt.....................................................................................................42
8.1.5 Print reports........................................................................................................ 43

© ExaDigm, Inc. Page 4 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

1.0 Document Revision History

Doc Rev. Date Author Comment


June 9, 2015 Chuck Maggs • First draft
Sept. 3, 2015 Chuck Maggs • Added table of contents, scope & background, connection
information
Sept. 8, 2015 Chuck Maggs • Added messages for processing a transaction
Sept. 15, 2015 Chuck Maggs • Updated XCRP, corrected typos in XBCR and XCRP
Sept. 17, 2015 Chuck Maggs • Fixed typo in XCRT packet description
Mar. 7, 2016 Smita Kulkarni • Added examples for communication packets for approved
and declined transactions and for various request ids for
XCRP and XCRT packets.
• Corrected a typo in XBCR description
Rev. 2 Apr. 15, 2016 Smita Kulkarni • Added description of ‘XRPT’ packet. ‘ExaDigm terminal
sends data that is redirected from printer to file to the external
POS device in ‘XRPT’ packet.
• Added example of ‘XRPT’ packet for authorized transaction
receipt.
• Modified message protocol for Processing a Transaction to
include ‘XRPT’ packet.
Rev. 3 Aug. 19, 2016 Chuck Maggs • Added tip data to XCRP packet.
• Changed graphic on front page.
• Fixed broken links to examples section in document.
• Retitled and renamed document.
Rev. 4 Dec. 2016 Chuck Maggs • Set protocol version to 0.0.2.
• Added JSON-formatted data packet definitions for semi-
integration related data (XCRP, XCRT, XRPT, and XRSP).
• Replaced use of [] characters for optional elements with use
of (), as the former are used to define arrays in JSON data.
• Reordered sections of the document to clarify.
Rev. 5 Feb. 2017 Chuck Maggs • Set protocol version to 0.0.3.
• Corrected error in JSON version of XCRP message – moved
packetAuthorization element out of header portion and into
packetData section
• Added cashback amount, transaction ID, tip amount, and
terminal input flag to JSON version of XCRP message
• Added option 10 to request ID of XCRP message for
requesting batch summary
• Deprecated option 9 and added option 99 to request ID of
XCRP message for performing authorization requests
• Added option 9 to receipt quantity parameter of XCRP
message
• Fixed broken cross-references in opening paragraph of
section 6.3, Response Messages
• Changed data type for 'referenceNumber' from integer to
string to accommodate alphanumeric references from some
processors
• Added XCRS settlement response message
Rev. 6 Feb. 2017 Chuck Maggs • Set protocol version to 0.0.4.
• Added XPRP message for printing simple plain-text jobs
Rev. 7 March 2017 Chuck Maggs • Set protocol version to 0.0.5.
• Added EMV tag information to XCRT message
Rev. 8 December 2017 Chuck Maggs • Set protocol version to 0.0.6.
• Removed references to binary messages, as support for
binary messages has been discontinued; this includes
replacing binary example messages with JSON messages
• Added support for signature capture, custom ID, email
address for emailed receipts, and receipt detail in XCRP
message
• Added support for signature capture, terminal-based

© ExaDigm, Inc. Page 5 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

transaction date and time, optional host-based transaction


date and time, and custom ID in XCRT message
• Added support for reading gift card data in new JSON XCRD
message
• Added new XCRZ message to report detail information for
batch close / batch report operations
• Added new user interface messages (XUI?) to display POS-
defined menus, input boxes and dialog boxes, and return the
result
• Added print control (receipt_qty) to batch reporting (XCRP
message, request ID=10) and end of day processing (XCRP
message, request ID=3) so that reports do not have to be
printed on receipts
• Added status information (XSI?) messages

© ExaDigm, Inc. Page 6 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

2.0 Scope and Background


This document is intended to provide the necessary information for third party developers to build
applications that can exchange data with ExaDigm terminals.
It is assumed that the reader of this document who wishes to work with a USB connection is familiar with
configuring and establishing USB communications.
It is assumed that the reader of this document who wishes to work with an Ethernet or WiFi data
connection is familiar with IP communications, including network configuration and TCP/IP data links.

3.0 Getting Started

Section 4, titled “Data Connection”, describes the basic data connection options that are available for
setting up a data connection between the ExaDigm terminal and a POS device. This section also
describes how to configure each of these connections in the ExaDigm terminal application.

Section 5, titled “Message Formats”, provides a high-level description of the data formats used for
messages as well as the conventions used in describing the format of each message.

Section 6, titled “Semi-Integration Messages”, describes how semi-integrated messages are exchanged
(section 6.1) as well as the format of the messages that are sent and received (sections 6.2 and 6.3).

Section 7, titled “Additional Messages”, describes additional messages and protocols that are outside the
bounds of basic semi-integration operations, including using messages that allow using the terminal as a
printer (section 7.3 on page 32), or as a card reader (section 7.5 on page 35).

© ExaDigm, Inc. Page 7 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

4.0 Data Connection

4.1 USB Connection


A connection between an ExaDigm terminal and a POS device can be set up via a USB cable. Cables
that can be used for USB connections are available from ExaDigm.
The end that connects to a POS device has a standard USB (type-A) male connector, while the other end
of the cable is configured for connecting to the ExaDigm terminal's USB port (either a micro-USB male
connector or mini-USB male connector, depending on the terminal). When the cable is connnected to a
Windows or Linux system, the system should auto-load the appropriate driver and present the port as a
serial device.

4.1.1 USB Connection Configuration


To configure the cable settings for the semi-integrated application, please do the following:
1. From the application's main screen, press the [CANCEL] key to bring up the Admin menu.
2. From the Admin menu, select “1.App Setup”.
3. From the App Setup menu, select “9.Semi Integration”.
4. From the Semi Integration menu, select “3.USB” to select USB communication.
5. Press the [CANCEL] key until you return to the main screen.

4.2 Network Connection


A connection between an ExaDigm terminal and a POS devce can be set up via a TCP/IP connection
over a network connection. Based on the available hardware in the terminal, the network connection can
be Ethernet or WiFi.
When a network connection is used, one of the following options must be implemented for the ExaDigm
terminal:
 The ExaDigm terminal application must be configured to use static IP address settings in order
for the POS application to be able to find the ExaDigm terminal; or
 The network's DHCP server must be configured to always assign the same IP address to the
ExaDigm terminal's MAC address.

4.2.1 Network Connection Configuration


The default port used for communicating between an ExaDigm terminal and a POS device via a network
connection is 8765. This port setting can be changed in the terminal's application settings.
To configure the network settings for the semi-integrated application, please do the following:
1. From the application's main screen, press the [CANCEL] key to bring up the Admin menu.
2. From the Admin menu, select “1.App Setup”.
3. From the App Setup menu, select “9.Semi Integration”.
4. From the Semi Integration menu, select “2.IP”.
5. Review the parameters for port number and authorization code and edit as necessary to match
the parameters for your POS device.

© ExaDigm, Inc. Page 8 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

5.0 Message Formats


The JSON message format and protocol were created for exchanging data via a TCP/IP connection
(Ethernet or WiFi) or USB connection. The JSON message format is more human-readable, allows more
flexibility in expanding message information at a later date, and can be more easily configured to
communicate with a web service if so desired.

5.1 Conventions for Message Data


The following list describes the different types of data elements that are contained in data messages sent
between an ExaDigm terminal and a POS device.

"<data>" Required data string


"(data)" Optional data string
<data> Required numeric value
(data) Optional numeric value
"DATA" The exact string is to be used as listed

© ExaDigm, Inc. Page 9 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.0 Semi-Integration Messages


There are three categories of messages: card reader messages, which can be used to read card data;
semi-integration messages, which can be used to initiate a transaction on the ExaDigm terminal and read
information about the transaction result; and barcode reader messages, which can be used to read
barcodes with ExaDigm terminals that include integrated barcode reader hardware.

6.1 Semi-Integration Protocols

6.1.1 Protocol for Processing Transactions


The following sections outline the sequence of messages that are sent back and forth between a POS
device and an ExaDigm terminal for a transaction.

 POS → EXA XCRP message


 POS ← EXA XCRT message (OK) or XRSP message (error)
◦ If ExaDigm terminal has a report to send
◦ POS ← EXA XRPT message 1
◦ POS ← EXA XRPT message 2
...
◦ POS ← EXA XRPT message n

6.1.2 Protocol for Batch Summary Report and Batch Settlement Report
The following sections outline the sequence of messages that are sent back and forth between a POS
device and an ExaDigm terminal to request a batch summary reporting or batch settlement processing
and reporting.

 POS → EXA XCRP message


 POS ← EXA XCRS message (OK) or XRSP message (error)
◦ If detail information was requested in XRSP message:
◦ POS ← EXA XCRZ message 1
◦ POS ← EXA XCRZ message 2
...
◦ POS ← EXA XCRZ message n

© ExaDigm, Inc. Page 10 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.2 Semi-Integration Message Definitions

6.2.1 XCRP [POS → Terminal] – Begin Processing Transaction


When the user has completed the process of entering all transaction related information and is ready for
the transaction to be processed, the POS sends the following data to the ExaDigm terminal.

{
"packetID" : "XCRP",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
"requestID" : <request_id>,
("customID” : {
"label" : "(custom_id_label)",
"data" : "(custom_id_value)"
},)
"baseAmount" : <base_amt>,
("cashbackAmount" : (cashback_amt),)
("decimals" : <decimals>,)
("currencyChar" : "<currency_char>",)
("receiptCount" : <receipt_qty>,)
("transactionID" : <transaction_id>,)
"transactionType" : <transaction_type>,
"taxAmount" : <tax_amt>,
("tipAmount" : <tip_amt>,)
("emailAddress" : "<email_address>",)
("terminalInputFlag" : <terminal_input_flag>,)
("signatureCaptureFlag" : <signature_capture_flag>,)
("reportLevel" : <report_level>,)
("receiptDetail" : {
"receiptData" : [
{"label" : "<label_1>" (, "data" : "<data_1>")},
{"label" : "<label_2>" (, "data" : "<data_2>")},
...
{"label" : "<label_N>" (, "data" : "<data_N>")},
]
})
}
}

Description of data elements:

 "<packet_auth>" is an authorization code that must be sent to a terminal when IP based


communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <request_id> is an integer value that indicates which operation should be performed by the
ExaDigm terminal1:
o 1 = Display the main menu
o 2 = Display the admin menu
o 3 = Perform settlement

1
The values listed in this table are defined in the enumerated type 'NxPayReqIdEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.

© ExaDigm, Inc. Page 11 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

o 4 = Perform credit sale


o 5 = Perform credit return
o 6 = Reprint receipt
o 7 = Print reports
o 8 = View transactions
o 9 = Perform authorization request (for backward compatibility; deprecated) 2
o 10 = Report status of open batch
o 99 = Perform authorization request
 <base_amt> is an integer value of the base amount to show on the display of the ExaDigm
terminal, with all digits and without decimal point. This amount represents the total amount of
sale, including tax, but not including tips, cashback amount, or other added amounts.
 (cashback_amt) is an integer value of the cashback amount to request as part of the transaction
processed by the ExaDigm terminal, with all digits and without decimal point. If this field is not
included, or if the value is set to 0, then cashback amount will be ignored by transactions that
offer the option of processing a cashback amount.
 (decimals) is an integer value of the number of decimal places that are in the amount. If this field
is not specified, then 2 decimal places are assumed.
 (currency_char) is a one-character string of the character to display for currency type (e.g. "$" for
U.S. dollars). If this field is not specified, then U.S. dollars is assumed.
 (receipt_qty) is an integer value that indicates the number of receipts to print. If this value is not
specified, then '1' is assumed.
o 0 = Do not print receipts
o 1 = Print merchant copy
o 2 = Print merchant and customer copies
o 9 = Terminal prompts for receipts to print
 <transaction_id> is an integer value for the transaction ID for a previous transaction. If the
transaction ID is set to 0 and a transaction ID is required for the operation specified by the
request ID, then the terminal user will be prompted to enter the transaction ID. If the operation
specified by the request ID does not require the transaction ID, then this value will be ignored,
even if present.
 "(custom_id_label)" is an optional string that describes the information that is in the value
(custom_id_value). This string will be stored in the terminal’s transaction database and printed on
a receipt and returned in a related response message as a descriptor for the custom ID data. If
the custom ID data has been included but this string is not present (or if this key/value pair is
omitted), then the string "Customer ID" will be used as the descriptor for the custom ID data.
 "(custom_id_value)" is an optional string that represents an identifier that has been set from the
POS end. This string will be stored in the terminal’s transaction database and printed on a receipt
and returned in a related response message as a customer ID for the transaction. If this string is
not present, then the entire customID object will be ignored.
 <transaction_type> is an integer value that must be set to one of the following values to indicate
the transaction type to be authorized whenever <request_id> is set to 99 (perform authorization
request)3:
o 0 = Credit sale
o 1 = Add tip
o 3 = Credit return
o 5 = Preauthorization
o 6 = Status check
o 7 = Postauthorization
o 9 = Credit (voice authorization)
o 11 = Credit edit
o 13 = Credit balance

2
Versions of this document prior to revision 5 use request ID 9 for authorization request; versions of this document from revision
5 forward use request ID 99 for the same operation to provide more flexibility
3
The values listed in this table are defined in the enumerated type 'NxTranTypeEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.

© ExaDigm, Inc. Page 12 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

o 14 = Debit sale
o 15 = Debit return
o 16 = Debit balance
o 17 = EBT food sale
o 18 = EBT food return
o 19 = EBT food balance
o 20 = EBT cash sale
o 21 = EBT cash balance
o 22 = EBT voucher sale
o 44 = MOTO sale
o 45 = MOTO authorization
o 46 = MOTO postauthorization
o 48 = MOTO force
o 50 = MOTO return
o 52 = MOTO status check
o 59 = Void last transaction
o 61 = Void TRNID
o 99 = Check verify
o 100 = Check conversion
o 112 = Cash sale
o 113 = Cash return
 <tax_flag> is an integer value that must be set to one of the following values 4:
o 0 = Tax not provided
o 1 = Tax included
o 2 = Nontaxable purchase
 <tax_amt> is an integer value of the amount of tax that is included in the total purchase amount,
with all digits and without decimal point. The same number of decimal places and the same
currency symbol are used for the tax amount as for the base amount.
 (tip_amt) is an optional integer value for the tip amount to display to the user, with all digits and
without decimal point. The same number of decimal places and the same currency symbol are
used for the tip amount as for the base amount.
o Negative value = Do not display or use tip amount
o Zero or greater = Display the tip amount to the user
 "(email_address)" is an optional string value that indicates the email address where an email
version of the receipt is to be sent. The option will be utilized based on the setting of the flag
'terminal_input_flag':
o If 'terminal_input_flag' is set to 1, and if the email address is sent in this field, then the user
will be prompted by the application to review and confirm the email address.
o If 'terminal_input_flag' is set to 1, and if this field is blank, then the user will be prompted by
the application to enter an email address.
o If 'terminal_input_flag' is set to 1, but this parameter has been omitted, then the user will not
be prompted for an email address and no email will be sent.
o If 'terminal_input_flag' is set to 0, and if the email address is sent in this field, then the
application will send an email using the address without prompting the user.
o If 'terminal_input_flag' is set to 0, and if the email address or this parameter have been
omitted, then no email will be sent.

NOTE: The application must be configured to support receipt emails before this option can be
successfully used. This means that the feature must be enabled, and the email server
parameters for sending emails must be properly configured. If email has not been properly
configured and enabled in the application, then this parameter will be ignored in all cases.

4
The values listed in this table are defined in the enumerated type 'NxTaxFlagEn' that is defined in the ExaDigm SDK header file
“exaipc_payment.h”.

© ExaDigm, Inc. Page 13 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

 (terminal_input_flag) is an optional integer value that indicates whether the ExaDigm terminal
should prompt the user for input whenever possible.
o If the value is set to zero, then the ExaDigm terminal will not prompt the user for input unless
absolutely required (for example, card swipe).
o If the value is set to 1, then the ExaDigm terminal will prompt the user for input whenever
possible, even if the POS sent the appropriate information (for example, cashback amount on
a debit sale).
o If the value is set to 2, then the ExaDigm terminal will display a dialog box that shows the
total, tax and tip, and then show an input box for editing the tip amount before processing the
card information.
o If the parameter is omitted, then zero is assumed and the ExaDigm terminal will avoid
prompting the user for input.
 (signature_capture_flag) is an optional integer value that indicates whether the ExaDigm terminal
should prompt the user to provide a signature during the transaction. If the value is set to zero,
then signature capture is not performed. If the value is set to 1, then the ExaDigm terminal will
display a signature screen and prompt the user to provide a signature; the image of the signature
will then be returned as part of the response messages. If the parameter is omitted, then zero is
assumed and the ExaDigm terminal will not prompt for a signature from the user.
 (report_level) is an optional integer value that indicates what level of reporting is to be returned
for messages that can include detail information (e.g. XCRS). A value of zero indicates that only
summary data is requested; a value greater than zero indicates that detail information is
requested in addition to the summary data. If the parameter is omitted, or if the value is not set,
then zero is assumed and the response message will only include summary information.
 "<label_1>" … "<label_N>" and "<data_1>" … "<data_N>" elements are used for passing
information to the terminal which will be included in the receipt that the terminal will print. Each
label / data set represents data that will be printed on one line; the label elements will be left-
aligned and the data elements will be right-aligned. If only one element (either label or data) is
included for one line data element, then only that element will be printed for that line (either left-
or right-aligned, depending on which element is included). If the "receiptDetail" object is omitted,
then no detail information will be added to the receipt.

For example, to Perform Credit Sale with a base amount of $50.00 and print two receipts for Credit Sale
transaction with a tax amount of $3.00, the POS would send the following:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"11223344",
"requestID":4,
"baseAmount":5000,
"decimals":2,
"currencyChar":"$",
"receiptCount":2,
"transactionType":1,
"taxAmount":300
}
}

For additional examples of data messages, please refer to section 8.1 on page 40, titled “Semi-Integrated
Message Examples”.

© ExaDigm, Inc. Page 14 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.2.2 XCRT [Terminal → POS] – Report Transaction Status


At the completion of the transaction process, the ExaDigm terminal returns a message that reports the
transaction status.

{
"packetID" : "XCRT",
("packetVersion" : "0.0.6",)
"packetData" : {
"transactionDate" : "<transaction_date>",
"transactionTime" : "<transaction_time>",
("hostDate" : "<host_date>",)
("hostTime" : "<host_time>",)
"batchID" : <batch_id>,
"transactionID" : <transaction_id>,
("customID" : {
"label" : "<custom_id_label>"
"data" : "<custom_id_value>"
},)
"baseAmount" : <base_amt>,
"tipAmount" : <tip_amt>,
"cashbackAmount" : <cashback_amt>,
"feeAmount" : <fee_amt>,
"totalAmount" : <total_amt>,
"resultCode" : "<result_code>",
"hostMessage" : "<host_msg>",
"cardNumber" : "<cardno>",
"cardIssuer" : "<card_issuer>",
"cardDataEntry" : "<card_entry>",
"referenceNumber" : "<ref_no>",
"authorizationCode" : "<auth_code>"
("emvTags" : [
"<emv_tag_1>=<emv_value_1>",
"<emv_tag_2>=<emv_value_2>",

"<emv_tag_N>=<emv_value_N>"
],)
("signatureImage" : [
"<signature_image_line_1>",
"<signature_image_line_2>",

"<signature_image_line_N>"
])
}
}

Description of data elements:


Note that the response fields that represent currency will be formatted and returned without decimals and
will assume the same currency symbol and number of decimal places as the values submitted to the
terminal in the XCRP message.
 "<transaction_date>" is a string that represents the transaction date.
 "<transaction_time>" is a string that represents the transaction time.
 "(host_date)" is an optional string the represents the transaction date as reported by the host. If
the host did not report a host date and time for the transaction, this data will not be present.

© ExaDigm, Inc. Page 15 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

NOTE: This information is processor dependent, as some hosts do not send this information
under any circumstances.

 "(host_time)" is an optional string the represents the transaction time as reported by the host. If
the host did not report a host date and time for the transaction, this data will not be present.

NOTE: This information is processor dependent, as some hosts do not send this information
under any circumstances.

 <batch_id> is the terminal batch ID for an approved transaction. If the transaction was not
approved, then this field is empty.
 <transaction_id> is the terminal transaction ID for an approved transaction. If the transaction was
not approved, then this field is empty.
 "(custom_id_label)" is an optional string that describes the information that is in the value
<custom_id_data>.
 "(custom_id_data)" is an optional string that represents an identifier that has been set from the
POS end.
 <base_amt> is the base amount to show on the display of the ExaDigm terminal, with all digits
and without decimal point. This amount represents the total amount of sale, including tax, but not
including tips, cashback amount, or any other additional amounts.
 <tip_amt> is the tip amount that the user added to the transaction.
 <cashback_amt> is the amount in cash that was requested by the customer to receive as part of
the transaction.
 <fee_amt> is the amount of any additional fees that were added to the transaction.
 <total_amt> is the total amount of the transaction, including all taxes, cashback, tips and fees.
 <result_code> is a code that represents the status of the transaction, and is set to one of the
following values5:
o 0 = Transaction approved
o -1 = Transaction declined
o -2 = Error during transaction
o -3 = Transaction canceled
 <host_msg> contains any message that may have been sent from the processor gateway to the
ExaDigm terminal during the transaction. If the processor did not send a message, then this field
will be empty.
 <cardno> contains the last four digits of the card number used during the transaction.
 <card_issuer> is the name of the card's issuer.
 <card_entry> is a code that represents the entry method that was used to read the card
information6:
o 0 = Card information not entered
o 1 = Card was swiped through MSR device
o 2 = Card was inserted into EMV reader
o 3 = Card was tapped on NFC reader
o 4 = Card information was read via another method
o 5 = Card was present when card information was keyed in manually
o 6 = Card was not present when card information was keyed in manually
 <ref_no> is the reference number that is returned by the host for the transaction. (Please note
that not all processors return this data.) If the transaction was not approved, then this field will be
empty.
 <auth_code> contains the host authorization code for the transaction. If the transaction was not
5
The values listed in this table are defined in the enumerated type 'NxPayResultEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.
6
The values listed in this table are defined in the enumerated type 'NxCardEntryEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.

© ExaDigm, Inc. Page 16 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

approved, then this field will be empty.


 "<emv_tag_1>=<emv_value_1>" … "<emv_tag_N>=<emv_value_N>" are the EMV tag/value
pairs that were read by the terminal when EMV card data was read, separated by an equal sign
(=). Each tag/value pair's tag is to the left of the equal sign, and the value is to the right of the
equal sign.
 “<signature_image_line_1>” … “<signature_image_line_N>” is data that represents the
compressed signature image as Base64-encoded data. Each line of data should not be longer
than 64 characters.

The following example shows the data returned after a successful transaction:
 The transaction completed successfully
 The transaction ID returned by the processor is 16
 A customer-added tip was sent as $10.00, with no cashback and no fee, making the total amount
to be $60.00
 The host responded with the message “AUTH/TKT 001572” for a card number with the last 4
digits “5454” that is issued by MasterCard and with an authorization code of 001572
 A reference number returned by the host is MTA008016

{
"packetID" : "XCRT",
"packetVersion" : "0.0.6",
"packetData" : {
"batchID":1,
"transactionID":16,
"baseAmount":5000,
"tipAmount":1000,
"cashbackAmount":0,
"feeAmount":0,
"totalAmount":6000,
"resultCode":0,
"hostMessage":"AUTH/TKT 001572",
"cardNumber":"5454",
"cardIssuer":"MasterCard",
"cardDataEntry":1,
"referenceNumber":"001572",
"authorizationCode":"MTA008016"
}
}

If the transaction was declined for the card ending in 0026 with a base amount of $140.00, and no tax, the
ExaDigm terminal would return the following data.

{
"packetID":"XCRT",
"packetVersion":"0.0.6",
"packetData":{
"transactionID":16,
"baseAmount":14000,
"tipAmount":,
"cashbackAmount":,
"feeAmount":,
"totalAmount":14000,
"resultCode":1,
"hostMessage":"DECLINED",
"cardNumber":"0026",

© ExaDigm, Inc. Page 17 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

"cardIssuer":"VISA",
"cardDataEntry":1,
"referenceNumber":,
"authorizationCode":
}
}

For additional examples of data messages, please refer to section 8.1 on page 40, titled “Semi-Integrated
Message Examples”.

© ExaDigm, Inc. Page 18 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.2.3 XCRS [Terminal → POS] – Send Batch Settlement Data (summary)


This section describes the format of the messages used to send a batch report for an ExaDigm terminal.

When returning a batch report (no batch settlement is performed):

{
"packetID" : "XCRS",
("packetVersion" : "0.0.6",)
"packetData" : {
"batchID" : <batch_id>,
"batchCount" : <batch_count>,
"batchAmount" : <batch_amount>,
("decimals" : (decimals),)
("currencyChar" : ("currency_char"),)
("reportLevel" : <report_level>)
}
}

When returning the result of a batch settlement:

{
"packetID" : "XCRS",
("packetVersion" : "0.0.6",)
"packetData" : {
"batchDate" : "<date>",
"batchTime" : "<time>",
"batchID" : <batch_id>,
"batchCount" : <batch_count>,
"batchAmount" : <batch_amount>,
("decimals" : (decimals),)
("currencyChar" : ("currency_char"),)
"resultCode" : "<result_code>",
"hostMessage" : "<host_msg>",
"referenceNumber" : "<ref_no>"
("reportLevel" : <report_level>)
}
}

Description of data elements:


 <date> is a string that represents the date that the settlement was run, formatted as
YYYY/MM/DD.
 <time> is a string that represents the time that the settlement was run, formatted as HH:MM.
 <batch_id> is the terminal batch ID as an integer value.
 <batch_count> is an integer that represents the number of transactions that were processed in
the settlement session.
 <batch_amount> is an integer that represents the total value of all of the transactions processed
during the settlement session, with all digits and without decimal point.
 (decimals) is an integer value of the number of decimal places that are in the amount. If this field
is not specified, then 2 decimal places are assumed.
 (currency_char) is a one-character string of the character to display for currency type (e.g. "$" for
U.S. dollars). If this field is not specified, then U.S. dollars is assumed.
▪ <ref_no> is the reference number that is returned by the host for the batch. Please note
that not all processors return this data.

© ExaDigm, Inc. Page 19 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

 <host_msg> is the message returned from the processor after the settlement has been run.
 (report_level) is an integer value that indicates what level of reporting is being returned with the
summary message. A value of zero indicates that only summary data is being returned; a value
greater than zero indicates that detail information will be sent in a series of XCRZ messages that
will follow the summary data. If the parameter is omitted, or if the value is not set, then zero is
assumed and the response message will only include summary information.

NOTE: The settlement report message is only sent in response to a request for batch summary
information or settlement processing that was received from POS device. If settlement processing is run
manually on the terminal, the settlement report cannot be sent from the ExaDigm terminal to the POS
device.

© ExaDigm, Inc. Page 20 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.2.4 XCRZ [Terminal → POS] – Send Batch Settlement Data (detail)


This section describes the format of the messages used to send detail information for a batch report from
an ExaDigm terminal.

{
"packetID" : "XCRZ",
("packetVersion" : "0.0.6",)
"packetData" : {
"transactionDate" : "<transaction_date>",
"transactionTime" : "<transaction_time>",
("hostDate" : "<host_date>",)
("hostTime" : "<host_time>",)
"batchID" : <batch_id>,
"transactionID" : <transaction_id>,
("customID" : {
"label" : "<custom_id_label>"
"data" : "<custom_id_value>"
},)
"baseAmount" : <base_amt>,
"tipAmount" : <tip>,
"cashbackAmount" : <cashback_amt>,
"feeAmount" : <fee_amt>,
"totalAmount" : <total_amt>,
"resultCode" : <result_code>,
"hostMessage" : "<host_msg>",
"cardNumber" : "<cardno>",
"cardIssuer" : "<card_issuer>",
"cardDataEntry" : <card_entry>,
"referenceNumber" : "<ref_no>",
"authorizationCode" : "<auth_code>"
("emvTags" : [
"<emv_tag_1>=<emv_value_1>",
"<emv_tag_2>=<emv_value_2>",

"<emv_tag_N>=<emv_value_N>"
],)
}
}

Description of data elements:


Note that the response fields that represent currency will be formatted and returned without decimals and
will assume the same currency symbol and number of decimal places as the values submitted to the
terminal in the XCRP message.
 "<transaction_date>" is a string that represents the transaction date.
 "<transaction_time>" is a string that represents the transaction time.
 "(host_date)" is an optional string the represents the transaction date as reported by the host. If
the host did not report a host date and time for the transaction, this data will not be present.

NOTE: This information is processor dependent, as some hosts do not send this information
under any circumstances.

 "(host_time)" is an optional string the represents the transaction time as reported by the host. If

© ExaDigm, Inc. Page 21 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

the host did not report a host date and time for the transaction, this data will not be present.

NOTE: This information is processor dependent, as some hosts do not send this information
under any circumstances.

 <batch_id> is the terminal batch ID for an approved transaction. If the transaction was not
approved, then this field is empty.
 <transaction_id> is the terminal transaction ID for an approved transaction. If the transaction was
not approved, then this field is empty.
 "(custom_id_label)" is an optional string that describes the information that is in the value
<custom_id_data>.
 "(custom_id_data)" is an optional string that represents an identifier that was set from the POS.
 <base_amt> is the base amount to show on the display of the ExaDigm terminal, with all digits
and without decimal point. This amount represents the total amount of sale, including tax, but not
including tips, cashback amount, or any other additional amounts.
 <tip_amt> is the tip amount that the user added to the transaction.
 <cashback_amt> is the amount in cash that was requested by the customer to receive as part of
the transaction.
 <fee_amt> is the amount of any additional fees that were added to the transaction.
 <total_amt> is the total amount of the transaction, including all taxes, cashback, tips and fees.
 <result_code> is a code that represents the status of the transaction, and is set to one of the
following values7:
o 0 = Transaction approved
o -1 = Transaction declined
o -2 = Error during transaction
o -3 = Transaction canceled
 "<host_msg>" contains any message that may have been sent from the processor gateway to the
ExaDigm terminal during the transaction. If the processor did not send a message, then this field
will be empty.
 "<cardno>" is a string that contains the last four digits of the card number used during the
transaction.
 "<card_issuer>" is the name of the card's issuer.
 <card_entry> is a numeric code that represents the entry method that was used to read the card
information8:
o 0 = Card information not entered
o 1 = Card was swiped through MSR device
o 2 = Card was inserted into EMV reader
o 3 = Card was tapped on NFC reader
o 4 = Card information was read via another method
o 5 = Card was present when card information was keyed in manually
o 6 = Card was not present when card information was keyed in manually
 "<ref_no>" is the reference number that is returned by the host for the transaction. (Please note
that not all processors return this data.) If the transaction was not approved, then this field will be
empty.
 "<auth_code>" contains the host authorization code for the transaction. If the transaction was not
approved, then this field will be empty.
 "<emv_tag_1>=<emv_value_1>" … "<emv_tag_N>=<emv_value_N>" are the EMV tag/value
pairs that were read by the terminal when EMV card data was read, separated by an equal sign
(=). Each tag/value pair's tag is to the left of the equal sign, and the value is to the right of the
equal sign.
7
The values listed in this table are defined in the enumerated type 'NxPayResultEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.
8
The values listed in this table are defined in the enumerated type 'NxCardEntryEn' that is defined in the ExaDigm SDK header
file “exaipc_payment.h”.

© ExaDigm, Inc. Page 22 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.2.5 XRPT – Send Report Data


This section describes the format of the messages related to sending report or receipt data after a
transaction is processed.
When a transaction is processed and the ExaDigm terminal receives an ACK message from the external
POS system, the ExaDigm terminal sends report or receipt data to the POS device.

{
"packetID" : "XRPT",
("packetVersion" : "0.0.6",)
"packetData" : {
"transactionID" : <request_id>,
"data" : [
"<report_line_1>",
"<report_line_2>",

"<report_line_N>"
]
}
}

Description of data elements:


 <transaction_id> is the transaction ID for a transaction.
 <report_line_1> … <report_line_N> are the lines of the report or receipt that are to be printed.
In the following example, the ExaDigm terminal sends data related to the authorized transaction receipt in
‘XRPT’ message (note that the spaces are included as part of the message).

{
"packetID":"XRPT",
"packetVersion":"0.0.6",
"packetData"{
"transactionID"<request_id>,
"data"[
"<0x0A>",
" Exadigm,Inc <0x0A>",
" 2861 Pullman st <0x0A>",
" Santa Ana, CA <0x0A>",
" 949-486-0320 <0x0A>",
" <0x0A>",
" <0x0A>",
"Device ID: ED12<0x0A>",
"04/06/2016 00:38:51<0x0A>",
"-----------------------------<0x0A>",
" Credit Sale <0x0A>",
"<0x09> APPROVED <0x0A>",
"Batch Number: 7<0x0A>",
"Transaction ID: 44<0x0A>",
"Item num: 36<0x0A>",
"[Mastercard] Swiped<0x0A>",
"Acct#: XXXXXXXXXXXX5454<0x0A>",
"Expiration date: XXXX<0x0A>",
"Auth code: 002302<0x0A>",
"Host Trn ID: MTA007036<0x0A>",
"<0x09>Amount: $9.95<0x0A>",

© ExaDigm, Inc. Page 23 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

" I agree to pay the above <0x0A>",


" total amount according to <0x0A>",
" the card issuer agreement <0x0A>",
"(merchant agreement if credit<0x0A>",
" voucher) <0x0A>",
" <0x0A>",
"X_________________________<0x0A>",
" Customer’s signature <0x0A>",
" CHASE PAYMENTACH <0x0A>",
" <0x0A>",
" <0x0A>",
" Merchant Copy <0x0A>",
" <0x0A>",
" <0x0A>",
" <0x0A>",
" <0x0A>",
"<0x0A>"
]
}
}

NOTE: If the print data cannot fit in one message, then the ExaDigm terminal will send the data in
multiple sequential messages to the POS system.

© ExaDigm, Inc. Page 24 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

6.3 Status Messages


The ExaDigm terminal provides two categories of status messages. The first category provides basic
information about the terminal, status, and capabilities, and can be used as a “health check” to determine
if the terminal is ready for operation.
The second category provides status information in response to a command sent to the terminal that
otherwise does not require a specific response. When a message is sent, either from a POS device to an
ExaDigm terminal or vice versa, a response message must be sent in every case. In some cases, a
specific response message is expected (for example, a batch summary message is sent in response to a
batch summary request). In cases where a specific response is not specified, the ExaDigm terminal is
expected to send a status messae to indicate whether the requested operation was completed
successfully. Please see section 6.1, titled “Semi-Integration Protocols”, or section 7.1, titled “Protocols
for Additional Messages”, to see which messages are expected during exchanges.

6.3.1 ACK (OK) Response Message


An ACK message is sent in response to a valid message having been received and parsed.

{
"packetID" : "XRSP",
("packetVersion" : "0.0.6",)
"packetData" : {
"status" : "OK"
}
}

6.3.2 Error Response Message


An error message is sent in response to an invalid or unsupported message having been received and
parsed.

{
"packetID":"XRSP",
("packetVersion":"0.0.6",)
"packetData"{
"status" : "ERROR",
("message" : "<msg>")
}
}

6.3.3 EOT Message


An EOT message is sent when the sending device has finished its part of the process. The reason for
completing the process may be that the process was completed successfully, or it may be that there was
an unrecoverable error.

{
"packetID":"XRSP",
("packetVersion":"0.0.6",)
"packetData"{
"status" : "END"
}
}

© ExaDigm, Inc. Page 25 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.0 Additional Messages

7.1 Protocols for Additional Messages

7.1.1 UI Messages

7.1.1.1 Dialog Box


 POS → EXA XUID message
 POS ← EXA XUIR message
7.1.1.2 Input Box
 POS → EXA XUII message
 POS ← EXA XUIR message
7.1.1.3 Menu
 POS → EXA XUIM message
 POS ← EXA XUIR message
7.1.1.4 Signature Capture
 POS → EXA XUIS message
 POS ← EXA XUIR message
7.1.1.5 Cancel UI Operation
 POS → EXA XUIX message

7.1.2 Printer Messages


7.1.2.1 Print Plaintext Data
 POS → EXA XPRP message

7.1.3 Card Reader Messages

7.1.3.1 Reading Bank Card Data

 POS_DEVICE Generate RSA 1024-bit private/public key pair


 POS → EXA XCRK message (send RSA 1024 public key)
 POS ← EXA ACK (OK) or error message
 POS → EXA XCRR message (start card reading operation)
o ExaDigm terminal displays “PLEASE INSERT/TAP/SWIPE CARD”
 POS ← EXA XCRD message (encrypted card data)
 POS_DEVICE Decrypt card data using RSA 1024-bit private key
7.1.3.2 Reading Non-Bank Card Data

 POS → EXA XCRR message (start card reading operation)


o ExaDigm terminal displays “PLEASE INSERT/TAP/SWIPE CARD”
 POS ← EXA XCRD message (unencrypted card data)

© ExaDigm, Inc. Page 26 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.2 UI Messages
This section describes the format of the messages related to sending data from a POS device or
application to an ExaDigm terminal for the purpose of displaying information on the terminal screen.

7.2.1 XUID [POS → Terminal] – Display Dialog Box


The POS device can send a request to the ExaDigm terminal to display a dialog box on the terminal
screen, and optionally wait for a user response.

{
"packetID" : "XUID",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
("title" : "<dialogbox_title>",)
"message" : [
"<message_line_1>",
"<message_line_2>",
...
"<message_line_N>",
],
("timeout" : <timeout_value>,)
("buttons" : {
("ok" : <ok_button_flag>,)
("cancel" : <cancel_button_flag>)
})
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <dialogbox_title> is the text to place in the title bar of the dialog box. If the title is not included,
then the title bar is left blank.
 "<message_line_1>" … "<message_line_N>" are the lines of text to be displayed in the dialog
box.
 <timeout_value> is an integer value that represents the number of seconds the dialog box is to be
displayed. If the value is zero, or if the value is not set, then the dialog box will remain open
either after the user has pressed one of the available buttons, or indefinitely (in the case of a
modal dialog box).
 <ok_button_flag> is an integer value that indicates whether an [OK] button is to be displayed at
the bottom of the dialog box. If the value is set to 1, then the [OK] button will be displayed. If the
value is set to 0, or if the value is omitted, then the [OK] button will not be displayed.
 <cancel_button_flag> is an integer value that indicates whether a [CANCEL] button is to be
displayed at the bottom of the dialog box. If the value is set to 1, then the [CANCEL] button will
be displayed. If the value is set to 0, or if the value is omitted, then the [CANCEL] button will not
be displayed.

© ExaDigm, Inc. Page 27 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

NOTE: If one or more button values are set so that the terrminal will display one or more buttons at the
bottom of the dialog box, then the terminal will send a XUIR message in response to the user input
selection. On the other hand, if no button values are set, then the terminal will display a modal dialog box
that can only be terminated from the POS by sending a XUIX message to the terminal.

© ExaDigm, Inc. Page 28 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.2.2 XUII [POS → Terminal] – Display Input Box


The POS device can send a request to the ExaDigm terminal to display an input box on the terminal
screen, and wait for a user response.

{
"packetID" : "XUII",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
("title" : "<inputbox_title>",)
"message" : "<message_text>",
("inputType" : "<input_type>",)
("inputMinLength" : <input_min_length>,)
"inputMaxLength" : <input_max_length>,
("inputDefault" : "<input_default_text>",)
("timeout" : <timeout_value>)
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <inputbox_title> is the text to place in the title bar of the dialog box. If the value is not set, then
the title bar is left blank.
 "<message_text>" is the line of text to be displayed as a prompt above the input box.
 "<input_type>" is a string that indicates what type of data entry is allowed in the input window:
o “A” = Alphabetic characters only (no numbers)
o “C” = Currency value
o “N” = Numeric characters only (no letters)
o “P” = Password entry (characters are masked during input, making them not viewable)
o “X” = Alphanumeric characters are allowed (letters and numbers)
If the inputType parameter is omitted, then alphanumeric input will be accepted.
 <input_min_length> is an integer that indicates the minimum length allowed for entering the input
data. If the value is not set, then the minimum accepted length is set to zero.
 <input_max_length> is an integer that indicates the maximum length allowed for entering the
input data.
 "<input_default_text>" is a string that is inserted into the input box before the user begins
inputting information. If the value is not set, then the input buffer is set to an empty string.
 <timeout_value> is an integer value that represents the number of seconds the dialog box is to be
displayed. If the value is zero, or if the value is not set, then the dialog box will remain open
either after the user has pressed one of the available buttons, or indefinitely (in the case of a
modal dialog box).

7.2.3 XUIM [POS → Terminal] – Display Menu


The POS device can send a request to the ExaDigm terminal to display a dialog box on the terminal
screen, and optionally wait for a user response.

{
"packetID" : "XUIM",
("packetVersion" : "0.0.6",)

© ExaDigm, Inc. Page 29 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

"packetData" : {
"packetAuthorization" : "<packet_auth>",
("title" : "<menu_title>",)
"menu" : [
"<menu_item_1>",
"<message_line_2>",
...
"<menu_item_N>"
],
("timeout" : <timeout_value>,)
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <menu_title> is the text to place in the title bar of the menu. If the title is not included, then the
title bar is left blank.
 "<menu_item_1>" … "<menu_item_N>" are the are the menu options to be displayed in the menu
list.
 <timeout_value> is an integer value that represents the number of seconds the dialog box is to be
displayed. If the value is zero, or if the value is not set, then the dialog box will remain open
either after the user has pressed one of the available buttons, or indefinitely (in the case of a
modal dialog box).

7.2.4 XUIR [Terminal → POS] – Return User Response


When a custom user interface related operation provides the option for the user to respond to a displayed
message, the user's selection or entered information is returned from the ExaDigm terminal to the POS
device in the following message.

{
"packetID" : "XUIR",
("packetVersion" : "0.0.6",)
"packetData" : {
("button" : "<button_response>",)
("key" : "<key_response>",)
("text" : {
"type" : "<response_type>",
"output" : "<text_response>"
},)
("signatureImage" : [
"<signature_image_line_1>",
"<signature_image_line_2>",

"<signature_image_line_N>"
])
}
}

Description of data elements:


 "<button_response>", if included, indicates which dialog box button was selected by the user.
 "<key_response>", if included, represents the single terminal key pressed by the user to indicate
the desired selection.

© ExaDigm, Inc. Page 30 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

 "<response_type>" is a string that indicates what type of data entry is allowed in the input
window:
o "A" = Alphabetic characters only (no numbers)
o "C" = Currency value
o "N" = Numeric characters only (no letters)
o "P" = Password entry (characters are masked during input, making them not viewable)
o "X" = Alphanumeric characters are allowed (letters and numbers)
 "<text_response>", if included, returns the text string that was entered by the user into an input
box.
 “<signature_image_line_1>” … “<signature_image_line_N>”, if included, is data that represents
the compressed signature image as Base64-encoded data. Each line of data is not to be longer
than 64 characters.

NOTE: The XUIR message only returns a button response, a key response, a text response, or a
signature image; the responses are mutually exclusive.

7.2.5 XUIS [POS → Terminal] – Request Signature capture


For terminals that support the feature, a POS device can send a request to an ExaDigm terminal to
prompt the user for a signature. The user then signs on the terminal screen in the signature box, and the
signature image is returned to the POS device in a response message.

{
"packetID" : "XUIS",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
("title" : "<menu_title>",)
("message" : [
"<message_line_1>",
"<message_line_2>",
...
"<message_line_N>",
],)
("timeout" : <timeout_value>,)
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <title> is the text to place in the title bar of the menu. If the title is not included, then the title bar is
left blank.
 "<message_line_1>" … "<message_line_N>" are the lines of text to be displayed in the text box.
If no message text is sent, then a default message prompting the user to sign in the signature box
will be displayed.
 <timeout_value> is an integer value that represents the number of seconds the dialog box is to be
displayed. If the value is zero, or if the value is not set, then the dialog box will remain open
either after the user has pressed one of the available buttons, or indefinitely (in the case of a
modal dialog box).

© ExaDigm, Inc. Page 31 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.2.6 XUIX [POS → Terminal] – Exit Custom UI Message Mode

A POS device terminates a user interface related operation by sending the following message to the
ExaDigm terminal.

{
"packetID" : "XUIX",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and processed.
If the communication link is not using IP based communication, then this field is not required.

7.3 Printer Messages


This section describes the format of the messages related to sending data from a POS device or
application to a printer-equipped ExaDigm terminal to print reports on the ExaDigm terminal's printer.

7.3.1 XPRP [POS → Terminal] – Print Plain-text Data to Printer

A POS device can send simple plain-text data to an ExaDigm terminal using the XPRP message.

{
"packetID" : "XPRP",
("packetVersion" : "0.0.6",)
"packetData" : {
"data" : [
"<print_line_1>",
"<print_line_2>",

"<print_line_N>"
]
}
}

Description of data elements:


 <print_line_1> … <print_line_N> are the lines of text that are to be printed on the ExaDigm
printer.
Note that no alignment, font size changes, or other formatting features are supported in this message.

© ExaDigm, Inc. Page 32 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.4 Status Messages


This section describes the format of the messages related to repording terminal status information to a
POS device.

7.4.1 XSIQ [POS→ Terminal] – Request Terminal Status

"packetID" : "XSIQ",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
("serialNumber" : "<serial_number>",)
("firmwareInfo" : <firmware_info_flag>,)
("appInfo" : <app_info_flag>,)
("ipInfo" : <ip_info_flag>)
}
}

Description of data elements:


 <packet_auth> is an authorization code that must be sent to a terminal when IP based
communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and processed.
 "<serial_number>" is the terminal’s serial number. For some older terminals, it may not be
possible to return the serial number; in such cases, the serial number key/value pair will not be
returned.
 <firmware_info_flag> is an integer that indicates whether the terminal is to send back information
about the terminal’s firmware. If the flag is set to 1 or higher, the information will be returned; if
the flag is set to 0, or if the key/value pair are omitted, then the information will not be returned.
 <app_info_flag> is an integer that indicates whether the terminal is to send back information
about the application running in the terminal. If the flag is set to 1 or higher, the information will
be returned; if the flag is set to 0, or if the key/value pair are omitted, then the information will not
be returned.
 <ip_info_flag> is an integer that indicates whether the terminal is to send back information about
the terminal’s IP configuration. If the flag is set to 1 or higher, the information will be returned; if
the flag is set to 0, or if the key/value pair are omitted, then the information will not be returned.

7.4.2 XSIS [Terminal → POS] – Report Terminal Status

The XSIS message is designed to send information about the terminal to a POS device. There are two
possible trigger events to cause the message to be sent out from the terminal:

 The POS device sends an XSIQ message to the terminal; in this case, the terminal sends an
XSIS message in response over the POS-initiated connection in response.
 While the terminal’s application is displaying the “wait” screen and waiting for an inbound
message, the user may press the [ENTER] key to signal the terminal to send a status message to
the “attached” POS device.
o In the case of a USB-connected POS, the terminal will send the status message to the device
on the other end of the USB cable
o In the case of an IP-connected POS, the IP address and port of the POS device must have
been configured in the terminal in order for the message to be sent; otherwise, the application
will display a dialog box indicating that the message cannot be sent because the destination
has not been properly configured.

© ExaDigm, Inc. Page 33 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

{
"packetID" : "XSIS",
("packetVersion" : "0.0.6",)
"packetData" : {
("serialNumber" : "<serial_number>",)
"semiMode" : "<semi_mode>",
("firmwareInfo" :
{
"bootVersion" : "<bootloader_version>",
"kernelVersion" : "<kernel_version>",
"coreVersion" : "<core_version>",
("userVersion" : "<user_version>")
},)
("appInfo" :
{
"appVersion" : "<application_version>",
"appSlot" : <slot_number>,
},)
("ipInfo" :
{
"device" : "ip_device_type",
"address" : "<ip_address>",
"port" : <ip_port_number>,
})
}
}

Description of data elements:


 "<serial_number>" is the terminal’s serial number. For some older terminals, it may not be
possible to return the serial number; in such cases, the serial number key/value pair will not be
returned.
 "<semiMode>" is a string that indicates the currently configured connection mode for the terminal:
o "IP" means that the terminal is configured to use IP based communications (Ethernet, WiFi or
cellular).
o "USB" means that the terminal is configured to use a USB connection.
 "<bootloader_version>" is the version of the bootloader that is in the terminal.
 "<kernel_version>" is the version of the kernel that is in the terminal.
 "<core_version>" is the version of the root filesystem (core) that is in the terminal.
 "<exauser_version>" is the version of the /usr/ image that is in the terminal. For terminals that do
not have a separate image for the /usr/ directory, this key/value pair will not be returned.
 "<application_version>" is the version of the application that has been installed in the terminal.
 <app_slot_number> is an integer that represents the terminal slot into which the application has
been installed.
 "<ip_device_type>" is a string that indicates the currently selected device to use for IP
communications:
o "LAN" means that an Ethernet connection is being used.
o "WIFI” means that a WiFi connection is being used.
o "CDMA" means that the CDMA modem is being used.
o "GSM" means that the GSM modem is being used.
 "<ip_address>" is the terminal’s IP address for IP based communication.
 <ip_port> is the terminal’s IP port used for listening for inbound messages.

© ExaDigm, Inc. Page 34 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.5 Card Reader Messages


This section describes the format of the messages related to reading card data that are exchanged
between an ExaDigm terminal and a POS device.

WARNING: The card reader messages have been provided for developers who wish to retrieve and
process information from cards that can be read by the terminal. Be advised that if you utilize the card
reader messages to read data from bank issued cards, your application comes into scope for PA-
DSS compliance. This means that your application will need to be PA-DSS certified; otherwise, you will
invalidate the PA-DSS certification provided by the application in the ExaDigm terminal.

© ExaDigm, Inc. Page 35 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.5.1 XCRK [POS → Terminal] – Send Public Key


A requirement of PA-DSS certification is that no data is transmitted in an unencrypted form. In order to
enable the reception of encrypted data, the POS device must generate an RSA 1024-bit private/public key
pair and then transmit the public key to the ExaDigm terminal. When the POS device receives data that
has been encrypted using the public key, it can then decrypt the data using the paired private key.
To generate and encode the RSA public key for transmission, the developer includes code in the POS
system like the following C code:

RSA *rsa = NULL;


BIO *bio = NULL;

bio = BIO_new_mem_buf(key, -1);

The POS system sends the following message to give the ExaDigm terminal an RSA 1024-bit public key
which it can use to encrypt card data in response messages:

{
"packetID" : "XCRK",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
"key" : "<key_string>"
}
}

Description of data elements:

 <packet_auth> is an authorization code that must be sent to a terminal when IP based


communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 <key_string> is a Base64-encoded string of the RSA 1024-bit key to send to the terminal. If a key
value is not defined, then the currently stored 1024-bit key will be deleted from the terminal.

If this message is not sent, or if the message is sent with an empty key value, then the ExaDigm terminal
will be unable to read bank card data. PA-DSS v3.0 requirements 11.1 and 11.2 9 specify that no sensitive
data is to be transmitted in an unencrypted form, so setting the public key is mandatory for handling credit
cards, debit cards, or any other bank issued cards.

9
Requirements and Security Assessment Procedures, version 3.1 (PCI Security Standards Council, May 2015),
https://www.pcisecuritystandards.org/documents/PA-DSS_v3-1.pdf (accessed April 20, 2016)

© ExaDigm, Inc. Page 36 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.5.2 XCRR [POS → Terminal] – Start Credit/Debit Card Reading Operation


The POS system sends the following message to notify the ExaDigm terminal to begin credit/debit card
reading operation.

{
"packetID" : "XCRR",
("packetVersion" : "0.0.6",)
"packetData" : {
"packetAuthorization" : "<packet_auth>",
("message" : "<message>",)
("timeout" : <timeout_value>,)
("decimals" : <decimals>,)
("currencyChar" : "currency_char",)
("baseAmount" : <base_amt>,)
("taxAmount" : <tax_amt>,)
("tipAmount" : <tip_amt>,)
}
}

Description of data elements:

 <packet_auth> is an authorization code that must be sent to a terminal when IP based


communication is used. The terminal application contains an authorization code that is assigned
to the terminal; this code must be sent with an IP-transmitted request in order for the request to
be accepted and proceesed.
If the communication link is not using IP based communication, then this field is not required.
 (message) is the message to display on the ExaDigm terminal while waiting to read card data. If
this value is not specified, then the default message of “PLEASE INSERT/TAP/SWIPE CARD” will
be used.
 (timeout_value) is the number of seconds that the card reader is to wait for card data. If this
value is not specified, then the default value of 60 seconds will be used.
 (decimals) is the number of decimal places that are in the amount. If this field is not specified,
then 2 decimal places are assumed.
 (currency_char) is the character to display for currency type (e.g. '$' for U.S. dollars). If this field is
not specified, then U.S. Dollars is assumed.
 (base_amt) is an integer value of the base amount to show on the display of the ExaDigm
terminal, with all digits and without decimal point. This amount represents the total amount of
sale, including tax, but not including tips or other added amounts. If this value is not specified,
then no total amount will be displayed and no EMV data will be read.
 (tax_amt) is an integer value of the amount of tax that is included in the total purchase amount,
with all digits and without decimal point. The same number of decimal places and the same
currency symbol are used for the tax amount as for the base amount.
◦ Negative value, or missing field = Do not display or use tax amount
◦ Zero or greater = Display the tax amount to the user
 (tip_amt) is an optional integer value for the tip amount to display to the user, with all digits and
without decimal point. The same number of decimal places and the same currency symbol are
used for the tip amount as for the base amount.
◦ Negative value, or missing field = Do not display or use tip amount
◦ Zero or greater = Prompt the user for the tip amount

NOTE: If the public key has not been transmitted to the ExaDigm terminal, the device will assume that
the card is a gift card and process the card accordingly.

© ExaDigm, Inc. Page 37 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

Also note that if the total amount has not been transmitted to the ExaDigm terminal, the device will not
look for EMV card data; only MSR or NFC data will be returned.

© ExaDigm, Inc. Page 38 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

7.5.3 XCRD [Terminal → POS] – Receive Credit/Debit Card Data


When the credit/debit card reading process has completed, the ExaDigm terminal will send the card data
back to the POS system.

{
"packetID" : "XCRD",
("packetVersion" : "0.0.6",)
"packetData" : {
"status" : "<status>",
"cardType" : "<card_type>",
("tipAmount" : <tip_amt>,)
("msrData" : [
("track1Data" : "<track_1_data>",)
("track2Data" : "<track_2_data>",)
("track3Data" : "<track_2_data>",)
],)
("emvTags" : [
"<emv_tag_1>=<emv_value_1>",
"<emv_tag_2>=<emv_value_2>",

"<emv_tag_N>=<emv_value_N>"
],)
}
}

Description of data elements:

 (status) is a 2-character code that indicates the status of the read operation. If the status
indicates anything other than a successful read, then the remaining fields will not be present.
 '00' = Data read successfully (and user accepted total amount)
 '01' = Reading operation timed out
 '02' = User canceled reading operation
 '03' = User did not accept total amount
 '99' = Error occurred during reading operation
 (card_type) is a 1-character code that indicates the card type that was read:
 '0' = MSR card
 '1' = NFC card
 '2' = EMV card (contact)
 '3' = EMV card (contactless)
 <tip_amt> is the tip amount that the user added to the transaction.
 "<track_1_data>" ... "<track_3_data>" are Base64-encoded strings that represent the data read
from each specified track. If the data element is empty or missing for a specified track, then no
data was read from that track.
 "<emv_tag_1>=<emv_value_1>" … "<emv_tag_N>=<emv_value_N>" are the EMV tag/value
pairs that were read by the terminal when EMV card data was read, separated by an equal sign
(=). Each tag/value pair's tag is to the left of the equal sign, and the value is to the right of the
equal sign.

NOTE: If an RSA 1024-bit public key was sent to the terminal, the MSR track data will be encrypted with
that public key. In such cases, the POS device must decrypt the data using the paired private key.

© ExaDigm, Inc. Page 39 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

8.0 Message Examples

8.1 Semi-Integrated Message Examples


This section gives examples of XCRP and XCRT messages for various operations to be performed by
ExaDigm terminal as described in section 6.2 on page 11, titled “Semi-Integration Message Definitions“.

NOTE: The actual prompts and menus may not be exactly same as given in the following examples, as
they will depend on the application as well as the ExaDigm terminal model.

8.1.1 Display main menu


The POS system sends the following message to notify the ExaDigm terminal to display the application’s
main menu:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"987pjasd4687",
"requestID":1,
"baseAmount":0,
"taxAmount":0
}
}

After receiving the ‘XCRP’ message, the ExaDigm terminal displays the application’s main menu with
menu options similar to the following:

1.Credit Menu
2.Debit Menu
3.End Of Day
4.EBT Menu
5.Void
6.Admin
7.Reprint
8.Store and Forward

After having performed transactions, when the user cancels out of the main menu, the ExaDigm terminal
would send the following message in response with details of the last transaction performed:

{
"packetID":"XCRT",
"packetVersion":"0.0.6",
"packetData":{
"batchID":0,
"transactionID":0,
"baseAmount":0,
"tipAmount":0,
"cashbackAmount":0,
"feeAmount":0,
"totalAmount":0,
"resultCode":0,
"hostMessage":"",
"cardNumber":"",

© ExaDigm, Inc. Page 40 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

"cardIssuer":"",
"cardDataEntry":0,
"referenceNumber":"",
"authorizationCode":""
}
}

8.1.2 Display admin menu


The POS system sends the following message to notify the ExaDigm terminal to display the application’s
administrator menu:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"987pjasd4687",
"requestID":2,
"baseAmount":0,
"taxAmount":0
}
}

After receiving ‘XCRP’ message, ExaDigm terminal will display the “Admin” menu similar to:

1.App Setup
2.NetworkMngt
3.User Manager
4.DownloadMngt
5.System

After the user performs admin functions and exits the admin menu by pressing the [CANCEL] key, the
ExaDigm terminal would send the following response:

{
"packetID":"XCRT",
"packetVersion":"0.0.6",
"packetData":{
"batchID":0,
"transactionID":0,
"baseAmount":0,
"tipAmount":0,
"cashbackAmount":0,
"feeAmount":0,
"totalAmount":0,
"resultCode":0,
"hostMessage":"",
"cardNumber":"",
"cardIssuer":"",
"cardDataEntry":0,
"referenceNumber":"",
"authorizationCode":""
}
}

© ExaDigm, Inc. Page 41 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

8.1.3 Perform settlement


The POS system sends the following message to notify the ExaDigm terminal to run a batch settlement:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"987pjasd4687",
"requestID":3,
"baseAmount":0,
"taxAmount":0
}
}

After receiving the ‘XCRP’ message or the request from the POS system, the ExaDigm application
prompts the user with the message “Print Report?”. If the user selects [ENTER], the application prints the
batch report of transaction details. Then the application prompts the user with the message “Confirm
Settlement?”. If the user selects [ENTER], the device connects to the processor and settles the batch.

If the batch settlement is successful, the ExaDigm terminal would respond with a message like the
following:

{
"packetID":"XCRS",
"packetVersion":"0.0.6",
"packetData":{
"batchDate":"2017/10/31",
"batchTime":"04:44",
"batchID":2,
"batchCount":0,
"batchAmount":300,
"decimals":2,
"currencyChar":"",
"resultCode":0,
"hostMessage":"CLOSE: 3.00",
"referenceNumber":"000009131009030320",
"reportLevel":0
}
}

8.1.4 Reprint receipt


The POS system sends the following message to notify the ExaDigm terminal to reprint a receipt for the
first transaction in the current open batch:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"987pjasd4687",
"requestID":6,
"baseAmount":0,
"transactionID":1,
"taxAmount":0
}
}

© ExaDigm, Inc. Page 42 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

After receiving ‘XCRP’ message, the ExaDigm terminal prompts the user to enter the transaction ID to
print the receipt. After printing the receipt, the ExaDigm terminal would send a response like the
following:

{
"packetID":"XCRT",
"packetVersion":"0.0.6",
"packetData":{
"batchID":3,
"transactionID":1,
"baseAmount":1000,
"tipAmount":0,
"cashbackAmount":0,
"feeAmount":0,
"totalAmount":1000,
"resultCode":0,
"hostMessage":"AUTH/TKT 000547",
"cardNumber":"0026",
"cardIssuer":"[Visa]",
"cardDataEntry":1,
"referenceNumber":"MTA015547 ",
"authorizationCode":"000547"
}
}

8.1.5 Print reports


The POS system sends the following message to notify the ExaDigm terminal to print reports:

{
"packetID":"XCRP",
"packetVersion":"0.0.6",
"packetData":{
"packetAuthorization":"987pjasd4687",
"requestID":7,
"baseAmount":0,
"taxAmount":0
}
}

The ExaDigm terminal prompts the user to select the report type:

1.Detail
2.Condensed
3.Totals Only

Depending on user input, the ExaDigm terminal prints batch report categorized by card type.

After user cancels out of the menus, the ExaDigm terminal would send the following response:

{
"packetID":"XCRT",
"packetVersion":"0.0.6",
"packetData":{
"batchID":0,
"transactionID":0,

© ExaDigm, Inc. Page 43 of 44 Rev. 8/1217


Simple Connect Protocol Version 0.0.6 – API and Guide

"baseAmount":0,
"tipAmount":0,
"cashbackAmount":0,
"feeAmount":0,
"totalAmount":0,
"resultCode":0,
"hostMessage":"",
"cardNumber":"",
"cardIssuer":"",
"cardDataEntry":0,
"referenceNumber":"",
"authorizationCode":""
}
}

© ExaDigm, Inc. Page 44 of 44 Rev. 8/1217

You might also like