SIM Integration Guide - Verifone Support Portal

Transcription

SIM Integration Guide - Verifone Support Portal
PAYware SIM
Secure Integration
Method Device Control
Version 2.0.2.4
© Copyright 2009. VeriFone, Inc. All rights reserved.
Notice
VeriFone has attempted to ensure the accuracy of the contents of this Program Guide. However, this Program Guide may
contain errors or omissions. This Program Guide is supplied ―as-is,‖ without any warranty of any kind, either expressed or
implied, including the implied warranties of merchantability and fitness for a particular purpose.
This information could include technical inaccuracies or typographical errors. Changes are periodically made to the
information herein; these changes will be incorporated in new editions of the publication. VeriFone may make
improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without
notice.
In no event shall VeriFone be liable for any indirect, special, incidental, or consequential damages, including without
limitation damages for loss of business, profits, or the like, even if VeriFone or its representatives have been advised of
the possibility of such damages.
Printed in the United States of America.
Copyright  2010 VeriFone, Inc. All rights reserved. VeriFone, the VeriFone logo, PAYware, and PCCharge and are
registered trademarks of VeriFone. Other brand names or trademarks associated with VeriFone products and services are
trademarks of VeriFone, Inc. All other brand names and trademarks appearing in this manual are the property of their
respective holders.
No part of this publication may be copied, distributed, stored in a retrieval system, translated into any human or computer
language, transmitted in any form or by any means without prior written consent of VeriFone, Inc.
 VeriFone, Inc.
8001 Chatham Center Drive, Suite 500
Savannah, Georgia 31405
Development Support: (877) 659-8983
[email protected]
2
Table of Contents
VeriFone PA-DSS Guide: PAYware PC, PAYware Transact, and PCCharge........................... 5
Introduction and Scope ............................................................................... 5
Applicability ............................................................................................ 5
Distribution and Updates ............................................................................. 5
What does PA-DSS mean to you? .................................................................... 6
Third Party Applications .............................................................................. 6
PA-DSS Guidelines ..................................................................................... 7
More Information .................................................................................... 13
PA-DSS Requirements Reference .................................................................. 13
Overview...................................................................................................... 15
PAYware Secure Integration Method (PAYware SIM) Control ........................................ 15
Supported Operating Systems ..................................................................... 15
Features ...................................................................................................... 16
Supported Hardware ........................................................................................ 17
PIN pads ............................................................................................... 17
MX Passthrough....................................................................................... 17
USB HID Format Card Readers ..................................................................... 19
VeriFone SIM.DLL ............................................................................................ 21
System Requirements ............................................................................... 21
Install / Uninstall Documentation ................................................................ 21
Referencing the Control ............................................................................ 21
Instantiating the Control ........................................................................... 22
PAYware SIM Dependencies ........................................................................ 23
PAYware SIM Namespace ........................................................................... 23
Pseudo-Code ................................................................................................. 24
Credit Card Sale/Pre-Auth/Debit Sale – Retail/Card Present................................ 25
―Follow-On‖ Transactions .......................................................................... 27
SIM.DLL Integration Method ............................................................................... 29
Device Properties .................................................................................... 29
Device Methods ...................................................................................... 33
Communication Properties ......................................................................... 34
Communication Methods ........................................................................... 35
Merchant Configuration Properties ............................................................... 36
Logging Properties ................................................................................... 37
SIM.DLL General Methods .......................................................................... 38
SIM.DLL Events ....................................................................................... 40
SIM.DLL Error Properties ........................................................................... 40
Integrating to PCCharge ................................................................................... 41
PCCharge Properties ................................................................................ 41
PCCharge Methods ................................................................................... 49
PCCharge Gift Card Integration Properties ..................................................... 52
PCCharge Gift Card Integration Methods ........................................................ 54
Integrating to PAYware PC, PAYware Transact or PAYware Connect .............................. 58
PAYware PC, PAYware Transact/PAYware Connect Properties ............................. 58
PAYware PC, PAYware Transact/PAYware Connect Methods ................................ 69
Appendix A – SIM.DLL Constants .......................................................................... 74
3
Action Codes .......................................................................................... 74
Error Codes ........................................................................................... 78
Appendix B – PCCharge Constants ........................................................................ 79
Address Verification Response Codes ............................................................ 79
CVV2/CVC2/CID Response Codes ................................................................. 79
Processing Company Codes ........................................................................ 80
PCCharge Transaction Result Constants ......................................................... 81
Appendix C – PAYware PC, PAYware Transact and PAYware Connect Constants ................ 83
Address Verification Response Codes ............................................................ 83
CVV2/CVC2/CID Response Codes ................................................................. 83
Payment Media ....................................................................................... 84
PAYware Transact and PAYware Connect Transaction Result Constants .................. 85
Termination Status .................................................................................. 86
Appendix D - Unmanaged Code ........................................................................... 87
Appendix E – TIM: Store and Forward Module .......................................................... 88
Appendix F – VeriShield Protect© ......................................................................... 89
Appendix G - MX Passthrough FormAgent Commands ................................................ 90
Appendix H - Editing/Creating the SIM Form Deck ................................................... 113
4
VeriFone PA-DSS Guide: PAYware PC, PAYware Transact, and
PCCharge
Introduction and Scope
The Payment Card Industry Payment Application Data Security Standard (PCI PA-DSS) is comprised of fourteen
requirements that support the Payment Card Industry Data Security Standard (PCI DSS). The PCI Security Standards
Council (PCI SSC), which was founded by the major card brands in June 2005, set these requirements in order to protect
cardholder payment information. The standards set by the council are enforced by the payment card companies who
established the Council: American Express, Discover Financial Services, JCB International, MasterCard Worldwide, and
Visa, Inc.
PCI PA-DSS is an evolution of Visa‘s Payment Application Best Practices (PABP), which was based on the Visa Cardholder
Information Security Program (CISP). In addition to Visa CISP, PCI DSS combines American Express‘ Data Security Operating
Policy (DSOP), Discover Network‘s Information Security and Compliance (DISC), and MasterCard‘s Site Data Protection
(SDP) into a single comprehensive set of security standards. The transition to PCI PA-DSS was announced in April 2008. In
early October 2008, PCI PA-DSS Version 1.2 was released to align with the PCI DSS Version 1.2, which was released on
October 1, 2008.
Applicability
The PCI PA-DSS applies to any payment application that stores, processes, or transmits cardholder data as part of
authorization or settlement, unless the application would fall under the merchant‘s PCI DSS validation. If your application
runs on Windows XP, you are required to turn off Windows XP System Restore Points. PAYware PC, PAYware Transact,
PAYware SIM, and PCCharge (collectively the ―PAYware NA Payment Applications‖) were developed by VeriFone for use by
third parties, and therefore are subject to PA-DSS validation. PAYware Connect (also included under ―PAYware NA
Payment Applications‖) falls under PCI DSS. See the PCI PA-DSS Program Guide to determine if PCI PA-DSS validation is
required for any other payment applications used at the merchant location. It is important to note that PA-DSS validated
payment applications alone do not guarantee PCI DSS compliance. The validated payment application must be
implemented in a PCI DSS compliant environment.
Distribution and Updates
This guide will be provided to VeriFone‘s customers including processors, resellers, ISOs, and integrators along with the
PAYware NA payment applications. It is the responsibility of these parties to ensure the information contained in this
guide is passed on to their customers (the merchant), in order to illustrate the requirements for complying with PCI DSS.
Additional information about PA-DSS and VeriFone‘s PA-DSS Training can be found on our website at
www.verifone.com/padss.
5
What does PA-DSS mean to you?
VeriFone submits its PAYware NA payment applications to an annual PA-DSS audit in order to maintain PA-DSS validation.
In addition, if any major version change is made in any PAYware NA payment applications, VeriFone submits that
application for a full PA-DSS audit again. An example of a major version change would be PCCharge 5.8 moving to
PCCharge 5.9. For minor changes, such as PCCharge 5.8.1 to 5.8.2, an attestation form for minor change revisions is
required. These minor change revisions are submitted to VeriFone‘s Qualified Security Assessor (QSA), which creates a
report to submit to PCI SSC. All validated applications are listed on the PCI SSC web site at
https://www.pcisecuritystandards.org/security_standards/vpa/.
The following table provides opening points to cover in any discussion with merchants on data storage and why a merchant
should use PAYware PC, PAYware Transact, PAYware SIM, PAYware Connect, or PCCharge to assist in maintaining PCI-DSS
compliance.
Cardholder Data
Sensitive
Authentication
Data 2
Data Element
Primary Account Number
Cardholder Name 1
Service Code 1
Expiration Date 1
Full Magnetic Stripe Data3
CAV2/CID/CVC2/CVV2
PIN/PIN Block
Storage
Permitted
Yes
Yes
Yes
Yes
No
No
No
Protection
Required
Yes
Yes 1
Yes 1
Yes 1
N/A
N/A
N/A
PCI DSS Req. 3, 4
Yes
No
No
No
N/A
N/A
N/A
Third Party Applications
A PAYware NA payment application validation does not extend to any external third party application that has integrated
such PAYware NA payment application as the payment engine. The end-to-end transaction process, beginning with entry
into the third party application until the response from the payment engine is returned, must meet the same level of
compliance. In order to claim the third party application is end-to-end compliant, the application would need to be
submitted to a QSA for a full PA-DSS audit.
The use of a PAYware NA payment application also does not exempt a third party integrator‘s application from a PA-DSS
audit. The end user and/or P.O.S. developer can integrate and be compliant in the processing portion of a payment
transaction. A brief review (given below) of the PA-DSS environmental variables that impact the end user merchant can
1
2
3
These data elements must be protected if stored in conjunction with the PAN. This protection should be per PCI DSS
requirements for general protection of the cardholder environment. Additionally, other legislation (for example, related to
consumer personal data protection, privacy, identity theft, or data security) may require specific protection of this data, or
proper disclosure of a company's practices if consumer-related personal data is being collected during the course of business.
PCI DSS; however, does not apply if PANs are not stored, processed, or transmitted.
Do not store sensitive authentication data after authorization (even if encrypted).
Full track data from the magnetic stripe, magnetic-stripe image on the chip, or elsewhere.
6
help the end user merchant obtain and/or maintain PA-DSS compliance. Environmental variables that could prevent
passing an audit include without limitation issues involving a secure network connection(s), end user setup location
security, users, logging and assigned rights.
PA-DSS Guidelines
The following PA-DSS Guidelines are being provided by VeriFone as a convenience to its customers. These PA-DSS
Guidelines were copied from PCI DSS Program Guide as of March 31, 2009. Customers should not rely on these PA-DSS
Guidelines, but should instead always refer to the most recent PCI DSS Program Guide published by PCI SSC.
1. Sensitive Data Storage Guidelines
1.1
Do not store sensitive authentication data after authorization (even if encrypted):
Sensitive authentication data includes the data as cited in the following Requirements 1.1.1 through 1.1.3.
PCI Data Security Standard Requirement 3.2
Note: By prohibiting storage of sensitive authentication data after authorization, the assumption is that the
transaction has completed the authorization process and the customer has received the final transaction approval.
After authorization has completed, this sensitive authentication data cannot be stored.
1.1.1 After authorization, do not store the full contents of any track from the magnetic stripe (located on the
back of a card, contained in a chip, or elsewhere). This data is alternatively called full track, track, track 1, track
2, and magnetic-stripe data.
In the normal course of business, the following data elements from the magnetic stripe may need to be retained:
 The accountholder‘s name,
 Primary account number (PAN),
 Expiration date, and
 Service code
 To minimize risk, store only those data elements needed for business.
Note: See PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms for additional information. PCI Data
Security Standard Requirement 3.2.1
1.1.2 After authorization, do not store the card-validation value or code (three-digit or four-digit number
printed on the front or back of a payment card) used to verify card-not-present transactions.
Note: See PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms for additional information.
PCI Data Security Standard Requirement 3.2.2
1.1.3
After authorization, do not store the personal identification number (PIN) or the encrypted PIN block.
Note: See PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms for additional information.
PCI Data Security Standard Requirement 3.2.3
1.1.4 Securely delete any magnetic stripe data, card validation values or codes, and PINs or PIN block data
stored by previous versions of the payment application, in accordance with industry-accepted standards for secure
deletion, as defined, for example by the list of approved products maintained by the National Security Agency, or
by other State or National standards or regulations.
7
PCI Data Security Standard Requirement 3.2
Note: This requirement only applies if previous versions of the payment application stored sensitive authentication
data.
1.1.5 Securely delete any sensitive authentication data (pre-authorization data) used for debugging or
troubleshooting purposes from log files, debugging files, and other data sources received from customers, to
ensure that magnetic stripe data, card validation codes or values, and PINs or PIN block data are not stored on
software vendor systems. These data sources must be collected in limited amounts and only when necessary to
resolve a problem, encrypted while stored, and deleted immediately after use. PCI Data Security Standard
Requirement 3.2
2. Protect stored cardholder data
2.1
Software vendor must provide guidance to customers regarding purging of cardholder data after expiration
of customer-defined retention period. PCI Data Security Standard Requirement 3.1
2.2
Mask PAN when displayed (the first six and last four digits are the maximum number of digits to be
displayed).
Notes:
 This requirement does not apply to those employees and other parties with a legitimate business need to
see full PAN;
 This requirement does not supersede stricter requirements in place for displays of cardholder data—for
example, for point-of-sale (POS) receipts. PCI Data Security Standard Requirement 3.3
2.3
Render PAN, at a minimum, unreadable anywhere it is stored, (including data on portable digital media,
backup media, and in logs) by using any of the following approaches:
 One-way hashes based on strong cryptography
 Truncation
 Index tokens and pads (pads must be securely stored)
 Strong cryptography with associated key management processes and procedures.
The MINIMUM account information that must be rendered unreadable is the PAN. PCI Data Security Standard
Requirement 3.4
The PAN must be rendered unreadable anywhere it is stored, even outside the payment application.
Note: ―Strong cryptography‖ is defined in the PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms.
2.4
If disk encryption is used (rather than file- or column-level database encryption), logical access must be
managed independently of native operating system access control mechanisms (for example, by not using local
user account databases). Decryption keys must not be tied to user accounts. PCI Data Security Standard
Requirement 3.4.1
2.5
Payment application must protect cryptographic keys used for encryption of cardholder data against
disclosure and misuse. PCI Data Security Standard Requirement 3.5
2.6
Payment application must implement key management processes and procedures for cryptographic keys
used for encryption of cardholder data. PCI Data Security Standard Requirement 3.6
8
2.7
Securely delete any cryptographic key material or cryptogram stored by previous versions of the payment
application, in accordance with industry-accepted standards for secure deletion, as defined, for example the list
of approved products maintained by the National Security Agency, or by other State or National standards or
regulations. These are cryptographic keys used to encrypt or verify cardholder data. PCI Data Security Standard
Requirement 3.6
Note: This requirement only applies if previous versions of the payment application used cryptographic key
materials or cryptograms to encrypt cardholder data.
3. Provide secure authentication features
3.1
The ―out of the box‖ installation of the payment application in place at the completion of the installation
process, must facilitate use of unique user IDs and secure authentication (defined at PCI DSS Requirements 8.1,
8.2, and 8.5.8–8.5.15) for all administrative access and for all access to cardholder data. PCI Data Security
Standard Requirements 8.1, 8.2, and 8.5.8–8.5.15
Note: These password controls are not intended to apply to employees who only have access to one card number
at a time to facilitate a single transaction. These controls are applicable for access by employees with
administrative capabilities, for access to servers with cardholder data, and for access controlled by the payment
application. This requirement applies to the payment application and all associated tools used to view or access
cardholder data.
3.2
Access to PCs, servers, and databases with payment applications must require a unique user ID and secure
authentication. PCI Data Security Standard Requirements 8.1 and 8.2
3.3
Render payment application passwords unreadable during transmission and storage, using strong
cryptography based on approved standards
Note: ―Strong cryptography‖ is defined in PCI DSS and PA-DSS Glossary of Terms, Abbreviations, and Acronyms.
PCI Data Security Standard Requirement 8.4
4. Log payment application activity
4.1
At the completion of the installation process, the ―out of the box‖ default installation of the payment
application must log all user access (especially users with administrative privileges), and be able to link all
activities to individual users. PCI Data Security Standard Requirement 10.1
4.2
Payment application must implement an automated audit trail to track and monitor access.
PCI Data Security Standard Requirements 10.2 and 10.3
5. Develop secure payment applications
5.1
Develop all payment applications in accordance with PCI DSS (for example, secure authentication and
logging) and based on industry best practices and incorporate information security throughout the software
development life cycle. These processes must include the following: PCI Data Security Standard Requirement 6.3
5.1.1 Testing of all security patches and system and software configuration changes before
deployment, including but not limited to testing for the following.
5.1.1.1 Validation of all input (to prevent cross-site scripting, injection flaws, malicious file
execution, etc.)
9
5.1.1.2
5.1.1.3
5.1.1.4
5.1.1.5
Validation of
Validation of
Validation of
Validation of
proper error handling
secure cryptographic storage
secure communications
proper role-based access control (RBAC)
5.1.2 Separate development/test, and production environments
5.1.3 Separation of duties between development/test, and production environments
5.1.4 Live PANs are not used for testing or development.
5.1.5 Removal of test data and accounts before production systems become active
5.1.6 Removal of custom payment application accounts, user IDs, and passwords before payment
applications are released to customers
5.1.7 Review of payment application code prior to release to customers after any significant change, to
identify any potential coding vulnerability.
Note: This requirement for code reviews applies to all payment application components (both internal and publicfacing web applications), as part of the system development life cycle required by PA-DSS Requirement 5.1 and PCI
DSS Requirement 6.3. Code reviews can be conducted by knowledgeable internal personnel or third parties.
5.2
Develop all web payment applications (internal and external, and including web administrative access to
product) based on secure coding guidelines such as the Open Web Application Security Project Guide. Cover
prevention of common coding vulnerabilities in software development processes, to include:
5.2.1 Cross-site scripting (XSS).
5.2.2 Injection flaws, particularly SQL injection. Also consider LDAP and Xpath injection flaws, as well as
other injection flaws.
5.2.3 Malicious file execution
5.2.4 Insecure direct object references.
5.2.5 Cross-site request forgery (CSRF).
5.2.6 Information leakage and improper error handling
5.2.7 Broken authentication and session management
5.2.8 Insecure cryptographic storage
5.2.9 Insecure communications
5.2.10 Failure to restrict URL access.
Note: The vulnerabilities listed in PA-DSS Requirements 5.2.1 through 5.2.10 and in PCI DSS at 6.5.1 through 6.5.10
were current in the OWASP guide when PCI DSS v1.2 was published. However, if and when the OWASP guide is
updated, the current version must be used for these requirements. PCI Data Security Standard Requirement 6.5
5.3
Software vendor must follow change control procedures for all product software configuration changes. PCI
Data Security Standard Requirement 6.4. The procedures must include the following:
5.3.1
5.3.2
5.3.3
5.3.4
Documentation of impact
Management sign-off by appropriate parties
Testing of operational functionality
Back-out or product de-installation procedures
5.4
The payment application must not use or require use of unnecessary and insecure services and protocols
(for example, NetBIOS, file-sharing, Telnet, unencrypted FTP, etc.). PCI Data Security Standard Requirement 2.2.2
10
6. Protect wireless transmissions
6.1
For payment applications using wireless technology, the wireless technology must be implemented
securely.
PCI Data Security Standard Requirements 1.2.3 & 2.1.1
6.2
For payment applications using wireless technology, payment application must facilitate use of industry
best practices (for example, IEEE 802.11i) to implement strong encryption for authentication and transmission.
Payment applications using wireless technology must facilitate the following regarding use of WEP:
 For new wireless implementations, it is prohibited to implement WEP after March 31, 2009.
 For current wireless implementations, it is prohibited to use WEP after June 30, 2010.
PCI Data Security Standard Requirement 4.1.1
7. Test payment applications to address vulnerabilities
7.1
Software vendors must establish a process to identify newly discovered security vulnerabilities (for
example, subscribe to alert services freely available on the Internet) and to test their payment applications for
vulnerabilities. Any underlying software or systems that are provided with or required by the payment application
(for example, web servers, 3rd-party libraries and programs) must be included in this process. PCI Data Security
Standard Requirement 6.2
7.2
Software vendors must establish a process for timely development and deployment of security patches and
upgrades, which includes delivery of updates and patches in a secure manner with a known chain-of-trust, and
maintenance of the integrity of patch and update code during delivery and deployment.
8. Facilitate secure network implementation
8.1
The payment application must be able to be implemented into a secure network environment. Application
must not interfere with use of devices, applications, or configurations required for PCI DSS compliance (for
example, payment application cannot interfere with anti-virus protection, firewall configurations, or any other
device, application, or configuration required for PCI DSS compliance). PCI Data Security Standard Requirements 1,
3, 4, 5, and 6.6
9. Cardholder data must never be stored on a server connected to the Internet
9.1
The payment application must be developed such that the database server and web server are not
required to be on the same server, nor is the database server required to be in the DMZ with the web server.
PCI Data Security Standard Requirement 1.3.2
10. Facilitate secure remote software updates
10.1
If payment application updates are delivered via remote access into customers‘ systems, software vendors
must tell customers to turn on remote-access technologies only when needed for downloads from vendor, and to
turn off immediately after download completes. Alternatively, if delivered via VPN or other high-speed
connection, software vendors must advise customers to properly configure a firewall or a personal firewall product
to secure ―always-on‖ connections. PCI Data Security Standard Requirements 1 and 12.3.9
11
11. Facilitate secure remote access to payment application
11.1
The payment application must not interfere with use of a two-factor authentication mechanism. The
payment application must allow for technologies such as RADIUS or TACACS with tokens, or VPN with individual
certificates. PCI Data Security Standard Requirement 8.3
11.2
If the payment application may be accessed remotely, remote access to the payment application must be
authenticated using a two-factor authentication mechanism. PCI Data Security Standard Requirement 8.3
11.3
If vendors, resellers/integrators, or customers can access customers‘ payment applications remotely, the
remote access must be implemented securely. PCI Data Security Standard Requirement 8.3
12. Encrypt sensitive traffic over public networks
12.1
If the payment application sends, or facilitates sending, cardholder data over public networks, the
payment application must support use of strong cryptography and security protocols such as SSL/TLS and Internet
protocol security (IPSEC) to safeguard sensitive cardholder data during transmission over open, public networks.
Examples of open, public networks that are in scope of the PCI DSS are:
 The Internet
 Wireless technologies
 Global System for Mobile Communications (GSM)
 General Packet Radio Service (GPRS)
PCI Data Security Standard Requirement 4.1
12.2
The payment application must never send unencrypted PANs by end-user messaging technologies (for
example, e-mail, instant messaging, chat). PCI Data Security Standard Requirement 4.2
13. Encrypt all non-console administrative access
13.1
Instruct customers to encrypt all non-console administrative access using technologies such as SSH, VPN, or
SSL/TLS for web-based management and other non-console administrative access. Telnet or rlogin must never be
used for administrative access. PCI Data Security Standard Requirement 2.3
14. Maintain instructional documentation and training programs for customers, resellers, and
integrators
14.1
Develop, maintain, and disseminate a PA-DSS Implementation Guide(s) for customers, resellers, and
integrators that accomplishes the following:
14.1.1 Addresses all requirements in this document wherever the PA-DSS Implementation Guide is
referenced.
14.1.2 Includes a review at least annually and updates to keep the documentation current with all major
and minor software changes as well as with changes to the requirements in this document.
14.2
Develop and implement training and communication programs to ensure payment application resellers and
integrators know how to implement the payment application and related systems and networks according to the
PA-DSS Implementation Guide and in a PCI DSS-compliant manner.
14.2.1 Update the training materials on an annual basis and whenever new payment
application versions are released.
12
More Information

For more information related to security, visit:
http://www.pcisecuritystandards.org
http://www.visa.com/cisp
http://www.sans.org/resources
http://www.microsoft.com/security/default.asp
https://sdp.mastercardintl.com/
http://www.americanexpress.com/merchantspecs

WARNING: Although VeriFone, Inc. has designed SIM.DLL to properly secure credit card cardholder
information according to PCI guidelines, it is ultimately the merchant’s responsibility to secure the
system on which SIM.DLL resides and the environment in which it is used.
PA-DSS Requirements Reference
The following DSS Requirements were referenced in this document:
DSS Requirement
1
2
3
4
6
9
10
11
12
13
14
DSS Sub-requirement(s)
1.1.4, 1.1.5, 1.1.6
2.1
3.1, 3.2, 3.3
4.1 4.2
6.1
9.1
10.1
11.2, 11.3
12.1, 12.2
13.1
14.2
13
Document History: 1.0.0.27
Revision Author Date
Description
1.0.0.20 CC.
04/20/2008 Consolidate documents.
1.0.0.21 TH.
04/28/2008 Format revisions.
1.0.0.22 AW.
05/20/2008 PABP Updates
1.0.0.23 MN.
06/21/2008 Document Updates.
1.0.0.24 PG.
07/12/2008 Document Updates.
1.0.0.25 KM.
09/18/2008 Document Updates.
1.0.0.26 TH.
01/08/2009 PA-DSS Update, Document Updates.
1.0.0.27 MM.
02/10/2009 Document formatting updates.
2.0.0.0
TH.
4/03/2009
2.0.0.1
SP.
10/22/2009 Document Updates.
2.0.0.1
TH.
11/11/2009 Updated Action Codes in the Appendices.
PA-DSS Update
2.0.0.1a TH.
11/16/2009 Updated CommMethod, Added Note to Libusb-win32, added Vx810 Canadian to device lists.
2.0.0.1b TH.
01/07/2010
2.0.2.4
03/01/2010
TH.
Updated Amount, CashBack, and GratuityAmount properties to reflect correct totals for PCCharge vs.
PAYware product lines.
14
Overview
PAYware Secure Integration Method (PAYware SIM) Control
PAYware SIM is a comprehensive ActiveX control that provides a single interface to simply and securely integrate Windowsbased POS systems with VeriFone‘s complete portfolio of payment engines and PIN pads. PAYware SIM is designed to allow
developers to enable processing of Credit, Debit, EBT, Gift and Settlement transactions to VeriFone‘s four payment engine
services: PAYware PC, PCCharge, PAYware Transact, and PAYware Connect. Signature capture is also available via
VeriFone MX series terminals.
PAYware SIM is similar to the Device.ocx and the PSCharge.dll included in the PCCharge DevKit. PAYware SIM combines
the functionality of both controls, while also giving access to VeriFone‘s other payment engines: PAYware PC, PAYware
Transact and PAYware Connect.
Supported Operating Systems





Vista Business Edition (32-bit)
Vista Home Premium (32-bit)
Vista Home Basic Edition (32-bit)
Windows XP Professional Edition (32-bit)
Windows 2003 Server Edition (32-bit)
Note: Please contact Developer Support for information regarding 64-bit Operating Systems.
15
Features
PAYware SIM extends many of the features previously offered by the device.ocx and the PSCharge.dll. It also adds value
through the following features:
Simplified



PAYware SIM is designed to take much of the integration to the devices and payment engines out of the
developer‘s hands.
PAYware SIM handles all PIN pad communication, payment engine message building, and socket or HTTP
communications to the payment engine. The developer is only responsible for setting the transaction, merchant,
device, and communication properties.
An extensive sample is provided to aid integrators with coding their application.
Flexible






PAYware SIM supports the PAYware PC, PCCharge, PAYware Transact, and PAYware Connect APIs. It allows for
simple transitioning to each payment engine.
PAYware SIM supports several popular VeriFone PIN pads and allows for card swipe and PIN entry extraction for
processing.
Supports all processors that are supported by the four payment engines.
Supports Retail, Mail Order, Restaurant, and Ecommerce business types.
Supports Credit, Debit, Gift, EBT, and Settlement transaction types.
Signature capture is available when using PAYware SIM with VeriFone MX series terminals.
Other Features




Utilizes the features of Microsoft‘s .NET 3.0 framework. This provides less dependency on third party controls.
Supports SSL (Secure Socket Layer) connectivity to the payment engines for added security.
Vast error handling.
Contains optional, configurable logging as an additional troubleshooting tool.
16
Supported Hardware
PIN pads
PAYware SIM allows integration to PIN pads connected to the serial port. Currently, PAYware SIM supports the following
devices:













VeriFone 101/1000 (PIN entry only)
VeriFone 2000 (Card Swipe and PIN entry only)
VeriFone SC 5000 (Card Swipe and Pin Entry only, SC 5000 with VeriFone 2000 emulation only)
VeriFone MX830*
VeriFone MX850*
VeriFone MX860*
VeriFone MX870*
VeriFone MX860 (MX Download 1.4 required)
x
VeriFone V 810 with Duet baset
x
VeriFone V 810 (XPI interface, US Debit only) t
VeriFone SC 5000 (Interac Canadian Debit)
x
VeriFone V 810 with Duet base (Interac Canadian Debit)t
x
VeriFone V 810 (XPI interface, Interac Canadian Debit) t
*MX Series terminals will need to be configured with the proper forms. To obtain forms and upload instructions, please
contact Development Support at 1-877-659-8983.
x
t
Minimum requirements for using a V 810 and/or Duet:
 OS:
QG0011A0
 App:
XPI 3.10a
MX Passthrough
PAYware SIM provides an interface to send FormAgent/PAYware Vision commands to the MX devices. For a list of
commands, please consult the FormAgent and PAYware Vision API documentation or see Appendix D on page 90.
New Methods and Properties for MX Passthrough (See Device Properties and Methods beginning on page 32):
 Method
 SendMXCommand
 RetrieveMultiMXResponse
 Properties
 Command
 ResponseExpected
 WaitForFormEvent
 FormEventTimeout
17
Example scenario using detailing response handling:
POS sends a command to show form with buttons on it and request PAYware SIM to wait for a response.
SIM.SendMxCommand(<stx>XSFM RETR_YN<etx>, True, True, 60)
One of three actions could occur:
1. The MX returns a response. PAYware SIM stores that response and the subsequent event occurs. Returned response
to the method would be something like this:
<stx>XSFM<fs>1<etx><gs><stx>XEVT<fs>2<fs>2<fs>0<fs>RETR_YN<etx>
u
2. The MX returns a response. PAYware SIM stores that response but the MX fail to response on the subsequent form
event. Returned response to the method would be something like this:
<stx>XSFM<fs>1<etx><gs>-1
3. The MX fails to return a response to the initial command. Returned response to the method would be this:
-1
***<stx>,<etx>,<fs>, and <gs> are ASCII representations
18
USB HID Format Card Readers
PAYware SIM now provides integration with independent card swipe devices. Integrators will be able to use USB HID format
devices. The benefit to using an HID device is that it will send the encrypted card swipe data directly to PAYware SIM. This
isolates the card data from the POS. This was previously only possible through a PIN pad with an integrated card swipe.
This empowers integrators to develop their applications using a wider range of hardware integration.
Prerequisites required in conjunction with SIM.DLL in order to use USB HID devices:
Libusb-win32 driver from Sourceforge.net:
http://sourceforge.net/project/showfiles.php?group_id=78138&package_id=79216
Note: Users with Windows XP and earlier should download Libusb-win32 driver version 0.1.12.1. Users with
Windows Vista or higher should download Libusb-win32 driver version 0.1.10.1.
Dependencies required in conjunction with SIM.DLL in order to use USB HID devices:



nunit.framework.dll
USB_LIB.dll
USBHIDDRIVER.dll
Steps to Integrate a USB HID device with PAYware SIM:
1.
2.
3.
4.
5.
Set UseUSBCardReader = true
Call GetUSBDeviceList, which will return a list of all USB/HID devices that are attached to the PC.
Set the USBDeviceIndex to the index number of the desired device from the list returned in step two.
Set all non-card related transaction properties in PAYware SIM then call the Process function.
PAYware SIM will now wait for a card swipe from the configured USB/HID device for the allotted amount of time
set in the SwipeTimeout property.
6. Swipe a card through the USB/HID device. The CardSwipe event will fire, at which time the integrated application
is able to gather the masked card, expiration date, and cardholder name by calling the various ―Get‖ methods.
7. PAYware SIM will continue to process the transaction.
The card information may be also gathered prior to calling the process routine by following steps 1-3 and then calling the
RequestCardSwipe method of PAYware SIM. Then continue with step 4-7.
Note
PAYware SIM will only support USB HID format devices. It does not support USB HID
Keyboard wedges. Some USB HID Keyboard wedges can be reconfigured to be true USB HID
formatted devices. Please consult the USB HID manufacturer‘s documentation on
instructions for doing this.

PAYware SIM supports POS Keyboards with built-in card swipe devices; however, that card
swipe device must also be reconfigured to USB HID format.
19
Code Example – Using a combo box to gather and set USB HID device:
SIM.UseUSBCardReader = True
Dim DeviceList As New Array()
DeviceList = SIM.GetUSBDeviceList
For i As Integer = 0 To DeviceList.Count - 1
cboUSBDevices.Items.Add(DeviceList(i))
Next
.USBDeviceIndex = cboUSBDevices.SelectedIndex
20
VeriFone SIM.DLL
SIM.DLL is provided with PAYware SIM. The control allows developers to access the various properties and methods
necessary to integrate with the payment engines and the PIN pad devices.
A comprehensive code sample and source code can be found in the SIM Sample Source Code folder. A sample executable
can be found in the SIM Sample Application folder. The files that need to be deployed with SIM.DLL can be found in the
SIM Deployment Modules folder. For any questions on the source code, sample executable, or deployment modules, please
contact Development Support at 1-877-659-8983.
System Requirements
When integrating or deploying this control it is required that the machine has the following:
 .NET Framework 3.0 or higher installed on the machine
 Microsoft.ApplicationBlocks.ConfigurationManagement.DLL
 Microsoft.ApplicationBlocks.ConfigurationManagement.Interfaces.dll
Install / Uninstall Documentation
IMPORTANT: It is important to note SIM.DLL is deployed as part of an integrated solution. This solution is designed and
created by a developer in order to integrate their product with PCCharge, PAYware PC, PAYware Connect, or PAYware
Transact. As such, the SIM.DLL has no devoted installer. It is the sole discretion and responsibility of the integrator to
meet necessary compliance to create and maintain proper install / uninstall documentation for the product that includes
SIM.DLL.
Referencing the Control
Each development language has a different way of referencing ActiveX control. For example,
In Microsoft‘s Visual Studio 2005, follow the procedure below:
1. Choose Project | My Project Properties from the menu bar, where My Project is the name of your project.
2. On the left side, click on the References tab.
3. Click on the Add button. This will display a dialog box that has several options for finding the SIM.DLL. Clicking on
the Browse option is probably easiest. This will allow you to browse to the location of the SIM.DLL control. Once
you add the reference, you will see ―VeriFone Secure Integration Method Device‖ in the References list. The
control is now available for use.
If Microsoft Visual Studio 2005 is not being used, please refer to the language documentation for referencing ActiveX
controls or libraries.
21
Instantiating the Control
SIM.DLL has two instantiation options from which to choose. If you would like to initialize the PIN pad, you may do so by
instantiating the control as follows:
For PINpad 1000, PINpad 2000, Omni 3730 or SC 5000:
 Private WithEvents Charge As New SIM.Charge(―Com Port‖, ―Baud‖, ―Parity‖, ―DataBits‖, ―Device Name‖,
―Logging Level‖)
For MX Devices using IP:

Private WithEvents Charge As New SIM.Charge(ByVal IPAddress As String, ByVal Port As String, ByVal SSL As
Boolean, ByVal SSLCertificate As String, ByVal Timeout As String, ByVal Device As DeviceType, ByVal LoggingLevel
As Integer)
Initializing the PIN pad on instantiation allows the customer to swipe and initiate a transaction prior to the POS passing the
transaction to the PIN pad. If you wish to not initialize the PIN pad on instantiation, use the following:

Private WithEvents Charge As New SIM.Charge ()
The PIN pad will be initialized on the first transaction.
22
PAYware SIM Dependencies
The following files must be registered and are required by PAYware SIM to perform various functions.
Dependency
Description
SaxComm8.ocx
Required for components that use the COM ports in Windows
Interop.SaxComm8.dll
Required for components that use the COM ports in Windows
USB_LIB.dll
Required for USB HID Devices
USBHIDDRIVER.dll
Required for USB HID Devices
Nunit.framework.dll
Required for USB HID Devices
PAYware SIM Namespace
A a new NameSpace and Class to centralize common Constants and Methods, and make them available to integrators.
Namespace/Class
Description
SIM.VFI.Utils.StringUtils.CharConstants
Constants for common control characters.
SIM.VFI.Utils.StringUtils.AddLRC
Calculates and appends the LRC value to a string.
SIM.VFI.Utils.StringUtils.GetLRC
Calculates the LRC value for a string.
SIM.VFI.Utils.StringUtils.RegexConstants
Constants doe commonly used regular expressions.
23
Pseudo-Code
This section includes several programming algorithms that may be followed when using SIM.DLL. These examples are
intended to be general pseudo-code type of examples and are not intended to reflect any one particular programming
environment.
The examples in this section represent the most common transactions that integrators may want to support when enabling
payment processing in their application. Integrators can refer to the API, code samples, or contact Development support
for questions about any of the transactions that are not covered in this section.
24
Credit Card Sale/Pre-Auth/Debit Sale – Retail/Card Present
This algorithm demonstrates the coding required to perform a swiped credit card transaction in a retail environment. This
example uses an SC 5000 device. See Instantiating the control for use with other devices.
‗Create the object
Private WithEvents Charge As New SIM.Charge (―COM1‖, ―1200‖ , ―E‖, ―7‖, SIM.Charge.DeviceType.ppdSC5000, ―3‖)
At this point, you want to gather card swipe information. When a customer swipes his or her card through the device, the
―CardSwipe‖ event is fired.

Note
The gather card swipe routine is completely optional. SIM.DLL will actually store that data
through the duration of the transaction and send that data when Process is called. This
step is only necessary for data gathering purposes. The card number will be returned in
masked form, only displaying the first 6 and last 4 digits of the card number.
‘Gather Card Swipe
Private Sub Charge_CardSwipe() Handles Charge.CardSwipe
Card = Charge.GetCard
ExpDate = Charge.GetExpDate
Member = Charge.GetMember
End Sub
This data can be saved for when the ―Process‖ function is called.
Private Sub Process()
With Charge
‘Set the Payment Engine/Merchant Configuration properties
‗For PCCharge
.PaymentEngine = SIM.Charge.PaymentSoftware.PCCharge
.MerchantNumber = ―999999999911‖
.Processor = ―NPC‖
.UserID = ―User1‖
‗For PAYware Transact/Payware PC
.PaymentEngine = SIM.Charge.PaymentSoftware.RiTA_PAYware
.ClientID = ―100040001‖
.UserID = ―MANAGER‖
.UserPW = ―Test123%‖
25
‗For PAYware Connect
.PaymentEngine = SIM.Charge.PaymentSoftware.IPCharge
.ClientID = ―100040001‖
.UserID = ―MANAGER‖
.UserPW = ―rita‖
.MerchantKey = ―123457890‖
‘Set the required Communication Properties”
‗For PAYware Transact/PAYware PC/PCCharge
.IPAddress = ―127.0.0.1‖
.Port = ―31419‖
.CommMethod = SIM.Charge.CommMethod.IP
‘Set the required Device properties. Note: that if you already instantiated the device with the properties included as this
example does above, then this portion of code is not necessary.
.Baud = ―1200‖
.Parity = ―E‖
.Databits = ―7‖
.Device = SIM.Charge.DeviceType.ppdVerifone_SC5000
‘Set the transaction properties. This is the basic, minimum data for a transaction. There are many other properties
available. Please refer to the properties section for a list of those properties
.Amount = ―25.00‖
.Cashback = ―10.00‖
‗For Debit
.Ticket = ―123456‖
.Action = SIM.Charge.Command.Credit_Sale
‗Miscellaneous properties
.Timeout = ―60‖
.SwipeTimeout = ―120‖
.LoggingLevel = ―3‖
‗ 3 = highest, 0 = Off
.MaxLogsize = ―3‖
‗in MB
‘Process the transaction
If .Process Then
Print .GetResult
Print .GetAuthCode
Print .GetReference
Print .GetResultCode
Print .GetTroutD
Print .GetResponseText
Else
MsgBox("" & .ErrorCode & ": " & .ErrorDescription)
End If
‘Clear the properties
.ClearProps()
26
“Follow-On” Transactions
This algorithm demonstrates how to perform ―follow-on‖ transactions. ―Follow-on‖ transactions are transactions that
update, modify, or void a previous transaction. For instance, a post-auth is a ―follow-on‖ of a pre-auth. A void is a
―follow-on‖ of a sale or any other completed transaction. A gratuity is a ―follow-on‖ of a sale, etc.
For ‖follow-on‖ transactions, all that is necessary for submission to the payment engine is the TroutD, which was returned
on the original transaction, and the amount, if the amount needs to be updated. (Voids do not require an amount.) The
TroutD is a unique identifier that allows the payment engine to reference the original transaction. The amount is only
necessary on post-auths that are changing the original pre-auth amount, and gratuity transactions.
‗Create the object
Private WithEvents Charge As New SIM.Charge ()
Private Sub Process()
With Charge
‘Set the Payment Engine/Merchant Configuration properties
‗For PCCharge
.PaymentEngine = SIM.Charge.Payment.PaymentSoftware.PCCharge
.MerchantNumber = ―999999999911‖
.Processor = ―NPC‖
.UserID = ―User1‖
‗For PAYware Transact/Payware PC
.PaymentEngine = SIM.Charge.PaymentSoftware.RiTA_PAYware
.ClientID = ―100040001‖
.UserID = ―MANAGER‖
.UserPW = ―Test123%‖
‗For PAYware Connect
.PaymentEngine = SIM.Charge.Payment.PaymentSoftware.IPCharge
.ClientID = ―100040001‖
.UserID = ―MANAGER‖
.UserPW = ―Test123%‖
.MerchantKey = ―123457890‖
‘Set the required Communication Properties”
‗For PAYware Transact/PAYware PC/PCCharge
.IPAddress = ―127.0.0.1‖
.Port = ―31419‖
.SSL = True
.CommMethod = SIM.Charge.CommMethod.IP
27
‘Set the transaction properties.
.Amount = ―25.00‖
‗For post-auths only
.GratuityAmount = ―5.00‖
‗For gratuity/add-tip trans
.TroutD = ―1492‖
‗for PCCharge follow-on trans
.RefTroutD = ―35‖
‗For PAYware Connect, PAYware Transact, and PAYware PC follow-on trans
.Action = SIM.Charge.Command.Credit_Post_Auth
‗Miscelaneous properties
.Timeout = ―60‖
.LoggingLevel = ―3‖
‗ 3 = highest, 0 = Off
.MaxLogsize = ―3‖
‗in MB
‘Process the transaction
If .Process Then
Print .GetResult
Print .GetAuthCode
Print .GetReference
Print .GetResultCode
Print .GetTroutD
Print .GetResponseText
Else
MsgBox("" & .ErrorCode & ": " & .ErrorDescription)
End If
‘Clear the properties
.ClearProps()
28
SIM.DLL Integration Method
The previous section demonstrates how to code using the SIM.DLL. This section will explain in further detail the properties
of PAYware SIM.
Device Properties
This portion describes the properties used in combination with the device. These properties are necessary only when the
device has not been instantiated to initialize. Initializing the PIN pad on instantiation allows the customer to swipe the
card at any time to initiate a transaction.

Note: We have identified IP connectivity (MxCommSetting = 1) to be the optimal way of
communicating with an Mx Device. If the integrator chooses to use Serial (MxCommSetting = 0)
there are other settings that must be taken into consideration prior to initializing the Mx Device.
Please see note and screenshot below the Device Properties table for more information.
Property Name
Data Type
Description
Baud
String
Baud rate (Example: ―1200‖)
Databits
String
Databits (Example: ―7‖ or ―8‖)
Device
Enum
The PIN pad that will be used. Specify this parameter by using a
numerical value (or an enumerated value if the programming language
being used supports enumerated values).
Valid values:
0 (ppdVerifone_1000) – Verifone 101 or 1000
1 (ppdVerifone_2000) – Verifone 2000
2 (ppdVerifone_3730) – Verifone Omni 3730
3 (ppdVerifone_Mx830) –Verifone MX830
4 (ppdVerifone_Mx850) –Verifone MX850
5 (ppdVerifone_Mx860) –Verifone MX860
6 (ppdVerifone_Mx870) – Verifone MX870
7 (ppdVerifone_SC5000) – Verifone SC5000 (w/ 2000 emulation)
8 (ppdVerifone_SC5000_Interac) – VeriFone SC5000 Canadian Debit
9 (ppdVerifone_Vx810) – Verifone Vx810
10 (ppdVerifone_Vx810_Duet) – Verifone Vx810 Duet
11 (ppdVerifone_Vx810_Interac) – Verifone Vx810 Canadian Debit
12 (ppdVerifone_Vx810_Duet_Interac) – Verifone Vx810 Duet Canadian
Debit.
Example: Device = 0
DisplayString
String
For VeriFone MX Devices only. Sets message that will display on PIN
pad.
Parity
String
Parity (―E‖ for even, ―O‖ for odd, ―N‖ for none)
ComPort
String
Number of the COM port to be used (Example: ―COM1‖)
MxCommSetting
Enum
Sets the connection type of the MX Device (Defaults to Serial).
Valid Values:
0 Serial
1 IP
Example: MxCommSetting = 0
MxIPAddress
String
IP Address of the MX Device.
29
Property Name
Data Type
Description
MxPort
String
Port of the MX Device
The name of the SSL certificate used to authenticate with the MX
Device. This value should be the ―Issued To‖ name in the MMC console.
This value is optional. If no value is passed, the SIM will use the first
certificate available in the Personal Certificate Store.
MxSSLCertificate
String
MxSSL
Boolean
Set to TRUE to communicate with the MX Device via SSL (Defaults to
False).
The name of the SSL certificate used to authenticate with the BIN
Manager. This value should be the ―Issued To‖ name in the MMC
console. This value is optional. If no value is passed, the SIM will use
the first certificate available in the Personal Certificate Store.
BinManagerSSLCertificate
String
SwipeTimeOut
String
The amount of time, in seconds, to wait for a customer to swipe the
card through the device. This timer starts when the Process method is
called.
PrintReceipts
String
The text to be printed on the receipt. This method is for the Omni
3730 only.
Boolean
Set to false by default. This will prompt the cardholder to enter a tip
amount on the PIN pad for Sale transactions when set to true. Set to
false if you wish to not have the cardholder be prompted. (Interac
Only)
Boolean
Set to false by default. This will prompt the cardholder to confirm the
surcharge amount, which is indicated by the Surcharge property of the
SIM.DLL. Set to false if you wish to not have the cardholder be
prompted. The ―Process‖ function will return false and the error code
and error description will contain a message stating that the Surcharge
amount was rejected by the cardholder. (Interac Only)
Boolean
Set to true by default. This will prompt the cardholder to enter a
signature on the device if the transaction captured. The signature will
be returned in the GetSignatureData property. Set to false if you wish
to not have the cardholder be prompted. Note: SIM.DLL uses the
SwipeTimeout setting as a value for the signature timeout. If the
cardholder fails to enter their signature in that set amount of time, or
they hit the cancel or clear button, SIM.DLL will issue a void for that
transaction. The error code and error description will be shown and
state whether the void was successful or not. (MX Devices only)
Boolean
Set to false by default. This will prompt the cardholder verify that the
amount of the transaction is correct when set to true. Set to false if
you wish to not have the cardholder be prompted. (MX Only)
PromptForTip
*
PromptForSurcharge
PromptForSigCap
*
*
PromptForAmountConfimation
*
30
Property Name
PromptForCashback
*
Data Type
Description
Boolean
Set to false by default. This will prompt the cardholder to enter a
cashback amount on the PIN pad for Sale transactions when set to true.
Set to false if you wish to not have the cardholder be prompted.
(Interac & MX Only). NOTE: On the MX the cardholder will only be
prompted on Debit and EBT transactions. Also, the CashBackLimit
property should be set when using the property.
Set to false by default. This will prompt the cardholder select a
payment type when set to true. Set to false if you wish to not have the
cardholder be prompted. (MX Only)
NOTE: If only 1 or no payment types are selected, it will NOT prompt
the customer for a payment type selection.
PromptForPaymentType
*
Boolean
NOTE: The selectable payment types will be determined by the
―Enable‖ properties of each payment type. The integrator should send
a credit transaction as the initial payment type. For instance, if the
transaction is a sale, send a credit sale. If the cardholder select debit,
the transaction type will be changed. Payment type selection only
refers to the following transactions:
Debit_Sale, Debit_Return, EBT_Purchase, EBT_Food_Stamp_Purchase,
EBT_Cash_Withdrawal, EBT_Food_Stamp_Return, EBT_Inquiry,
Credit_Pre_Auth, Credit_Voice_Auth, Credit_Sale,
Credit_Sale_with_Gratuity, Credit_Commercial_Card_Return,
Credit_Return, Gift_PreAuth, Gift_Redemption, Gift_Refund
Boolean
Set to false by default. This will reverse (void) the transaction if the
cardholder cancels the signature by hitting the ―clear‖ button on the
screen or if the cardholder does not sign the device in the allotted
timeout period, determined by the SwipeTimeout property. Set to
true to reverse the transaction. (MX Devices only)
Boolean
Set to true by default. This will add credit card as a selectable type
when prompting the cardholder for a payment type when
PromptForPaymentType is set to true.
Boolean
Set to true by default. This will add debit card as a selectable type
when prompting the cardholder for a payment type when
PromptForPaymentType is set to true.
Boolean
Set to true by default. This will add EBT as a selectable type when
prompting the cardholder for a payment type when
PromptForPaymentType is set to true.
Boolean
Set to true by default. This will add gift card as a selectable type
when prompting the cardholder for a payment type when
PromptForPaymentType is set to true.
String
Sets the maximum cashback amount that cardholder can enter when
PromptForCashback is set to true. DD.CC format. For example,
100.00.
Boolean
Set to true to enable the manual entry of card number and expiration
date on the 3 unsuccessful swipe attempts. Note: For MX use only.
UseUSBCardReader
Boolean
Set to True if the integrated application would prefer that SIM.DLL
gather the card swipe data from the USB/HID device during processing
of a transaction. Defaults to False.
USBDeviceIndex
Integer
The index of the USB/HID device in the Device List, returned by calling
GetUSBDeviceList, which the integrated application would prefer to
use to gather card swipes.
ReverseFailedSignatures
EnableCredit
EnableDebit
EnableEBT
EnableGift
*
*
*
*
*
CashBackLimit
EnableManualCardEntry
*
31
Property Name
Data Type
Description
Command
String
This string will be passed to the MX. It should be in format that the MX
application understands (e.g., Form Agent or PAYware Vision). Please
consult the API documentation of the appropriate application for the
commands available and formats. The command should be wrapped
with an STX and ETX character. An LRC is not necessary as SIM.DLL will
add that itself.
ResponseExpected
Boolean
Set to true if the command being passed to the MX will have a response
as not all commands have a response. This informs SIM.DLL whether or
not to wait for a response.
WaitForFormEvent
Boolean
Set to true if there is an expected form event. In this scenario,
typically a form is displayed with some object that is capable of firing a
form event, such as a button press. In this case, a command of ―Show
Form x‖ would be sent to the MX device. The MX device would
respond with the appropriate response. SIM.DLL will wait for the
subsequent form event response. SIM.DLL will then return the first
response, followed by a group separator (<GS>, Character 29),
followed by the form event response.
FormEventTimeout
String
The number of seconds SIM.DLL should wait for a response from the MX
for form events.
Note: Please adjust the following Windows Com properties prior to initializing an Mx Device using Serial as the
MxCommSetting.
32
Device Methods
Property Name
Data Type
ChangeForm(FormName as
*
String)
String
GetUSBDeviceList
ArrayList
SendMXCommand
String
RetrieveMultiMXResponse
Byte Array
Description
Changes the form to display on the MX device. The FormName is the
name of the form in the form deck loaded on the MX Device.
Note: The value is case sensitive. This method should not be called
while the customer is interacting with the device or a transaction is
processing. This could interfere with the payment process.
Example:
Name of the form to be changed: Welcome
Method called: ChangeForm(Welcome)
Returns an indexed list of product names for all USB/HID devices
attached to the PC.
This method will pass the Command parameter to the MX Device that
is configured in SIM.DLL. The return value is the response from the
MX.
Format: SendMXCommand(Command as string, ResponseExpected
as Boolean, WaitForFormEvent as Boolean, FormEventTimeout
as string)
Some Form Agent Commands will have multiple responses. This
function will return outstanding responses from the MX Device. This
command should be called until the ―more indicator‖ in the MX
response is a value of ―N‖. Example Form Agent commands where
this is applicable are ―S00‖ and ―XPNG‖.
Note: These properties need to be set BEFORE the Process method each time Process is called. InitializePinPad
must return True prior to calling these properties and the Process method.
33
Communication Properties
These communication properties must be set in order for SIM.DLL to know how and where to communicate the transaction
data.
Property Name
CommMethod
Data Type
Description
Enum
The type of communication that will be used.
Valid values:
0 – IP = SIM.Charge.CommType.IP
1 – URL = SIM.Charge.CommType.URL
2 – DIAL = SIM.Charge.CommType.DIAL
Note: Only IP is supported for PCCharge and PAYware Transact. Only
URL and DIAL is supported for PAYware Connect
IPAddress
String
IP Address of the Payment Engine
Port
String
Open port on the server that the payment engine is listening for
transactions on. Refer to the payment engine documentation for
instructions on opening the port.
SSL
Boolean
For use with IP CommMethod only. Enables SSL communication with
the server. SSL must be enabled on the server side as well. Currently
supported by PAYware PC, PAYware Transact and PCCharge.
The name of the SSL certificate used to authenticate with the MX
Device. This value should be the ―Issued To‖ name in the MMC console.
This value is optional. If no value is passed, the SIM will use the first
certificate available in the Personal Certificate Store.
SSLCertificate
String
TimeOut
Long
The number of seconds after which a timeout error will be returned
from the control. The count will start when the Process method is
called. It is highly recommended that integrators review the Payment
Engine documentation about timeouts. Setting the TimeOut value
improperly could cause reconciliation issues and problems such as
double-charging a customer‘s account.
TimeOutInt32
Integer
Allows the integrator to set the transaction timeout in seconds. This is
compatible with using Unmanaged code such as VB6, Delphi, etc.
URL
String
For use with PAYware Connect only: The URL of the PAYware Connect
gateway.
This is used to set the UNC path to the PCCharge directory.
Note: The IP Address and COM port communication settings must still
be used to transmit transactions to PCCharge.
Path
String
Note: This is only needed for PCCharge Integration with Paymentech
Canadian Debit.
Note: SIM.DLL needs to access file on the PCCharge directory during
the processing of a Canadian debit transaction. Please make sure the
PCCharge directory is accessible by the client with appropriate
permissions set.
34
Property Name
Data Type
Description
Modem
String
For use with PAYware Connect only: The TAPI name of the modem to
be used for the transaction.
Note: The URL property must be set for IPC dial transactions. It is used
to build the message header.
DialupPhoneNumber
String
For use with PAYware Connect only: The Number to dial for the
transaction.
Note: The URL property must be set for IPC dial transactions. It is used
to build the message header.
UseDialBackup
Boolean
For use with PAYware Connect only: Dial Backup Indicator.
Note: The URL property must be set for IPC dial transactions. It is used
to build the message header.
Property Name
Data Type
Description
GetTAPIDeviceList
Array
For use with PAYware Connect only: Returns an array of strings of
TAPI devices found on the machine.
GetTAPIDeviceListAsString
String
For use with PAYware Connect only: Returns a pipe separated string
of TAPI devices found on the machine.
Communication Methods
35
Merchant Configuration Properties
The payment engine must be set in order to build the correct message from the correct API. These properties must be set
in order to inform the payment engine of which merchant the transaction processed against.
Property Name
Data Type
Description
ClientID
String
Required for PAYware PC, PAYware Transact and PAYware Connect:
The ClientID used by the integrator or merchant determines which
merchant account / terminal will be used to process the transaction.
This value is automatically assigned by PAYware Connect, PAYware PC,
and PAYware Transact.
The ClientID value is actually made up of three different pieces of
information: An ACCOUNT number, a SITE number, and a TERMINAL
number.
Note: for PAYware PC users: This value corresponds to the account
setup in the management client or the configuration wizard, the first
account has a client ID of 100010001, if a second client is setup under
that same account the client ID will be 100010002.
Note: for PAYware Connect users: This value can be retrieved on the
completion for the merchant setup by a reseller in the reseller console.
MerchantKey
String
Required For PAYware Connect only: PAYware Connect uses this
field to validate the merchant. The value is provided by VeriFone and
must be submitted with each transaction request.
String
Required For PCCharge only: the Processor or the Merchant Services
Provider issues this number to the merchant. The value set in this
property must match what is set up in the Merchant Setup window of
PCCharge.
String
Required For PCCharge only: The code for the processing company
that will be used to process the transaction. This value can be no more
than four characters and must be capitalized. The processor specified
in this property must be set up with a valid merchant number in
PCCharge. A list of valid processor codes are listed in Appendix A.
Enum
The payment engine that the transaction is to be submitted to.
Valid Values:
0 – PCCharge
1 – RiTA_PAYware
2 – IPCharge (PAYware Connect)
UserID
String
Required for all 4 Engines:
For PCCharge:
Sets the PCCharge user name associated with the transaction. The user
name must be in DOS file format, no spaces. Max Length: 8 characters*
For PAYware PC, PAYware Transact/PAYware Connect:
The User‘s login as assigned by PAYware PC, PAYware Connect or
PAYware Transact. The UserID must have proper permissions to
perform the Command being requested.
UserPW
String
For PAYware PC, PAYware Transact/PAYware Connect only: The
password assigned to the UserID.
EnableBinManager
Boolean
Set to TRUE to use the VeriFone BIN Manager to check the BIN range of
the swiped card. When the card is swiped SIM.DLL will connect with
the VeriFone BIN Manager to check the BIN Manager to determine the
card type.
Note: If this is not enabled SIM.DLL will continue with the transaction
as usually. This is also the case if it is enabled, but unable to connect
to the VeriFone BIN Manager.
BinManagerIPAddress
String
IP Address of the machine where the VeriFone BIN Manager is located.
BinManagerPort
String
Open the port to connect to the VeriFone BIN Manager.
MerchantNumber**
Processor**
PaymentEngine
36
Property Name
Data Type
Description
BinManagerSSL
Boolean
Set to TRUE to connect to the VeriFone BIN Manager via SSL.
CheckCard
Boolean
Defaults to FALSE. Set to TRUE to have SIM.DLL check the validity of
the card number that was either swiped or passed by the Point of Sale
before submitting the card for authorization to the payment engine.
** The user name is used to keep the transaction associated with the correct terminal. It is highly recommended that integrators review the Multi-User
Support section of the PCCharge manual. This section contains detailed information about user names and how they should be implemented.
*** If the ―Use Default Processor‖ option is enabled in the PCCharge preferences, and the Processor and MerchantNumber properties are omitted from the
transaction request, PCCharge will process all transactions using the ―Default Processor‖. The ―Default Processor‖ is defined as the first merchant
number that is set up PCCharge. In addition, Processor and MerchantNumber should not be set when doing follow-on transactions. Refer to the section
Follow On Transactions.
Logging Properties
SIM.DLL contains logging that can be used to help troubleshoot issues. The following properties are related to SIM.DLL
logging. The SIMEvent.log is located in the same directory as the SIM.DLL and viewable through any text editor.
Property Name
LoggingLevel
Data Type
Description
String
This value determines the amount of logging desired.
Valid Values:
0 – Off/No Logging
1 – Errors Only
2 – Information
3 – Detailed Debug
Maximum size of the log. In MB. Example: 3
MaxLogSize
String
Note: Beginning with SIM version 2.0.2.4, once the MaxLogSize is set
the log will not be purged, but backed up to a new file with the
date/time attached to the name.
Example: SIMEvent.log.20100217.114022
37
SIM.DLL General Methods
Method Name
Return Type
Description
CancelTransaction
Boolean
The CancelTransaction method attempts to cancel the transaction in
progress. Calling the CancelTransaction method does not guarantee
that the transaction will be canceled; it simply attempts to cancel
the transaction. It will return false if the transaction has already
been submitted to the server for authorization.
ClearProps
None
Clears all of the transaction properties and resets them to an empty
string. This should be called at the conclusion of each transaction.
This method will also reset the PIN pad to an idle state.
GetCard
String
This method returns the account number when the card is swiped
through the device. This method should be called upon the firing of
the CardSwipe Event. The card number will be returned in masked
form, only displaying the first 6 and last 4 digits of the card number.
GetExpDate
String
This method returns the expiration date when the card is swiped
through the device. This method should be called upon the firing of
the CardSwipe Event.
GetEnteredCashBack
String
Returns cashback entered by the cardholder if the
PromptForCashback setting was set to true. This is returned at the
end of the transaction. (Interac & MX only)
GetEnteredTipAmount
String
Returns tip amount entered by the cardholder if the PromptForTip
setting was set to true. This is returned at the end of the
transaction. (Interac only)
GetNewTotal
String
When cashback, tip, and/or surcharge amounts are confirmed by the
cardholder, these amounts are totaled and then passed to the
payment engine. This total amount will be returned in this method
at the end of the transaction. (Interac & MX only)
GetMember
String
This method returns the cardholder name when the card is swiped
through the device. This method should be called upon the firing of
the CardSwipe Event.
IsInitialized
Boolean
This method can be called at anytime to determine if the PIN pad is
initialized. Returns True if it is.
InitializePinPad
Boolean
Initializes the PIN pad. Returns TRUE if the initialization was
successful, FALSE if not. Initialize has an optional parameter than
can be passed in that will allow checking of the com port.
KeyLoadRequest
Boolean
This will perform a key synchronization with the host for the SC 5000
Interac PIN pad. This method should only be necessary when first
setting up the PIN pad. (Interac only)
Boolean
This method initiates the transaction. All necessary transaction,
merchant, communication, and device properties should be set prior
to calling this method. This method will return true if the
transaction was successfully submitted to the payment engine and
received a response from the payment engine. Otherwise, it will
return false, at which time the integrator should call .ErrorCode and
.ErrorDesc to determine the reason for the failure.
Process
Returns true if the customer signature was successful. At that time
GetSignatureData should be called to retrieve the signature data
string. Returns false if the customer cancels or the call times-out.
PromptForCustomerSignature
Boolean
Note: It is important that integrators only call this function if they
need to gather signature data outside the transaction. For example
this will allow the MX device to become a general signature device. A
merchant can use this to capture signatures when a customer picks
up an item but they are paying cash. Otherwise allow the SIM.DLL
gather the signature by itself as a normal transaction process.
38
Method Name
Return Type
Description
RequestCardSwipe
None
Prompts the customer to swipe their card. Only to be used with the
MX830, MX850, MX860 and MX870 terminals.
String
This method creates an XML element to be added to the XML
transaction request. This allows a missing Name Value Pair to be
sent.
Example: SetOtherNVP(XMLTAG as String, Value as String)
<XMLTAG>Value</XMLTAG>
None
This method should be called when exiting the integrated application
or prior to destroying SIM.DLL object. This method is responsible for
cleaning up all ports and destroying all internal references of the
SIM.DLL.
SetOtherNVP
Shutdown
Returns signature data in Base64 format. The MX870, MX850 and the
MX830 devices can also be used to capture Cardholder Signature in
Base 64 encoded BMP format data. To enable this feature, the
―Allow Signature Capture‖ option for the MX8xx device must be set
to true. To view the Signature captured, the Base64 encoded data
has to be decoded using the Base64 decode algorithm. The decoded
data can be saved to a BMP file and can be viewed using any image
viewer that supports the BMP format, such as the Paint application
of Windows.
It is the responsibility of the merchant to save the signature image as
desired. The signature is not stored within TIM.
GetSignatureData
String
Note: The MX devices will prompt the customer for their signature
upon a successful (APPROVED or CAPTURED) response for the
following transactions: Credit_Commercial_Card_Sale,
Credit_Pre_Auth, Credit_Voice_Auth, Credit_Sale,
Credit_Sale_with_Gratuity, Credit_Commercial_Card_Return,
Command.Credit_Return. After the customer has signed and presses
the "OK" button on the device, the Process() function will return true
with the normal response properties. At that time, the integrator
can call this method to retrieve the swipe data. If the customer hits
the "Clear" or "Cancel" button when prompted for the signature, or
the signature is not entered in the allotted time (SIM.DLL uses the
SwipeTimeout setting as the signature timeout) SIM.DLL will process
a void for that transaction and return the void results along with an
error code 34 and related error description and raises the error
event. If the void was able to process, the error description will say
as such.
Prompts the customer to manually enter their card number and
expiration date into the device. This should only be done in the
event of a bad card read. This is only for use with the MX series and
the SC 5000(US only). This method will return true if the manual
entry was successful.
RequestManualCardEntry
Boolean
GetCreditCardType
String
Returns Card Issuer.
VerifyCreditCard
String
Returns TRUE if the card passes validity checks.
GetReceipt
String
Note: This method is not required to be called with the MX series of
devices, as those devices will automatically prompt the customer for
manual entry upon 3 unsuccessful card swipes. However, the SC
5000 does not return a failed card swipe response to SIM.DLL.
Therefore this method is required to be called when a manual card
entry is desired for the SC 5000.
Returns receipt data.
Note: Only available for Paymentech Canadian Debit.
39
SIM.DLL Events
Property Name
Description
CardSwipe
This event is fired when a card is swiped through the PIN pad device.
Cancel
This event fires when the customer at the PIN pad device presses the ―Clear‖ or
―Cancel‖ button. This event internal halts the processing of the transaction. The
integrator should restart the transaction if this event fires.
Err
This event is fired when an internal error occurs within SIM.DLL, primarily for PIN
pad problems. When this event fires, the integrator to reset the transaction and
call .ErrorCode and .ErrorDesc to determine the cause of the problem
SIM.DLL Error Properties
Property Name
Return Type Description
ErrorCode
Integer
This property returns an error code if an error was encountered
during the processing, initialization, or use of the PIN pad. Consult
Appendix A for a description of values that may be returned.
ErrorDesc
String
This property returns a string representation of an error if an error
was encountered during the processing, initialization, or use of the
PIN pad. Consult Appendix A for a description of values that may be
returned.
40
Integrating to PCCharge
When integrating to the PCCharge Payment Engine, only these transaction properties should be used.
PCCharge Properties
Property
Data Type
Description
Action
Enum
The action code that identifies what type of transaction will be
performed. Consult the Appendix A for a list of valid values.
Amount
String
The amount of the transaction. Format: DDDDDD.CC. Max Length: 9
characters, including the decimal. The value may not be negative. Do
not use commas. Note: The amount MUST include the decimal point
and the cents even if the amount is a whole dollar amount. Example:
―3.00‖, not ―3‖ or ―3.‖ If sending less than one dollar, the zero
placeholder must be sent as well. Example: ―0.50‖. If the amount is
set to an incorrect format, the Error event will fire after calling the
Send method.
AmxChargeDescription
String
The American Express Charge Description.
This is a general
description describing merchandise: the AMEX representative and the
merchant will decide on an appropriate description. Note: Only
Required for Retail, MOTO and Restaurant transactions when using
AMEX direct settlement or TSYS. Max Length: 23 bytes
AmxDescription_1
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction
will be settled directly with Amex or TSYS.
AmxDescription_2
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction
will be settled directly with Amex or TSYS.
AmxDescription_3
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction
will be settled directly with Amex or TSYS.
AmxDescription_4
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction
will be settled directly with Amex or TSYS.
AuthCode
String
The Authorization code. This value is returned by the issuing bank and
should only be set in a transaction request when processing a PostAuthorization and if the Post-Authorization is being used to add a
Voice-Authorization to the batch or to ―store‖ a Voice-Authorization.
The AuthCode property does not need to be set if the PostAuthorization completes a standard Pre-Authorization using the TroutD
value of the Pre-Authorization.
41
Property
Data Type
Description
Billpay
String
Only valid for Visa debit and credit transactions. It is used to indicate
the transaction is being processed for payment of a bill (utility,
monthly gym dues, etc.) Valid values:
0 – Non-Bill payment transaction
1 – Bill payment transaction
Card
String
The credit card number that will be used when processing the
transaction. Card number must not contain spaces. Please trim field
prior to calling Process. Max Length: 20 characters. Example:
5424180279791765
CashBack
String
The amount of cash back that the customer will receive. This amount
is in addition to value entered in Amount property. For example, if
the total amount of the sale is $10 and the customer has requested $5
cash back, Amount should be set to $10 and CashBack should be set to
$5. The CashBack property should be formatted the same the Amount
property. Max Length: 9 characters. Note: Some processors do not
support the cash back feature.
CardPresent
String
For Retail or Restaurant transactions: Flag that indicates whether
the card was present.
For eCommerce transactions: Flag that indicates what type of
transaction occurred. Valid values:
0 = Card not present, 1 = Card present (for Retail, MOTO, or
Restaurant);
D = Digital goods, P = Physical goods (for eCommerce)
CommercialCardFlag
String
The type of commercial card being submitted. The commercial card
type can be retrieved from the Bin.mdb in the PCCharge directory.
Valid values:
B – Business
P,L,G -- Purchase
C – Corporate
F – Fleet
CustCode
String
Customer code for purchasing/commercial cards. This property must
be set for commercial card transactions in order to get the best
discount rate. Additionally, the transaction‘s action code must
indicate that the transaction is a commercial card transaction. Note:
Global East (NDC), terminal based, requires the customer code be all
upper case. Max Length: 25 characters, alphanumeric only.
CVV2
String
The CVV2 value for the transaction. The card verification value (CVV2
for Visa, CVC2 for MasterCard, and CID for AMEX and Discover) is a 3 or
4 digit number that is embossed in the signature panel for Visa,
MasterCard, and Discover and on the front of the card for AMEX. All
AMEX cards utilize a 4 digit CID. Max Length: 4 characters. CVV2
should only be passed on non-swiped transactions.
DestZipCode
String
Destination Zip Code for American Express purchasing/commercial
cards. This property must be set for American Express commercial
card transactions when using American Express as the processor (or via
split dial) in order to get the best discount rate. Additionally, the
transaction‘s action code must indicate that the transaction is a
commercial card transaction.
DriverID
String
Driver identification field. Only required for Wright Express, Voyager
and Fleet One cards.
DriverPIN
String
Driver personal identification number.
cards.
EBTVoucherNum
String
The EBT Voucher Number.
Valid Values: 0 – Food Stamp, 1 – Cash Benefits
42
Only required for Fuelman
Property
Data Type
Description
EstGratuityAmount
String
For use with Restaurant transactions only. The estimated gratuity
amount for a Sale (action code 1) or Pre-Authorization (action code 4)
transaction.
If the EstGratuityAmount is populated, PCCharge will
submit the sum of the values in the Amount and EstGratuityAmount
fields for authorization. If the transaction is authorized, only the
value in the Amount field will be placed in the PCCharge settlement
file (if running a Sale). By using the EstGratuityAmount, the merchant
can help ensure that the customer has enough available credit on their
card to leave a tip. Once the customer indicates the amount of the
tip that will be left, a gratuity transaction (action code 13) must be
performed on the sale prior to settlement in order to add the actual
gratuity to the transaction. Format: DDDDDD.CC. Max Length: 9
characters, including the decimal. The value may not be negative.
Note: The amount MUST include the decimal point and the cents even
if the amount is a whole dollar amount. Example: ―3.00‖, not ―3‖ or
―3.‖ If sending less than one dollar, the zero placeholder must be
sent as well. Note: It is recommended to check with the processor or
merchant service provider for guidance on what amount to set this
value to. Incorrectly setting this value can result in downgrades.
ExpDate
String
The expiration date associated with the credit card number that will
be processed. Must be exactly four characters long. Format: MMYY
Example: 1209
GratuityAmount
String
For use with Restaurant transactions only. The actual gratuity
amount for a Sale with Gratuity (action code 14), Gratuity (action
code 13), or Post-Authorization (action code 5) transaction.
IDNumber
String
Only required for Voyager cards, dependant on Restriction Code. Four
to six digits. Note: Only used for Pre-Authorization transactions
ItemID
String
The Item ID for the transaction. This field is only used for Chase
Paymentech (GSAR) and can store five (5) four-digit codes that are
defined by Chase Paymentech. Example: If the ItemID is set to
00010002000300040005, it stores 5 item IDs (0001, 0002, 0003, 0004,
and 0005). These numbers must be obtained from Chase Paymentech.
Language
Enum
Language setting for the prompts on the SC 5000 Interac PIN pad.
Values: 0 – English, 1 – French. English is the default.
MCSC
String
The Multiple Count Sequence Count. This is the total number of
installments that will be charged in a non-restaurant recurring billing
scenario. Max Length: 2 characters. Example: If there are 5 payments
to be made, set this property to ―5‖.
MCSN
String
In a restaurant environment: The server or cashier id. Max Length: 2.
This field should be passed for reporting and reconciliation purposes.
In a non-restaurant environment, this field is the Multiple Count
Sequence Number. This is the transaction number within the total
number of payment installments in a recurring billing scenario. Max
Length: 2 characters. Example: If there are 5 payments to be made
and this transaction is the first transaction, set this property to ―1‖.
The first transaction should also include the CVV property, but this
value should not be stored or sent for subsequent transactions.
Member
String
The cardholder‘s name. Max Length: 20 characters.
Multi
String
Flag that indicates whether PCCharge should leave the modem
connection open in anticipation of other transactions that will follow
shortly. If set, this value will override the corresponding value in the
PCCharge GUI. Note that PCCharge can only keep the connection
open as long as is allowed by the processing company. Valid values: 1
= TRUE, 0 = FALSE Default value: 0. This Flag has no effect if
processing will occur over IP or leased line.
43
Property
Data Type
Description
Odometer
String
The odometer reading. Only required for Fleet One (7 digits), Voyager
(7 digits), and Fuelman (6 digits) cards.
Offline
String
Flag that indicates whether PCCharge should process the transaction
offline. If the offline flag is set, PCCharge will put the transaction into
a .BCH file that resides in the PCCharge directory for importing at a
later time. The file can only be imported from the PCCharge GUI.
Valid values: 1 = TRUE, 0 = FALSE
OrigPurchData
String
The Original Purchase Data. Used when performing a Debit Return
with the processors TSYS, Heartland, RBS WorldPay, and NPC. This is
the original transaction date. Format: DDMMhhmm
PeriodicPayment
String
Flag that indicates whether the transaction is a recurring transaction.
Valid values: 1 = TRUE, 0 = FALSE Note: If periodic payment is set to
true, the recurring billing properties must also be set to achieve the
best processing rates.
PrintReceipts
String
The number of receipts that PCCharge should print for the
transaction. This value will override the corresponding value in the
PCCharge GUI.
PCCharge will retain this value for subsequent
transactions. Valid values: 0-9. Setting the property to 0 will disable
receipt printing.
ProductDetailAmount_X
String
Note: Only required for the processor NBS. This is the total dollar
amount for PRODUCT_DETAIL_PRODUCT_CODE_X being authorized.
For example, PRODUCT_DETAIL_PRODUCT_CODE_1 has a
PRODUCT_DETAIL_QUANTITY_1 = 2 and a
PRODUCT_DETAIL_UNIT_PRICE_1 = $2.00, therefore the
PRODUCT_DETAIL_AMOUNT_1 = $4.00
ProductDetailCount
String
Note: Only required for the processor NBS. All card types are
configurable except for Fleet One, which is limited to 7 records. Only
01 – 10 records are currently supported through PCCharge for all card
types.
ProductDetailCode
String
Note: Only required for the processor NBS. This is the number of
items for PRODUCT_DETAIL_PRODUCT_CODE_X. Currently, PCCharge
will support 1 – 10.
ProductDetailQuantity_X
String
Note: Only used for the processor NBS. This is the unit price for
PRODUCT_DETAIL_PRODUCT_CODE_X. This is only used for Fleet One
and Fuelman. Currently, PCCharge will support 1 – 10.
Reference
String
The reference number from the original transaction (returned by the
processor). Set this property only if processing a Post-Authorization
and the Post-Authorization is being used to add a Voice-Authorization
to the batch or to ―store‖ a Voice-Authorization. (For information on
stored Voice-Authorizations, The Reference property does not need to
be set if the Post-Authorization completes a standard PreAuthorization using the TroutD value of the Pre-Authorization. Max
Length: 8 characters. Note:
NBS/ Fleet One cards require a
Reference Number to be sent with each transaction. This is a
minimum of 2 digits and a max of 15. This must be all numeric.
44
Property
Data Type
Description
RestrictionCode
String
Only required for Voyager cards. This is used to determine the level
of identification and which fields are required. Two digits.
Valid Values:
00 - No ID Number or Odometer required. Fuel and Other allowed.
01 - No ID Number or Odometer required. Fuel only allowed.
10 - ID Number only required. Fuel and Other allowed.
11 - ID Number only required. Fuel only allowed.
20 - Odometer only required. Fuel and Other allowed.
21 - Odometer only required. Fuel only allowed.
30 - ID Number and Odometer required. Fuel and Other allowed.
31 - ID Number and Odometer required. Fuel only allowed.
Note: Required for both manual and swiped transactions.
RFID
String
Set to 1 if card information was read from RFID (Radio Frequency
Identification) device. Set to 0 otherwise.
Store
String
Flag indicating whether a Voice Authorization transaction should be
stored. This flag should only be submitted when performing a PostAuthorization transaction (action code 5) that includes an
authorization code from the voice operator. Valid Value: 1 - Store the
Voice Authorization transaction.
Street
String
The cardholder's billing street address. The Street property is used for
address verification. Address verification can only be performed on
non-swiped transactions. For FDC: Use first 5 digits only. Note: For
manually keyed transactions, Street is required to qualify for the
lowest transaction rates. Max Length: 20 characters
Surcharge
String
Optional surcharge amount for Canadian Debit transactions.
TaxAmt
String
The tax amount. This is the portion of the amount that is tax.
Providing the tax amount is required to obtain the best rate on
commercial card transactions. Max Length: 9 characters (including
the decimal). Format: DDDDDD.CC. The transaction's action code must
indicate that it is a commercial transaction. Tax amount should be
included in the amount field.
TaxExempt
String
Tax Exempt Flag. This flag is used to indicate if the purchase is tax
exempt. Used only for Commercial Card Transactions. Valid Values: 1
– Purchase is tax exempt; 0 – Purchase is not tax exempt.
Ticket
String
The ticket or invoice number for internal referencing by merchant.
This value is stored by PCCharge and passed to the processor for
referencing purposes. Max Length: 9 characters. The value can be
alphanumeric. Note: Not all processors support alphanumeric
characters. Note: For manually keyed transactions, Ticket is required
to qualify for the lowest transaction rates. Note: When using Elavon
(NOVA), ticket numbers can only be alphanumeric, no hyphens.
Track
String
Card swipe data. This is populated when card swipe is sent from a
Keyboard Wedge swipe device.
TroutD
String
The TroutD (Transaction Routing ID) is used when performing ―Follow
On‖ transactions. The TroutD is a PCCharge-assigned unique identifier
that will be associated with a transaction and any subsequent
transactions related to it. This property must be set when performing
Follow-on Transactions.
VehicleID
String
Only required for Wright Express cards (5 digits) and Voyager cards (8
digits).
Note: Required for both manual and swiped transactions.
45
Property
Data Type
Description
Zip
String
The cardholder's zip code. The Zip property is used for address
verification. Max Length: 9 digits. Address verification can only be
performed on non-swiped transactions. Note: For manually keyed
transactions, the Zip is required to qualify for the lowest transaction
rates. Note: For manually keyed transactions, the Zip is required to
qualify for the lowest transaction rates. Note: If submitting the 9digit zip, do not include the dash.
FSA t
String
Indicates if the transaction qualifies to be authorized as a Flexible
Spending Account (FSA). Values: 1 = True, 0 = False
Note: If this value is not present it is defaulted to false.
String
Total amount of qualified healthcare products (includes prescription,
vision, clinic, and dental).
Format: dddd.cc (a whole number sent without the decimal will be
assumed as such. Ex. 1095 will be interpreted as $1,095.00)
Note: This value will not be added to the Amount (TRANS_AMOUNT)
sent, but serves to note how much of the Amount (TRANS_AMOUNT)
is qualified healthcare products.
String
Indicates how much of the HealthcareAmount is being authorized for
prescription products.
Format: dddd.cc
String
Indicates how much of the HealthcareAmount is being authorized for
vision products.
Format: dddd.cc
String
Indicates how much of the HealthcareAmount is being authorized for
transit.
Format: dddd.cc
Note: This property is currently not supported by any processors.
String
Indicates how much of the HealthcareAmount is being authorized for
the Co-pay.
Format: dddd.cc
Note: This property is currently not supported by any processors.
HealthcareAmount
t
PrescriptionAmount
VisionAmount
t
TransitAmount
CoPayAmount
t
t
t
Check Properties
CheckType
Enum
Valid Values: 0 = Personal, 1 = Business
CustomerName
String
The name on the customer‘s ID.
CustomerCity
String
The Customer‘s City
CheckReaderCode
String
Passes the type of Check Reader that is being used.
Valid Values:
001 - Magtek mini micr
002 - EnCheck 3000
003 - IVI 2500
004 - IVI 430
005 - IVI 431
006 - ICE 5700
007 - MagtekImager
008 - VeriFone CR1000i
009 - Epson - TMH6000
010 - Epson - TMH6000Imager
011 - WelchAllyn ScanTeam 8300
012 - VeriFone CR600
46
Property
Data Type
Description
013
014
015
016
017
018
019
020
021
022
- Magtek Imager with Modem
- IBM 4610 reader/printer
- Ingenico EC2600
- RDM EC5000
- RDM EC6000
- NCR 7158 and 7167
- LS 100
- MagTek Excella
- MagTek Excella (DL Capture & F&B check images)
- VeriFone Model Quartet
MICR
String
The full swipe from Check Read
Note: MICR is required if check is swiped. The MICR contains the 9digit ABA Number immediately followed by the checking account
number (up to 14 digits) and then optional check number.
Note: MICR stands for Magnetic Ink Character Recognition
MICRReaderStatus
String
Valid Values:
15 = Valid read by MICR reader
15I = Valid read by MICR reader with imaging capability
9 = Manual only
State
String
The Customer‘s State.
CHECK: State from which the ID was issued
Required when CUSTOMER_ID_TYPE used.
License
String
Driver‘s License Number
DLTrack2
String
The parsed TrackII data from the driver‘s license.
ABANumber
String
The Transit Routing number / Bank Number
This value should not be passed if the MICR is sent. This value is
required if check is manually keyed.
Note: ABA stands for American Bankers Association
Note: Must be exactly 9 characters when using Fifth-Third.
PhoneNumber
String
Customer‘s Phone Number.
Maximum Length: 10 characters
Example: 9125551234
DOB
String
Customer Date of Birth. Format: MMDDYYYY
Maximum Length: 8 characters
Example: 01012001 for someone born January 1st, 2001.
CheckNumber
String
The Check Number
This value should be passed if MICR not sent.
ManagerNumber
String
Optional Manager Number for manager override.
CashierNumber
String
The Cashier Number
FirstName
String
The Customer‘s First Name
CHECK: Required by some networks
Note: This value may contain the entire name - first and last
LastName
String
The Customer‘s Last Name.
CHECK: Required by some networks
Note: This value may contain the entire name - first and last
Payee
String
The Payee.
The name of the check's recipient
CustomerAddress
String
The cardholder‘s street address.
CustomerAddress2
String
Continuation of the street address.
CustomerAcctType
String
The Customer Account Type
Specifies whether transaction involves a business account check or a
personal check. If the checking account is designated as a business,
personal identification parameters are not applicable. Valid for Echo
Valid Values: (Echo)
47
Property
Data Type
Description
Personal Accounts:
PC - Personal Checking
PS - Personal Savings
PL - Personal Loan
Personal Accounts:
BC - Business Checking
BS - Business Savings
BL - Business Loan
ACHType
String
The ACH Payment Type as defined by the National Automated Clearing
House Association
Populate only if CUSTOMER_ACCT_TYPE=PC
Note: Echo only
Note: NACHA regulations require that either the session in which the
order was taken be recorded, or the consumer be notified in writing
prior to initiation of the transaction.
Valid Values:
PPD - (Prearranged Payment and Deposit Entry) Used to submit
prearranged credit and debit transactions such as payroll deposits and
periodic bill payments against a consumer's account.
WEB - (Internet-Initiated Entry). Used to submit debit entries pursuant
to an authorization that has been obtained from the consumer via the
Internet. DEFAULT for personal checks
TEL - (Telephone-Initiated Entry). Used to submit transactions
pursuant to an oral authorization obtained from the consumer via the
telephone.
CCD = Cash Concentration or Disbursement (default for business
checks)
CTX = Corporate Trade Exchange (business checks)
CustomerStreet
String
The cardholder‘s street address.
Max Length: 50 characters
Note: In some cases, this value may be truncated to meet the
processor‘s field length specifications.
CustomerStreet2
String
Continuation of the street address.
Suffix
String
The customer suffix (Ex: Jr, Sr)
PhoneNumberType
String
Phone Number Type. Valid Values:
H = Home
W = Work
D = Day
N = Night
CustomerIDType
String
The Customer‘s ID Type. The type of Identification being used to
identify the owner of the checking account. Valid Values:
DL - Drivers License
MI - Military ID
GN - Generic ID
SS - Social Security or Government ID
Note: Required if CustomerIDNum is used
Note: Required for Echo unless this is a business check transaction.
CustomerIDNum
String
The driver‘s license (ID) number of the individual writing the check.
CustomerIDDay
String
Expiration Day – Format: DD
CustomerIDMonth
String
Expiration Month – Format: MM
CustomerIDYear
String
Expiration Year – Format: YY
 These properties are the minimum required to process a Sale or Pre-Authorization transaction.
*Interac Canadian Debit available only for PAYware Connect and PAYware Transact
t
These properties are to be used to process transactions with Healthcare Flexible Spending Accounts. Please see the PCCharge Dev Kit Manual for further
details.
48
PCCharge Methods
Method
Returned
Value
Description
GetAcctDataSrc
String
Returns the entry method of the transaction.
GetACI
String
Returns the VPS indicator to indicate wherever the card is a
VISA, MC or AMEX card PS2000 data. This value is not returned
by all processing companies.
GetAddText1
String
Only supported on Fleet One, this field contains miscellaneous
additional text returned from host. Currently PCCharge will
support GetAddText1- GetAddText4.
GetAuthCode
String
For approved transactions, returns the authorization code from
the issuing bank. For declined transactions, returns the reason
why the transaction was declined (if the issuing bank provides
one) or why the transaction was rejected.
GetAuthDataSrc
String
Returns the Authorization Source Code. The authorization
source code indicates to the processor who authorized the
transaction.
This value is not returned by all processing
companies.
GetAVS
String
Returns the AVS response code from the issuing bank. If
performing
Address
Verification
on
card-not-present
transactions, this code indicates how well the AVS information
passed in matches what the issuing bank has on file for the
cardholder. Consult Appendix B for a description of values that
may be returned.
GetBatchResult
String
Returns the result of a settlement attempt
GetBatchBalance
String
Returns the total balance of the current batch file.
GetBatchNumber
String
Returns the batch number for the current batch
GetBatchCount
String
Returns the batch item count for the current batch.
GetBatchError
String
Returns the error code from the processor if one is provided for
a declined transaction. All processors do not support this field.
GetBatchReference
String
The reference field returns the response from the processor if
the response is a declined. This field is not returned for all
processors.
GetBatchStatus
String
Returns the status of the batch. If the batch was successfully
closed this status will indicate that, if the batch was not closed
and there was a problem, it will return the response from the
processor. For example, if TSYS sends back a rejected batch
response this method will return the RB# number that TSYS
returns.
GetBatchInternalSettlementNumber
String
Returns the Settlement number that is stored in association with
the transaction in PCCharge‘s database. This number is not
returned from the processor but is PCCharge‘s internal
sequencing number scheme.
GetCashBenefitsAvailBalance
String
Returns the available cash benefits balance.
GetCCAvailBalance
String
Returns the Prepaid card balance. Only for prepaid credit cards
with Elavon (NOVA).
GetCardIDCode
Boolean
Returns a code that is used to verify the identity of the
cardholder.
49
Method
Returned
Value
Description
GetCVV2
String
Returns the CVV2/CVC2/CID response code from the issuing
bank. If performing CVV2/CVC2/CID validation on card-notpresent transactions, this code indicates if the CVV2/CVC2/CID
code passed in matches what the issuing bank has on file for the
cardholder. Consult Appendix B for a description of values that
may be returned.
GetDCAvailBalance
String
Returns the available balance on prepaid debit cards. Only for
prepaid debit cards with Elavon (NOVA).
GetECommGoodsInd
String
Returns a value indicating whether the goods sold were digital
or physical in an e-commerce environment.
GetEstGratuityAmount
String
The GetEstGratuityAmount echoes the estimated gratuity from
the original transaction.
GetFoodStampAvailBalance
String
Returns the available food stamp balance
GetGratuityAmount
String
The GetGratuityAmount echoes the gratuity amount from the
original transaction.
GetIND
String
Returns the IND code. The IND code is a transaction description
code and an Interchange compliance field. This value is not
returned by all processing companies.
GetInternalSeqNum
String
Returns the Internal Sequence Number, which is a PCChargeassigned unique number for each transaction. This number is
stored in the Number field in the PCCharge database
(PCCW.MDB) for each transaction.
GetMerchantNumber
String
Returns the merchant number that was specified in the
MerchantNumber property.
GetMSI
String
Returns the Market Specific Indicator. This value indicates the
transaction‘s market segment. This value is assigned by the
card associations and is not returned with all transactions.
GetPCard
String
The GetPCard method returns the PurchaseCard field from the
.oux file. Not all processing companies support this field. Valid
values: 1 = Purchasing card, 0 = Otherwise
GetPEM
String
Returns the Point of Entry Mode that is associated with the
transaction. This value is not returned by all processing
companies.
GetReference
String
Returns the reference number associated with the transaction.
The reference number is assigned by the card associations. The
reference number is used to help identify the transaction and is
useful for the cardholder and merchant when doing research.
This value is not returned with all transactions.
GetRespCode
String
Returns the response code that is provided by the processor.
This value is not returned by all processing companies.
GetResponseCommercialType
String
Returns the type of commercial card that was used for the
transaction. This value is not returned by all processing
companies.
GetRestrictCode
String
Note: Only supported on Fleet One. The product restriction
code.
GetResult
String
Returns the result, which indicates the transaction‘s status upon
completion. Consult Appendix B for a description of values that
may be returned.
GetResultCode
String
Returns the response code that is provided by the processor.
This value is not returned by all processing companies.
50
Method
Returned
Value
Description
GetREC
String
Returns the record number of the transaction in the reversal
file. Will return -1 if the processor doesn't support reversals.
This value is not returned by all processing companies.
GetRET
String
Returns the Retrieval reference number. This value is not
returned by all processing companies
GetTraceNumber
String
Returns the trace number from the processor. Only for prepaid
credit cards with Elavon (NOVA).
GetTBatch
String
Returns the active batch number for the transaction. This value
is not returned by all processing companies.
GetTDate
String
Returns the date that the transaction was processed. This value
is not returned by all processing companies.
GetTicket
String
Returns the ticket number or invoice of the transaction. This
value is echoed back from the original transaction or is
generated by PCCharge if one is required to complete the
transaction.
GetTICode
String
Returns the validation code for VISA or the Bank Net Date if the
card is a MasterCard. This value is not returned by all processing
companies.
GetTIM
String
Returns the Time of the transaction. This value is not returned
by all processing companies.
GetTitem
String
Returns the Transaction Item number or the number that is
associated with the transaction in the settlement file. This value
is not returned by all processing companies.
GetTransNum
String
Returns the Internal Sequence Number, which is a PCChargeassigned unique number for each transaction. This number is
stored in the Number field in the PCCharge database
(PCCW.MDB) for each transaction.
GetTransactionReferenceNumber
String
Returns the transaction reference number from the processor.
Only for prepaid credit cards with Elavon (NOVA).
GetTroutD
String
Returns the TroutD (Transaction Routing ID) for the transaction.
The TroutD is a PCCharge-assigned unique identifier that is
associated with the transaction throughout its ―lifespan‖. This
number is stored in the TroutD field in the PCCharge database
(PCCW.MDB) for each transaction).
GetUser
String
Returns the user name that was specified in the User property.
GetXMLResponse
String
The GetXMLResponse method is used to echo the text that is
returned in the response file associated with the transaction.
GetXMLRequest
String
This method is used to echo the text that is sent in the request
file associated with the transaction.
GetReturnCheckFee
String
Returns the response from the processor, which indicates the
fee for returned checks.
GetReturnCheckNote
String
Returns the response from the processor, which displays a note
for returned checks.
Check Methods
51
PCCharge Gift Card Integration Properties
Property
Data Type
Description
Action
Enum
The action code that identifies what type of transaction will be
performed. Consult the Appendix A for a list of valid values.
Amount
String
The amount of the transaction. Format: DDDDDD.CC. Max Length: 9
characters, including the decimal. The value may not be negative. Do
not use commas. Note: The amount MUST include the decimal point
and the cents even if the amount is a whole dollar amount. Example:
―3.00‖, not ―3‖ or ―3.‖ If sending less than one dollar, the zero
placeholder must be sent as well. Example: ―0.50‖. If the amount is
set to an incorrect format, the Error event will fire after calling the
Send method. Consult the section System Error Codes and
Descriptions for a list of valid errors that will be returned.
Card
String
The credit card number that will be used when processing the
transaction. Max Length: 20 characters. Example: 5424180279791765
ExpDate
String
The expiration date associated with the credit card number that will
be processed. Must be exactly four characters long. Format: MMYY
Example: 1208
GiftPin
String
Only used for the processor SVS. To retrieve pin, call GetGfitPin upon
activation. Used for only for virtual gift card transactions.
GiftUnits
String
The Units for points transactions. Note: Only Givex supports Points
transactions.
GiftSeqNum
String
Stores the card sequence number for GSAR transactions.
IndType
String
The industry type for the transaction. Valid Values: 1 = retail, 2 =
restaurant. For VLNK: 0 = retail, 1 = restaurant, 2 = e-Commerce.
LoyaltyFlag
String
The Loyalty flag indicates whether the transaction is a loyalty
transaction. Currently, only VTEC supports the Loyalty flag. The
default value of the Loyalty flag is false.
Member
String
The cardholder‘s name. Max Length: 20 characters.
Multi
String
Flag that indicates whether PCCharge should leave the modem
connection open in anticipation of other transactions that will follow
shortly. If set, this value will override the corresponding value in the
PCCharge GUI. Note that PCCharge can only keep the connection open
as long as is allowed by the processing company. Valid values: 1 =
TRUE, 0 = FALSE Default value: 0. This Flag has no effect if
processing will occur over IP or leased line.
Offline
String
Flag that indicates whether PCCharge should process the transaction
offline. If the offline flag is set, PCCharge will put the transaction into
a .BCH file that resides in the PCCharge directory for importing at a
later time. The file can only be imported from the PCCharge GUI.
Valid values: 1 = TRUE, 0 = FALSE
PartialRedemptionFlag
String
For GSAR: Flag indicating whether the transaction is a partial
redemption transaction.
PrintReceipts
String
The number of receipts that PCCharge should print for the transaction.
This value will override the corresponding value in the PCCharge GUI.
PCCharge will retain this value for subsequent transactions. Valid
values: 0-9. Setting the property to 0 will disable receipt printing.
PromoCode
String
Used for GVEX: A code defined by the merchant that affects the
calculation from amount and units to points.
RefundFlag
String
Flag that indicates whether to provide the customer a refund when
performing a VTEC Deactivate transaction. Valid Values:
1 – Provide refund
0 – Do not provide refund
52
Property
Data Type
Description
SourceAcctNum
String
For VTEC replace transaction, VLNK Balance Merge and Balance
Transfer, the field should be set to the account number of the old
card.
Ticket
String
The ticket or invoice number for internal referencing by merchant.
This value is stored by PCCharge and passed to the processor for
referencing purposes. Max Length: 9 characters. The value can be
alphanumeric. Note: Not all processors support alphanumeric
characters.
TotalNumCards
String
The total number of cards for multiple issuances for Chase
Paymentech. The refund amount for VTEC‘s deactivate transaction.
TroutD
String
The TroutD (Transaction Routing ID) is used when performing ―Follow
On‖ transactions. The TroutD is a PCCharge-assigned unique identifier
that will be associated with a transaction and any subsequent
transactions related to it. This property must be set when performing
Follow-on Transactions.
VirtualGiftCardFlag
String
Only used for the processor SVS. 0 - False, 1 - True – Only sent on an
activation to determine if a pin should be returned.
53
PCCharge Gift Card Integration Methods
Method Name
Returned
Value
Description – Gift Card Integration Methods
GetActivationCount
String
Returns the number of activations in the current batch
GetActivationTotalAmount
String
Returns the total dollar amount of activations in the current batch
GetAddPointsCount
String
Returns the number of AddPoints Transactions in the current batch
GetAddPointsTotalAmount
String
Returns the total dollar amount of AddPoints transactions in the current
batch
GetAddValueCount
String
Returns the number of AddValue transactions in the current batch
GetAddValueTotalAmount
String
Returns the total dollar amount of AddValue transactions in the current
batch
GetAmountDue
String
Used in partial redemption transactions where only part of the amount was
authorized. Returns the remainder amount that is owed to the merchant.
GetAuth
String
The GetAuth method returns the authorization number for approved
transactions or the reason the transaction was declined (if the processor
provides one). For GVEX Balance transaction: GetAuth will return the
balance remaining on an account. For all other GVEX transactions: GetAuth
will return the transaction‘s reference/error message. For VTEC, returns the
Auth Code. For a VTEC Batch function: use this method to retrieve the
number of sales done that day and the total amounts of sales in the following
format <# of transaction>, <amount>.
GetAuthAmount
String
Used in partial redemption transactions where only part of the amount was
authorized. Returns the actual authorized amount.
GetBalanceTransferCount
String
Returns the number of Balance Transfers in the current batch
GetBalanceTransferTotalAmount
String
Returns the total dollar amount of Balance Transfers in the current batch
GetCaptured
Boolean
The GetCaptured method returns TRUE if PCCharge returns "CAPTURED" as
the result of the transaction. Otherwise, FALSE will be returned. The
GetCaptured method is used to determine if a transaction that will result in a
monetary transfer (Sale, Credit, Post-Authorization, etc.) is approved or
declined. A ―CAPTURED‖ response indicates that the transaction has been
approved.
GetCashBack
String
Used in redemption for remaining balance transactions where the transaction
amount is so close to the balance of the card that the entire balance is
authorized. Returns the remainder that is owed to the customer.
GetCreditCount
String
Returns the number of credits in the current batch
GetCreditTotalAmount
String
Returns the total dollar amount of credits in the current batch
GetErrorCode
Long
The GetErrorCode method returns an error code if an error was encountered
during the use of various methods such as the Send, Cancel, DeleteUserFiles,
and PccSysExists.
GetErrorDesc
String
The GetErrorDesc method returns a string representation of the error that
was encountered during the use of the various methods.
GetExp
String
Returns the expiration date for processors who issue expiration dates in the
response.
GetGiftCardBalance
String
Returns the gift card balance.
GetGiftCardIssuer
String
The GetGiftCardIssuer method returns the gift card issuer of the card that is
present in the Card property. Currently, there are no standards for indicating
what type of gift card is present. Therefore, whatever value is in the
Processor property is what will be returned.
54
Returned
Value
Description – Gift Card Integration Methods
GetGiftCardType
String
The GetGiftCardType method returns the gift card issuer of the card that is
present in the Card property or the optional card parameter that is passed to
the GetGiftCardType method (the GetGiftCardType is the same as
GetGiftCardIssuer). Currently, there are no standards for indicating what
type of gift card is present. Therefore, whatever value is in the Processor
property is what will be returned.
GetGiftPin
String
Only used for the processor SVS. Returned on activation if the virtual gift
card tag is set to ―1‖.
GetMerchantNumber
String
Returns the merchant number that was specified in the MerchantNumber
property.
GetPointsCount
String
Returns the number of points transactions in the current batch
GetPointsTotalAmount
String
Returns the total dollar amount of points transactions in the current batch
GetProcRespCode
String
The processor response code. Only returned by the processor SVS.
GetRefNumber
String
The GetRefNumber returns the Reference field from the .oux file. The
Reference field is used for different purposes (depending on the gift card
processor). For GVEX Register transaction: The first eleven digits of an
account number will be returned. For all VTEC transactions: The account‘s
remaining balance will be returned. For a VTEC batch function: use this
method to retrieve the number of activations done that day and the total
amounts of activations in the following format <# of transaction>,
<amount>.>. For a BPS Redemption transaction, returns the retrieval
reference number.
GetRespCode
String
Returns the response code that is provided by the processor. This value is not
returned by all processing companies.
GetResult
String
Returns the result, which indicates the transaction‘s status upon completion.
Refer to the Transaction Result Constants section (see page 81) for a list of
valid values and descriptions.
GetRet
String
For GVEX: Returns the loyalty balance. For VLNK: Returns the trace number.
For a VTEC batch function: : use this method to retrieve the number of Gift
Transactions Voids performed that day. You can call GetVoidBalance to
determine the total amount of the voids.
GetSaleCount
String
Returns the number of redemptions in the current batch
GetSaleTotalAmount
String
Returns the total dollar amount of redemptions in the current batch
String
The GetTicket method returns the Ticket field from the .oux file. The Ticket
field will return the ticket for all transactions except for a VTEC batch
function. For a VTEC batch function: use this method to retrieve the
number of gift card that has been de-activated that day and the total
amounts of de-activations in the following format <# of transaction>,
<amount>.>.
GetTicket
String
The GetTicket method returns the Ticket field from the .oux file. The Ticket
field will return the ticket for all transactions except for a VTEC batch
function. For a VTEC batch function: use this method to retrieve the
number of gift card that has been de-activated that day and the total
amounts of de-activations in the following format <# of transaction>,
<amount>.>.
GetTIM
String
Returns the Time of the transaction. This value is not returned by all
processing companies. For VTEC, returns the Amount Due.
GetTipCount
String
Returns the number of Tip transactions in the current batch
GetTipTotalAmount
String
Returns the total dollar amount of Tip transactions in the current batch
GetTransDateTime
String
Returns the transaction date and time when passed back by a processor.
Method Name
GetTI
55
Method Name
Returned
Value
Description – Gift Card Integration Methods
GetTransNum
String
Returns the Internal Sequence Number, which is a PCCharge-assigned unique
number for each transaction. This number is stored in the Number field in
the PCCharge database (PCCW.MDB) for each transaction.
GetTroutD
String
Returns the TroutD (Transaction Routing ID) for the transaction. The TroutD
is a PCCharge-assigned unique identifier that is associated with the
transaction throughout its ―lifespan‖. This number is stored in the TroutD
field in the PCCharge database (PCCW.MDB) for each transaction.
GetUpdateData
String
Used internally
GetVoidBalance
String
Returns the Void Balance
GetVoidCount
String
Returns the number of voids in the current batch
GetVoidTotalAmount
String
Returns the total dollar amount of Voids in the current batch
String
The GetXMLResponse method is used to echo the text that is returned in the
response file associated with the transaction. The response (.oux) file
contains XML string data. The text that is retrieved can be used by
integrators that wish to parse the results of the transaction themselves or for
troubleshooting purposes. Note: This method must be called prior to calling
the DeleteUserFiles method.
GetXMLRequest
String
This method is used to echo the text that is sent in the request file
associated with the transaction. The request (.inx) file contains XML string
data. The text that is sent in the .inx file can be used to view the message
of any transaction sent to the server. Note: This method must be called
after the calling send and before DeleteUserFiles method.
GetPreAuthCount
String
Only for GAPI, this returns the total number of gift card pre-auth transactions
processed that day.
GetPreAuthAmount
String
Only for GAPI , this returns the total amount of gift card pre-auth transaction
processed that day.
GetPostAuthCount
String
Only for GAPI, this returns the total number of the gift card post-auth
transactions processed that day.
GetPostAuthAmount
String
Only for GAPI, this returns the total amount of the post-auth transactions
processed that day.
GetIssuanceCount
String
Only for GAPI, this returns the total number of gift cards issued that day.
GetIssuanceTotalAmount
String
Only for GAPI, returns the total amount of the gift cards issued that day.
GetDeactivateCount
String
Only for GAPI, this returns how many gift cards where deactivated that day.
GetDeactivateTotalAmount
String
Only for GAPI, this returns the total amount of gift card deactivations that
day.
GetBalanceAdjustCount
String
Only for GAPI, this returns the number of gift cards that were balance
adjusted that day.
GetBalanceAdjustTotalAmount
String
Only for GAPI, this returns the total amount of balance adjustment on gift
cards that day.
GetBalanceMergeCount
String
Only for GAPI, this returns the total number of the gift cards that were
balance merged that day.
GetBalanceMergeTotalAmount
String
Only for GAPI, this returns the total amount of gift card balance merges that
day.
GetReportLostStolenCount
String
Only for GAPI, returns the total reported stolen or lost gift cards that day.
GetReportLostStolenTotalAmount
String
Only for GAPI, returns the total amount of all stolen or reported lost gift
cards that day.
GetCashoutTotalAmount
String
Only for GAPI, returns the total amount of all cashout transactions processed
that day.
GetCashoutCount
String
Only for GAPI, returns the total number of the cashout transactions
processed that day.
GetXMLResponse
56
Method Name
Returned
Value
Description – Gift Card Integration Methods
GetReactivateCount
String
Only for GAPI, returns the total number of gift cards that have been
reactivated that day.
GetReactivateTotalAmount
String
Only for GAPI, the total amount of all gift cards that have been reactivated
that day.
57
Integrating to PAYware PC, PAYware Transact or PAYware
Connect
When integrating to the PAYware PC, PAYware Transact or PAYware Connect Payment Engines, only these transaction
properties should be used.

Note
PAYware Transact is the recommended integration setting for PAYware PC. Consult the
PAYware PC Server documentation for instruction on configuring PAYware
Transact/PAYware PC integration.
PAYware PC, PAYware Transact/PAYware Connect Properties
Data Type
Description
Action
Property
Enum
The action code that identifies what type of transaction will be
performed. Consult Appendix A for a description of values that may
be returned.
Amount
String
The amount of the transaction. Format: DDDDDD.CC. Max Length: 9
characters, including the decimal. The value may not be negative. Do
not use commas. Note: The amount MUST include the decimal point
and the cents even if the amount is a whole dollar amount. Example:
―3.00‖, not ―3‖ or ―3.‖ If sending less than one dollar, the zero
placeholder must be sent as well. Example: ―0.50‖. If the amount is
set to an incorrect format, the Error event will fire after calling the
Send method. Consult the section System Error Codes and
Descriptions for a list of valid errors that will be returned.
AmxChargeDescription
String
The American Express Charge Description.
This is a general
description describing merchandise: the AMEX representative and the
merchant will decide on an appropriate description. Note: Only
Required for Retail, MOTO and Restaurant transactions when using
AMEX direct settlement or TSYS. Max Length: 23 bytes
AmxDescription_1
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction will
be settled directly with Amex or TSYS.
AmxDescription_2
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction will
be settled directly with Amex or TSYS.
58
Data Type
Description
AmxDescription_3
Property
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction will
be settled directly with Amex or TSYS.
AmxDescription_4
String
American Express Description data.
Additional description or
information about merchandise—if populated, should be printed on the
receipt. Note: Only used for Retail transactions when using AMEX
direct settlement. Max Length: 40 bytes
This field is optional and should only be provided if the transaction will
be settled directly with Amex or TSYS.
AuthCode
String
The Authorization code. This value is returned by the issuing bank and
should only be set in a transaction request when processing a PostAuthorization and if the Post-Authorization is being used to add a
Voice-Authorization to the batch or to ―store‖ a Voice-Authorization.
(For information on stored Voice-Authorizations.
The AuthCode
property does not need to be set if the Post-Authorization completes a
standard Pre-Authorization using the TroutD value of the PreAuthorization. See the section Follow On Transactions for more
information.
BatchTraceID
String
Value used to trace a transaction response back to its original request.
BankNetDate
String
The Banknet Date returned from the original auth
Note: Paymentech Salem Only – Visa / MC Extension record
Format: MMDD
BeverageAmount
String
CREDIT: The Beverage Amount of transaction
Similar to the TIP_AMOUNT Only applicable for Global. Format:
DDDDDD.CC (This value must include dollar and cents separated by a
decimal point (.))
BusinessDate
String
If this value is populated, PAYware Connect or PAYware Transact
stores the business date for reporting purposes. For example, if a
Merchant‘s business is open and processes a transaction after midnight
and wishes for it to appear in the previous day‘s business, the
merchant should pass the Business/Batch Date value of the previous
day.
Format: MMDDYY
Card
String
The credit card number that will be used when processing the
transaction. Max Length: 20 characters. Example: 5424180279791765
CardIDCode
String
Used in conjunction with CVV2. For keyed transactions.
Valid Values:
0 – CVV2 value bypassed or not provided by merchant
1 – Value present (default)
2 – CVV2 value present on card but illegible
9 – Cardholder states the card does not contain a CVV2
CashBack
String
The amount of cash back that the customer will receive. This amount
is included in the value entered in Amount property. For example, if
the total amount of the sale is $10 and the customer has requested $5
cash back, Amount should be set to $15 and CashBack should be set to
$5. The CashBack property should be formatted the same the Amount
property. Max Length: 9 characters. Note: Some processors do not
support the cash back feature.
CashierNum
String
The Cashier number or Server ID
CDD
String
GIFT: The customer-defined data.
ClerkNum
String
GIFT: The clerk number.
59
Data Type
Description
COL1
Property
String
Allows the merchant to pass a value that will then be inserted into the
PAYware Transact XREF table along with the INTRN_SEQ_NUM of the
transaction being processed. This value is not passed to the processor.
Max Length: 255 characters
COL2
String
Allows the merchant to pass a value that will then be inserted, into
the PAYware Transact XREF table along with the INTRN_SEQ_NUM of
the transaction being processed. This value is not passed to the
processor.
Max Length: 255 characters
COL3
String
Allows the merchant to pass a value that will then be inserted into the
PAYware Transact XREF table along with the INTRN_SEQ_NUM of the
transaction being processed. This value is not passed to the processor.
Max Length: 255 characters
CustCode
String
Customer code for purchasing/commercial cards. This property must
be set for commercial card transactions in order to get the best
discount rate. Additionally, the transaction‘s action code must
indicate that the transaction is a commercial card transaction. Note:
Global East (NDC), terminal based, requires the customer code be all
upper case. Max Length: 25 characters, alphanumeric only.
CustomerCity
String
Used for extended AVS.
CustomerFirstName
String
Used for extended AVS.
CustomerLastName
String
Used for extended AVS.
CustomerState
String
Used for extended AVS.
CustomerIPAddress
String
Required for all Echo Transactions.
CustomerPhone
String
Required for all Echo Transactions
CVRespType
String
CVV2 Response Type
Valid Values:
0 – normal response code returned in response
1 – normal response code and CVV2 result returned in response
CVV2
String
The CVV2 value for the transaction. The card verification value (CVV2
for Visa, CVC2 for MasterCard, and CID for AMEX and Discover) is a 3 or
4 digit number that is embossed in the signature panel for Visa,
MasterCard, and Discover and on the front of the card for AMEX. All
AMEX cards utilize a 4 digit CID. Max Length: 4 characters. CVV2
should only be passed on non-swiped transactions.
CVV2RespType
String
CREDI T: CVV2 Response Type
Valid Values:
0 - normal response code returned in response
1 - normal response code and CVV2 result returned in responseSPACE
holder can be sent.
DestZipCode
String
Destination Zip Code for American Express purchasing/commercial
cards. This property must be set for American Express commercial
card transactions when using American Express as the processor (or via
split dial) in order to get the best discount rate. Additionally, the
transaction‘s action code must indicate that the transaction is a
commercial card transaction.
DevType
String
This is a string sent to identify the device being used in connection
with PAYware Connect. This is directly connected to SERIAL_NUM.
Examples: MX870, MX830, Vx670, etc.
Max Length: 20 characters.
DeviceKey
String
Only for PAYware Connect.
Key used for Device Level Authentication. Please see Device
Authentication in PAYware Connect Integration Guide.
60
Data Type
Description
EBTVoucherNum
Property
String
The EBT Voucher Number.
Valid Values:
0 – Food Stamp
1 – Cash Benefits
EcommGoodsInd
String
Ecommerce Goods Indicator. For Ecommerce transactions only.
Valid Values:
P – Physical
D – Digital
EmpNum
String
GIFT: The employee number.
EstGratuityAmount
String
For use with Restaurant transactions only. The estimated gratuity
amount for a Sale (action code 1) or Pre-Authorization (action code 4)
transaction.
If the EstGratuityAmount is populated, PCCharge will
submit the sum of the values in the Amount and EstGratuityAmount
fields for authorization. If the transaction is authorized, only the
value in the Amount field will be placed in the PCCharge settlement
file (if running a Sale). By using the EstGratuityAmount, the merchant
can help ensure that the customer has enough available credit on their
card to leave a tip. Once the customer indicates the amount of the tip
that will be left, a gratuity transaction (action code 13) must be
performed on the sale prior to settlement in order to add the actual
gratuity to the transaction.
Format: DDDDDD.CC. Max Length: 9
characters, including the decimal. The value may not be negative.
Note: The amount MUST include the decimal point and the cents even
if the amount is a whole dollar amount. Example: ―3.00‖, not ―3‖ or
―3.‖ If sending less than one dollar, the zero placeholder must be sent
as well.
See the section Restaurant Transactions for more
information. Note: It is recommended to check with the processor or
merchant service provider for guidance on what amount to set this
value to. Incorrectly setting this value can result in downgrades.
ExpDate
String
The expiration date associated with the credit card number that will
be processed. Must be exactly four characters long. Format: MMYY
Example: 1208
ForceFlag
String
By passing the ForceFlag with the transactions, allows the merchant to
enter a duplicate transaction having the same account number and
amount of another transaction in the same batch or on the same day.
Valid Values: TRUE or FALSE
GiftSecurityCode
String
GIFT: The gift security code.
GiftTranID
String
GIFT: The gift transaction ID.
GratuityAmount
String
For use with Restaurant transactions only. The actual gratuity
amount for a Sale with Gratuity (action code 14), Gratuity (action
code 13), or Post-Authorization (action code 5) transaction.
Note: The Amount property should include the GratuityAmount.
Installment
String
Installment Billing Flag. Allows the ability to establish transactions to
be processed on a repetitive schedule for a pre-determined number of
times. This value requires that MULTI_CLR_SEQ_NUM (See page 157)
and MULTI_CLR_SEQ_CNT (See page 157) be set. This value is
applicable for Direct Marketing only.
Valid Values:
Y or N
IssueNumber
String
Required for Switch/Solo users
ItemID
String
The Item ID for the transaction. This field is only used for Chase
Paymentech (GSAR) and can store five (5) four-digit codes that are
defined by Chase Paymentech. Example: If the ItemID is set to
00010002000300040005, it stores 5 item IDs (0001, 0002, 0003, 0004,
and 0005). These numbers must be obtained from Chase Paymentech.
61
Data Type
Description
LaneNum
Property
String
GIFT: The lane number.
Language
Enum
Language setting for the prompts on the SC 5000 Interac PIN pad.
Values: 0 – English, 1 – French. English is the default.
MCC
String
The Merchant Category Code. Code that corresponds to a description
of the merchant‘s primary business. The MCC for authorization and
deposit per transaction must match.
Note: Paymentech Salem Only - Visa / MC Extension record PAYware
Connect Integration Guide
MCSC
String
The Multiple Count Sequence Count. This is the total number of
installments that will be charged in a non-restaurant recurring billing
scenario. Max Length: 2 characters. Example: If there are 5 payments
to be made, set this property to ―5‖.
MCSN
String
In a restaurant environment: The server or cashier id. Max Length: 2.
This field should be passed for reporting and reconciliation purposes.
See the section Restaurant Transactions for more information.
In a non-restaurant environment, this field is the Multiple Count
Sequence Number. This is the transaction number within the total
number of payment installments in a recurring billing scenario. Max
Length: 2 characters. Example: If there are 5 payments to be made
and this transaction is the first transaction, set this property to ―1‖.
The first transaction should also include the CVV property, but this
value should not be stored or sent for subsequent transactions.
Member
String
The cardholder‘s name. Max Length: 20 characters.
MimeType
Enum
The desired file type for the storage of the signatures.
Values:
JPG = 0 (default)
BMP = 1
PNG = 2
TIFF = 3
Multi
String
Flag that indicates whether PCCharge should leave the modem
connection open in anticipation of other transactions that will follow
shortly. If set, this value will override the corresponding value in the
PCCharge GUI. Note that PCCharge can only keep the connection open
as long as is allowed by the processing company. Valid values: 1 =
TRUE, 0 = FALSE Default value: 0. This Flag has no effect if
processing will occur over IP or leased line.
OrigSeqNum
String
GIFT: The original sequence number.
PhoneType
String
Used in conjunction with CustomerPhone for extended AVS.
Valid Values:
W – Work
H – Home
62
Data Type
Description
POSAuthSrc
Property
String
The source of the authorization. Most POS Source Code terminals and
electronic cash registers (ECR) capture this information when it is
returned from the authorizing Vendor.
Note: If the value is unknown, the field may be left blank.
Valid values:
0 - Source Code unavailable
1 - Stand-in processor (STIP), time out response
2 - LCS response (amount below floor limit)
3 - STIP (issuer in suppress inquiry mode)
4 - STIP (issuer unavailable)
5 – Issuer Provided
7 - Acquire approval (BASE I down)
8 - Acquired approval of a referral
D - Referral (auth code manually keyed)
E - Offline approval (auth code manually keyed)
POSCapability
String
The ability of the POS terminal or cash register.
Note: Paymentech Salem Only - Visa / MC Extension record
Note: If this information is unavailable, this field must contain blanks
Note: The value of ―9‖ will not qualify for the lowest interchange rate.
Valid values:
2 - Magnetic strip reader. (Only valid for best retail interchange rate).
5 – Chip capable terminal
9 - Keyed entry only.
POSCardID
String
The method utilized for identifying the cardholder at the point of sale.
Note: Paymentech Salem Only - Visa / MC Extension record
Valid values:
1 - Signature obtained (only valid value for best retail interchange
rate).
2 - Personal Identification Number (PIN) utilized.
3 - Unattended terminal, no PIN pad.
4 - Mail order (not valid for retail interchange).
POSEntryMode
String
How the transaction was entered.
Note: Paymentech Salem Only - Visa / MC Extension record
Note: If the value is unknown, the field may be left blank. The value
―90‖ is required to qualify for the lowest interchange rate.
Valid values:
01 - Manually keyed.
02 - Magnetic stripe read. (General or Track 2)
05 - Initiated by a chip card; CVV data may be reliable
06 - Magnetic stripe read. (Track 1)
81 - Manually keyed E-Commerce (MasterCard Only)
90 - Entire magnetic stripe read and transmitted
95 - Initiated by a chip card; CVV data may be unreliable
PostType
String
The Card Type of the POST operation
Paymentech Salem Only - Visa / MC Extension record
Valid Values:
MC=MasterCard
VI=VISA
CardPresent
String
Mainly for manually entered transactions (if the card is swiped, then
PAYware Connect and PAYware Transact knows it was present).
Valid Values:
1 - card not present
2 - card present
3 - card swiped
PurchaseID
String
Purchase order number. Assigned by the merchant for the purchasing
card transaction. May be required for a Global completion.
63
Data Type
Description
Quasicash
Property
String
Used for purchase of semi-cash items such as casino chips, travelers
checks, stamps, etc.
CREDIT: Only Global supports Quasicash payments
Valid Values:
TRUE
FALSE (Default)
RBAccount
String
Account number for recurring billing. Note: PAYware Connect Only
RBContractID
String
Contract ID for recurring billing. Note: PAYware Connect Only
RBCustomerID
String
Customer ID for recurring billing. Note: PAYware Connect Only
RBEmail
String
Email for recurring billing. Note: PAYware Connect Only
Recurring
String
Recurring Billing Flag. Flag to indicate the transaction is recurring.
Only applicable to Direct Marketing. Do not submit AVS (Street or Zip)
when using this flag.
Valid Values:
Y or N
RefTroutD
String
Value is presented during a follow-on transaction with PAYware
Connect. This value should be the original TroutD received in the
response during the initial authorization. Once this value is added it
replaces the need to resubmit the original ACCOUNT_NUM, EXP_DATE,
and TRACK_DATA.
NOTE: The only reference transactions supported are:
ELAS
HTUA_ERP
HTUA_ECIOV
HTUA_TSOP
ReturnACI
String
Authorization Characteristics Indicator
The ACI is generated by the merchant's processor company.
Note: Paymentech Salem Only - Visa / MC Extension record
SerialNumber
String
Unique string sent to PAYware Connect. This string should accompany
transactions when using a device in connection with PAYware Connect.
This should be accompanied by DEVTYPE.
Note: PAYware Connect Only.
ShiftID
String
The Shift ID
An Alphanumeric code for a server‘s shift. Example: L = lunch
SignatureData
String
Signature data in base 64 format collected from the .GetSignatureData
method.
StartDate
String
Required for Switch/Solo users.
StatementDescription
String
Item Descriptor for ―M‖ Record
Integration Guide
Note: Paymentech Salem Only Max Length:
18 bytes (if StatementName = 3
14 bytes (if StatementName = 7
9 bytes (if StatementName = 12
Payment Processing. PAYware Connect
M record processing
bytes)
bytes)
bytes)
StatementInfo
String
Merchant Information such as telephone number, city, etc.
Note: Paymentech Salem Only - M record processing
Max Length: 13 bytes.
StatementName
String
Note: Paymentech Salem Only - M record processing
The Merchant‘s Name
64
Data Type
Description
Street
Property
String
The cardholder's billing street address. The Street property is used for
address verification. Address verification can only be performed on
non-swiped transactions. For FDC: Use first 5 digits only. Note: For
manually keyed transactions, Street is required to qualify for the
lowest transaction rates. Max Length: 20 characters
Surcharge
String
Optional surcharge amount for Canadian Debit transactions.
TaxAmt
String
The tax amount. This is the portion of the amount that is tax.
Providing the tax amount is required to obtain the best rate on
commercial card transactions. Max Length: 9 characters (including
the decimal). Format: DDDDDD.CC. The transaction's action code must
indicate that it is a commercial transaction. Tax amount should be
included in the amount field.
Ticket
String
The ticket or invoice number for internal referencing by merchant.
This value is stored by PCCharge and passed to the processor for
referencing purposes. Max Length: 9 characters. The value can be
alphanumeric. Note: Not all processors support alphanumeric
characters. Note: For manually keyed transactions, Ticket is required
to qualify for the lowest transaction rates. Note: When using Elavon
(NOVA), ticket numbers can only be alphanumeric, no hyphens.
TotalNumCards
String
GIFT: The total number of cards being activated.
TransactionCode
String
GIFT: The transaction code.
TransSeqFlag
String
GIFT: The transaction sequence flag.
TroutD
String
The TroutD (Transaction Routing ID) is used when performing ―Follow
On‖ transactions. The TroutD is a PCCharge-assigned unique identifier
that will be associated with a transaction and any subsequent
transactions related to it. This property must be set when performing
Follow-on Transactions.
UseTIMPassthrough
Boolean
This property should be set to TRUE when using the TIM in conjunction
with the SIM.DLL. For more information See Appendix E.
Note: PAYware Connect only.
ValidCode
String
Validation Code.
Assigned by the VISA authorization system.
Note: Paymentech Salem Only - Visa / MC Extension record
Zip
String
The cardholder's zip code. The Zip property is used for address
verification. Max Length: 9 digits. Address verification can only be
performed on non-swiped transactions. Note: For manually keyed
transactions, the Zip is required to qualify for the lowest transaction
rates. Note: For manually keyed transactions, the Zip is required to
qualify for the lowest transaction rates. Note: If submitting the 9digit zip, do not include the dash.
Dynamic Currency Conversion (DCC)
DCCIndicator
String
Set with the value ―Y‖. The host will convert the transaction to the
cardholder‘s currency based on the BIN.
DCCCustomerCurrency
String
Used for currency selection. Cardholder ISO currency code. Refer to
table below.
DCCExponent
String
Used for currency selection. Number of exponent digits in the
DCC_RATE. Numerical value only.
DCCRate
String
Used for currency selection. Foreign currency exchange rate.
65
Data Type
Description
DCCCustomerAmount
Property
String
Used for currency selection. Cardholder transaction amount.
= (TRANS_AMOUNT * exchange rate)
Modifier
String
CheckType
Enum
Valid Values: 0 = Personal, 1 = Business
CustomerName
String
The name on the customer‘s ID.
CustomerCity
String
The Customer‘s City
CheckReaderCode
String
Passes the type of Check Reader that is being used.
Valid Values:
001 - Magtek mini micr
002 - EnCheck 3000
003 - IVI 2500
004 - IVI 430
005 - IVI 431
006 - ICE 5700
007 - MagtekImager
008 - VeriFone CR1000i
009 - Epson - TMH6000
010 - Epson - TMH6000Imager
011 - WelchAllyn ScanTeam 8300
012 - VeriFone CR600
013 - Magtek Imager with Modem
014 - IBM 4610 reader/printer
015 - Ingenico EC2600
016 - RDM EC5000
017 - RDM EC6000
018 - NCR 7158 and 7167
019 - LS 100
020 - MagTek Excella
021 - MagTek Excella (DL Capture & F&B check images)
022 - VeriFone Model Quartet
MICR
String
The full swipe from Check Read
Note: MICR is required if check is swiped. The MICR contains the 9digit ABA Number immediately followed by the checking account
number (up to 14 digits) and then optional check number.
Note: MICR stands for Magnetic Ink Character Recognition
MICRReaderStatus
String
Valid Values:
15 = Valid read by MICR reader
15I = Valid read by MICR reader with imaging capability
9 = Manual only
State
String
The Customer‘s State.
CHECK: State from which the ID was issued
Required when CUSTOMER_ID_TYPE used.
License
String
Driver‘s License Number
DLTrack2
String
The parsed TrackII data from the driver‘s license.
ABANumber
String
The Transit Routing number / Bank Number
This value should not be passed if the MICR is sent. This value is
required if check is manually keyed.
Note: ABA stands for American Bankers Association
Note: Must be exactly 9 characters when using Fifth-Third.
PhoneNumber
String
Customer‘s Phone Number.
Maximum Length: 10 characters
Example: 9125551234
Check Properties
66
Data Type
Description
DOB
Property
String
Customer Date of Birth. Format: MMDDYYYY
Maximum Length: 8 characters
Example: 01012001 for someone born January 1st, 2001.
CheckNumber
String
The Check Number
This value should be passed if MICR not sent.
ManagerNumber
String
Optional Manager Number for manager override.
CashierNumber
String
The Cashier Number
FirstName
String
The Customer‘s First Name
CHECK: Required by some networks
Note: This value may contain the entire name - first and last
LastName
String
The Customer‘s Last Name.
CHECK: Required by some networks
Note: This value may contain the entire name - first and last
Payee
String
The Payee.
The name of the check's recipient
CustomerAddress
String
The cardholder‘s street address.
CustomerAddress2
String
Continuation of the street address.
CustomerAcctType
String
The Customer Account Type
Specifies whether transaction involves a business account check or a
personal check. If the checking account is designated as a business,
personal identification parameters are not applicable. Valid for Echo
Valid Values: (Echo)
Personal Accounts:
PC - Personal Checking
PS - Personal Savings
PL - Personal Loan
Personal Accounts:
BC - Business Checking
BS - Business Savings
BL - Business Loan
ACHType
String
The ACH Payment Type as defined by the National Automated Clearing
House Association
Populate only if CUSTOMER_ACCT_TYPE=PC
Note: Echo only
Note: NACHA regulations require that either the session in which the
order was taken be recorded, or the consumer be notified in writing
prior to initiation of the transaction.
Valid Values:
PPD - (Prearranged Payment and Deposit Entry) Used to submit
prearranged credit and debit transactions such as payroll deposits and
periodic bill payments against a consumer's account.
WEB - (Internet-Initiated Entry). Used to submit debit entries pursuant
to an authorization that has been obtained from the consumer via the
Internet. DEFAULT for personal checks
TEL - (Telephone-Initiated Entry). Used to submit transactions
pursuant to an oral authorization obtained from the consumer via the
telephone.
CCD = Cash Concentration or Disbursement (default for business
checks)
CTX = Corporate Trade Exchange (business checks)
CustomerStreet
String
The cardholder‘s street address.
Max Length: 50 characters
Note: In some cases, this value may be truncated to meet the
processor‘s field length specifications.
CustomerStreet2
String
Continuation of the street address.
67
Data Type
Description
Suffix
Property
String
The customer suffix (Ex: Jr, Sr)
PhoneNumberType
String
Phone Number Type
Valid Values:
H = Home
W = Work
D = Day
N = Night
CustomerIDType
String
The Customer‘s ID Type. The type of Identification being used to
identify the owner of the checking account.
Valid Values:
DL - Drivers License
MI - Military ID
GN - Generic ID
SS - Social Security or Government ID
Note: Required if CustomerIDNum is used
Note: Required for Echo unless this is a business check transaction.
CustomerIDNum
String
The driver‘s license (ID) number of the individual writing the check.
CustomerIDDay
String
Expiration Day – Format: DD
CustomerIDMonth
String
Expiration Month – Format: MM
CustomerIDYear
String
Expiration Year – Format: YY
SaleType
String
Echo Check Deposit
Optional
Enter for ACH only – without verification.
Valid Value: ―ACH_ONLY‖
OtherName
String
Optional
Other name on the check
CustomerCountry
String
Valid Values:
CA – Canada
MX – Mexico
US – USA (Default)
*Interac Canadian Debit available only for PAYware Connect and PAYware Transact
68
PAYware PC, PAYware Transact/PAYware Connect Methods
Method
Returned Description
Value
Cancel
Boolean
The Cancel method attempts to cancel the transaction in progress. Calling the Cancel
method does not guarantee that the transaction will be canceled; it simply attempts to
cancel the transaction. It will return false if the transaction has already been submitted to
the server for authorization.
Clear
None
The Clear method will clear the values in all properties and methods
It is recommended that this method be called:
After the transaction results have been retrieved by using the various .get methods
After the DeleteUserFiles method has been called
Prior to running the next transaction
GetAuthCode
String
For approved transactions, returns the authorization code from the issuing bank. For
declined transactions, returns the reason why the transaction was declined (if the issuing
bank provides one) or why the transaction was rejected.
GetAVS
String
Returns the AVS response code from the issuing bank. If performing Address Verification on
card-not-present transactions, this code indicates how well the AVS information passed in
matches what the issuing bank has on file for the cardholder. Consult Appendix C for a
description of values that may be returned.
GetBatchResult
String
Returns the result of a settlement attempt
GetBatchBalance
String
Returns the total balance of the current batch file.
GetBatchNumber
String
Returns the batch number for the current batch
GetBatchCount
String
Returns the batch item count for the current batch.
GetBatchError
String
Returns the error code from the processor if one is provided for a declined transaction. All
processors do not support this field.
GetBatchReference
String
The reference field returns the response from the processor if the response is a declined.
This field is not returned for all processors.
GetBatchStatus
String
Returns the status of the batch. If the batch was successfully closed this status will indicate
that, if the batch was not closed and there was a problem, it will return the response from
the processor. For example, if TSYS sends back a rejected batch response this method will
return the RB# number that TSYS returns.
GetBatchTraceID
String
Value used to trace a transaction response back to its original request.
When a value for BatchTraceID is passed in, that same value will be returned in the response.
This value is not stored in the database.
Format: Alphanumeric, unlimited length
GetBatchInternalSettlementNumber String
Returns the Settlement number that is stored in association with the transaction in
PCCharge‘s database. This number is not returned from the processor but is PCCharge‘s
internal sequencing number scheme.
GetCashBenefitsAvailBalance
String
Returns the available cash benefits balance.
GetClientID
String
Returns the Client ID being used in the transaction.
GetCVV2
String
Returns the CVV2/CVC2/CID response code from the issuing bank.
If performing
CVV2/CVC2/CID validation on card-not-present transactions, this code indicates if the
CVV2/CVC2/CID code passed in matches what the issuing bank has on file for the cardholder.
Consult Appendix C for a description of values that may be returned.
GetDeviceKey
String
Retrieve Device Key.
GetEstGratuityAmount
String
The GetEstGratuityAmount echoes the estimated gratuity from the original transaction.
GetFoodStampAvailBalance
String
Returns the available food stamp balance.
GetGratuityAmount
String
The GetGratuityAmount echoes the gratuity amount from the original transaction.
GetInternalSeqNum
String
Returns the Internal Sequence Number, which is a PCCharge-assigned unique number for
each transaction.
This number is stored in the Number field in the PCCharge database
(PCCW.MDB) for each transaction.
69
Method
Returned Description
Value
GetPaymentMedia
String
Code that identifies the issuer of the card. Consult Appendix C for a description of values
that may be returned.
GetReference
String
Returns the reference number associated with the transaction. The reference number is
assigned by the card associations. The reference number is used to help identify the
transaction and is useful for the cardholder and merchant when doing research. This value is
not returned with all transactions.
GetRespCode
String
Returns the response code that is provided by the processor. This value is not returned by all
processing companies.
GetResponseCommercialType
String
Returns the type of commercial card that was used for the transaction. This value is not
returned by all processing companies.
Valid Return Values:
B – Business
C – Corporate
P – Purchase
GetResponseText
String
Response text from the processor or PAYware PC/PAYware Connect/PAYware Transact
Transaction specific data that is returned by the processor, bank, or PAYware PC/PAYware
Connect/PAYware Transact. Varies by transaction type and processor.
GetRestrictCode
String
Note: Only supported on Fleet One. The product restriction code.
GetResult
String
Returns the result, which indicates the transaction‘s status upon completion. Consult
Appendix C for a description of values that may be returned.
GetResultCode
String
Returns the response code that is provided by the processor. This value is not returned by all
processing companies. Consult Appendix C for a description of values that may be returned.
GetSettlementDetails
String
Returns the result of the settlement as a string of parsed data in place of an XML response.
The string will appear as follows:
<STX>InternalSeqNum<FS>TerminationStatus<FS>ResultCode<FS>Result
<GS>BatchCount
<RS>BatchSeqNum<FS>ResultCode<FS>Result<FS>ResponseText<FS>BatchCount
<FS>BatchBalance<FS>TransSeqFirst<FS>TransSeqLast
<GS>ExceptionCount
<RS>ExceptionElements<FS>Reason
<ETX>
GetStatus
String
Returns current status.
GetTBatch
String
Returns the active batch number for the transaction. This value is not returned by all
processing companies.
GetTermStatus
String
The Termination Status of the transaction request
Note: This value is assigned and returned by
PAYware PC/PAYware Connect/PAYware Transact.
Consult Appendix C for a description of values that may be returned.
Note: If SUCCESS is returned, it simply indicates that
PAYware PC /PAYware Connect/PAYware Transact processed the request properly. It DOES
NOT mean that a request, transaction, settlement, etc., was accepted or closed by the
processor. Check the RESULT value and RESULT_CODE returned to determine the status of a
transaction request. When a value other than "SUCCESS" is returned, it means that the
request was not processed properly by
PAYware PC /PAYware Connect/PAYware Transact. The request must be re-submitted to
PAYware PC/PAYware Connect/PAYware Transact (unless NOT_PROCESSED_COMM_FAILURE"
is the TERMINATION_STATUS of a PAYMENT transaction and fault tolerance queuing is
enabled).
GetTerminalName
String
Returns the name of the terminal.
GetTicket
String
Returns the ticket number or invoice of the transaction. This value is echoed back from the
original transaction or is generated by PCCharge if one is required to complete the
transaction.
70
Method
Returned Description
Value
GetTraceCode
String
Value returned by the processor used for tracking purposes.
Note: For Debit transactions, this value must be printed on the customer receipt.
GetTransSeqFirst
String
The sequence number of the first transaction in the settled batch segment.
GetTransSeqLast
String
The sequence number of the last transaction in the settled batch segment.
GetTransSeqNum
String
The sequence number of the transaction in the current open batch.
Note: This value is assigned and returned by
PAYware PC /PAYware Connect/PAYware Transact.
GetTroutD
String
Returns the TroutD (Transaction Routing ID) for the transaction. The TroutD is a PCChargeassigned unique identifier that is associated with the transaction throughout its ―lifespan‖.
This number is stored in the TroutD field in the PCCharge database (PCCW.MDB) for each
transaction. See the section Follow On Transactions for more information.
GetXMLResponse
String
The GetXMLResponse method is used to echo the text that is returned in the response file
associated with the transaction.
GetXMLRequest
String
This method is used to echo the text that is sent in the request file associated with the
transaction.
GetPyRespCode
String
GIFT: Response code returned by processing company. Response code returned only when
using Paymentech.
Valid Return Values:
E - Error
A - Approved
If E is returned, the error code will be returned in the AUTH_RESP_CODE field. If A is
returned the authorization code will be returned in the AUTH_CODE field.
GetAvailBalance
String
GIFT: The Gift Card Available Balance. Returns Gift Card balance if available from card.
GetApprovedAmount
String
GIFT: The Approved Amount. If processing a Gift card partial redemption, then Paymentech
will approve the transaction as long as there is a balance on the card. If the card‘s available
balance will not cover the TRANS_AMOUNT, Paymentech will approve the amount up to the
balance on the card. APPROVED_AMOUNT contains the amount Paymentech approved for the
partial redemption. If the customer owes a difference then the DIFF_AMOUNT_DUE field will
contain the amount the customer owes towards the transaction.
GetDiffDueAmount
String
GIFT: The Difference due from the customer. If processing a Gift card partial redemption,
then Paymentech will approve the transaction as long as there is a balance on the card. If
the card‘s available balance will not cover the TRANS_AMOUNT, Paymentech will approve the
amount up to the balance on the card. APPROVED_AMOUNT contains the amount Paymentech
approved for the partial redemption. If the customer owes a difference then the
DIFF_AMOUNT_DUE field will contain the amount the customer owes towards the transaction.
GetOrigTransAmount
String
GIFT: The Original Transaction Amount. If processing a Gift card partial redemption,
populated if APPROVED_AMOUNT does not match original TRANS_AMOUNT.
GetAuthRespCode
String
GIFT: The Authorization Response Code. Populated if declined. Error code returned from
network. Only returned when using the processor Global, CardNet or Paymentech.
GetLCLTransDate
String
GIFT: Returns the local transaction date.
GetLCLTransTime
String
GIFT: Returns the local transaction time.
GetTransDate
String
GIFT: The transaction date.
GetTransTime
String
GIFT: The transaction time.
GetAcctCurrencyCode
String
GIFT: Returns the account currency code.
GetAcctNum
String
GIFT: The Gift Card Account Number.
registered is returned in the response.
GetTransAmount
String
GIFT: The amount of the original transaction.
GetTraceAuditNum
String
GIFT: Value returned by the processor used for tracking purposes.
GetCardBal
String
GIFT: Returns the gift card balance.
GetInvNum
String
GIFT: Returns the original invoice number.
71
For Register transactions, the gift card number
Method
Returned Description
Value
GetStoreDivNum
String
GIFT: Returns the store division number.
GetTransCurrencyCode
String
GIFT: Returns the currency code.
GetRemainingBalance
String
GIFT: Returns the remaining balance of the gift card.
GetTransConversionRate
String
GIFT: Returns the transaction conversion rate.
GetSVSMerchNum
String
GIFT: Returns the SVS merchant number used for gift cards.
GetProcessingCode
String
GIFT: Returns the processing code from the gift card processor.
GetTransactionCode
String
GIFT: Returns the transaction code from the gift card processor.
GetAmountBalance
String
GIFT: The amount of usable funds remaining on gift card.
GetDCCMerchantCurrency
String
Returns Merchant ISO currency code.
GetDCCCustomerCurrency
String
Returns Cardholder ISO currency code.
GetDCCExponent
String
Returns number of exponent digits in the DCC_RATE. Numerical value only.
GetDCCRate
String
Returns Foreign currency exchange rate.
GetDCCCustomerAmount
String
Returns Cardholder transaction amount.
= (TRANS_AMOUNT * exchange rate)
GetDCCUpdateDetails
String
This is available when performing a DCC Update Inquiry. The string will be in the following
format:
<STX>Number of DCC Records<RS>DCC Exponent<FS>DCC Rate<FS>DCC Customer Detail<ETX>
Example:
<STX>5
<RS>5<FS>148316<FS>AUD
<RS>5<FS>127265<FS>CAD
<RS>5<FS>76459<FS>EUR
<RS>5<FS>10079997<FS>JPY
<RS>5<FS>70894<FS>GBP
<ETX>
GetReturnCheckFee
String
Returns the response from the processor, which indicates the fee for returned checks.
GetReturnCheckNote
String
Returns the response from the processor, which displays a note for returned checks.
GetEchoDeclineCode
String
Returns Echo Specific code if transaction is declined.
Dynamic Currency Conversion (DCC)
Check Methods
72
73
Appendix A – SIM.DLL Constants
Action Codes
The .Action property is of enumerated type. The integrator can choose to use the enumeration or the action code to set
this property. For example:


.Action = 1
or
.Action = SIM.Charge.Command.Credit_Sale
Credit Card Actions
Action
Code
Description
Enumeration
1
Sale
SIM.Charge.Command.Credit_Sale
2
Return
SIM.Charge.Command.Credit_Return
3
Void
SIM.Charge.Command.Credit_Void
4
Pre-Auth
SIM.Charge.Command.Credit_Pre_Auth
5
Post-Auth
SIM.Charge.Command.Credit_Post_Auth
6
Void Return
SIM.Charge.Command.Credit_Void_Return
7
Void Post-Auth
SIM.Charge.Command.Credit_Void_Post_Auth
8**
P-Card Sale
SIM.Charge.Command.Credit_Commercial_Card_ Sale
9**
P-Card Return
SIM.Charge.Command.Credit_Commercial_Card_Return
10**
P-Card Post-Auth
SIM.Charge.Command.Credit_Commercial_Card_ Post_Auth
13
Gratuity
SIM.Charge.Command.Credit_Gratuity
14
Sale w/ Gratuity
SIM.Charge.Command.Credit_Sale_with_Gratuity
91*
Completion
SIM.Charge.Command.Credit_Completion
92*
Voice-Auth
SIM.Charge.Command.Credit_Voice_Auth
93*
Add Tip
SIM.Charge.Command.Credit_Add_Tip
94*
P-Card Follow on
SIM.Charge.Command.Credit_Commercial
95*
Reset Tip
SIM.Charge.Command.Credit_Reset_Tip
110*
Sends Signature Data SIM.Charge.Command.Credit_Store_Signature
*These actions are only for use with PAYware PC, PAYware Transact, or PAYware Connect
**These actions are only for use with PCCharge
74
Debit Card Actions
Action
Code
Description
Enumerated
41
Sale
SIM.Charge.Command.Debit_Sale
42
Return
SIM.Charge.Command.Debit_Return
43*
Void
SIM.Charge.Command.Debit_Void
46*
Void Return
SIM.Charge.Command.Debit _Void_ Return
48*
Sale Recovery
SIM.Charge.Command.Debit_Sale_Recovery
49*
Return Recovery
SIM.Charge.Command.Debit_Return_Recovery
EBT Card Actions
Action
Description
Code
Enumerated
60
Inquiry
SIM.Charge.Command.EBT_Inquiry
61
Cash Withdrawal
SIM.Charge.Command.EBT_Cash_Withdrawal
62
Food Stamp Purchase
SIM.Charge.Command.EBT_Food_Stamp_Purchase
63
Food Stamp Return
SIM.Charge.Command.EBT_Food_Stamp_Return
64
Cash Post Auth
SIM.Charge.Command.EBT_Cash_Post_Auth
65
Food Stamp Post Auth
SIM.Charge.Command.EBT_Food_Stamp_Post_Auth
66
Food Stamp Credit Post Auth
SIM.Charge.Command.EBT_Food_Stamp_Credit_Post_Auth
67
Cash Void
SIM.Charge.Command.EBT_Cash_Void
68
Food Stamp Void
SIM.Charge.Command.EBT_Food_Stamp_Void
69
Food Stamp Credit Void
SIM.Charge.Command.EBT_Food_Stamp_Credit_Void
70
Purchase
SIM.Charge.Command.EBT_Purchase
71
Food Stamp Purchase Recovery
SIM.Charge.Command.EBT_Food_Stamp_Purchase_Recovery
72
Food Stamp Credit Recovery
SIM.Charge.Command.EBT_Food_Stamp_Credit_Recovery
73
Food Stamp Post Auth Recovery
SIM.Charge.Command.EBT_Food_Stamp_Post_Auth_Recovery
74
Cash Withdrawal Recovery
SIM.Charge.Command.EBT_Cash_Withdrawal_Recovery
75
Cash Purchase Recovery
SIM.Charge.Command.EBT_Cash_Purchase_Recovery
*These actions are only for use with PCCharge and PAYware Transact/PAYware Connect
75
Gift Card Actions
Action
Description
Code
Enumerated
18
Balance Inquiry
SIM.Charge.Command.Gift_Balance_Inquiry
25
Redemption
SIM.Charge.Command.Gift_Redemption
26
Register
SIM.Charge.Command.Gift_Register
27
Add Value
SIM.Charge.Command.Gift_Add_Value
28
Activate
SIM.Charge.Command.Gift_Activate
29
Void
SIM.Charge.Command.Gift_Void
76
Deactivate
SIM.Charge.Command.Gift_Deactivate
77
Refund
SIM.Charge.Command.Gift_Refund
78
Totals Inquiry
SIM.Charge.Command.Gift_Totals_Inquiry
79
Previous Day Total
SIM.Charge.Command.Gift_Previous_Day_Total
80
Balance with Lock
SIM.Charge.Command.Gift_Balance_with_Lock
85
Post Auth
SIM.Charge.Command.Gift_Post_Auth
86
Redeem Points
SIM.Charge.Command.Gift_Redeem_Points
87
Balance Merge
SIM.Charge.Command.Gift_Balance_Merge
88
Balance Adjustment
SIM.Charge.Command.Gift_Balance_Adjustment
89
Balance Transfer
SIM.Charge.Command.Gift_Balance_Transfer
96
Report Lost/Stolen
SIM.Charge.Command.Gift_Report_Lost_Stolen
97
Cashout
SIM.Charge.Command.Gift_Cashout
98
Add Tip
SIM.Charge.Command.Gift_AddTip
99
Pre Auth
SIM.Charge.Command.Gift_PreAuth
100
Completion
SIM.Charge.Command.Gift_Completion
101
Decrement
SIM.Charge.Command.Gift_Decrement
102
Close
SIM.Charge.Command.Gift_Close
103
Block Activate
SIM.Charge.Command.Gift_Block_Activate
*These actions are only for use with PCCharge and PAYware Transact/PAYware Connect.
76
Check Actions
Action
Description
Code
Enumerated
20
MICR Verify
SIM.Charge.Command.Check_MICR_Verify
21
COD Phone Verify
SIM.Charge.Command.Check_COD_Phone_Verify
22
Driver‘s License
SIM.Charge.Command.Check_Drivers_License
23
Double ID Verify
SIM.Charge.Command.Check_Double_ID_Verify
24
Void Check
SIM.Charge.Command.Check_Void_Check
50
MICR Truncation
SIM.Charge.Command.Check_MICR_Truncation
51
Sale w/ MICR
SIM.Charge.Command.Check_Sale_MICR
52
Void MICR
SIM.Charge.Command.Check_Void_MICR
53
Force MICR
SIM.Charge.Command.Check_Force_MICR
54
Manager Override
SIM.Charge.Command.Check_Manager_Override
55
ECA Authorization
SIM.Charge.Command.Check_ECA_Authorization
56
ECA Adjustment
SIM.Charge.Command.Check_ECA_Adjustment
57
ECA Completion Accepted
SIM.Charge.Command.Check_ECA_Completion_Accepted
58
ECA Completion Refused
SIM.Charge.Command.Check_ECA_Completion_Refused
59
Settle MICR
SIM.Charge.Command.Check_Settle_MICR
120
Check Credit (Refund)
SIM.Charge.Command.Check_Credit
121
Check Status
SIM.Charge.Command.Check_Status
122
Check Inquiry
SIM.Charge.Command.Check_Inquiry
Settlement Actions
Action
Description
Code
Enumerated
30*
Batch Inquiry
SIM.Charge.Command.Batch_Inquiry
31*
Batch Settle
SIM.Charge.Command.Batch_Settle
34**
Batch Credit Settle
SIM.Charge.Command.Batch_Credit_Settle
35**
Batch Debit Settle
SIM.Charge.Command.Batch_Debit_Settle
36**
Batch Local Settle
SIM.Charge.Command.Batch_Local_Settle
*These actions are only for use with PCCharge
**These actions are only for use with PAYware PC, PAYware Transact and PAYware Connect
77
Error Codes
These error codes and descriptions will be returned when either the Err event has fired or the Process method returns
false.
Error
Code
Error
Description
Description
1
Unable to
Communicate
SIM.DLL was unable to communicate with the payment engine.
payment engine is running
6
Timeout
SIM.DLL did not receive a response from the payment engine in the amount of time
allotted by the .Timeout property.
20
Exception
A General Error Exception has occurred
21
Insufficient
Transaction Data
The amount of data, or the data inputted, is insufficient to carry out that particular
transaction.
22
Merchant Account
Error
The merchant account information is incorrectly formatted or incorrectly entered for the
selected payment engine.
23
Device Data Error
The device (PIN pad) data entered is insufficient to properly use the device.
24
Communication Data
Error
The communication data entered is insufficient to connect to the server or has been
incorrectly entered
25
Invalid Command
The action code entered is not supported by the selected payment engine.
26
PIN pad initialization
Failed
The initialization of the PIN pad failed. The PIN pad will not be able to collect swipe data
or extract pin entry data unless it is initialized.
27
Error Reading Card
From Device
The card swipe encountered an error
28
Error In Line Display
The Everest encountered an error updating the display message
29
Error in Pin
An error occurred while trying to extract the pin data
30
Unable to Open Line
Display
The line display module of the Everest PIN pad was unable to open. This generally means
that the Com Port selected is already in use by another program
Unable to Open MSR
The mag stripe reader module of the Everest PIN pad was unable to open. This generally
means that the Com Port selected is already in use by another program
Unable to Open PIN
pad
The PIN pad module of the Everest PIN pad was unable to open. This generally means
that the Com Port selected is already in use by another program
33
Unable to Open
Keyboard
The keyboard module of the Everest PIN pad was unable to open. This generally means
that the Com Port selected is already in use by another program
34
Customer Initiated
Cancel
The customer pressed the ―Clear‖ or ―Cancel‖ button on the device.
35
Transaction has been
sent. Can not cancel
This error occurs when a cancel is initiated by the integrated application by calling the
Cancel method, but the transaction has already been submitted to the payment engine.
36
Timeout waiting for
swipe
The amount of time permitted by the .SwipeTimeout property has elapsed. The customer
did not swipe their card through the device in this amount of time.
37
Interac Transaction
Failed
An error occurred during the transmission of a Interac transaction to PAYware Transact,
PAYware Connect or the SC 5000
38
Key Load failed
An error occurred during the Key Load procedure to PAYware Transact, PAYware Connect
or the SC 5000.
31
32
78
Check to see if the
Appendix B – PCCharge Constants
Address Verification Response Codes
Response Code
Address Match
A
Address matches, ZIP code does not
B
Address matches, postal code does not
C
No match on address or postal code
D
Street address and postal code matches
E
AVS error
G
Service not supported by non-US issuer
I
Address not verified for international transaction
M
Street address and postal code matches
N
No match on address or ZIP code
P
Postal code matches, address does not
R
Retry, system is unavailable or timed out
S
Service not supported by issuer (card type does not support AVS)
U
Address information is unavailable
W
9-digit ZIP code matches, address does not
X
Exact match
Y
Address and 5-digit ZIP code match
Z
5-digit ZIP code matches, address does not
0
No response sent
CVV2/CVC2/CID Response Codes
Response Code
Address Match
M
CVV2/CVC2/CID match
N
CVV2/CVC2/CID mismatch
P
Not processed -- Either the CVV2/CVC2/CID was not provided, or the card does not have a
CVV2/CVC2/CID value. If the CVV2/CVC2/CID was left blank, resubmit as a zero dollar
amount for the transaction so the customer's credit line won't be affected by the second
CVV2/CVC2/CID request.
S
Issuer indicates that the CVV2/CVC2/CID data should be present on the card, but the
merchant has indicated that the CVV2/CVC2/CID data is not present on the card.
U
Issuer has not certified for CVV2/CVC2/CID or issuer has not provided Visa/MasterCard with
the CVV2/CVC2/CID encryption keys.
79
Processing Company Codes

Note:
The processor drop-down lists found in the various setup screens in PCCharge also serve as
accurate lists of the available processor codes.
Credit Card
Processing Company
Processor Code
Alliance Data Systems, Inc.
ADSI
American Express
AMEX
BuyPass, Inc.
BPAS
Citibank Private Label
CITI
ECHO
ECHO
FDMS Nashville / Envoy
FDCN
FDMS North Nash
FDNN
FDMS North / Cardnet
CES
FDMS Omaha / FDR
FDC
FDMS South / NaBanco
NB
Fifth-Third Bank – St. Pete
BPS
Global Payment-East
NDC
Heartland Payment Systems
HPTS
RBS WorldPay
LYNK
National Bankcard Services
NBS
National Processing Company
NPC
Elavon
NOVA
Chase Paymentech
GSAR
TSYS (Formerly Vital)
VISA
Debit
Processing Company
Processor Code
Alliance Data Systems, Inc.
ADSI
BuyPass, Inc.
BPAS
FDMS North / CardNet
CES
FDMS Omaha / FDR
FDC
FDMS South / NaBanco
NB
Fifth-Third Bank – St. Pete
BPS
Global Payments / East
NDC
Heartland Payment Systems
HPTS
RBS WorldPay
LYNK
National Bankcard Services
NBS
National Processing Company
NPC
Elavon
NOVA
Chase Paymentech
GSAR
TSYS (Formerly Vital)
VISA
80
PCCharge Transaction Result Constants
These results are returned by the .GetResult method of SIM.DLL
Result
Transaction Type
Description
CAPTURED
Monetary
Successful online transaction now ready for settlement
NOT CAPTURED
Varies
Unsuccessful online transaction
APPROVED
Non-Monetary
Successful offline transaction for Terminal based processors, or
successful Pre-Authorization for Host based processors)
NOT APPROVED
Varies
Unsuccessful offline transaction or unsuccessful Pre-Authorization
for Host based processors
PROCESSED
Off-line Transaction, Report
Transaction was processed (Terminal based processors only); report
was generated
CANCELLED
Any
Transaction canceled by operator or modem never connected
VOIDED
Void
Successful (with most Terminal based processors)
SALE NOT FOUND
Follow On (Void, Gratuity,
etc.)
Unsuccessful (with most Terminal based processors)
GRATUITY ADDED
Gratuity
Successful (Offline Transaction for Terminal based processors.
Depending on the processor and amount, some Gratuity
transactions may be authorized online for Terminal based
processors)
Error
Varies
Unsuccessful transaction
Problem
Report
Unsuccessful Report Request
SALE RECOVERED
Debit Sale Recovery
Successful Debit Sale Recovery
RETURN RECOVERED
Debit Return Recovery
Successful Return Recovery
Settle Error
Settlement
Unsuccessful Settlement
Closed
Batch Close
Successful Batch Close
not closed
Batch Close
Unsuccessful Batch Close
OPEN TO BUY
Private Label
Successful Open to Buy Inquiry on an ADSI Private Label card
INVALID PARAM
Transaction Inquiry
Account number or TroutD not passed to Transaction Inquiry
command
Accepted
Settlement
Successful Settlement
Result Code = 2
Settlement
Batch Closed/Settled
81
Result
Transaction Type
Description
Result Code = 6
Settlement
Batch Declined
Result Code = 8
Settlement
Batch Deferred
82
Appendix C – PAYware PC, PAYware Transact and PAYware
Connect Constants
Address Verification Response Codes
Response Code
Address Match
A
Address matches, ZIP code does not
E
Not a mail-order/phone order
N
No match on address or ZIP code
R
Retry, system is unavailable or timed out
S
Service not supported by issuer (card type does not support AVS)
U
Address information is unavailable
W
9-digit ZIP code matches, address does not
X
Exact match, 5 digit zip
Y
Exact Match, 9 digit zip
Z
5-digit ZIP code matches, address does not
CVV2/CVC2/CID Response Codes
Response Code
Address Match
M
CVV2/CVC2/CID match
N
CVV2/CVC2/CID mismatch
P
Not processed -- Either the CVV2/CVC2/CID was not provided, or the card does not have
a CVV2/CVC2/CID value. If the CVV2/CVC2/CID was left blank, resubmit as a zero dollar
amount for the transaction so the customer's credit line won't be affected by the second
CVV2/CVC2/CID request.
S
Issuer indicates that the CVV2/CVC2/CID data should be present on the card, but the
merchant has indicated that the CVV2/CVC2/CID data is not present on the card.
U
Issuer has not certified for CVV2/CVC2/CID or issuer has not provided Visa/MasterCard
with the CVV2/CVC2/CID encryption keys.
83
Payment Media
Credit Card Issuer
Credit Card Type
American Express
"AMEX"
Carte Blanche
"CBLN"
Diner‘s Club
"DCCB"
Discover
"DISC"
Enroute
"ENRT"
Fleet One
"FLT1"
Fuelman
"FUEL"
JAL
"JAL "
JCB
"JCB "
MasterCard
"MC "
Wright Express
"WEX "
Visa
"VISA"
Voyager
"VGER"
84
PAYware Transact and PAYware Connect Transaction Result Constants
These results are returned by the .GetResult method of SIM.DLL
Result
Result Code
Description
SUCCESS
-1
Successful API Call
UNKNOWN
0
Unknown Result
APPROVED
5
Successful offline transaction for Terminal based processors, or
successful Pre-Authorization for Host based processors)
CAPTURED
4
The transaction was approved and captured in the batch
Unsuccessful offline transaction or unsuccessful Pre-Authorization
for Host based processors
NOT APPROVED
DECLINED
6
The transaction was declined
Transaction was processed (Terminal based processors only); report
was generated
PROCESSED
The result of the transaction is deferred to each batch segment
DEFERRED
VOIDED
7
Successful (with most Terminal based processors)
COMPLETED
10
PARTCOMP
11
Partial Completion
TIP MODIFIED
17
Tip modification
The transaction was completed successfully and placed in the batch
The ERROR value will be returned if the Termination Status is
anything other than SUCCESS.
ERROR
SETTLED
2
Successful Batch Close
DECLINE
092
Transaction Encrypted, No Terminal Keys.
Note: PAYware Connect Only
Note: VeriShield Protect (VSP) Transactions Only
NOT AVAILABLE
30000
Backend Payment Engine is not available
85
*There are various error result
codes that are not listed. For
more information on these
codes, contact VeriFone support.
Termination Status
Response Code
Address Match
SUCCESS
Successful transaction request (check the Result or ResultCode value to determine if the
transaction was approved, declined, etc.)
NOT PROCESSED
API call not successful
NOT PROCESSED DB
FAILURE
API call not successful. Database failure
NOT PROCESSED
PARAMETER ERROR
API call not successful. Parameter error
NOT PROCESSED COMM
FAILURE
API call not successful. Communication failure
NOT PROCESSED ENGINE
Backend payment engine is not available
NOT ACCESSABLE
INDETERMINATE STATUS API call not successful. Indeterminate status
PROCESSED DB FAILURE API call successful. Database failure
UNKNOWN
Unknown error
86
Appendix D - Unmanaged Code
It is possible to have PAYware SIM run in Debug with Unmanaged Code. This is any environment outside .NET. The
environment could be Vb6, C++, FoxPro, etc. It is, however, necessary to run the COM-Dev.bat file on the development
machine. This is located with PAYware SIM development kit files. Please make sure to change the path in the .bat file prior
to running it. This .bat file will create a .tlb file in the SIM.DLL path. This is the file you will need to reference in your
code.
In the client environment the .tlb file is not necessary. SIM.DLL will still need to be registered on any client machine when
dealing with Unmanaged Code (anything other than .NET). Upon deployment, the integrator should run the COM.bat file
instead.

Note
When using the .bat file, it is important to make sure there are no spaces in the path.
Examples
C:\Program Files – Incompatible Path
C:\VeriFone\SIM – Compatible Path
87
Appendix E – TIM: Store and Forward Module
TIM (Terminal Interface Module) provides a Store and Forward option for PAYware Connect. TIM is used in conjunction with
SIM.DLL. It is important to note that TIM should not be configured to drive devices such as PIN pads when used in
conjunction with PAYware SIM.
88
Appendix F – VeriShield Protect©
VeriShield Protect© (VSP) allows an integrator to pass card swipe data (Track II) securely to PAYware Connect. The
merchant will need to have a device that supports VSP and an account setup with PAYware Connect that also has VSP
enabled. PAYware Connect requires Track II Data (Track), Serial Number (SerialNumber), and Device Type (DevType) to
process a VSP transaction. This ensures the transaction is properly encrypted. At this time only Track II data is supported.
The merchant uses a Command Card to generate the encryption key. This must be sent prior to submitting any other
transactions. A Command Card looks like a credit card, but is specifically issued to the merchant to initiate commands.
These commands are passed to PAYware Connect like any other SALE transaction. These transactions will have a RESULT of
DECLINE and a TERMINATION_STATUS of NOT_PROCESSED. Please check the RESULT_CODE and RESULT_TEXT to determine
the success of the command.
If an encryption key is not generated prior to the first transaction, the merchant will receive the following:
<RESPONSE>
<RESPONSE_TEXT>TRX ENCRYPTED, NO TERMINAL KEYS</RESPONSE_TEXT>
<RESULT>DECLINE</RESULT>
<RESULT_CODE>092</RESULT_CODE>
<TERMINATION_STATUS>NOT_PROCESSED</TERMINATION_STATUS>
</RESPONSE>

Note
See PAYware Connect Developer‘s manual, section Appendix B: VeriShield, for more
information regarding VeriShield Protect© and transactions.
89
Appendix G - MX Passthrough FormAgent Commands










REQ packets are sent from the POS (PC side) to the Terminal.
RSP packets are sent from the Terminal side to the POS (PC side).
The normal link-level packet protocol will be observed, i.e., all packets on either side will be responded to with
an ACK or NAK if the LRC is good or bad respectively. The 'RSP' responses shown below are packet-level responses
from the terminal to the POS, and indicate a success/failure status after processing the packet.
The LRC (Longitudinal Redundancy Check) is computed by exclusive OR'ing (i.e., XOR‘ing) all characters in the
message except the STX but including the ETX. Both the sending and receiving sides perform this calculation.
In all RSP packets below, the RetVal field signifies a Boolean value (0=Failure, 1=Success) unless otherwise
specified.
All data in the request (REQ) packets below in general are textual strings (i.e., there are no binary fields), except
for special protocol characters such as <STX>, <ETX>, <FS> and {LRC} (Longitudinal Redundancy Check character).
E.g., the OverwriteFlag field of the SFL command is either ‗0‘ (hex 30) or ‗1‘ (hex 31).
All packets will contain a leading <FS>-separated command name, followed by a string of fieldname or
―fieldname=fieldvalue‖ sequences, each separated by an <FS> character.
All packets being sent/received via TCP/IP will have a leading 2-byte message length header/prefix in networkbyte order, indicating the length of the trailing data.
If the POS application displays a form containing buttons or other controls that generate events, or enables the
magnetic /RFID card reader, due to the asynchronous nature of events such as magnetic card swipes, RFID card
taps or button presses, it MUST be prepared to receive asynchronous event packets (e.g., 81., XEVT, ...) at any
time.
All objects drawn on the form have an associated ControlID. This is used as a key. The ControlIDs are contained in
the file ctrlids.h, which is generated when the other form files are generated.
90
Command
SFL
Function/Description
StoreFile
Request/Response Packets and notes
REQ: <STX>SFL<FS>FileName<FS>FileSize<FS>BlockSize<FS>OverwriteFlag<ETX>{LRC}
RSP: <STX>SFL<FS>RetVal<FS>RetValString<ETX>{LRC}
Where:
FileName = name of file to download to device
FileSize = size of file
BlockSize = number of bytes being transmitted in one block
OverwriteFlag = boolean value,
0 => Don‘t overwrite file if it exists
1 => overwrite file if it exists
DATA BLOCK record packet formats:
REQ: <STX>XDAT<FS>MPPPPSSSS{data upto PPPP bytes}<ETX>{LRC} *** DATA record
Where: M = more records indicator; Y = Yes, N = No
The last XDAT record has M=N
PPPP = number of data bytes in *this* packet
SSSS = Sequence number of block
RSP: <STX>XDAT<FS>{RetVal}<ETX>{LRC}
Where:
RetVal = 1 will indicate a good XDAT was received; file write was successful.
RetVal = 0 will indicate failure.
Final RSP: <STX>SFL<FS>RetVal<FS>RetValString<ETX>{LRC}
The RSP SFL1 comes after the initial REQ, and also after the last XDAT block has been received (SFL2)
and acknowledged.
RetVal = 0 - Unsuccessful operation
1 - Successful operation
RetValString - contains a text description of the result.
Purpose: Used to download files to the terminal at runtime.
Sample trace:
Transmit: <STX>SFL<FS>SIG1_100_100.PTS<FS>410<FS>0256<FS>1<ETX>J -- HEADER
Receive : <ACK>
Receive : <STX>SFL1<FS>1<FS>SUCCESS<ETX>(
-- HEADER RSP
Transmit: <ACK>
Transmit: <STX>XDAT<FS>Y02560001{data...}<ETX>{LRC} } Multiple -- DATA BLOCK(s)
Receive : <ACK>
} of
Receive : <STX>XDAT<FS>1<ETX>'
} these -- DATA BLOCK RSP(s)
Transmit: <ACK>
}
...
Receive : <STX>SFL2<FS>1<FS>SUCCESS[*]<ETX>(
-- TRAILER RSP
Transmit: <ACK>
NOTE:
If the file being downloaded has the following extensions, it is automatically expanded after being
downloaded:
.tar (regular tar archive)
.tgz –or- tar.gz (gnu zipped format)
.bz2 (binary zipped format)
1
This is the initial SFL response indicating whether the download will be permitted or not.
This is the final SFL response:
[*]
SUCCESS
-– normal case
–orSUCCESS:DEVICE REBOOTING -- device is about to reboot after download
2
91
-
-
XRFL
RemoveFile
XIFM
InitForm
XSFM
ShowForm
REQ: <STX>XRFL<FS>FileName<ETX>{LRC}
RSP: <STX>XRFL<FS>RetVal<ETX>{LRC}
Purpose: Remove a file on the terminal
REQ: <STX>XIFM<FS>FormName<ETX>{LRC}
RSP: <STX>XIFM<FS>RetVal<ETX>{LRC}
Purpose: Used to initialize a form, preparing it for display on the terminal.
REQ: <STX>XSFM<ETX>{LRC}
-or<STX>XSFM<FS>PresentationMode<ETX>{LRC}
RSP: <STX>XSFM<FS>RetVal<ETX>{LRC}
Where PresentationMode is:
‗1‘ = PM_NORMAL
– default: new form overlays old form
‗2‘ = PM_LEFT_TO_RIGHT
- new form moves in from left to right
‗3‘ = PM_RIGHT_TO_LEFT
- new form moves in from right to left
‗4‘ = PM_TOP_DOWN
– new form moves in top-down
‗5‘ = PM_BOTTOM_UP
– new form moves in bottom-up
‗6‘ = PM_FADE
- new form fades in
Purpose: Used to show a form on the screen that was previously initialized via InitForm.
XGPV
XSPV
GetPropValue
SetPropValue
Note: The above PresentationMode capability is useful only if operating in a buffered mode (i.e.,
BUFFERED_UI_UPDATES=1), and for the very first XSFM command after a form is newly initialized with
XIFM. Although the presentation modes 2 through 6 take effect for subsequent XSFM calls from then on
for the form, it is not as appealing visually or recommended: use normal mode instead.
REQ: <STX>XGPV<FS>ControlID<FS>PropName<FS>PropType<ETX>{LRC}
RSP: <STX>XGPV<FS>PropValue<ETX>{LRC}
Purpose: Used to get a property value from a control in the form. See the PropName and PropType
sections below for possible values.
REQ: <STX>XSPV<FS>ControlID<FS>PropName<FS>PropType<FS>PropValue<ETX>{LRC}
RSP: <STX>XSPV<FS>RetVal<ETX>{LRC}
Purpose: Used to set a property value on a control in the form. See the PropName and PropType
sections below for possible values.
NOTE: All the XSPV/SetPropValue functions will be ignored if there is a blocked MessageBox currently
displayed on the screen.
REQ: <STX>XIFL<FS>FormName<ETX>{LRC}
RSP: <STX>XIFL<FS>RetVal<ETX>{LRC}
XIFL
IsFormLoaded
XGLF
GetLoadedForm
Purpose: Used to query if the specified form is currently loaded or not.
REQ: <STX>XGLF<ETX>{LRC}
RSP: <STX>XGLF<FS>FormName<ETX>{LRC}
XCLB
ClearListBox
Purpose: Used to return the currently loaded form.
REQ: <STX>XCLB<FS>ControlID<ETX>{LRC}
RSP: <STX>XCLB<FS>RetVal<ETX>{LRC}
Purpose: Used to clear the contents of a listbox control in the current form. (The listbox control must
be present in the current form).
92
XALI
AddListBoxItem
REQ: <STX>XALI<FS>ControlID<FS>ItemIndex<FS>ItemText<FS>KeepCopyFlag<ETX>{LRC}
RSP: <STX>XALI<FS>RetVal<ETX>{LRC}
ItemIndex is zero-based.
ItemIndex = 0  will add the item to the TOP of the list
= -1  will add the item to the END of the list
>=0 and < ListCount-1  will add the item at the specified index KeepCopyFlag = 1  Keep
shadow copy of item (for use in XLRS command)
XRLI
XGLI
RemoveListBoxItem
GetListBoxItem
XGLC
GetListBoxItemCount
XGLS
GetListboxSelectedItem
XSLT
XLRS
XLCS
SetListBoxTopItem
ListboxRestoreState
ListboxClearState
Purpose: Used to add a line of item text to a listbox control specified by ControlID.
REQ: <STX>XRLI<FS>ControlID<FS>ItemIndex<ETX>{LRC}
RSP: <STX>XRLI<FS>RetVal<ETX>{LRC}
ItemIndex is zero-based.
Purpose: Used to remove a line of item text at the specified index (ItemIndex) from a listbox control
specified by ControlID.
REQ: <STX>XGLI<FS>ControlID<FS>ItemIndex<ETX>{LRC}
RSP: <STX>XGLI<FS>ItemText<FS>RetVal<ETX>{LRC}
ItemIndex is zero-based.
Purpose: Used to return a line of item text from the specified index (ItemIndex) from a listbox control
specified by ControlID.
REQ: <STX>XGLC<FS>ControlID<ETX>{LRC}
RSP: <STX>XGLC<FS>ItemCount<ETX>{LRC}
Purpose: Used to get a count of the number of items in the listbox control specified by ControlID.
REQ: <STX>XGLS<FS>ControlID<ETX>{LRC}
RSP: <STX>XGLS<FS>ItemIndex<ETX>{LRC}
ItemIndex is zero-based.
Purpose: Used to get the index of the currently selected list item.
REQ: <STX>XSLT<FS>ControlID<FS>ItemIndex<ETX>{LRC}
RSP: <STX>XSLT<FS>RetVal<ETX>{LRC}
ItemIndex is zero-based.
Purpose: Used to set the specified list item index as the topmost visible item in the specified listbox
control.
Note: A best-case attempt is made to satisfy this command. E.g., if there is a listbox that can have 6
items visible at a time and there are only 4 items added, and this command is sent to make the 3 rd item
the top-most, nothing will be done (since there are 2 empty rows below the last item). On the other
hand, if there are 10 items in the list and a command is sent to make the 3rd item the top-most, the
item with index 3 will be made the topmost, and the items with indices 3, 4, 5, 6, 7, 8 will all be
visible.
REQ: <STX>XLRS<FS>ControlID<ETX>{LRC}
RSP: <STX>XLRS<FS>RetVal<ETX>{LRC}
RetVal  Count of listbox items restored
Purpose: Used in conjunction with the XALI command; used to update a listbox control with a cached
copy of listbox items.
REQ: <STX>XLCS<ETX>{LRC}
RSP: None
Purpose: Used in conjunction with the XALI and XLRS commands; used to clear the cache of listbox
items
93
XMBX
MessageBox
REQ: <STX>XMBX<FS>Title<FS>Text<FS>Icon<FS>Buttons<FS>Blocked<ETX>{LRC}
RSP: <STX>XMBX<FS>RetVal<ETX>{LRC}
Where:
Icon can have one of the following values:
1 = ERROR Icon
2 = INFO Icon
3 = QUERY Icon
4 = WARNING Icon
Buttons can have one of the following values:
0 = No buttons
1 = OK button
2 = CANCEL button
3 = YES and NO buttons
4 = YES, NO and CANCEL button
Blocked can have one of the following values:
0 = messagebox is not blocked
1 = messagebox is blocked
RetVal has one of the following values:
- for Blocked messageboxes:
-1 = Invalid packet
1 = OK button
2 = CANCEL button
3 = YES button
4 = NO button
- for Unblocked messageboxes:
0 = Failed to display messagebox
1 = messagebox successfully displayed
XMBH
HideMsgBox
XDIA
DisplayImageAt
Purpose: Used to display a messagebox to the user.
NOTE: All the XSPV/SetPropValue functions will be ignored if there is a blocked MessageBox currently
displayed on the screen.
REQ: <STX>XMBH<ETX>{LRC}
RSP: None
Purpose: Hide a displayed MessageBox.
REQ: <STX>XDIA<FS>X<FS>Y<FS>ImageFileName<FS>
[Width<FS>Height<FS>OptionsMask]ETX>{LRC}
RSP: <STX>XDIA<FS>RetVal<FS>RetValString<ETX>{LRC}
ImageFileName – MUST be a PNG or JPG file, with '.jpg'/'.png' filename extension
RetVal = 0 - Unsuccessful operation
1 - Successful operation
RetValString - contains a text description of the result.
OptionsMask:
Bit position
3
Meaning
0x0004:
Scale image (up or down) to match Height and Width values (if
specified)
If this option bit is set, the image will be scaled to match the
specified height and width values.
If this option bit is not set, the image will be shown with its true
height and width
Purpose: Used to display an image file at the specified [X,Y] pixel coordinates.
94
-
XGID
GetInputData
NOTE:
1) Width, Height and OptionsMask fields are optional; however, if present, ALL must be present
(i.e., a total of 7 fields).
2) There is another (recommended) solution to update an image on a form: an Image control can
be setup on a form and used as a template/placeholder with a default image file. Then at runtime,
the IMAGE_FILE_NAME property of the Image control can be updated by using XSPV/SetPropValue
to set it to the new image filename.
3) Currently if present, the OptionsMask value must be set to ―4‖ to perform scaling. If an invalid
value is specified, the image will be shown with its true dimensions.
4) If no/invalid image dimensions are specified or scaling is not specified, the image's true
dimensions from the image file are used.
REQ: <STX>XGID<ETX>{LRC}
RSP: <STX>XGID<FS>ControlID1<FS>FieldType1<FS>FieldValue1<FS>
ControlID2<FS>FieldType2<FS>FieldValue2<FS>
...
ControlIDN<FS>FieldTypeN<FS>FieldValueN<ETX>{LRC}
ControlID = control ID of individual checkboxes in the form.
Field Type = always BOOL for checkboxes.
Field Value = 1 => Checkbox checked
Field Value = 0 => Checkbox unchecked
XCLS
ClearScreen
Purpose: Use this function/packet to get the state of all checkboxes in a form.
REQ: <STX>XCLS<FS>X1<FS>Y1<FS>X2<FS>Y2<ETX>{LRC}
RSP: <STX>XCLS<FS>RetVal<ETX>{LRC}
X1 = starting X coordinate
Y1 = starting Y coordinate
X2 = ending X coordinate
Y2 = ending Y coordinate
XRST
RestartTerminal
Purpose: Clears the ENTIRE screen area. The X1,Y2,X2,Y2 coordinate values are optional, but are
maintained for backward compatibility with the Omni 7100 command packet API. If not present, the
entire screen is cleared. If present however, ALL 4 field values must be supplied.
REQ: <STX>XRST<ETX>{LRC}
RSP: None
Purpose: Reboots the terminal.
XRSTAPP
RestartApp
XDTX
DisplayText
NOTE:
If using USB communication, the PC application should close the virtual USB COM port, so that the OS
(Windows) will properly create it again when the Mx870 USB device is re-detected after it boots up.
REQ: <STX>XRSTAPP<ETX>{LRC}
RSP: None
Purpose: Restarts the FormAgent application.
REQ: <STX>XDTX<FS>X<FS>Y<FS>
WrapRow<FS>WrapColumn<FS>OptionsMask<FS>FontName<FS>
FontSize<FS>Text[<FS>Colors]<ETX>
RSP: <STX>XDTX<FS>RetVal<FS>NewX<FS>NewY<ETX>{LRC}
where:
FontName - is a pipe-separated list of sub-fields containing font names for normal, bold, italics
AND bold-italics, without ―.ttf‖ extension.
The normal fontname is MANDATORY; any of the other FontName sub-fields may simply
o
be left blank, in which case, the normal font name will be used.
E.g., VeraMono|VeraMoBd||VeraMoBI -- the Italics fontname (VeraMoIt) is not specified, so the normal
fontname (VeraMono) is used in lieu of it
Colors - is a OPTIONAL pipe-separated list of background (BGColor), foreground (FGColor) and
selection (SelColor) colors:
BGColor|FGColor|SelColor – in RRGGBB format
95
E.g., BGColor = FFFFFF – for white background
FGColor = 008000 – for green text
SelColor = FFFF00 – for yellow highlighter text
Purpose: Used to display text with embedded attributes at the specified [X,Y] pixel coordinates. The
text will automatically wrap on the screen at the specified WrapColumn.
The Text parameter can contain embedded directives for turning on bold, italics, underline, reversevideo (selection) and strike-through attributes for sections of the text. You can intersperse font
attributes throughout the text:
- For bold, <B> will turn ON the bold attribute, the next <B> will turn it OFF
- For italics, <I> will turn ON the italics attribute, the next <I> will turn it OFF
- For underline, <U> will turn ON the underline attribute, the next <U> will turn it OFF
- For selection, <R> will turn ON the selection attribute (i.e., will display text in the specified SelColor),
the next <R> will turn it OFF
- For strikethrough, <S> will turn ON the strike-through attribute, the next <S> will turn it OFF
The effects of an attribute once turned on remain in effect until turned off. Thus you may have
multiple attributes ON at the same time, and all attribute effects will be applied to the relevant text
block.
OptionsMask – mask value representing the decimal value of the sum of the options. Bit value 0 implies
the option is OFF, value 1 implies the option is ON.
Mask
Meaning
0x0001
Visible: 0 = not visible; 1 = visible
0x0002
Border Visible: 0 = border not visible; 1 = border visible
0x0200
Display border if scrollbars are displayed
0x0400
Add vertical scrollbar
0x0800
Add horizontal scrollbar
0x1000
Strip leading blanks in line of text
0x2000
Ignore height parameter, display all text provided
0x4000
Auto-wrap text
0x8000
Make text background transparent
// E.g.
If the following command is sent:
XDTX<FS>10<FS>10<FS>100<FS>300<FS>21507<FS>VeraMono|VeraMoBd|VeraMoIt|VeraMoBI
<FS>12<FS><R>Note:<R> Please pick up your <S>TWO<S> <B><I>FIVE<I> complimentary tickets<B> at the
<U>customer service desk<U> on the way out.<FS>FFFFFF|008000|FFFF00
...the text display on the screen (wrapped accordingly) will look like:
Error! Objects cannot be created from editing field codes.
NewX – new X coordinate (pixel) for next write operation
NewY – new Y coordinate (pixel) for next write operation
96
XATT
AddTextboxText
XCTT
ClearTextboxText
XEVT
FormEvent
REQ: <STX>XATT<FS>ControlID<FS>Text<ETX>{LRC}
RSP: <STX>XATT<FS>RetVal<ETX>{LRC}
Purpose: Used to add (append) text to a textbox control.
REQ: <STX>XCTT<FS>ControlID<ETX>{LRC}
RSP: <STX>XCTT<FS>RetVal<ETX>{LRC}
Purpose: Used to clear text in the textbox control.
RSP: <STX>XEVT<FS>ControlType<FS>ControlID<FS>ControlData<ETX>{LRC}
Where:
ControlType = identifier indicating which type of control fired the event
ControlID = Control Identifier assigned by Form Manager tool.
ControlData = <FS>-separated values specific to the EventType.
Purpose: This packet is sent whenever an event occurs on a form and there is an associated callback
function specified. E.g., a button is pressed or a listbox item is selected.
XEVT response by control type:
For Button controls:
<STX>XEVT<FS>2<FS>ControlID<FS>0<ETX>
For CheckBox controls:
<STX>XEVT<FS>6<FS>ControlID<FS>SelectedState<ETX>
Where:
SelectedState: 0=Not selected; 1=selected
For Animation controls:
<STX>XEVT<FS>8<FS>ControlID<FS><ETX>
For KeyPad controls:
<STX>XEVT<FS>0<FS>ControlID<FS>KeyEvent<FS>Value<ETX>
Where:
KeyEvent: 1=ON_KEYPRESS; 2=ON_ENTER; 3=ON_CANCEL
Value:
When KeyEvent=ON_ENTER, this is the entered value, or empty if no value is entered
When KeyEvent=ON_CANCEL, this indicates the reason code for cancellation:
1=USER_ABORT (user pressed CANCEL); 2=PGM_ABORT (application abort)
Q1/Q12
Q11
Q13
GetCardData(TracksToRead)
NOTE:
If the PC POS developer wishes to suppress an event for any Control on a Form (except Buttons), then
all that is required is that the callback function name of the control be deleted in the Form Manager
designer. Then when the form is generated, that Control‘s events are effectively disabled.
REQ: <STX>Q1<ETX>{LRC}
}
REQ: <STX>Q12<ETX>{LRC} } Possible requests
REQ: <STX>Q11<ETX>{LRC} }
REQ: <STX>Q13<ETX>{LRC} }
RSP: <STX>81.CardData<FS>CardDataSource<ETX>{LRC}
Where:
TracksToRead = string containing tracks to read, e.g., ―1‖, ―2‖, ―3‖, ―12‖, ―13‖, ―23‖.
CardData = <FS>-separated track data in sequential order:
{Track1}<FS>{Track2}<FS>{Track3}
CardDataSource = „M‟ => for magstripe card-swipe
= „R‟ => for RFID card tap
Purpose: Used to enable the magnetic stripe reader (and RFID reader) to get card data from the
terminal.
97
S00
GetSignatureData
REQ: <STX>S00<ETX>{LRC}
RSP: <STX>S01xxxxxyyyyzerrr<ETX>{LRC}
<STX>S02Muuuu{sigdata}<ETX>{LRC} – one or more of these records
Where: xxxxx = total number of bytes (5 bytes long)
yyyy = Number of bytes per packet
z = Signature file format (0 = Raw, 1 = TIFF100, ..., 4 = TIFF400,
5 = 3BA, 6 = Windows BMP)
e = 0 = Big Endian, 1 = Little Endian (only used when savemode m=0)
rrr = Signature filter resolution
M = More indicator: Y (for more data) or N (for no more data)
The last S02 record has M=N
uuuu = Actual size of signature data in current packet
(excluding 11-byte envelope: <STX>S02Muuuu (9) and <ETX>{LRC} (2))
{sigdata} = Actual signature data
Purpose: Used to initiate signature capture on the terminal.
S03
SetSigCapParams
NOTE:
1) The application developer is expected to display an appropriate sigcap form containing
Complete and Cancel buttons and a signing box (also see #3 below) and issuing a S04 command to
indicate the sigcap region before issuing a S00 request. (Sending a S00 command without these
preliminary commands will result in the display of a default sigcap region without any Complete
and Cancel buttons!)
2) The response will be one S01 packet with one or more S02 packets. Each S02 packet contains
the field ‗M‘ above indicating whether another S02 packet will follow.
3) The Complete and Cancel buttons MUST have HotSpot IDs of 1 and 2 respectively (since this is
what is needed in the OS call on the terminal. You can use the FormManager to change). Only
―VeriFone raw‖ sigcap format is supported at this time. Use the S03 command to indicate what the
response format should be. The signature is streamed up to the PC in the above S01/S02 packet
format. Note that during the sigcap (i.e., after S00 is sent), the Complete and Cancel buttons are
controlled by the OS sigcap routine. After the sigcap is done, however, pressing these buttons will
send back regular XEVT event packets. This should not be an issue since, on receiving the
signature, the POS will navigate off to another form.
4) After signature capture and before displaying the next form, the POS may optionally send the
XPNG command to get the signature directly off the terminal screen in Portable Network Graphics
(PNG) file format (only the signature within the signing box region will be returned in the
snapshot).
REQ: <STX>S03sssdddxerrrmF{fn}<ETX>{LRC}
RSP: None
Where:
sss = Max time in seconds to wait for user to begin signing.
Range is 000 - 300 (3 bytes); 000 indicates no timeout.
ddd = Max time in seconds to wait after a user completes signing.
Range is 000 - 300 (3 bytes); 000 indicates no timeout.
x = display mode, if zero, do not erase display when the
first pen down is detected (1 byte)
e = 0 = Big Endian, 1 = Little Endian (only used when savemode m=0)
rrr = Signature resolution
Range is 000 - 999. (3 bytes)
m = Save mode (1 byte)
0 = VFI RAW file format
1 = Save a 100 DPI TIF File
2 = Save a 200 DPI TIF File
3 = Save a 300 DPI TIF File
4 = Save a 400 DPI TIF File
5 = 3-Byte ASCII (3BA) File
6 = Windows Bitmap File (BMP)
F = File saved in flash or not (1 byte)
0 = Do not save in flash file system
1 = Save in flash file system
{fn} = Filename to be used, up to six characters (optional field)
98
No extension is needed.
Purpose: Updates the signature capture parameters.
S04
XPNG
SetSigCapBoxArea
GetScreenShot
REQ: <STX>S04xxxyyyXXXYYYC<ETX>
RSP: None
Where:
xxx,yyy = start X,Y coordinates of sigbox
XXX,YYY = end X,Y coordinates of sigbox
C = Clear area flag: 0=OFF, 1=ON
Purpose: Sets the coordinates of the signature box.
NOTE: This packet MUST be sent before a S00 packet.
REQ: <STX>XPNG<FS>X<FS>Y<FS>Width<FS>Height<ETX>{LRC}
RSP: <STX>XPNG<FS>NNNNN<FS>BBBB<ETX>{LRC}
Where NNNNN = file size
BBBB = bytes per packet
-- HEADER record
<STX>XDAT<FS>MPPPPSSSS{data upto PPPP bytes}<ETX>{LRC} -- DATA record
Where: M = more records indicator; Y = Yes, N = No
PPPP = actual number of bytes in *this* packet
SSSS = Sequence number of block
FAILURE RSP:
<STX>XPNG<FS>RetVal<FS>RetValString<ETX>{LRC}
RetVal = 0 - Unsuccessful operation
1 - Successful operation
RetValString - contains a text description of the result.
XBEL
SoundTone
72
ResetTerminalState
Z60
GetPinUsingMS –orGetPinUsingDUKPT
Purpose: Used to grab screen shots in PNG format.
NOTE: The DATA records contain the image in PNG format.
REQ: <STX>XBEL<FS>TONE<FS>INTERVAL<FS>REPETITIONS<ETX>
RSP: None
Where:
TONE
= 0 => ERROR TONE, 1 => NORMAL TONE
INTERVAL = Interval between tones in milliseconds
REPETITIONS = Number of times to repeat the tone
Purpose: Used to sound a tone.
REQ: <STX>72<ETX>
RSP: None
Purpose: Resets the terminal application state. This packet should also be sent anytime there is an
outstanding device request that you wish to cancel (such as a S00 sigcap request, a Q1x magstripe
reader request, etc.)
Purpose: Used to initiate a PIN request on the terminal.
For Master/Session (M/S):
REQ: <STX>Z60.{AA..A}<FS>WWWWWWWWWWWWWWWW<ETX>  M/S request packet
RSP: <STX>71.0LL01PPPPPPPPPPPPPPPP<ETX>
-or<STX>71.<EOT><ETX>  if CANCEL is pressed or
other error [e.g., Terminal is in M/S mode (MK=0)]
-or<STX><EOT><ETX>  if PIN pad is not injected with proper key(s)
For DUKPT:
REQ: <STX>Z60.{AA..A}<ETX>  DUKPT request packet
99
RSP: <STX>73.00000KKKKKKKKKKKKKKKKKKKKPPPPPPPPPPPPPPPP<ETX>
-or<STX>73.<EOT><ETX>  if CANCEL is pressed or
other error [e.g., Terminal is in DUKPT mode (MK=1)]
-or<STX><EOT><ETX>  if PIN pad is not injected with proper key(s)
AA..A = Card Account Number (8-19 digits)
WW..W = 16-byte Working Key
LL = PIN length (Range 04-12)
PP..P = 16-byte encrypted PIN Block
KK..K = 10-20 byte Key Serial Number (KSN) with leading F‘s suppressed
Z62
GetPinExUsingMS –orGetPinExUsingDUKPT
NOTE:
The minimum and maximum PIN length is 4 digits and 12 digits respectively.
The FormAgent application automatically uses a built-in form (PINE.FRM) to display a PIN pad for
PIN entry. The POS application does not need and in fact should NOT use one of its own forms for
PIN entry.
Null PIN is not allowed
For Master/Session (MK=0):
-
REQ: <STX>Z62.{AA..A}<FS>WWWWWWWWWWWWWWWWmmMMn{P1}<FS>{P2}<FS>{P3}
{CCNVFlag}<ETX>
RSP: <STX>71.0LL01PPPPPPPPPPPPPPPP<ETX>
-or<STX>71.<EOT><ETX>  if CANCEL is pressed or other error
-or<STX>71.<ETX>  if ENTER is pressed with Null PIN
For DUKPT (MK=1):
REQ: <STX>Z62.AA..A<FS>mmMMn{P1}<FS>{P2}<FS>{P3}{CCNVFlag}<ETX>
RSP: <STX>73.00000KKKKKKKKKKKKKKKKKKKKPPPPPPPPPPPPPPPP<ETX>
-or<STX>73.<EOT><ETX>  if CANCEL is pressed or other error
-or<STX>73.<ETX>  if ENTER is pressed with Null PIN
AA..A = Card Account Number (8-19 digits)
WW..W = 16-byte Working Key
mm = minimum PIN length
MM = maximum PIN length
n
= NULLPIN flag; Y => Null PIN allowed, N => Null PIN not allowed
P1 = Prompt1 – Part 1 of PIN prompt; max length = 16 characters
P2 = Prompt2 – Part 2 of PIN prompt; max length = 16 characters
P3 = Prompt3 – Message displayed after PIN is entered and ENTER is pressed;
Max length is 16 characters.
LL = PIN length (Range 04-12)
PP..P = 16-byte encrypted PIN Block
KK..K = 10-20 byte Key Serial Number (KSN) with leading F‘s suppressed
CCNVFlag = Credit Conversion flag – used ONLY if NULLPIN flag in packet = ‗Y‘;
0 = no credit conversion during PIN entry
1 = Credit conversion during PIN entry (ONLY if NULLPIN=Y);
KeyPad‘s ENTER key starts off with ‗CREDIT‘ label,
then changes to ENTER if/when PIN entry is started.
NOTE:
The advantage of using this packet/function over Z60 is that the minimum and maximum PIN

lengths can be specified.
Note that the maximum for P1 + P2 is 32 characters, and they will be
concatenated together
for the PIN entry prompt.
100

XDLD
ZonTalkDownload

The filename pinpadbg.png is used by the internal PIN entry screens for the PIN form background.
It can be changed to something more suitable if required, to create a uniform background image
scheme being used by the forms in the application.
REQ: <STX>XDLD<FS>FileName<FS>DownloadType<ETX>{LRC}
RSP: <STX>XDLD<FS>RetVal<FS>RetValString<ETX>{LRC}
Where:
FileName = name of file to be downloaded
DownloadType = ‗P‘ = PARTIAL download (contents of file system are NOT erased)
‗F‘ = FULL download (contents of file system are erased)
RetVal = 0 - Unsuccessful operation
1 - Successful operation
RetValString - contains a text description of the result.
Purpose: Used to perform a programmatic download of a file using the ZonTalk protocol. If the file
being downloaded has a .tar or .tgz extension, it is automatically expanded after being downloaded.
REQ: <STX>XVER<ETX>{LRC}
RSP: <STX>XVER<FS>APP={App_Version}<FS>
OS={OS_RFS_Version}<FS>
GUIMGR={GUI_Library_Version}<FS>
UNITID={UnitIDNumber}<FS><ETX>
XVER
E.g.
<STX>XVER<FS>APP=0.06<FS>OS=Mx0001US/RFS00013<FS>GUIMGR=0.06<FS>
UNITID=763-000-063/12000000<FS>CLOCK=20060716161116<FS><ETX>
XLED
LEDControl
NOTE: The CLOCK field contains the device‘s current date/time setting.
REQ: <STX>XLED<FS>ON_OFF<ETX>{LRC}
RSP: None
Where:
ON_OFF = ‗0‘ = Turn LEDs OFF
‗1‘ = Turn LEDs ON
Purpose: Turn LEDs on or off.
XSETVOL
SetVolumeControl
Note:
If the AUTOLED configuration variable is 1 (on), the LEDs are automatically turned on whenever a
MSR cardswipe request is issued, and turned off automatically when the card swipe occurs.
The default value for AUTOLED is 1 (on).
Typically applications that need to control LED behavior will have the AUTOLED value set to 0
(off), and will explicitly control turning them on/off via this command.
REQ: <STX>XSETVOL<FS>Volume<FS>Bass<FS>Treble<ETX>{LRC}
RSP: None; the specified volume setting are applied
Where:
Volume - accepted values 0 - 100; 0 = Sound off; 100 = Max vol
Bass - accepted values: 50 - 100
Treble - accepted values: 50 – 100
XGETVOL
GetVolumeControl
XFTPGET
XFTPPUT
FTPGetFile
FTPPutFile
Purpose: Apply specified volume/bass/treble settings.
Note:
Values below minimum get automatically converted to allowed minimum value.
Values above maximum get automatically converted to allowed maximum value.
REQ: <STX>XGETVOL<ETX>{LRC}
RSP: <STX>XGETVOL<FS>Volume<FS>Bass<FS>Treble<ETX>{LRC}
Purpose: Return current volume/bass/treble settings.
REQ: XFTPGET<FS>FTPHOST={IPAddress}<FS>FTPPORT={Port}<FS>
FTPUSER={UserID}<FS>FTPPWD={Password}<FS>FILENAME={FileName}<FS>
RSP: XFTPGET<FS>RETVAL={N}<FS>RETVALSTRING={S}<FS>
101
-
Purpose: Get a file from the specified FTP server.
REQ: XFTPPUT<FS>FTPHOST={IPAddress}<FS>FTPPORT={Port}<FS>
FTPUSER={UserID}<FS>FTPPWD={Password}<FS>FILENAME={FileName}<FS>
RSP: XFTPPUT<FS>RETVAL={N}<FS>RETVALSTRING={S}<FS>
Purpose: Put a file to the specified FTP server.
XSETVAR
SetConfigVariable
XGETVAR
GetConfigVariable
XCLOCK
SetDeviceClock
Where:
{IPAddress} = IP address of FTP server in dotted decimal notation
{Port} = Port FTP Server is operating on
{UserID} = User ID to use on FTP server
{Password} = Password to use on FTP server
{FileName} = Name of file to upload, with proper path and extension
{N} = Return value: 0=Failure,
1=Success (Normal)
2=Success (Normal AND Device is rebooting)
{S} = Return value string:
e.g., when N=0: ―FAIL:<additional error description>‖
When N=1: ―SUCCESS‖
When N=2: "SUCCESS:DEVICE REBOOTING"
REQ: XSETVAR<FS>Parameter1=Value1<FS>Parameter2=Value2<FS>...<FS>
ParameterN=ValueN<ETX>{LRC}
RSP: XSETVAR<FS>RetVal1<FS>RetVal2<FS>...<FS>RetValN<FS><ETX>{LRC}
REQ: XGETVAR<FS>Parameter1<FS>Parameter2<FS>...<FS>
ParameterN<ETX>{LRC}
RSP: XGETVAR<FS>Parameter1=Value1<FS>Parameter2=Value2<FS>...<FS>
ParameterN=ValueN<ETX>{LRC}
REQ: XCLOCK<FS>{DateTime}
RSP: XCLOCK<FS>RetVal
Where {DateTime} = clock string to set in CCYYMMDDhhmmss format
XBATCH
BatchCommand
NOTE: The ‗seconds‘ portion of the clock string (ss) is optional.
REQ: <STX>XBATCH<FS>{REQ-Packet-1}<RS>{REQ-Packet-2}...<RS>
{REQ-Packet-N}<ETX>{LRC}
RSP: <STX>XBATCH<FS>{RSP-Packet-1}<RS>{RSP-Packet-2}...<RS>
{RSP-Packet-N}<ETX>{LRC}
NOTES:
An XBATCH request packet can be used to submit multiple sub-request packets to the terminal. All
sub-request packets will be separated by the <RS> character (where <RS> is the Record Separator
hex character 0x1E).

Sub-request and sub-response packets will NOT have any <STX> / <ETX> / LRC envelope. 
Only certain request packets can be sent in XBATCH requests. Those that result in multiple response 
packets (e.g., XPNG) cannot be sent. A quick check will be made on the packets contained in the
XBATCH request. If the XBATCH request packet contains such sub-request packets, the entire XBATCH
request will be rejected immediately.
ALL sub-request packets WILL contain a corresponding sub-response packet in the XBATCH response
packet. If the sub-request packet does not a high-level response packet, the corresponding subresponse field will be left empty.
E.g., a 72 packet does not have a high-level response:
REQ: <STX>XBATCH<FS>XSPV<FS>12<FS>VISIBLE<FS>BOOL<FS>1<RS>72<RS>
XSETVAR<FS>KP200=0<ETX>{LRC}
102

RSP: <STX>XBATCH<FS>XSPV<FS>1<RS><RS>XSETVAR<FS>1<ETX>{LRC}
NOTE the empty sub-response packet for the 72 sub-request packet.
Since the terminal application will have to process more requests in one shot, the POS PC will have to 
adjust it's wait timeout accordingly.
Note that for USB, the USB virtual COM port driver only supports packet sizes of around 500 bytes. 
XBATCH example for sigcap (no responses for S04, S03, S00): 
REQ: <STX>XBATCH<FS>XIFM<FS>SIGCAP<RS>XSFM<RS>S040041043162041<RS>
S030300100000060SIG.BMP<RS>S00<ETX>{LRC}
RSP: <STX>XBATCH<FS>XIFM<FS>1<RS>XSFM<FS>1<RS><RS><RS><ETX>{LRC}
103
Commands for PAYware Vision Support
These commands will be active when the PAYware Vision module is enabled in FormAgent.
Command
XSTX
Function/Description
StartTransaction
Request/Response Packets and notes
REQ: <STX>XSTX<FS>Key1=Value1<FS>Key2=Value2
..<FS>KeyN=ValueN<ETX>{LRC}
RSP: <STX>XSTX<FS>RetVal<FS>RetValString<ETX>{LRC}
Where Key value pairs can be any information the ECR/PCPOS and the VP
Server have agreed to share.
Purpose: Used to initialize data capture and send preliminary transaction
information to the PAYware Vision Server.
XETX
EndTransaction
REQ: <STX>XETX<FS>Key1=Value1<FS>Key2=Value2
..<FS>KeyN=ValueN<ETX>{LRC}
RSP: <STX>XETX<FS>RetVal<FS>RetValString<ETX>{LRC}
Where Key value pairs can be any information the ECR/PCPOS and the VP
Server have agreed to share.
Purpose: Used to terminate data capture with information like receiptTrailer
to the PAYware Vision Server.
XPAY
SendPaymentData
REQ: <STX>XPAY<FS>Key1=Value1<FS>Key2=Value2
..<FS>KeyN=ValueN<ETX>{LRC}
RSP: <STX>XPAY<FS>RetVal<FS>RetValString<ETX>{LRC}
Where Key value pairs can be any information the ECR/PCPOS and the VP
Server have agreed to share.
XLST
SendLineItem
Purpose: Used to transaction payment information to the PAYware Vision
Server.
REQ: <STX>XLST<FS>Key1=Value1<FS>Key2=Value2
..<FS>KeyN=ValueN<ETX>{LRC}
RSP: <STX>XLST<FS>RetVal<FS>RetValString<ETX>{LRC}
Where Key value pairs can be any information the ECR/PCPOS and the VP
Server have agreed to share.
XTMO
SendTerminalManagementOptions
Purpose: Used to send line item transaction data to the PAYware Vision
Server. This information can be used to reproduce the receipt.
REQ: <STX>XTMO<FS>Key1=Value1<FS>Key2=Value2
..<FS>KeyN=ValueN<ETX>{LRC}
RSP: <STX>XTMO<FS>RetVal<FS>RetValString<ETX>{LRC}
Where Key value pairs can be any information the ECR/PCPOS and the VP
Server have agreed to share.
Purpose: Used to set terminal management parameters that identify a
terminal with the PAYware Vision Server.
104
A sample flow of command packets is as follows:
Set Terminal Management options:
Ideally set once during initialization of the device.
XTMO<FS>COMPANYID=VFI<FS>STOREID=12345<FS>DEPTID=1111<FS>LANEID=001
Start of Transaction.
This packet indicates the beginning of a new transaction.
XSTX<FS>invoiceNumber=22222<FS>companyId=008
Send Line item information.
These packets contain information needed to regenerate the receipt at the PAYware Vision server.
XLST<FS>displayString= Panini Sandwich
$5.00
XLST<FS>displayString= Coke
$1.00
XLST<FS>displayString= Total (7% tax)
$6.42
XLST<FS>displayString=
Payment information.
This packet contains information related to the payment for the transaction.
XPAY<FS>mop=CREDIT<FS>accountNum=4012888888881881<FS>expYear=08<FS>expMonth=12<FS>cardholder=SADIQ
MOHAMMED<FS>paymentMedia=VISA<FS>transAmount=6.42
Signature information
Signature information is automatically sent to the PAYware Vision server, when PAYware Vision is enabled.
End of transaction.
This packet indicates the end of the transaction.
XETX<FS>ReceiptTrailer=THANK YOU
Property Types: (use for PropType fields above)
BOOL
SHORT
LONG
STRING
Property Names: (use for PropName fields above)
105
BOOL Properties:
VISIBLE
BORDER_VISIBLE
BEEP_ON_PRESS
STAY_PRESSED
SELECTED
NO_SCROLL
RUN
– shows/hides a control
– enables/disables the border of a control
– enables/disables the BeepOnPress flag of a Button control
– enables/disables the StayPressed flag of a Button control
– set/get Checkbox Selected property value
- enables/disables the scrollbars for ListBox and TextBox controls
- starts/stops an Animation control
TRANSPARENT
- enables/disables the Transparent flag of a Label control
SHORT Properties:
OPTIONS
TEXT_JUSTIFICATION
FONT_ATTRIBUTES
STYLE
ITEMS_TO_SCROLL
MIN_ENTRIES
- set/get
- set/get
- set/get
- set/get
- set/get
- set/get
KEYPAD_TYPE
KEYPAD_IMAGE_POS_LEFT
KEYPAD_IMAGE_POS_TOP
BUTTON_STATE
BUTTON_RESET_STATE
DELAY_INTERVAL
LOOP_COUNT
PRES_EFFECT
control options
text justification values
font attributes
control style
number of items to scroll when up/down buttons are pressed in Listbox or Textbox control
minimum number of characters to accept in Keypad control
- set/get Keypad control type (Numeric, Alphanumeric, Custom)
- set/get left coordinate of custom Keypad control‘s PNG/JPG
- set/get top coordinate of custom Keypad control‘s PNG/JPG
- get state of Button control (1=pressed/0=unpressed)
- reset state of Button control to 0=unpressed (for resetting state of StayPressed buttons
that have been pressed, to their 0=Up/Normal state)
- set/get delay interval in milliseconds for Animation control
- set/get loop count in milliseconds for Animation control
- set/get presentation effect for Animation control\
0=PE_NORMAL, 1=PE_FADE,
2=PE_SLIDE_LEFT_RIGHT, 3=PE_SLIDE_RIGHT_LEFT,
4=PE_SLIDE_TOP_DOWN, 5=PE_SLIDE_BOTTOM_UP, 7=PE_EXPLODE
LONG Properties:
BG_COLOR
FG_COLOR
- set/get background color property of certain controls (Label, Button, ListBox, Marquee, …)
- set/get foreground color property of certain controls (Label, Button, CheckBox, ListBox, Marquee, …)
STRING Properties:
CAPTION
UP_IMAGE_FILE_NAME
DOWN_IMAGE_FILE_NAME
IMAGE_FILE_NAME
UNCHECKED_FILE_NAME
CHECKED_FILE_NAME
DISPLAY_STRING
- set/get Caption property of Label/Button control
- set/get name of PNG/JPG file of Button control‘s unpressed image
- set/get name of PNG/JPG file of Button control‘s pressed image
- set/get name of PNG/JPG file of Image control
- set/get name of PNG/JPG file of Button control‘s unchecked image
- set/get name of PNG/JPG file of Button control‘s checked image
- set/get display mask of Keypad control
FORMAT_STRING
CUSTOM_IMAGE_FILE_NAME
ANIM_FILE_NAME
- set/get format mask of Keypad control
- set/get name of PNG/JPG file of custom Keypad control
- set/get name of EET file for Animation control
106
.profile Parameters in FormAgent application
THEME_PATH=/home/usr1/themes
Required for location of theme files. Do not change.
LD_LIBRARY_PATH= /lib:/home/usr1/lib:$LD_LIBRARY_PATH Required to specify library search path. Do not change.
FP_EMULATE=320x234
FP_ORIENTATION=landscape
Do not change.
Do not change.
FP_POINTER=0
Mouse pointer flag; if set to 1, this will define a 2 x 2 pixel pointer defined by the color
specified by the FP_POINTER_COLOUR parameter (see below).
FP_POINTER_COLOUR=0,0,0,0
FP_MEDIA_AUDIO_OSS_SOFT_DELAY=1
EVAS_DEBUG_SHOW=1
DBGIP=10.64.82.40
Do not change.
This will define a mouse color in {Red, Green, Blue, Alpha} format.
e.g., FP_POINTER_COLOUR=255,0,0,255 will define a solid Red color mouse pointer
Do not change.
Do not change unless asked to by technical support.
Do not change unless asked to by technical support.
DBGPRT=5678
Do not change unless asked to by technical support.
DEBUG=0
Do not change unless asked to by technical support.
DEBUG_GUIMGR=0
Do not change unless asked to by technical support.
BUTTON_ACTION_ON_RELEASE=0
This value determines whether an event fires on the button push on the Down or the
Up/release. A setting of ―0‖ causes the event to fire on the Down, and this is the preferred
setting.
Note:
If the BUTTON_ACTION_ON_RELEASE setting is not found, the default setting is 1.
When set to fire on the up/release, the finger/stylus must be released within the
bounding rectangular area of the button for the event to fire.
This value determines if a ShowForm is required for any screen updates such as an InitForm,
SetPropertyValue, etc. A value of ―1‖ requires a ShowForm, and a value of ―0‖ causes any
command to have immediate UI update, thus no ShowForm is ever required.
Note:
The setting of ―1‖ is very useful when the POS program needs to refresh multiple areas
of the form in one go (e.g., updating a ListBox lineitem and corresponding Subtotal, Tax
and Total Label controls), with no flicker.
This is the background ―curtain‖ image that is behind all forms.
Note:
The image filename used can be a png or jpg file.
If the filename is not found or in invalid, or the parameter is not set, a default black
rectangle background is automatically used instead.
SIGRESET=1 => Default behavior; allow SIGCAP_RESET_SESSION status to be sent to
application when CANCEL is pressed after signature begins + automatically clear signing
region + start a new signature capture session.
If SIGRESET env var is missing in .profile, this would be the default behavior.
The guimgr library also ensures that the CANCEL button does not have
StayPressed=TRUE, to allow user to press it twice during signature capture; if the button
did have StayPressed=TRUE, it is restored on exit, so the second CANCEL button hit will
cause the button to remain pressed on exit.
SIGRESET=0 => don't send SIGCAP_RESET_SESSION status to application; always send
SIGCAP_ABORT_KEY when CANCEL is pressed (whether signature has begun or not). With
this setting, pressing the CANCEL button ONCE aborts sigcap.
BUFFERED_UI_UPDATES=1
SCREEN_BACKGROUND=guimgrbg.png
SIGRESET=1
NOTE:
If running in SIGRESET=1 mode, the DONE button on the sigcap form is hidden as soon as
sigcap is initiated and shown when the first pen-down is detected. It is again hidden
when the CANCEL button is pressed after signing, when the signature box is cleared. It is
recommended that the DONE button have its hidden flag set via FormManager in design
mode.
107
Configuration Parameters in FormAgent application
*GO=frmAgent.exe
The application (process) to startup on powerup.
*ZR=8
Used to indicate download baud rate of 115200 for D99-initiated downloads.
*DHCP=0
Used to indicate whether DHCP is ON (1) or OFF (0)
*IFCONFIG=eth0 192.168.0.199 netmask 255.255.255.0 IP address and netmask of terminal (used when DHCP=0)
*TELNET=1
If set to 1, this will start the Telnet server daemon
*NETIP=192.168.0.1
IP address of terminal (used when DHCP=0)
*NETGTW=192.168.0.1
Network gateway of terminal (used when DHCP=0)
*NETDNS1=192.168.0.1
Network primary DNS IP address (used when DHCP=0)
*NETDNS2=192.168.0.1
Network secondary DNS IP address (used when DHCP=0)
*NETMASK=255,255,255,0
Network mask (used when DHCP=0)
DEBUG=0
Used to turn ON debug mode for debug version of application
DBGIP=192.168.0.103
IP address of PC running SocketListener program for debug version of application
DBGPRT=5678
Listening port number of PC running SocketListener program for debug version of application
HOSTIP=192.168.0.103
IP address of PC register when running in TCP/IP mode
HOSTPRT=9000
Port number of PC register when running in TCP/IP mode
SERVER=1
Indicates whether terminal is Server (1) or Client (0) when running in TCP/IP mode
TERMPRT=9001
Port number of terminal when it is a Server, when running in TCP/IP mode
COMMTYPE=RS232
Indicates communication type of terminal application (other possible values: USB, TCPIP)
If COMMTYPE=TCPIP, the parameters *NET???? (See above), DHCP, SERVER, TERMPRT, HOSTIP,
HOSTPRT are also required
COM port (on terminal block) used by terminal application (Note: this is NOT the PC‘s COM port)
Baud rate used by terminal application (common values: 8=115200, 7=38400, 6=19200, 5=9600,
4=4800)
Default: 8 (for 115200 baud)
Protocol format;
Some common values: 4 = {8 data bits, no parity, 1 stop bit}, 0 = {7 data bits, even parity, 1 stop
bit}
External port selection - ABCD format,
Where:
A=port number (1-3)
B=baud rate; common values for B: 8=115200, 7=38400, 6=19200, 5=9600, 4=4800, 3=2400, 2=1200
C=format;
Common values for C:
4 = {8 Data bits, No parity, 1 Stop bit}
0 = {7 Data bits, Even parity, 1 Stop bit}
D=command scheme
Values for D:
0=<STX><ETX>LRC used
1=<CR> terminates command
CP=1
BD=8
PROT=4
PS1=2641
STP1=13
PS2=3641
NOTE:
The config variable PS1 is used to specify settings when connecting a PP1000SE external PINPAD
device to the Mx870.
External comm port 1 stop char in decimal (13 = carriage return)
External port selection - ABCD format,
Where A=port number (1-3), B=baud rate, C=format, D=command scheme
Common values for B: 8=115200, 6=19200, 5=9600
Common values for C: 4 = {8 data bits, no parity, 1 stop bit}, 0 = {7 data bits, even parity, 1 stop
bit}
Values for D: 0=<STX><ETX>LRC used, 1=<CR> terminates command
108
STP2=13
External comm port 2 stop char in decimal (13 = Carriage return
SIGBLK=480
SIGRES=0
SigCap block size – Note that with USB the maximum size of a packet is 512 bytes and it is
recommended that the max value used is 480.
SigCap filter resolution (0=no filtering)
SIGEND=0
SigCap endianness (0=big endian, 1=little endian)
MK=1
Used to indicate the type of PIN pad Key Management being used; MK=0 is for Master/Session, 1 is
for DUKPT. (A common misconception is that this indicates the type of key encryption used;
encryption for us is always DES (1-DES or 3-DES, as indicated by the 3DES parameter)
TRKDLM=1
FS=200
Track delimiter flag (1=send entire track buffer, 0=do not send first character of track buffer)
Minimum flash size needed by the application in units of 1000 bytes (KB); needed for downloads
into flash; if the available flash is less than this value, the app will automatically do a flash
coalesce to create flash space
ScreenSaver timeout in seconds (to indicate when the touch panel should be shutoff; a setting of 0
disables the screensaver).
SSTO=0
RETRYTO=3
Retry timeout in seconds (to indicate after what interval a packet should be retried if it fails to get
an ACK/NAK).
TPRCTM=0200
Touch Panel Recalibration Time (default = ―0200‖, for 2 AM in the morning). Used to automatically
recalibrate the touch panel at the specified time; typically a time when the store is guaranteed to
be idle and there is no chance of any body parts/fingers being near the touch panel when the
recalibration is being performed.
Indicates whether the LEDs should automatically flash when any of the Q commands are issued.
Note: the LEDs are automatically shut off once the Q command is satisfied/responded to after a
card is swiped or a RFID contactless card is tapped.
Determines whether to use the KP200 keyboard for PIN entry.
0 = don‘t use KP200 keypad; use normal NUMERIC keypad.
1 = use KP200 keypad
0 = 1-DES encryption for PINs. Default value.
1 = 3-DES encryption for PINs.
Indicates DUKPT engine to use. Possible values are 0, 1 and 2.
Default value is 0.
Flag indicating whether to display error message box on bad card reads.
The message that is displayed is "Card Read Error! Please Slide Card Again.", with a STOP icon.
Default is 0 (off).
Indicates the name of form file (without extension) to display after powerup and after display of
FormAgent application version information. Very useful to display the customer's starting screen
with logo, marquees, etc. This facility is provided in lieu of the legacy LOGOBMP and LOGODT
parameters.
Optional.
PIN entry timeout value in seconds.
Default value: 60
AUTOLED=1
KP200=0
3DES=0
DUKPTENGINE=0
BADMAGREADMSGBOX=0
STARTUPFORM=
PINTO=60
109
PAYware Vision-specific parameters
*VPS=0
*VPDOWNPORT=5016
*VPSERVERPORT=5015
*VPSERVERADDRESS=10.64.82.96
NumChkPts=N
Flag to enable PAYware Vision functionality in the application.
Default value: 0 (off)
Port number that application will listen on for Device Solutions and Content Solutions messages
from the PAYware Vision server.
Port that PAYware Vision server is monitoring for device-initiated Signature and Receipt packets
(Signature Solutions messages).
IP address of PAYware Vision server.
Number of checkpoints for content management via PAYware Vision, where:
N = a number from 1 - 10
Corresponding to the NumChkPts value, there must also exist parameters Chkpt1, Chkpt2, … till
ChkptN, where each ChkptX parameter is set to the name of the form that will receive content
from the PAYware Vision server, as specified at the VP server for the defined checkpoint.
ChkptN=<formname>
The number of checkpoints set must match the number of forms used by the POS application for
content management via PAYware Vision.
<formname> = Name of form that will receive content from the PAYware Vision server as specified
at the VP server for the defined checkpoint.
NOTE: This maps to a ‗Placement code‘ setting in PAYware Vision.
E.g. the following defines 4 checkpoints/formnames/placement codes...
Chkpt1=Welcome
Chkpt2=Scroll
Chkpt3=Process
Chkpt4=Goodbye
...Where Welcome, Scroll, Process, Goodbye correspond to the ‗soft‘ checkpoints/ placement
codes configured in PAYware Vision server.
110
MultiPay-specific parameters
MULTIPAY=0
Flag to turn on/off MultiPay emulation mode.
Default value: 0 (off)
For the following MultiPay flags used in the application, please refer to the standard MultiPay specification.
BM=1
CASHBK=02000
CLR=1
FIRST=1
HBENBL=0
HS=0
IS=X
MKIDX=0
OFL=1
PNUL=1
SFK=X2XX1453
TS=XXXXXXXX
VER=1.02A_1.01B
Z3TIM=1
CLANG=0
CBF=10203040
PP2000=0
Q40EMUL=0
3BA=1
111
.PrintReceipt string XML format for the Duet.
Tag
<SPPRINT>
Data Element
N/A
<PCOL>
<PRESPOOL>
<SPSTYLE>
<FORMAT>
<SPCENTER>
<SPLR>
Maximum Width
Number
N/A
0 – Reset to Default
1 – Double Wide
2 – Double High
4 - Inverse
Text to be printed
N/A
<L>
<R>
<FEED>
<POSTSPOOL>
<SPLREXT>
Text to be printed
Text to be printed
N/A
Number
N/A
<SPRIGHT>
Text to be printed
<SPLINE>
<TEAR> *
Text to be printed
N/A
Description
Root tag of the print package. All other commands are encapsulated
in this tag.
Maximum width of the print lines. The default is 32.
Will print as many blank lines as indicated by ―number‖.
Parent of <FORMAT>, not required.
Controls the formatting of any print commands following. Can be
used multiple times in a print package. Values can be combined to
produce multiple style changes.
Will center the given text on a line.
Begins a data block describing two pieces of data, formatted to
justify on the left and right sides of a print line, respectively. Uses
the <L> and <R> child tags.
Left portion of a print line.
Right portion of a print line.
Linefeed.
Will print as many blank lines as indicated by ―number‖.
Begins a data block describing two pieces of data. The <L> child tag
controls what text to print on the left justified, and the <R> child tag
provided a pad character to fill the remainder of the line.
Uses the <L> and <R> child tags similar to <SPLR>, but Text will be
right justified.
Text will be left justified.
Form feeds a receipt and triggers a wait for keypress from the user.
* When sending the <TEAR> tag, the device will wait for a user to press a button on the device to continue. A button must
be pressed in order for the SIM.DLL to resume communications with the device. To avoid having to press a button to
continue, you can press several line feeds <FEED> instead of <TEAR> to achieve the same result.
112
Appendix H - Editing/Creating the SIM Form Deck
With the Mx800 Form Manager (developer edition), you can load the SIM‘s form deck that it uses during payment
processing and edit them to your own specifications and design. Or you could create an entirely new form application
using the Mx800 Form Manager and add the SIM forms from scratch. If editing the current SIM form deck, in the Mx800
Form Manager, go to File > Open Application and select the SIMForms.APP file in the SIM Form Deck folder.
The following table details the minimum form requirements that the SIM needs in order to work properly. More items can
be added than are listed, but the SIM needs at a minimum what is detailed in the required controls column. The form
name is case sensitive. The number in parenthesis is the control ID number of the item on that form.
MX devices vary in available keys, such as number and function keys, and dimensions. For that reason the SIM will call on
different forms that serve the same purpose as other forms, but that have been customized to either the dimensions of
that device or the availability of buttons on the device. Pay close attention to this as you are editing or creating these
forms.
Please follow these instructions careful as an error in the form could cause the SIM not to work properly.
Form
Name
SWIPE
Used in
Devices
MX830
MX850
MX870
Description
Required Controls Type(Control ID #)
Displayed when prompting the customer to
swipe their card.
No required controls
Label (1) – Where the question is asked
Button (2) – Yes button
Button (3) – No button
Label (1) – Where the question is asked
Button (2) – Yes button
Button (3) – No button
Label (1) – Where the question is asked
FunctionKeyButton (2) – Yes button. Associated with the F3 function key.
Should match up with the 3rd blue function key from the top.
FunctionKeyButton (3) – No button. Associated with the F4 function key
Should match up with the 4th blue function key from the top
RETR_YN
MX870
Displays a form with a prompt asking a Yes or
No question to the customer
RYN860
MX860
Displays a form with a prompt asking a Yes or
No question to the customer
RYN830
MX830
MX850
Displays a form with a prompt asking a Yes or
No question to the customer
RETR_N
MX830
MX850
MX870
Displays a form prompting to enter a desired
cashback amount
RETN860
MX860
Displays a form prompting to enter a desired
cashback amount
DISPLAY
MX830
MX850
MX870
For displaying messages on the device via the
ChangeDisplay method of the SIM.
Label (1)
DISP860
MX860
For displaying messages on the device via the
ChangeDisplay method of the SIM.
Label (1)
PROC
MX830
MX850
MX870
Displays a form informing that their payment
is in progress, or processing
No required controls
PROC860
MX860
Displays a form informing that their payment
is in progress, or processing
No required controls
Keypad (1)
Label (2)
Keypad (1)
Label (2)
113
Form
Name
Used in
Devices
Description
Required Controls Type (Control ID #)
For manual credit card entry
Box (2) – This is the signature area. All other controls should be outside of this box. This
box should be hidden. Should have the following dimensions:

Left: 0

Top: 96

Width: 320

Height: 76
Button (4) – Ok button. This box should be hidden
Button (5) – Clear button
Box (2) – This is the signature area. All other controls should be outside of this box. This
box should be hidden. Should have the following dimensions:

Left: 0

Top: 120

Width: 480

Height: 80
Button (4) – Ok button. This box should be hidden
Button (5) – Clear button
Keypad (2)
For manual credit card entry
Editfield (2)
For manual
For manual
entry
For manual
entry
For manual
entry
Keypad (2)
SIGCAP
MX830
MX850
MX870
Form that allows customer to
enter their signature
SIG860
MX860
Form that allows customer to
enter their signature
CARD_ENT
CARD860
MX870
MX830
MX850
MX860
EXP_ENT
MX870
EXP_830
MX830
MX850
CARD_830
EXP860
PMT_TYPE
PTYPE860
PTYPE830
MX860
MX870
MX860
MX830
MX850
credit card entry
expiration date
expiration date
expiration date
For selecting the payment type
of the transaction
For selecting the payment type
of the transaction
For selecting the payment type
of the transaction
Keypad (2)
Editfield (2)
Keypad (2)
Button (2) – Credit button
Button (3) – Debit button
Button (4) – EBT button
Button (5) – Gift button
Label (6) – Credit label
Label (7) – Debit label
Label (8) – EBT label
Label (9) – Gift label
Button (2) – Credit button
Button (3) – Debit button
Button (4) – EBT button
Button (5) – Gift button
Label (6) – Credit label
Label (7) – Debit label
Label (8) – EBT label
Label (9) – Gift label
FunctionKeyButton (2) – Credit button. Associated with the F1 function key.
FunctionKeyButton (3) – Debit button. Associated with the F2 function key.
FunctionKeyButton (4) – EBT button. Associated with the F3 function key.
FunctionKeyButton (5) – Gift button. Associated with the F4 function key.
Label (6) – Credit label
Label (7) – Debit label
Label (8) – EBT label
Label (9) – Gift label
Buttons should match up in order of control ID with the blue function buttons.
114