TSYSDetailRecord Class

Properties   Methods   Events   Config Settings   Errors  

The TSYSDetailRecord class is a tool used to create off-line Credit or Force transactions to be settled by the TSYSSETTLE class. The TSYSDetailRecord class may also be used to modify the XML aggregates returned by the TSYSRETAIL or TSYSECOMMERCE class's GetDetailAggregate method.

Syntax

TSYSDetailRecord

Remarks

Credit and Force transactions are off-line transactions. This means that there is no authorization of funds using the TSYSECommerce or TSYSRetail classs. Instead, you must manually add these transactions to the settlement batch. The TSYSDetailRecord class can be used to create these transactions, which can then be added to the TSYSSettle class's DetailRecord array property.

To create a Credit, first set the TransactionType to dttOffLineCredit, and then set the IndustryType. EntryDataSource, and CardholderId based on whether you have a card reader, and how your customer is authenticated. The following example shows how this should be set for Direct Marketing:

TSYSDetailRecord.TransactionType = dttOffLineCredit TSYSDetailRecord.IndustryType = itDirectMarketing TSYSDetailRecord.EntryDataSource = edsManualEntryNoCardReader 'for DirectMarketing TSYSDetailRecord.CardholderId = "N" 'AVS for direct marketing

Next, set the CardNumber, SettlementAmount, and the current TransactionDate and TransactionTime. Note that since this is an off-line transaction, the AuthorizedAmount MUST be either zero or empty string.

TSYSDetailRecord.CardNumber = "4444333322221111" 'Card to credit TSYSDetailRecord.SettlementAmount = "3476" 'Amount of the credit $34.76 TSYSDetailRecord.AuthorizedAmount = "0" 'MUST be zero for credits! TSYSDetailRecord.TransactionDate = "0605" 'Date of this credit in MMDD format TSYSDetailRecord.TransactionTime = "124555" 'Time of this credit in HHMMSS format

Since this is an off-line transaction, the TransactionNumber may be any value (except 0), and need not reflect the value from the original authorization. You may simply set this to the next sequence number used for authorizations, if you wish. However, the TransactionId must be set to "0" or empty string.

TSYSDetailRecord.TransactionNumber = "123" 'Transaction sequence number of the original authorization request TSYSDetailRecord.TransactionId = "" 'ResponseTransactionId from the original authorization response Finally, set the TSYSSettle class's DetailRecord array property with the value returned by the GetDetailAggregate method. You've just added a Credit to the settlement.

TSYSSettle.DetailRecordCount = 1 TSYSSettle.DetailRecordAggregate[0] = TSYSDetailRecord.GetDetailAggregate()

Forced transactions are similar to credits, with the exception that a Forced transaction requires a Voice Authorization code obtained from your acquiring bank's call center. Generally, the purchase of large high-dollar items (cars, appliances, etc) will require the merchant to call and receive a voice authorization. Once this code is received, it should be set to the ResponseApprovalCode property. The following example shows a Force transaction in a Retail environment. TSYSDetailRecord.TransactionType = dttForceCardPresent TSYSDetailRecord.IndustryType = itRetail TSYSDetailRecord.ResponseApprovalCode = "123456" ' This is obtained from a voice authorization over the phone TSYSDetailRecord.EntryDataSource = edsTrack1 TSYSDetailRecord.CardholderId = "@" 'Signature TSYSDetailRecord.CardNumber = "4444333322221111" 'Card to credit TSYSDetailRecord.SettlementAmount = "5555" 'Amount of the credit $55.55 TSYSDetailRecord.AuthorizedAmount = 0 'MUST be zero for off-line transactions! TSYSDetailRecord.TransactionDate = "0605" 'Date of this credit in MMDD format TSYSDetailRecord.TransactionTime = "124555" 'Time of this credit in HHMMSS format TSYSDetailRecord.TransactionNumber = "124" 'Transaction sequence number of the original authorization request TSYSDetailRecord.TransactionId = "" 'ResponseTransactionId from the original authorization response TSYSSettle.DetailRecordCount = 2 TSYSSettle.DetailRecordAggregate[1] = TSYSDetailRecord.GetDetailAggregate()

In addition to creating Credit and Force transactions, the TSYSDetailRecord class can be used to adjust the Detail Records returned from the TSYSECommerce, TSYSRetail, TSYSDebit, and TSYSBenefit classs. The most common reasons to modify these detail records are to add a Gratuity (tip) to a charge (sitResturant, sitRetail and sitGroceryStore IndustryType), to add a PurchaseIdentifier or Installment payment info (itDirectMarketing IndustryType) to the detail record, or to add Hotel or Auto Rental or Passenger Transport specific information when dealing with those IndustryTypes.

For example, to add a gratuity to a charge:

DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) DetailRecord.Gratuity = "500" DetailRecord.SettlementAmount = DetailRecord.AuthorizedAmount + DetailRecord.Gratuity TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()

To settle a Passenger Transport transaction authorized with the sitPassengerTransport IndustryType, you must use the TSYSDetailRecord class to add the number of this passenger and the total count of all passengers in the authorization code. For instance, if the authorization transaction included "Three passengers", and this is the first passenger, then the passenger number will be 1, and the passenger count 3. An example is included below:

TSYSRetail.IndustryType = sitPassengerTransport TSYSRetail.Authorize() DetailRecord.ParseAggregate TSYSRetail.GetDetailAggregate() DetailRecord.PassengerCount = 3 DetailRecord.PassengerNumber = 1 DetailRecord.Config("RestrictedTicketIndicator=True") DetailRecord.Config("TicketNumber=8382152100395") DetailRecord.Config("PassengerName=John Smith") DetailRecord.Config("DepartureDate=072117") DetailRecord.Config("Origin=JFK") DetailRecord.Config("Leg1=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX") TSYSSettle1.IndustryType = sitPassengerTransport TSYSSettle1.Config("TravelAgencyCode=12345678") 'if ticket was issued by a travel agency TSYSSettle1.Config("TravelAgencyName=Travel and Tours") 'if ticket was issued by a travel agency TSYSSettle1.DetailAggregate[5] = DetailRecord.GetDetailAggregate()

Property List


The following is the full list of the properties of the class with short descriptions. Click on the links for further details.

AuthorizedAmountOriginal amount authorized before any reversals.
CardholderIdSpecifies the method used to verify the identity of the cardholder.
CardNumberCustomer's credit card number from the original authorization request.
DebitCashBackContains the ResponseCashBack amount from the original Debit or EBT transaction.
DebitNetworkIdContains the ResponseNetworkId returned in the original Debit or EBT response.
DebitReimbursementAttributeContains the ReimbursementAttribute from the original Debit or EBT request.
DebitRetrievalNumberContains the ResponseRetrievalNumber returned in original Debit or EBT response.
DebitSettleDateContains the ResponseSettleDate returned in the original Debit or EBT response.
DebitTraceContains the ResponseTrace returned from the original debit or EBT response.
ECIElectronic Commerce Indicator from the original authorization request.
EntryDataSourceThis property identifies the source of the customer data.
GoodsIndicatorUsed to identify the type of goods purchased over the Internet.
GratuityGratuity amount for settling restaurant/retail industry transactions.
HealthcareIndicates whether this is a healthcare transaction.
HotelChargeTypeType of charge made at a hotel (American Express cards only).
HotelRateAmountThe nightly rate for this hotel room (American Express cards only).
IndustryTypeCode which indicates the industry the merchant is engaged in.
InstallmentCountTotal number of installments (installment transactions only).
InstallmentNumberCurrent installment number (installment transactions only).
LodgingRenterNameName of the person or business entity charged for the reservation and/or lodging stay (hotel transactions only).
PartiallyReversedIndicates whether this transaction has been partially reversed.
PassengerCountTotal number of passengers (multiple passenger transport transactions only).
PassengerNumberCurrent passenger number (multiple passenger transport transactions only).
PurchaseIdentifierOptional purchase order number assigned by the merchant.
RentalCheckInDate the cardholder checked into the hotel or first drove away a rented vehicle.
RentalExtraChargesList of extra charges for Hotel/Auto transactions.
RentalNoShowIndicates whether the cardholder is a no-show (auto rental and hotel industries only).
RentalReturnCityCity where the rental car was returned (MasterCard only).
RentalReturnLocationId of the location where the rental vehicle was returned (MasterCard only).
RentalReturnStateState or country where the rental car was returned (MasterCard only).
RenterNameName of the person renting the vehicle (MasterCard only).
RequestedACIAuthorization Characteristics Indicator from the original authorization request.
ResponseACIAuthorization Characteristics Indicator from the original authorization response.
ResponseApprovalCodeResponse Approval Code from the original authorization response.
ResponseAuthSourceAuth Source Code from the original authorization response.
ResponseAVSAddress Verification Code from the original authorization response.
ResponseCardLevelCard Level results returned from the original authorization response.
ResponseCodeResponse code from the original authorization response.
SettlementAmountThe amount that the customer will be charged.
SubstantiatedUsed for HealthCare transactions. Identifies if the merchant verified the purchased items against an Inventory Information Approval System (IIAS).
TotalAuthorizedAmountSum total of all the original authorization and all subsequent incremental authorizations.
TransactionDateLocal Transaction Date from the original authorization response.
TransactionIdTransaction Identifier from the original authorization response.
TransactionNumberTransaction Number from the original authorization request.
TransactionTimeLocal transaction time from the original authorization response.
TransactionTypeIndicates transaction type for this detail record.
ValidationCodeValidation Code from the original authorization response.
VoidTransactionIndicates whether this transaction has been voided.

Method List


The following is the full list of the methods of the class with short descriptions. Click on the links for further details.

ConfigSets or retrieves a configuration setting.
GetDetailAggregateReturns an aggregate containing details of this transaction, which is then used for settlement.
ParseAggregateParses the aggregate returned from another class's GetDetailAggregate method.
ResetClears all properties to their default values.

Event List


The following is the full list of the events fired by the class with short descriptions. Click on the links for further details.

ErrorInformation about errors during data delivery.

Config Settings


The following is a list of config settings for the class with short descriptions. Click on the links for further details.

AccountDataSourceIdentifies the source of the customer card data entered.
ACHCheckingSavingsIndicatorSpecifies the originating account type.
ACHCheckNumberThe individual check number.
ACHCheckReversalIndicatorACH Check Reversal Indicator.
ACHIndividualNameThe individual or receiving company name.
ACHIndividualReferenceIDMerchant and customer information.
ACHPaymentTypeIndicatorACH Payment Type Indicator.
ACHPrenoteIndicatorACH Prenote Indicator.
ACHPresentmentInformationACH Presentment Information.
ACHReturnedCheckIndicatorACH Returned Check Indicator.
ACHRoutingNumberThe receiving Depository Financial Institution (DFI) identification/routing number and check digit.
ACHSECCodeThe Standard Entry Class (SEC) Code is used to determine the ACH Rules that apply to the transaction.
ACHTelephoneNumberThe merchant / business contact phone number, REVERSAL, or REDEPCHECK.
ACHTerminalCityThe city, town, village, or township in which the merchant's terminal is located.
ACHTerminalStateThe state location for the merchant's terminal.
DepartureDateThe passenger's departure date.
DetailExtensionDetail Extension Optional Data Group.
EMVAppCryptogramThe clearing cryptogram used to validate transaction processing in the event of a dispute.
EMVAppInterchangeProfileA series of indicators that reflect the specific functions supported by the chip card account.
EMVAppTranCounterThe count of the transactions performed within the application.
EMVCardSeqNumThe number assigned to a specific card when two or more cards are associated with a single account number.
EMVCryptogramAmountContains the transaction amount used by the chip when calculating the last cryptogram.
EMVCryptogramInfoDataThe type of cryptogram and the actions to be performed by the terminal.
EMVCurrencyCodeThe currency code of the transaction.
EMVCVMResultsThe results of the last Cardholder Verification Method (CVM) performed.
EMVDataThe EMV Data returned from a Pin Pad after reading an EMV card.
EMVDedicatedFileNameIdentifies the name of the Dedicated File as described in ISO/IEC 7816-4. This field is required for Mastercard and Discover (including Diners, JCB, and CUP).
EMVFormFactorIDThis indicators related to the attributes of the cardholder's device and the technology used for the communication between the cardholder's device and the acquiring device.
EMVIssuerAppDataApplication data for transmission to the issuer in an online transaction.
EMVIssuerAuthDataData sent by the Issuer to the Chip Card for the Chip Card to validate the authenticity of the Issuer.
EMVIssuerScriptResultsThe update command that the issuer sends in the authorization response to the card during online processing.
EMVTerminalCapabilitiesIndicates the card input data, the Cardholder Verification Method (CVM), and the security capabilities that are supported by the terminal.
EMVTranDateThe local date at the terminal on which the transaction was authorized.
EMVTranTypeThe Transaction Type used by the card to calculate the cryptogram.
EMVUnpredictableNumThe number used in the generation of the cryptogram.
EMVVerificationResultThe indicators representing the results of offline and online processing, recorded by the terminal.
HeartlandDeviceIdSpecifies a device ID to uniquely identify each terminal (card data entry device).
HeartlandEncryptionModeSpecifies the encryption mode to use in Heartland transactions.
IsBillPaymentIndicates that the transaction is a bill payment transaction.
Leg1Used by Merchants that are in the airline industry to submit Leg 1 information for Passenger Transport transactions.
Leg2Used by Merchants that are in the airline industry to submit Leg 2 information for Passenger Transport transactions.
Leg3Used by Merchants that are in the airline industry to submit Leg 3 information for Passenger Transport transactions.
Leg4Used by Merchants that are in the airline industry to submit Leg 4 information for Passenger Transport transactions.
LocationDetailAddressMerchant's street address.
LocationDetailCityName of the city.
LocationDetailCountryCountry code.
LocationDetailNameMerchant name.
LocationDetailPostalPostal code.
LocationDetailRegionRegion code that corresponds to the state, province, or other country subdivision.
MerchantDescriptorMerchant Soft Descriptor information.
MobileDeviceTypeIdentifies the type of mobile device used by the cardholder to initiate the transaction.
OriginFirst segment travel origination Airport.
PassengerNameThe passenger's name.
PFNameSubMerchantNameMerchant name, Payment Facilitator Name and Sub-Merchant name, or Marketplace name.
PFSubMerchantCityThe Payment Facilitator Sub-Merchant City.
PFSubMerchantCountryThe Payment Facilitator Sub-Merchant Country Code.
PFSubMerchantPostalCodeThe Payment Facilitator Sub-Merchant Postal Code.
PFSubMerchantStateThe Payment Facilitator Sub-Merchant State/Province Code.
POSDataCodeSpecifies the condition of the POS device used at the time of the transaction.
ProcessorSpecifies the Processor you are connecting to.
RequesterNameName of the requester.
RestrictedTicketIndicatorIndicates if there are restrictions associated with this ticket.
SpecialConditionIndicatorDescribes selected special conditions at the POS.
SpendQualifiedIndicatorIndicates whether or not the spend qualification threshold has been met.
TicketNumberThe airline ticket number.
TokenThe token used in place of Card data.
TotalTaxAmountTotal Tax Amount assessed at the point-of-sale.
TsysETBThe Encryption Transmission Block TSYS uses to decrypt encrypted data.
VisaMVVMerchant Verification Value used for Visa transactions.
BuildInfoInformation about the product's build.
CodePageThe system code page used for Unicode to Multibyte translations.
LicenseInfoInformation about the current license.
MaskSensitiveWhether sensitive data is masked in log messages.
ProcessIdleEventsWhether the class uses its internal event loop to process events when the main thread is idle.
SelectWaitMillisThe length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.
UseInternalSecurityAPITells the class whether or not to use the system security libraries or an internal implementation.

AuthorizedAmount Property (TSYSDetailRecord Class)

Original amount authorized before any reversals.

Syntax

ANSI (Cross Platform)
char* GetAuthorizedAmount();
int SetAuthorizedAmount(const char* lpszAuthorizedAmount); Unicode (Windows) LPWSTR GetAuthorizedAmount();
INT SetAuthorizedAmount(LPCWSTR lpszAuthorizedAmount);
char* dpaymentssdk_tsysdetailrecord_getauthorizedamount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setauthorizedamount(void* lpObj, const char* lpszAuthorizedAmount);
QString GetAuthorizedAmount();
int SetAuthorizedAmount(QString qsAuthorizedAmount);

Default Value

"000000000000"

Remarks

This field contains the transaction amount from the original authorization request message. If any additional authorizations have been made, or the SettlementAmount is different than the originally authorized amount (due to items out of stock or adding a Gratuity) this property should still reflect the original unchanged amount from the initial authorization request.

This amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated CurrencyCode configuration setting. In the United States (default), the number of allowable significant digits is seven. Thus the maximum TransactionAmount is "9999999", yielding a US dollar amount of $99,999.99. This field may not contain a negative number.

Data Type

String

CardholderId Property (TSYSDetailRecord Class)

Specifies the method used to verify the identity of the cardholder.

Syntax

ANSI (Cross Platform)
char* GetCardholderId();
int SetCardholderId(const char* lpszCardholderId); Unicode (Windows) LPWSTR GetCardholderId();
INT SetCardholderId(LPCWSTR lpszCardholderId);
char* dpaymentssdk_tsysdetailrecord_getcardholderid(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setcardholderid(void* lpObj, const char* lpszCardholderId);
QString GetCardholderId();
int SetCardholderId(QString qsCardholderId);

Default Value

"N"

Remarks

This 1-character property contains a code that specifies the method used to verify the identity of the cardholder. The value may be used in conjunction with AVS and ACI indicators. The following table lists all of the supported cardholder identification codes, but please note that some codes are Direct Marketing-specific and some are Retail-specific.

F PIN Authentication by ICC (Chip Card) (Offline pin authentication for debit and credit chip card transactions). Also used for CDCVM/On device CVM
G Clear Text PIN
K Personal Identification Number - 32-character DUK/PT (Online pin authentication for debit and credit transactions)
M Address Verification Data or CPS/Card Present - Unable to read Magnetic Stripe
N Address Verification Data, CPS/Card Not Present, or Electronic Commerce
P No CVM Required
S Personal Identification Number - 32-character static key
Z Cardholder Signature - Terminal has a PIN Pad. This value can also be used when no signature is required on a mag stripe transaction.
@ Cardholder Signature - No PIN Pad available (default for Retail transactions). This value can also be used when no signature is required on a mag stripe transaction.

Data Type

String

CardNumber Property (TSYSDetailRecord Class)

Customer's credit card number from the original authorization request.

Syntax

ANSI (Cross Platform)
char* GetCardNumber();
int SetCardNumber(const char* lpszCardNumber); Unicode (Windows) LPWSTR GetCardNumber();
INT SetCardNumber(LPCWSTR lpszCardNumber);
char* dpaymentssdk_tsysdetailrecord_getcardnumber(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setcardnumber(void* lpObj, const char* lpszCardNumber);
QString GetCardNumber();
int SetCardNumber(QString qsCardNumber);

Default Value

""

Remarks

This field contains the customer's credit card number used in the original authorization request. This alphanumeric field can be a maximum of 22 characters long, excluding whitespace and dashes which are stripped out when the property is set.

Data Type

String

DebitCashBack Property (TSYSDetailRecord Class)

Contains the ResponseCashBack amount from the original Debit or EBT transaction.

Syntax

ANSI (Cross Platform)
char* GetDebitCashBack();
int SetDebitCashBack(const char* lpszDebitCashBack); Unicode (Windows) LPWSTR GetDebitCashBack();
INT SetDebitCashBack(LPCWSTR lpszDebitCashBack);
char* dpaymentssdk_tsysdetailrecord_getdebitcashback(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebitcashback(void* lpObj, const char* lpszDebitCashBack);
QString GetDebitCashBack();
int SetDebitCashBack(QString qsDebitCashBack);

Default Value

""

Remarks

This property contains the cash back amount contained in the original authorization request message. If there was no cash back returned, this property must remain empty.

Note that for EBT Withdrawals DebitCashBack must be identical to the SettlementAmount.

Note: DebitCashBack must be empty for Restaurant IndustryType as this is not supported by TSYS.

Note: TSYS does not support transactions containing both CashBack and Gratuity/Tip amounts.

This amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated CurrencyCode configuration setting. In the United States (default), the number of allowable significant digits is seven. Thus the maximum TransactionAmount is "9999999", yielding a US dollar amount of $99,999.99. This field may not contain a negative number.

This property is valid for Debit card and EBT card transactions only. It will be ignored for all other transactions.

Data Type

String

DebitNetworkId Property (TSYSDetailRecord Class)

Contains the ResponseNetworkId returned in the original Debit or EBT response.

Syntax

ANSI (Cross Platform)
char* GetDebitNetworkId();
int SetDebitNetworkId(const char* lpszDebitNetworkId); Unicode (Windows) LPWSTR GetDebitNetworkId();
INT SetDebitNetworkId(LPCWSTR lpszDebitNetworkId);
char* dpaymentssdk_tsysdetailrecord_getdebitnetworkid(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebitnetworkid(void* lpObj, const char* lpszDebitNetworkId);
QString GetDebitNetworkId();
int SetDebitNetworkId(QString qsDebitNetworkId);

Default Value

""

Remarks

This property indicates the network through which the transaction was authorized. If this property contains a "V" or a "5", this indicates the transaction was processed as a credit card purchase transaction even though it was originally submitted as a debit transaction. When these values ("V" or "5") are returned, the transaction must be settled as a credit card (non-debit) transaction.

This property is valid for Debit card and EBT card transactions only. It will be ignored for all other TransactionTypes.

Data Type

String

DebitReimbursementAttribute Property (TSYSDetailRecord Class)

Contains the ReimbursementAttribute from the original Debit or EBT request.

Syntax

ANSI (Cross Platform)
int GetDebitReimbursementAttribute();
int SetDebitReimbursementAttribute(int iDebitReimbursementAttribute); Unicode (Windows) INT GetDebitReimbursementAttribute();
INT SetDebitReimbursementAttribute(INT iDebitReimbursementAttribute);

Possible Values

RA_STANDARD_RETAIL(0), 
RA_QUALIFIED_GROCERY(1),
RA_PRE_EXISTING_RETAIL(2),
RA_PRE_EXISTING_GROCERY(3),
RA_NON_DEBIT(4),
RA_TAX_EXEMPT(5)
int dpaymentssdk_tsysdetailrecord_getdebitreimbursementattribute(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebitreimbursementattribute(void* lpObj, int iDebitReimbursementAttribute);
int GetDebitReimbursementAttribute();
int SetDebitReimbursementAttribute(int iDebitReimbursementAttribute);

Default Value

0

Remarks

The following values are valid for Debit and EBT:

raStandardRetail (0) Standard INTERLINK Retail Merchant.
raQualifiedGrocery (1) Qualified INTERLINK Supermarket/Grocery Merchant.
raPreExistingRetail (2) Pre-existing Qualified INTERLINK Retail Merchant.
raPreExistingGrocery (3) Pre-existing Qualified INTERLINK Supermarket/Grocery Merchant.
raNonDebit (4) EBT, non-debit, or Non-INTERLINK debit.
raTaxExempt (5) Tax exempt organizations.

This property is valid for Debit card transactions only. It must be set to raNonDebit for EBT card transactions, and it will be ignored for all other TransactionTypes.

Data Type

Integer

DebitRetrievalNumber Property (TSYSDetailRecord Class)

Contains the ResponseRetrievalNumber returned in original Debit or EBT response.

Syntax

ANSI (Cross Platform)
char* GetDebitRetrievalNumber();
int SetDebitRetrievalNumber(const char* lpszDebitRetrievalNumber); Unicode (Windows) LPWSTR GetDebitRetrievalNumber();
INT SetDebitRetrievalNumber(LPCWSTR lpszDebitRetrievalNumber);
char* dpaymentssdk_tsysdetailrecord_getdebitretrievalnumber(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebitretrievalnumber(void* lpObj, const char* lpszDebitRetrievalNumber);
QString GetDebitRetrievalNumber();
int SetDebitRetrievalNumber(QString qsDebitRetrievalNumber);

Default Value

""

Remarks

This property contains the ResponseRetrievalNumber returned in the original debit authorization response message. It is utilized for transaction tracking purposes.

This property is valid for Debit card and EBT card transactions only. It will be ignored for all other TransactionTypes.

Data Type

String

DebitSettleDate Property (TSYSDetailRecord Class)

Contains the ResponseSettleDate returned in the original Debit or EBT response.

Syntax

ANSI (Cross Platform)
char* GetDebitSettleDate();
int SetDebitSettleDate(const char* lpszDebitSettleDate); Unicode (Windows) LPWSTR GetDebitSettleDate();
INT SetDebitSettleDate(LPCWSTR lpszDebitSettleDate);
char* dpaymentssdk_tsysdetailrecord_getdebitsettledate(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebitsettledate(void* lpObj, const char* lpszDebitSettleDate);
QString GetDebitSettleDate();
int SetDebitSettleDate(QString qsDebitSettleDate);

Default Value

""

Remarks

This property contains the settlement date returned in the original debit authorization response message. the settlement date must be provided in MMDD format, and is utilized for transaction tracking purposes.

This property is valid for Debit card and EBT card transactions only. It will be ignored for all other TransactionTypes.

Data Type

String

DebitTrace Property (TSYSDetailRecord Class)

Contains the ResponseTrace returned from the original debit or EBT response.

Syntax

ANSI (Cross Platform)
char* GetDebitTrace();
int SetDebitTrace(const char* lpszDebitTrace); Unicode (Windows) LPWSTR GetDebitTrace();
INT SetDebitTrace(LPCWSTR lpszDebitTrace);
char* dpaymentssdk_tsysdetailrecord_getdebittrace(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setdebittrace(void* lpObj, const char* lpszDebitTrace);
QString GetDebitTrace();
int SetDebitTrace(QString qsDebitTrace);

Default Value

""

Remarks

This property contains the system trace audit number returned in the original debit authorization response message. This property is utilized for transaction tracking purposes, and is only valid for Debit card and EBT card transactions. It will be ignored for all other TransactionTypes.

Data Type

String

ECI Property (TSYSDetailRecord Class)

Electronic Commerce Indicator from the original authorization request.

Syntax

ANSI (Cross Platform)
char* GetECI();
int SetECI(const char* lpszECI); Unicode (Windows) LPWSTR GetECI();
INT SetECI(LPCWSTR lpszECI);
char* dpaymentssdk_tsysdetailrecord_geteci(void* lpObj);
int dpaymentssdk_tsysdetailrecord_seteci(void* lpObj, const char* lpszECI);
QString GetECI();
int SetECI(QString qsECI);

Default Value

""

Remarks

This field should be identical to the ECI property from the original authorization request. This property is used only for eCommerce and Direct Marketing (card not present) transactions, and is ignored for all Card Present (Retail) transactions.

Data Type

String

EntryDataSource Property (TSYSDetailRecord Class)

This property identifies the source of the customer data.

Syntax

ANSI (Cross Platform)
int GetEntryDataSource();
int SetEntryDataSource(int iEntryDataSource); Unicode (Windows) INT GetEntryDataSource();
INT SetEntryDataSource(INT iEntryDataSource);

Possible Values

EDS_TRACK_1(0), 
EDS_TRACK_2(1),
EDS_MANUAL_ENTRY_TRACK_1CAPABLE(2),
EDS_MANUAL_ENTRY_TRACK_2CAPABLE(3),
EDS_MANUAL_ENTRY_NO_CARD_READER(4),
EDS_TRACK_2CHIP_CAPABLE(6),
EDS_MANUAL_ENTRY_CHIP_CAPABLE(7)
int dpaymentssdk_tsysdetailrecord_getentrydatasource(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setentrydatasource(void* lpObj, int iEntryDataSource);
int GetEntryDataSource();
int SetEntryDataSource(int iEntryDataSource);

Default Value

0

Remarks

This property contains a 1-character code identifying the source of the customer data. The table below shows all supported values for this property.

edsTrack1 (0) Full Magnetic stripe read and transmit, Track 1.
edsTrack2 (1) Full magnetic stripe read and transmit, Track 2.
edsManualEntryTrack1Capable (2) Manually keyed, Track 1 capable.
edsManualEntryTrack2Capable (3)Manually keyed, Track 2 capable.
edsManualEntryNoCardReader (4)Manually keyed, terminal has no card reading capability (use this for e-commerce and MOTO transactions).
edsTrack2ChipCapable (6)Full magnetic stripe read (Track 2 only), Chip Card capable terminal (Visa, Mastercard, and JCB Transactions only).
edsManualEntryChipCapable (7)Manually keyed, Chip Card read capable terminal (Visa, MasterCard, and JCB transactions only).

Data Type

Integer

GoodsIndicator Property (TSYSDetailRecord Class)

Used to identify the type of goods purchased over the Internet.

Syntax

ANSI (Cross Platform)
int GetGoodsIndicator();
int SetGoodsIndicator(int iGoodsIndicator); Unicode (Windows) INT GetGoodsIndicator();
INT SetGoodsIndicator(INT iGoodsIndicator);

Possible Values

TGI_NOT_USED(0), 
TGI_DIGITAL_GOODS(1),
TGI_PHYSICAL_GOODS(2)
int dpaymentssdk_tsysdetailrecord_getgoodsindicator(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setgoodsindicator(void* lpObj, int iGoodsIndicator);
int GetGoodsIndicator();
int SetGoodsIndicator(int iGoodsIndicator);

Default Value

0

Remarks

This property is used to identify the type of goods purchased over the Internet. Supported types are shown below.

tgiNotUsed (0)GoodsIndicator is not used.
tgiDigitalGoods (1)Customer purchased digital goods (for instance, an application that was electronically delivered).
tgiPhysicalGoods (2)Customer purchased actual physical goods, which were then shipped to the customer.

Data Type

Integer

Gratuity Property (TSYSDetailRecord Class)

Gratuity amount for settling restaurant/retail industry transactions.

Syntax

ANSI (Cross Platform)
char* GetGratuity();
int SetGratuity(const char* lpszGratuity); Unicode (Windows) LPWSTR GetGratuity();
INT SetGratuity(LPCWSTR lpszGratuity);
char* dpaymentssdk_tsysdetailrecord_getgratuity(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setgratuity(void* lpObj, const char* lpszGratuity);
QString GetGratuity();
int SetGratuity(QString qsGratuity);

Default Value

""

Remarks

This field contains the gratuity (tip) amount of the transaction being settled. This amount is only sent when the TSYSSettle class's IndustryType is set to "sitRestaurant", "sitRetail " or "sitGroceryStore".

For transactions with Tip at the time of sale, the value of TransactionAmount in the original authorization request must reflect the cost of the goods/service purchased plus this Gratuity amount.

For example, to add a gratuity at the time of sale:

//Cost of goods/services purchased is $10 and Gratuity/Tip amount is $2 TSYSRetail.TransactionAmount = "1200" //$12 TSYSRetail.Authorize() DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) //SettlementAmount in the Detail Record equals the original authorized amount $12 DetailRecord.Gratuity = "200" //Indicates the Gratuity/Tip included at the time of sale $2 TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()

For Tip Adjusts (transactions where Gratuity/Tip is included after the time of sale), the SettlementAmount must reflect the total of the AuthorizedAmount plus the Gratuity.

For example, to perform a Tip Adjust/adding the gratuity after the time of sale:

//Cost of goods/services purchased is $10; TSYSRetail.TransactionAmount = "1000" TSYSRetail.Authorize() DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) DetailRecord.Gratuity = "200" //Indicates the Gratuity/Tip added after the time of Sale $2 //SettlementAmount must include the tip, therefore it is higher than the original AuthorizedAmount DetailRecord.SettlementAmount = DetailRecord.AuthorizedAmount + DetailRecord.Gratuity TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()

This amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated CurrencyCode configuration setting. In the United States (default), the number of allowable significant digits is seven. Thus the maximum TransactionAmount is "9999999", yielding a US dollar amount of $99,999.99. This field may not contain a negative number.

NOTE: TSYS does not support Credit/Debit transactions containing both CashOver/CashBack and Gratuity/Tip amounts.

Data Type

String

Healthcare Property (TSYSDetailRecord Class)

Indicates whether this is a healthcare transaction.

Syntax

ANSI (Cross Platform)
int GetHealthcare();
int SetHealthcare(int bHealthcare); Unicode (Windows) BOOL GetHealthcare();
INT SetHealthcare(BOOL bHealthcare);
int dpaymentssdk_tsysdetailrecord_gethealthcare(void* lpObj);
int dpaymentssdk_tsysdetailrecord_sethealthcare(void* lpObj, int bHealthcare);
bool GetHealthcare();
int SetHealthcare(bool bHealthcare);

Default Value

FALSE

Remarks

When settling IIAS auto-substantiated healthcare transactions, this property should be set to true. It is only necessary to modify this setting when sending off-line transactions or when not using the ParseAggregate method. XML Aggregates passed from the TSYSHealthCare class to the ParseAggregate method of this class will already be marked as healthcare transactions.

Data Type

Boolean

HotelChargeType Property (TSYSDetailRecord Class)

Type of charge made at a hotel (American Express cards only).

Syntax

ANSI (Cross Platform)
int GetHotelChargeType();
int SetHotelChargeType(int iHotelChargeType); Unicode (Windows) INT GetHotelChargeType();
INT SetHotelChargeType(INT iHotelChargeType);

Possible Values

CT_HOTEL(0), 
CT_RESTAURANT(1),
CT_GIFT_SHOP(2)
int dpaymentssdk_tsysdetailrecord_gethotelchargetype(void* lpObj);
int dpaymentssdk_tsysdetailrecord_sethotelchargetype(void* lpObj, int iHotelChargeType);
int GetHotelChargeType();
int SetHotelChargeType(int iHotelChargeType);

Default Value

0

Remarks

This property contains an indicator used to identify a hotel charge type. It must contain one of the values defined below:

  • ctHotel (0)
  • ctRestaurant (1)
  • ctGiftShop (2)

Note, this property is only applicable when using the Hotel IndustryType for American Express transactions.

If this property is set to ctHotel, RentalNoShow must equal " ", "2", or "3". For any other value, RentalNoShow must equal "1".

Data Type

Integer

HotelRateAmount Property (TSYSDetailRecord Class)

The nightly rate for this hotel room (American Express cards only).

Syntax

ANSI (Cross Platform)
char* GetHotelRateAmount();
int SetHotelRateAmount(const char* lpszHotelRateAmount); Unicode (Windows) LPWSTR GetHotelRateAmount();
INT SetHotelRateAmount(LPCWSTR lpszHotelRateAmount);
char* dpaymentssdk_tsysdetailrecord_gethotelrateamount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_sethotelrateamount(void* lpObj, const char* lpszHotelRateAmount);
QString GetHotelRateAmount();
int SetHotelRateAmount(QString qsHotelRateAmount);

Default Value

"0"

Remarks

This property contains the nightly rate for one room at the lodging property. This property is optional on all card types except Amex and may be set to zero. For Amex cards, this field must be greater than zero and less than or equal to $999.99 if ctHotel HotelChargeType and sitHotel IndustryType.

This amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated CurrencyCode configuration setting. In the United States (default), the number of allowable significant digits is seven. Thus the maximum TransactionAmount is "9999999", yielding a US dollar amount of $99,999.99. This field may not contain a negative number.

Data Type

String

IndustryType Property (TSYSDetailRecord Class)

Code which indicates the industry the merchant is engaged in.

Syntax

ANSI (Cross Platform)
int GetIndustryType();
int SetIndustryType(int iIndustryType); Unicode (Windows) INT GetIndustryType();
INT SetIndustryType(INT iIndustryType);

Possible Values

SIT_UNKNOWN(0), 
SIT_RETAIL(1),
SIT_RESTAURANT(2),
SIT_GROCERY_STORE(3),
SIT_DIRECT_MARKETING(4),
SIT_HOTEL(5),
SIT_AUTO_RENTAL(6),
SIT_PASSENGER_TRANSPORT(7)
int dpaymentssdk_tsysdetailrecord_getindustrytype(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setindustrytype(void* lpObj, int iIndustryType);
int GetIndustryType();
int SetIndustryType(int iIndustryType);

Default Value

1

Remarks

This property is used to identify the industry type of the merchant submitting the authorization request. The following table lists the industry types supported by this class.

sitUnknown (0)Unknown or unsure.
sitRetail (1)Retail store.
sitRestaurant (2)Food / Restaurant.
sitGroceryStore (3)Grocery store or supermarket.
sitDirectMarketing (4)eCommerce or Direct Marketing
sitHotel (5)Hotel / Lodging
sitAutoRental (6)Auto Rental
sitPassengerTransport (7)Passenger Transport

Note: American Express cards are NOT currently supported in the sitAutoRental industry.

Data Type

Integer

InstallmentCount Property (TSYSDetailRecord Class)

Total number of installments (installment transactions only).

Syntax

ANSI (Cross Platform)
char* GetInstallmentCount();
int SetInstallmentCount(const char* lpszInstallmentCount); Unicode (Windows) LPWSTR GetInstallmentCount();
INT SetInstallmentCount(LPCWSTR lpszInstallmentCount);
char* dpaymentssdk_tsysdetailrecord_getinstallmentcount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setinstallmentcount(void* lpObj, const char* lpszInstallmentCount);
QString GetInstallmentCount();
int SetInstallmentCount(QString qsInstallmentCount);

Default Value

""

Remarks

This property is used when charging installment payments. The InstallmentCount indicates the total number of installments to be charged to the customer, and the InstallmentNumber indicates the current installment which is being charged. Installment payments can only be made for card-not-present transactions initiated by the TSYSECommerce class.

Data Type

String

InstallmentNumber Property (TSYSDetailRecord Class)

Current installment number (installment transactions only).

Syntax

ANSI (Cross Platform)
char* GetInstallmentNumber();
int SetInstallmentNumber(const char* lpszInstallmentNumber); Unicode (Windows) LPWSTR GetInstallmentNumber();
INT SetInstallmentNumber(LPCWSTR lpszInstallmentNumber);
char* dpaymentssdk_tsysdetailrecord_getinstallmentnumber(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setinstallmentnumber(void* lpObj, const char* lpszInstallmentNumber);
QString GetInstallmentNumber();
int SetInstallmentNumber(QString qsInstallmentNumber);

Default Value

""

Remarks

This property is used when charging installment payments. The InstallmentCount indicates the total number of installments to be charged to the customer, and the InstallmentNumber indicates the current installment which is being charged. Installment payments can only be made for card-not-present transactions initiated by the TSYSECommerce class.

Data Type

String

LodgingRenterName Property (TSYSDetailRecord Class)

Name of the person or business entity charged for the reservation and/or lodging stay (hotel transactions only).

Syntax

ANSI (Cross Platform)
char* GetLodgingRenterName();
int SetLodgingRenterName(const char* lpszLodgingRenterName); Unicode (Windows) LPWSTR GetLodgingRenterName();
INT SetLodgingRenterName(LPCWSTR lpszLodgingRenterName);
char* dpaymentssdk_tsysdetailrecord_getlodgingrentername(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setlodgingrentername(void* lpObj, const char* lpszLodgingRenterName);
QString GetLodgingRenterName();
int SetLodgingRenterName(QString qsLodgingRenterName);

Default Value

""

Remarks

In the Hotel IndustryType, this property must contain the name of the individual or business entity charged for the reservation and/or lodging stay. The maximum length of this property is 26 characters (upper-case). This property is ignored for all other IndustryTypes.

Data Type

String

PartiallyReversed Property (TSYSDetailRecord Class)

Indicates whether this transaction has been partially reversed.

Syntax

ANSI (Cross Platform)
int GetPartiallyReversed();
int SetPartiallyReversed(int bPartiallyReversed); Unicode (Windows) BOOL GetPartiallyReversed();
INT SetPartiallyReversed(BOOL bPartiallyReversed);
int dpaymentssdk_tsysdetailrecord_getpartiallyreversed(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setpartiallyreversed(void* lpObj, int bPartiallyReversed);
bool GetPartiallyReversed();
int SetPartiallyReversed(bool bPartiallyReversed);

Default Value

FALSE

Remarks

After partially reversing a transaction using the TSYSReversal class, the TotalAuthorizedAmount should indicate the sum total of all authorized amounts, the SettlementAmount should indicate the new settlement amount, and the PartiallyReversed property should be set to True to indicate to the host that this transaction has been partially reversed.

Data Type

Boolean

PassengerCount Property (TSYSDetailRecord Class)

Total number of passengers (multiple passenger transport transactions only).

Syntax

ANSI (Cross Platform)
int GetPassengerCount();
int SetPassengerCount(int iPassengerCount); Unicode (Windows) INT GetPassengerCount();
INT SetPassengerCount(INT iPassengerCount);
int dpaymentssdk_tsysdetailrecord_getpassengercount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setpassengercount(void* lpObj, int iPassengerCount);
int GetPassengerCount();
int SetPassengerCount(int iPassengerCount);

Default Value

1

Remarks

This property is used when there are multiple passengers on the same authorization. The PassengerCount indicates the total number of passengers for a specific authorization code, and the PassengerNumber indicates the current passenger. Only Visa card transactions can be captured for Passenger Transport industry type. You need to set additional required Passenger Transport related information using the respective configuration settings.

NOTE: PassengerNumber cannot be greater than PassengerCount

To settle a Passenger Transport transaction authorized with the sitPassengerTransport IndustryType, you must use the TSYSDetailRecord class to add the number of this passenger and the total count of all passengers in the authorization code. For instance, if the authorization transaction included "Three passengers", and this is the first passenger, then the passenger number will be 1, and the passenger count 3. An example is included below:

TSYSRetail.IndustryType = sitPassengerTransport TSYSRetail.Authorize() DetailRecord.ParseAggregate TSYSRetail.GetDetailAggregate() DetailRecord.PassengerCount = 3 DetailRecord.PassengerNumber = 1 DetailRecord.Config("RestrictedTicketIndicator=True") DetailRecord.Config("TicketNumber=8382152100395") DetailRecord.Config("PassengerName=John Smith") DetailRecord.Config("DepartureDate=072117") DetailRecord.Config("Origin=JFK") DetailRecord.Config("Leg1=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX") TSYSSettle1.IndustryType = sitPassengerTransport TSYSSettle1.Config("TravelAgencyCode=12345678") 'if ticket was issued by a travel agency TSYSSettle1.Config("TravelAgencyName=Travel and Tours") 'if ticket was issued by a travel agency TSYSSettle1.DetailAggregate[5] = DetailRecord.GetDetailAggregate()

Data Type

Integer

PassengerNumber Property (TSYSDetailRecord Class)

Current passenger number (multiple passenger transport transactions only).

Syntax

ANSI (Cross Platform)
int GetPassengerNumber();
int SetPassengerNumber(int iPassengerNumber); Unicode (Windows) INT GetPassengerNumber();
INT SetPassengerNumber(INT iPassengerNumber);
int dpaymentssdk_tsysdetailrecord_getpassengernumber(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setpassengernumber(void* lpObj, int iPassengerNumber);
int GetPassengerNumber();
int SetPassengerNumber(int iPassengerNumber);

Default Value

1

Remarks

This property is used to identify a specific passenger when there are multiple passengers on the same authorization. The PassengerCount indicates the total number of passengers for a specific authorization code, and the PassengerNumber indicates the current passenger. Only Visa card transactions can be captured for Passenger Transport industry type. You need to set additional required Passenger Transport related information using the respective configuration settings.

NOTE: Passenger Number cannot be greater than PassengerCount

To settle a Passenger Transport transaction authorized with the sitPassengerTransport IndustryType, you must use the TSYSDetailRecord class to add the number of this passenger and the total count of all passengers in the authorization code. For instance, if the authorization transaction included "Three passengers", and this is the first passenger, then the passenger number will be 1, and the passenger count 3. An example is included below:

TSYSRetail.IndustryType = sitPassengerTransport TSYSRetail.Authorize() DetailRecord.ParseAggregate TSYSRetail.GetDetailAggregate() DetailRecord.PassengerCount = 3 DetailRecord.PassengerNumber = 1 DetailRecord.Config("RestrictedTicketIndicator=True") DetailRecord.Config("TicketNumber=8382152100395") DetailRecord.Config("PassengerName=John Smith") DetailRecord.Config("DepartureDate=072117") DetailRecord.Config("Origin=JFK") DetailRecord.Config("Leg1=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX") TSYSSettle1.IndustryType = sitPassengerTransport TSYSSettle1.Config("TravelAgencyCode=12345678") 'if ticket was issued by a travel agency TSYSSettle1.Config("TravelAgencyName=Travel and Tours") 'if ticket was issued by a travel agency TSYSSettle1.DetailAggregate[5] = DetailRecord.GetDetailAggregate()

Data Type

Integer

PurchaseIdentifier Property (TSYSDetailRecord Class)

Optional purchase order number assigned by the merchant.

Syntax

ANSI (Cross Platform)
char* GetPurchaseIdentifier();
int SetPurchaseIdentifier(const char* lpszPurchaseIdentifier); Unicode (Windows) LPWSTR GetPurchaseIdentifier();
INT SetPurchaseIdentifier(LPCWSTR lpszPurchaseIdentifier);
char* dpaymentssdk_tsysdetailrecord_getpurchaseidentifier(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setpurchaseidentifier(void* lpObj, const char* lpszPurchaseIdentifier);
QString GetPurchaseIdentifier();
int SetPurchaseIdentifier(QString qsPurchaseIdentifier);

Default Value

""

Remarks

In this field the merchant may assign an optional Purchase Identifier. This field must contain digits, and will be automatically left-justified, space-filled to 25 spaces.

This field is applicable to E-Commerce, Hotel, and Auto Rental transactions.

Note: For the Hotel IndustryType, this property will contain the Hotel Folio Number. For the Auto Rental IndustryType, it should indicate the Rental Agreement Number.

Failure to set a PurchaseIdentifier for the e-commerce IndustryType may result in a CPS downgrade when the transaction is settled. This can result in higher interchange rates.

Data Type

String

RentalCheckIn Property (TSYSDetailRecord Class)

Date the cardholder checked into the hotel or first drove away a rented vehicle.

Syntax

ANSI (Cross Platform)
char* GetRentalCheckIn();
int SetRentalCheckIn(const char* lpszRentalCheckIn); Unicode (Windows) LPWSTR GetRentalCheckIn();
INT SetRentalCheckIn(LPCWSTR lpszRentalCheckIn);
char* dpaymentssdk_tsysdetailrecord_getrentalcheckin(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalcheckin(void* lpObj, const char* lpszRentalCheckIn);
QString GetRentalCheckIn();
int SetRentalCheckIn(QString qsRentalCheckIn);

Default Value

"010101"

Remarks

For the Hotel IndustryType, this property contains the date (in MMDDYY format) reflecting when the cardholder checked into the hotel. If the transaction is an advance check-in, this field should contain the date on which the reservation was made. If the transaction is a No Show, this field must contain the anticipated hotel arrival date.

For the Auto Rental IndustryType, this property contains the date (in MMDDYY format) when the cardholder first drove away the rented vehicle.

Data Type

String

RentalExtraCharges Property (TSYSDetailRecord Class)

List of extra charges for Hotel/Auto transactions.

Syntax

ANSI (Cross Platform)
char* GetRentalExtraCharges();
int SetRentalExtraCharges(const char* lpszRentalExtraCharges); Unicode (Windows) LPWSTR GetRentalExtraCharges();
INT SetRentalExtraCharges(LPCWSTR lpszRentalExtraCharges);
char* dpaymentssdk_tsysdetailrecord_getrentalextracharges(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalextracharges(void* lpObj, const char* lpszRentalExtraCharges);
QString GetRentalExtraCharges();
int SetRentalExtraCharges(QString qsRentalExtraCharges);

Default Value

"0"

Remarks

This property contains a six-character numeric value used to identify any additional ancillary charges that are booked to the cardholder's card after the transaction was completed. The merchant may enter one or more codes on each transaction being settled. If extra charges are being submitted, this field must contain value(s) as defined below.

Value Auto Rental Definition Hotel Definition
0 or space No Extra Charge. Position Not Used.
1 Gasoline. RESERVED.
2 Extra Mileage. Restaurant.
3 Late Return. Gift Shop.
4 One Way Service Fee. Mini-Bar.
5 Parking or Moving Violation. Telephone.
6 N/A Other.
7 N/A Laundry.

For example, in the Hotel industry to indicate charges in both the gift shop and mini bar, RentalExtraCharges should equal "34".

Note that this property is only applicable for the Hotel and Auto Rental IndustryTypes, and will not be sent for any other IndustryType.

Data Type

String

RentalNoShow Property (TSYSDetailRecord Class)

Indicates whether the cardholder is a no-show (auto rental and hotel industries only).

Syntax

ANSI (Cross Platform)
char* GetRentalNoShow();
int SetRentalNoShow(const char* lpszRentalNoShow); Unicode (Windows) LPWSTR GetRentalNoShow();
INT SetRentalNoShow(LPCWSTR lpszRentalNoShow);
char* dpaymentssdk_tsysdetailrecord_getrentalnoshow(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalnoshow(void* lpObj, const char* lpszRentalNoShow);
QString GetRentalNoShow();
int SetRentalNoShow(QString qsRentalNoShow);

Default Value

"0"

Remarks

This property contains a one-character identifier used to indicate whether the cardholder is being billed for a hotel room or rental vehicle that was reserved, but not actually rented. The following values are valid for any card except American Express cards:

"0" Not Applicable
"1" No Show

For American Express cards, this property is used to indicate whether the cardholder is participating in a special program. Allowable values include:

"1" Purchase
"2" Assured Reservation/No Show
"3" CARD Deposit
" " (space)Other

This property is only applicable for the Auto Rental and Hotel IndustryTypes.

Data Type

String

RentalReturnCity Property (TSYSDetailRecord Class)

City where the rental car was returned (MasterCard only).

Syntax

ANSI (Cross Platform)
char* GetRentalReturnCity();
int SetRentalReturnCity(const char* lpszRentalReturnCity); Unicode (Windows) LPWSTR GetRentalReturnCity();
INT SetRentalReturnCity(LPCWSTR lpszRentalReturnCity);
char* dpaymentssdk_tsysdetailrecord_getrentalreturncity(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalreturncity(void* lpObj, const char* lpszRentalReturnCity);
QString GetRentalReturnCity();
int SetRentalReturnCity(QString qsRentalReturnCity);

Default Value

""

Remarks

For MasterCard transactions in the Auto Rental IndustryType, this property must contain the city where the rented vehicle was returned. The maximum length of this property is 18 characters, and it may not remain all spaces. This property is ignored for all other IndustryTypes and all other card types.

Data Type

String

RentalReturnLocation Property (TSYSDetailRecord Class)

Id of the location where the rental vehicle was returned (MasterCard only).

Syntax

ANSI (Cross Platform)
char* GetRentalReturnLocation();
int SetRentalReturnLocation(const char* lpszRentalReturnLocation); Unicode (Windows) LPWSTR GetRentalReturnLocation();
INT SetRentalReturnLocation(LPCWSTR lpszRentalReturnLocation);
char* dpaymentssdk_tsysdetailrecord_getrentalreturnlocation(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalreturnlocation(void* lpObj, const char* lpszRentalReturnLocation);
QString GetRentalReturnLocation();
int SetRentalReturnLocation(QString qsRentalReturnLocation);

Default Value

""

Remarks

For MasterCard transactions in the Auto Rental IndustryType, this property must contain an identifier indicating the location where the rented vehicle was returned. The maximum length of this property is 10 characters, and it may not remain all spaces. This property is ignored for all other IndustryTypes and all other card types.

Data Type

String

RentalReturnState Property (TSYSDetailRecord Class)

State or country where the rental car was returned (MasterCard only).

Syntax

ANSI (Cross Platform)
char* GetRentalReturnState();
int SetRentalReturnState(const char* lpszRentalReturnState); Unicode (Windows) LPWSTR GetRentalReturnState();
INT SetRentalReturnState(LPCWSTR lpszRentalReturnState);
char* dpaymentssdk_tsysdetailrecord_getrentalreturnstate(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentalreturnstate(void* lpObj, const char* lpszRentalReturnState);
QString GetRentalReturnState();
int SetRentalReturnState(QString qsRentalReturnState);

Default Value

""

Remarks

For MasterCard transactions in the Auto Rental IndustryType, this property must contain a code indicating the name of the state, province, or country where the rented vehicle was returned. The maximum length of this property is 3 characters, and it may not remain all spaces. This property is ignored for all other IndustryTypes and all other card types.

Data Type

String

RenterName Property (TSYSDetailRecord Class)

Name of the person renting the vehicle (MasterCard only).

Syntax

ANSI (Cross Platform)
char* GetRenterName();
int SetRenterName(const char* lpszRenterName); Unicode (Windows) LPWSTR GetRenterName();
INT SetRenterName(LPCWSTR lpszRenterName);
char* dpaymentssdk_tsysdetailrecord_getrentername(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrentername(void* lpObj, const char* lpszRenterName);
QString GetRenterName();
int SetRenterName(QString qsRenterName);

Default Value

""

Remarks

For MasterCard transactions in the Auto Rental IndustryType, this property must contain the name of the individual renting the vehicle. The maximum length of this property is 20 characters, and it may not remain all spaces. This property is ignored for all other IndustryTypes and all other card types.

Data Type

String

RequestedACI Property (TSYSDetailRecord Class)

Authorization Characteristics Indicator from the original authorization request.

Syntax

ANSI (Cross Platform)
char* GetRequestedACI();
int SetRequestedACI(const char* lpszRequestedACI); Unicode (Windows) LPWSTR GetRequestedACI();
INT SetRequestedACI(LPCWSTR lpszRequestedACI);
char* dpaymentssdk_tsysdetailrecord_getrequestedaci(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setrequestedaci(void* lpObj, const char* lpszRequestedACI);
QString GetRequestedACI();
int SetRequestedACI(QString qsRequestedACI);

Default Value

""

Remarks

This field should be identical to the ACI property from the original authorization request.

Data Type

String

ResponseACI Property (TSYSDetailRecord Class)

Authorization Characteristics Indicator from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseACI();
int SetResponseACI(const char* lpszResponseACI); Unicode (Windows) LPWSTR GetResponseACI();
INT SetResponseACI(LPCWSTR lpszResponseACI);
char* dpaymentssdk_tsysdetailrecord_getresponseaci(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponseaci(void* lpObj, const char* lpszResponseACI);
QString GetResponseACI();
int SetResponseACI(QString qsResponseACI);

Default Value

""

Remarks

This field contains a one character returned Authorization Characteristics Indicator. This indicator provides information on conditions or characteristics of the authorization code. If the transaction being settled was authorized on-line, this field must contain the value returned in that authorization response. If the transaction is a credit or was otherwise processed off-line, this field should be defaulted to SPACE.

Data Type

String

ResponseApprovalCode Property (TSYSDetailRecord Class)

Response Approval Code from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseApprovalCode();
int SetResponseApprovalCode(const char* lpszResponseApprovalCode); Unicode (Windows) LPWSTR GetResponseApprovalCode();
INT SetResponseApprovalCode(LPCWSTR lpszResponseApprovalCode);
char* dpaymentssdk_tsysdetailrecord_getresponseapprovalcode(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponseapprovalcode(void* lpObj, const char* lpszResponseApprovalCode);
QString GetResponseApprovalCode();
int SetResponseApprovalCode(QString qsResponseApprovalCode);

Default Value

""

Remarks

This field contains the authorization code obtained from the original authorization response. If the transaction is a credit or other non-approved transaction type, this property must be empty.

Data Type

String

ResponseAuthSource Property (TSYSDetailRecord Class)

Auth Source Code from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseAuthSource();
int SetResponseAuthSource(const char* lpszResponseAuthSource); Unicode (Windows) LPWSTR GetResponseAuthSource();
INT SetResponseAuthSource(LPCWSTR lpszResponseAuthSource);
char* dpaymentssdk_tsysdetailrecord_getresponseauthsource(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponseauthsource(void* lpObj, const char* lpszResponseAuthSource);
QString GetResponseAuthSource();
int SetResponseAuthSource(QString qsResponseAuthSource);

Default Value

""

Remarks

This field contains a one character authorization source code used to provide information on the source or origin of the ResponseApprovalCode being settled. If the transaction being settled was network authorized, this field must contain the value returned in the authorization response. If the transaction is a credit, or otherwise processed off-line, this field must contain one of the values below.

6POS device generated authorization code.
9Not authorized (includes credits/refunds).
EOff-line voice center or chip-approved transaction, manually keyed approval code (ie: referrals).

Data Type

String

ResponseAVS Property (TSYSDetailRecord Class)

Address Verification Code from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseAVS();
int SetResponseAVS(const char* lpszResponseAVS); Unicode (Windows) LPWSTR GetResponseAVS();
INT SetResponseAVS(LPCWSTR lpszResponseAVS);
char* dpaymentssdk_tsysdetailrecord_getresponseavs(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponseavs(void* lpObj, const char* lpszResponseAVS);
QString GetResponseAVS();
int SetResponseAVS(QString qsResponseAVS);

Default Value

"0"

Remarks

This field contains a one character Address Verification (result) Code. This field contains the value returned in the original authorization response message. If the transaction is a credit or was otherwise processed off-line, this field should be defaulted to "0".

Data Type

String

ResponseCardLevel Property (TSYSDetailRecord Class)

Card Level results returned from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseCardLevel();
int SetResponseCardLevel(const char* lpszResponseCardLevel); Unicode (Windows) LPWSTR GetResponseCardLevel();
INT SetResponseCardLevel(LPCWSTR lpszResponseCardLevel);
char* dpaymentssdk_tsysdetailrecord_getresponsecardlevel(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponsecardlevel(void* lpObj, const char* lpszResponseCardLevel);
QString GetResponseCardLevel();
int SetResponseCardLevel(QString qsResponseCardLevel);

Default Value

""

Remarks

This property contains a two-character code created by Visa during the authorization process. If the transaction being settled was authorized online, this property must contain the value returned in the authorization response. If the transaction is a credit or a force, this property should be left empty. Note that Card Level Results are only applicable to Visa cards.

Data Type

String

ResponseCode Property (TSYSDetailRecord Class)

Response code from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetResponseCode();
int SetResponseCode(const char* lpszResponseCode); Unicode (Windows) LPWSTR GetResponseCode();
INT SetResponseCode(LPCWSTR lpszResponseCode);
char* dpaymentssdk_tsysdetailrecord_getresponsecode(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setresponsecode(void* lpObj, const char* lpszResponseCode);
QString GetResponseCode();
int SetResponseCode(QString qsResponseCode);

Default Value

""

Remarks

This field contains a two character Response Code associated with the Authorization Code being settled. If the transaction being settled was authorized on-line, this field must contain the value returned in that authorization response. If the transaction is a credit or off-line approval, this field must be defaulted to spaces.

Data Type

String

SettlementAmount Property (TSYSDetailRecord Class)

The amount that the customer will be charged.

Syntax

ANSI (Cross Platform)
char* GetSettlementAmount();
int SetSettlementAmount(const char* lpszSettlementAmount); Unicode (Windows) LPWSTR GetSettlementAmount();
INT SetSettlementAmount(LPCWSTR lpszSettlementAmount);
char* dpaymentssdk_tsysdetailrecord_getsettlementamount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setsettlementamount(void* lpObj, const char* lpszSettlementAmount);
QString GetSettlementAmount();
int SetSettlementAmount(QString qsSettlementAmount);

Default Value

"0"

Remarks

This field contains the final settlement amount of the transaction. In most cases, this is the TransactionAmount from the original authorization request. However, you may settle a lesser amount (ie: Partial shipment or backordered stock). This field must always be greater than zero.

Note: If a transaction includes a Gratuity amount, the SettlementAmount must reflect the total of the AuthorizedAmount plus the Gratuity (this is only applicable to the itResturant IndustryType).

This amount is to be presented with an implied decimal point. For example, US $10.00 must be represented as 1000, and $0.10 is likewise simply 10. The allowable number of significant digits as well as the positioning of any implied decimal point is dictated by the designated CurrencyCode configuration setting. In the United States (default), the number of allowable significant digits is seven. Thus the maximum TransactionAmount is "9999999", yielding a US dollar amount of $99,999.99. This field may not contain a negative number.

Data Type

String

Substantiated Property (TSYSDetailRecord Class)

Used for HealthCare transactions. Identifies if the merchant verified the purchased items against an Inventory Information Approval System (IIAS).

Syntax

ANSI (Cross Platform)
int GetSubstantiated();
int SetSubstantiated(int iSubstantiated); Unicode (Windows) INT GetSubstantiated();
INT SetSubstantiated(INT iSubstantiated);
int dpaymentssdk_tsysdetailrecord_getsubstantiated(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setsubstantiated(void* lpObj, int iSubstantiated);
int GetSubstantiated();
int SetSubstantiated(int iSubstantiated);

Default Value

1

Remarks

This field should be identical to the value of the Substantiated property sent in the authorization via the TSYSHealthCare class. This field is only sent for MasterCard transactions.

Value Description
0 Merchant terminal did not verify the purchased items against an IIAS
1 Merchant terminal verified the purchased items against an IIAS
2 Merchant claims exemption from IIAS based on the 90 percent rule

Data Type

Integer

TotalAuthorizedAmount Property (TSYSDetailRecord Class)

Sum total of all the original authorization and all subsequent incremental authorizations.

Syntax

ANSI (Cross Platform)
char* GetTotalAuthorizedAmount();
int SetTotalAuthorizedAmount(const char* lpszTotalAuthorizedAmount); Unicode (Windows) LPWSTR GetTotalAuthorizedAmount();
INT SetTotalAuthorizedAmount(LPCWSTR lpszTotalAuthorizedAmount);
char* dpaymentssdk_tsysdetailrecord_gettotalauthorizedamount(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settotalauthorizedamount(void* lpObj, const char* lpszTotalAuthorizedAmount);
QString GetTotalAuthorizedAmount();
int SetTotalAuthorizedAmount(QString qsTotalAuthorizedAmount);

Default Value

""

Remarks

When supporting incremental authorizations, you must manually keep track of the sum of all authorizations made for a single transaction (all based on the same transaction id). This total must be added to the TotalAuthorizedAmount property of the detail record associated with the first authorization. Only one detail record should be submitted no matter how many incremental authorizations are attached to the transaction.

Data Type

String

TransactionDate Property (TSYSDetailRecord Class)

Local Transaction Date from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetTransactionDate();
int SetTransactionDate(const char* lpszTransactionDate); Unicode (Windows) LPWSTR GetTransactionDate();
INT SetTransactionDate(LPCWSTR lpszTransactionDate);
char* dpaymentssdk_tsysdetailrecord_gettransactiondate(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settransactiondate(void* lpObj, const char* lpszTransactionDate);
QString GetTransactionDate();
int SetTransactionDate(QString qsTransactionDate);

Default Value

"010101"

Remarks

This six digit field contains a local transaction date associated with the transaction being settled. If the transaction was authorized on-line, this field must contain the value returned in the original authorization response message. If the transaction was processed off-line, this field must contain a Point of Sale (POS) device generated date. This field must appear in MMDDYY format.

For the Hotel IndustryType, this property must contain the date the customer checked out of the hotel. For the Auto Rental IndustryType it should contain the date that the vehicle was returned.

Data Type

String

TransactionId Property (TSYSDetailRecord Class)

Transaction Identifier from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetTransactionId();
int SetTransactionId(const char* lpszTransactionId); Unicode (Windows) LPWSTR GetTransactionId();
INT SetTransactionId(LPCWSTR lpszTransactionId);
char* dpaymentssdk_tsysdetailrecord_gettransactionid(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settransactionid(void* lpObj, const char* lpszTransactionId);
QString GetTransactionId();
int SetTransactionId(QString qsTransactionId);

Default Value

"000000000000000"

Remarks

This 15-character field contains a Transaction Identifier associated with the transaction being settled. If the transaction was authorized on-line, this field must contain the value (if returned) from the original authorization response message. If a value was not returned in the authorization response or the transaction was processed off-line, this field must be defaulted to zeros.

Data Type

String

TransactionNumber Property (TSYSDetailRecord Class)

Transaction Number from the original authorization request.

Syntax

ANSI (Cross Platform)
int GetTransactionNumber();
int SetTransactionNumber(int iTransactionNumber); Unicode (Windows) INT GetTransactionNumber();
INT SetTransactionNumber(INT iTransactionNumber);
int dpaymentssdk_tsysdetailrecord_gettransactionnumber(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settransactionnumber(void* lpObj, int iTransactionNumber);
int GetTransactionNumber();
int SetTransactionNumber(int iTransactionNumber);

Default Value

0

Remarks

This field should contain the TransactionNumber from the original authorization request. This value must be in the range "0001" to "9999". "0000" is an invalid transaction number.

Data Type

Integer

TransactionTime Property (TSYSDetailRecord Class)

Local transaction time from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetTransactionTime();
int SetTransactionTime(const char* lpszTransactionTime); Unicode (Windows) LPWSTR GetTransactionTime();
INT SetTransactionTime(LPCWSTR lpszTransactionTime);
char* dpaymentssdk_tsysdetailrecord_gettransactiontime(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settransactiontime(void* lpObj, const char* lpszTransactionTime);
QString GetTransactionTime();
int SetTransactionTime(QString qsTransactionTime);

Default Value

"000000"

Remarks

This six digit field contains a local transaction time associated with the transaction being settled. If the transaction was authorized on-line, this field must contain the value returned in the original authorization response message. If the transaction was processed off-line, this field must contain a Point of Sale (POS) device generated time. This field must appear in HHMMSS format.

Data Type

String

TransactionType Property (TSYSDetailRecord Class)

Indicates transaction type for this detail record.

Syntax

ANSI (Cross Platform)
int GetTransactionType();
int SetTransactionType(int iTransactionType); Unicode (Windows) INT GetTransactionType();
INT SetTransactionType(INT iTransactionType);

Possible Values

DTT_CARD_NOT_PRESENT(0), 
DTT_CARD_PRESENT(1),
DTT_OFF_LINE_CREDIT(2),
DTT_FORCE_CARD_NOT_PRESENT(3),
DTT_FORCE_CARD_PRESENT(4),
DTT_DEBIT_PURCHASE(5),
DTT_DEBIT_REFUND(6),
DTT_FOOD_STAMP_PURCHASE(8),
DTT_FOOD_STAMP_RETURN(9),
DTT_FOOD_STAMP_VOUCHER(10),
DTT_CASH_BENEFIT_WITHDRAWAL(12),
DTT_CASH_BENEFIT_PURCHASE(13),
DTT_ACHPURCHASE(30),
DTT_ACHRETURN(31)
int dpaymentssdk_tsysdetailrecord_gettransactiontype(void* lpObj);
int dpaymentssdk_tsysdetailrecord_settransactiontype(void* lpObj, int iTransactionType);
int GetTransactionType();
int SetTransactionType(int iTransactionType);

Default Value

0

Remarks

This property indicates the type of transaction that was originally authorized. The following table explains the Transaction Types in detail:

dttCardNotPresent (0)This indicates a transaction where no physical card was present. Typically this transaction type is used exclusively for eCommerce or Direct Marketing IndustryType, where instead of a track data, AVS data is sent to verify cardholder identity. However, Retail merchants may also use the dttCardNotPresent transaction type from time to time.
dttCardPresent (1)This indicates a card-present transaction type. The credit card was swiped through a card reader, and Track1 or Track2 data was sent to the processor. This is typical of a retail environment.
dttOffLineCredit (2)This transaction type is used to credit money back to a cardholder's account. An Offline Credit is not based on a previous transaction, and you may credit any card for any amount without restriction. Simply set the CardNumber to the customer's card number, and then the AuthorizedAmount to "0" and the SettlementAmount to the amount you wish to refund. No track data or AVS data is sent in an offline credit transaction.
dttForceCardNotPresent(3)This transaction type is used to force a settlement without a previous authorization. This is generally used when an authorization response indicates that the merchant should call the cardholder's bank to verify the funds transfer. The merchant will then be given an authorization code over the phone, with which to settle the transaction.
dttForceCardPresent(4)Same as above, but for retail (card-present) environments.
dttDebitPurchase (5)This transaction type is used for debit card sales authorized via the TSYSDebit class.
dttDebitRefund (6)This transaction type is used for debit card refund transactions authorized via the TSYSDebit class.
dttFoodStampPurchase (8)This transaction type is used for EBT card Food Stamp purchases authorized via the TSYSBenefit class.
dttFoodStampReturn (9)This transaction type is used for EBT card Food Stamp returns authorized via the TSYSBenefit class.
dttFoodStampVoucher (10) This transaction type is used for EBT card Food Stamp vouchers authorized via the TSYSBenefit class.
dttCashBenefitWithdrawal (12)This transaction type is used for EBT card Cash Benefit withdrawals authorized via the TSYSBenefit class.
dttCashBenefitPurchase (13)This transaction type is used for EBT card Cash Benefit purchases authorized via the TSYSBenefit class.
dttACHPurchase (30)This transaction type is used for ACH Purchase transactions.
dttACHReturn (31)This transaction type is used for ACH Return transactions.

Data Type

Integer

ValidationCode Property (TSYSDetailRecord Class)

Validation Code from the original authorization response.

Syntax

ANSI (Cross Platform)
char* GetValidationCode();
int SetValidationCode(const char* lpszValidationCode); Unicode (Windows) LPWSTR GetValidationCode();
INT SetValidationCode(LPCWSTR lpszValidationCode);
char* dpaymentssdk_tsysdetailrecord_getvalidationcode(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setvalidationcode(void* lpObj, const char* lpszValidationCode);
QString GetValidationCode();
int SetValidationCode(QString qsValidationCode);

Default Value

""

Remarks

This field contains a four character Transaction Identifier associated with the transaction being settled. If the transaction was authorized on-line, this field must contain the value (if returned) from the original authorization response message. If a value was not returned in the authorization response or the transaction was processed off-line, this field must be empty.

Data Type

String

VoidTransaction Property (TSYSDetailRecord Class)

Indicates whether this transaction has been voided.

Syntax

ANSI (Cross Platform)
int GetVoidTransaction();
int SetVoidTransaction(int bVoidTransaction); Unicode (Windows) BOOL GetVoidTransaction();
INT SetVoidTransaction(BOOL bVoidTransaction);
int dpaymentssdk_tsysdetailrecord_getvoidtransaction(void* lpObj);
int dpaymentssdk_tsysdetailrecord_setvoidtransaction(void* lpObj, int bVoidTransaction);
bool GetVoidTransaction();
int SetVoidTransaction(bool bVoidTransaction);

Default Value

FALSE

Remarks

If you wish to void a previously authorized transaction, Vital/TSYS recommends that you should exclude it from the settlement. However, you may also send the detail record with the VoidTransaction indicator set to True. For example:

DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) DetailRecord.VoidTransaction = True TSYSSettle.DetailRecordCount = 1 TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()

Data Type

Boolean

Config Method (TSYSDetailRecord Class)

Sets or retrieves a configuration setting.

Syntax

ANSI (Cross Platform)
char* Config(const char* lpszConfigurationString);

Unicode (Windows)
LPWSTR Config(LPCWSTR lpszConfigurationString);
char* dpaymentssdk_tsysdetailrecord_config(void* lpObj, const char* lpszConfigurationString);
QString Config(const QString& qsConfigurationString);

Remarks

Config is a generic method available in every class. It is used to set and retrieve configuration settings for the class.

These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).

To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.

Error Handling (C++)

This method returns a String value; after it returns, call the GetLastErrorCode() method to obtain its result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

GetDetailAggregate Method (TSYSDetailRecord Class)

Returns an aggregate containing details of this transaction, which is then used for settlement.

Syntax

ANSI (Cross Platform)
char* GetDetailAggregate();

Unicode (Windows)
LPWSTR GetDetailAggregate();
char* dpaymentssdk_tsysdetailrecord_getdetailaggregate(void* lpObj);
QString GetDetailAggregate();

Remarks

This method returns an aggregate containing all of the required data to send a transaction to settlement. This aggregate must be passed to the TSYSSettle class's DetailAggregate array property in order to settle the transaction. If you wish to view or change any part of the aggregate (such as adding a gratuity or additional info for an Installment payment), you may use the TSYSDetailRecord class to do so.

Note: This method may only be called after a successful authorization. If the authorization was not successful the method fails with an error.

An example of how this method is used is shown below:

TSYSRetail.Authorize() TSYSSettle.DetailRecordCount = 1 TSYSSettle.DetailAggregate[0] = TSYSRetail.GetDetailAggregate()

Error Handling (C++)

This method returns a String value; after it returns, call the GetLastErrorCode() method to obtain its result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

ParseAggregate Method (TSYSDetailRecord Class)

Parses the aggregate returned from another class's GetDetailAggregate method.

Syntax

ANSI (Cross Platform)
int ParseAggregate(const char* lpszAggregate);

Unicode (Windows)
INT ParseAggregate(LPCWSTR lpszAggregate);
int dpaymentssdk_tsysdetailrecord_parseaggregate(void* lpObj, const char* lpszAggregate);
int ParseAggregate(const QString& qsAggregate);

Remarks

This method takes the XML aggregate returned from the TSYSRetail or TSYSECommerce class, parses it, and then fills all the properties of the DetailRecord class. While normally you can pass the results of the GetDetailAggregate method call directly to the TSYSSettle class, sometimes it is necessary to adjust the contents of the XML aggregate first.

For example, to add a gratuity to a charge:

DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) DetailRecord.Gratuity = "500" DetailRecord.SettlementAmount = DetailRecord.AuthorizedAmount + DetailRecord.Gratuity TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

Reset Method (TSYSDetailRecord Class)

Clears all properties to their default values.

Syntax

ANSI (Cross Platform)
int Reset();

Unicode (Windows)
INT Reset();
int dpaymentssdk_tsysdetailrecord_reset(void* lpObj);
int Reset();

Remarks

This method clears all properties to their default values.

Error Handling (C++)

This method returns a result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. If an error occurs, the GetLastError() method can be called to retrieve the associated error message. (Note: This method's result code can also be obtained by calling the GetLastErrorCode() method after it returns.)

Error Event (TSYSDetailRecord Class)

Information about errors during data delivery.

Syntax

ANSI (Cross Platform)
virtual int FireError(TSYSDetailRecordErrorEventParams *e);
typedef struct {
int ErrorCode;
const char *Description; int reserved; } TSYSDetailRecordErrorEventParams;
Unicode (Windows) virtual INT FireError(TSYSDetailRecordErrorEventParams *e);
typedef struct {
INT ErrorCode;
LPCWSTR Description; INT reserved; } TSYSDetailRecordErrorEventParams;
#define EID_TSYSDETAILRECORD_ERROR 1

virtual INT DPAYMENTSSDK_CALL FireError(INT &iErrorCode, LPSTR &lpszDescription);
class TSYSDetailRecordErrorEventParams {
public:
  int ErrorCode();

  const QString &Description();

  int EventRetVal();
  void SetEventRetVal(int iRetVal);
};
// To handle, connect one or more slots to this signal. void Error(TSYSDetailRecordErrorEventParams *e);
// Or, subclass TSYSDetailRecord and override this emitter function. virtual int FireError(TSYSDetailRecordErrorEventParams *e) {...}

Remarks

The Error event is fired in case of exceptional conditions during message processing.

ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.

Config Settings (TSYSDetailRecord Class)

The class accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the class, access to these internal properties is provided through the Config method.

DetailRecord Config Settings

AccountDataSource:   Identifies the source of the customer card data entered.

This field is sent in the request based on the CardEntryDataSource value specified by default. However that value can be overridden by setting this config.

Valid values are:

Code Description
A Bar code/Payment code read
D Full magnetic stripe read and transmit, Track two
G Chip Card Read Data (CCPS)
H Full magnetic stripe read and transmit, Track one
P Manually keyed, Chip Card read capable terminal
Q Proximity payment device using track data rules (transmit only Track two to Sierra)
R Proximity payment device using EMV-Chip data rules
S Full magnetic stripe read (Track two only), Chip Card capable terminal
T Manually keyed, Track two capable
X Manually keyed, Track one capable
@ Manually keyed, terminal has no card reading capability
W Chip Card transaction processed as magnetic stripe due to the terminal application not having any EMV applications in common with the chip card.
Z Chip Card transaction processed as magnetic stripe from a chip capable terminal, due to card or terminal failure.

ACHCheckingSavingsIndicator:   Specifies the originating account type.

Value Description
C Checking
S Savings
G General Ledger. (Valid only when SEC Code is CCD)
ACHCheckNumber:   The individual check number.

This field contains the individual check number. This field must be present for transactions with an SEC Code of POP. Otherwise, it must be space-filled.

ACHCheckReversalIndicator:   ACH Check Reversal Indicator.

This field indicates a check reversal transaction.

Value Description
Y The transaction is a check reversal
N The transaction is not a check reversal
ACHIndividualName:   The individual or receiving company name.

This field contains the individual or receiving company name.

ACHIndividualReferenceID:   Merchant and customer information.

This field may contain meaningful merchant and customer information.

ACHPaymentTypeIndicator:   ACH Payment Type Indicator.

This field indicates the transaction payment type. The following are valid values

Value Description
Spaces Used as a default for Non-WEB Transactions
R Recurring
S Single
A value of R or S is required when the ACH SEC Code is WEB.
ACHPrenoteIndicator:   ACH Prenote Indicator.

This field is used to aid in determination of the proper ACH Transaction Code.

Value Description
0 Not Prenote
1 Prenote
ACHPresentmentInformation:   ACH Presentment Information.

This is submitted as a value of zero.

ACHReturnedCheckIndicator:   ACH Returned Check Indicator.

This field indicates a returned check transaction.

Value Description
Y The transaction is a returned check
N The transaction is not a returned check
ACHRoutingNumber:   The receiving Depository Financial Institution (DFI) identification/routing number and check digit.

This field contains the receiving Depository Financial Institution (DFI) identification/routing number and check digit.

ACHSECCode:   The Standard Entry Class (SEC) Code is used to determine the ACH Rules that apply to the transaction.

Valid values are:

Value Description
CCD Cash Concentration or Disbursement - Can be either a credit or debit application where funds are either distributed or consolidated between corporate entities.
POP Point of Sale Entry - Point of sale debit applications non-shared (POS) environment. These transactions are most often initiated by the consumer via a plastic access card.
PPD Prearranged Payment and Deposits - Used to credit or debit a consumer account. Popularly used for payroll direct deposits and preauthorized bill payments.
TEL Telephone-Initiated Entry - Used for the origination of a single entry debit transaction to a consumer's account pursuant to a verbal authorization obtained from the consumer via the telephone.
WEB Internet (Web)-Initiated Entry - Used for the origination of debit entries (either Single or Recurring Entry) to a consumer's account pursuant to an authorization that is obtained from the Receiver via the Internet.
ACHTelephoneNumber:   The merchant / business contact phone number, REVERSAL, or REDEPCHECK.

This field contains one of three options:

1. The merchant / business contact phone number for customer inquiry
2. REVERSAL indicates a reversal
3. REDEPCHECK indicates a returned check
ACHTerminalCity:   The city, town, village, or township in which the merchant's terminal is located.

This field must be non-blank if the SEC Code is POP.

ACHTerminalState:   The state location for the merchant's terminal.

This field must be non-blank if the SEC Code is POP.

DepartureDate:   The passenger's departure date.

This configuration setting is used to set the passenger's departure date. The format of the date is: MMDDYY. For example: 062117

DetailExtension:   Detail Extension Optional Data Group.

This configuration setting takes a semi-colon separated list of name-value pairs. The available field names and their applicable values can be found below. The fields can be set in any order and not all fields are required to be set.

CodeExample: DetailRecord.Config("DetailExtension=PTI=C02;TTT=02;TMI=01");

AAV (32 A/N) (Accountholder Authentication Value)

AAV is part of Mastercard's SecureCode-specific implementation of UCAF related to issuer authentication. This is a security method designed to authenticate cardholders when they pay online.

ADT (1 A/N) (Acceptance Device Type)

Identifies the type of device used to accept mobile Point of Sale (mPOS) transactions. Valid values are:

Value Description
0 Dedicated mPOS Terminal with PCI compliant dongle (with or without key pad)
1 Off the Shelf Mobile Device
2 Dongle with software-based application that supports PIN entry on glass
3 Off the Shelf Mobile Device with software-based application that supports PIN entry on glass
M Mobile POS Add-On Hardware
T Tap on Mobile No Add-On Hardware

ARS (Account Range Status)

Value Description
R Regulated.
N Non-Regulated.

ATS (Association Timestamp)

This field can be used to set the timestamp data provided by the association.

BAI (2 A/N) (Business Application Identifier)

BAI identifies industry-specific business scenarios.

CMI (4 A/N) (CIT/MIT Indicator)

CMI identifies whether the transaction was initiated by the Cardholder or the Merchant (Mastercard only)

DEI (5 A/N) (Digital Entity Identifier)

DEI is a unique identifier assigned by Visa at the time of authorization to identify transactions that originate from Visa Checkout.

DTI (36 A/N) (Directory Server Transaction ID)

DTI is generated by the EMV 3DS Mastercard Directory Server during the authentication transaction and passed back to the merchant with the authentication results. This field allows the merchant to pass the Directory Server Transaction ID during authorization in order to link authentication and authorization data.

ESI (3 A/N) (e-Commerce Security UCAF Collection Indicator)

If returned in the Mastercard's authorization response, the component will include this field automatically in the settlement.

FRI (3 A/N) (Foreign Retailer Indicator.) This 3-character field is used by marketplaces to uniquely identify domestic transactions in which the retailer is in a different country than the marketplace. Visa classifies an entity as a marketplace if it handles payments on behalf of retailers through an online marketplace that brings together multiple buyers and retailers. This field must be sent when the retailer is foreign.

Valid values are:

Code Description
(Space) (default) Space indicate the retailer is not foreign.
F This value indicates the retailer is located in a different country than the marketplace.
Note: This field will be automatically left-justified, space-filled to 3 characters.

IIA (MC IIAS Indicator)

0 Merchant terminal did not verify the purchased items against an IIAS
1 Merchant terminal did verify the purchased items against an IIAS
2 Merchant claims exemption from IIAS based on the 90 percent rule

ISO (ISO ID)

This 11-digit field, assigned by MasterCard, is assigned during registration via MasterCard Connect for a Service Provider designated as an "Independent Sales Organization". This value must be provided on all MasterCard transactions where the merchant has a relationship with an ISO.

MAR (12 A/N) (Merchant Assigned Reference)

MAR is a value assigned by the merchant to reference the transaction. This is not a settlement field, but can be used for merchant or client reporting purposes.

MCC (4 NUM) (Merchant Category Code)

MCC is a value assigned by the merchant's bank or processor to identify a merchant's industry classification. This field entry must contain the same value submitted in the original authorization request.

MCI (1 A/N) (Multi-Clearing Indicator)

MCI is used in situations where multiple clearing records will be sent with a single authorization. The Multi-Clearing Indicator can be sent for any card brand but will only be used for settlement by Mastercard.

Value Description
M Previously approved authorization-partial amount, multi-clearing
F Previously approved authorization-partial amount, final clearing

MDE (Mobile Device Type) This field is required for all MasterCard PayPass (contactless) transactions. Valid values are:

Value Description
00 Card (default)
01 Mobile Network Operator (MNO) controlled removable secure element (SIM or UICC) personalized for use with a mobile phone or smartphone
02 Key Fob
03 Watch using a contactless chip or a fixed (non-removable) secure element not controlled by the MNO
04 Mobile Tag
05 Wristband
06 Mobile Phone Case or Sleeve
07 Mobile Phone or Smartphone with a fixed (non-removable) secure element controlled by the MNO (such as CDMA)
08 Removable secure element not controlled by the MNO, for example, memory card personalized for use with a mobile phone or smartphone
09 Mobile Phone or Smartphone with a fixed (non-removable) secure element not controlled by the MNO
10 MNO controlled removable secure element (SIM or UICC) personalized for use with a tablet or e-book
11 Tablet or E-Book with a fixed (non-removable) secure element controlled by the MNO
12 Removable secure element not controlled by the MNO (such as memory card personalized for use with a tablet or e-book)
13 Tablet or E-Book with fixed (nonremovable) secure element not controlled by the MNO
14 Mobile Phone or Smartphone with a payment application running in a host processor
15 Tablet or E-Book with a payment application running in a host processor
16 Mobile Phone or Smartphone with a payment application running in the TEE of a host processor
17 Tablet or E-Book with a payment application running in the TEE of a host processor
18 Watch with a payment application running in the TEE of a host processor
19 Watch with a payment application running in a host processor
20 Card
21 Phone (i.e. Mobile phone)
22 Tablet/e-reader (i.e. Tablet computer or e-reader)
23 Watch/Wristband (i.e. Watch or wristband, including a fitness band, smart strap, disposable band, watch add-on, and security/ID band)
24 Sticker
25 PC (i.e. PC or laptop)
26 Device Peripheral (i.e. Mobile phone case or sleeve)
27 Tag (i.e. Key fob or mobile tag)
28 Jewelry (i.e. Ring, bracelet, necklace, and cuff links)
29 Fashion Accessory (i.e. Handbag, bag charm, and glasses)
30 Garment (i.e. Dress)
31 Domestic Appliance (i.e. Refrigerator, washing machine)
32 Vehicle (i.e. Vehicle, including vehicle attached devices)
33 Media/Gaming Device (i.e. Media or gaming device, including a set top box, media player, and television)
34-99 These values reserved for future form factors. Any value in this range may occur within form factors and transaction data without prior notice.

MDO (Domain Server)

0 No domain.
1 Issuer domain.
2 Acquirer domain.

OA (Optional Amount)

This field can be used to set the Optional Amount.

OAI (Optional Amount Identifier)

0 Not Used
1 Local Sales Tax Amount
2 Tax Exempt

PAR (35 A/N) (Payment Account Reference)

PAR is a value assigned by the BIN Controller, which is defined as either an issuer or card brand. This field is associated directly with the cardholder's account. The PAR is considered a non-financial value that cannot be used to initiate a financial transaction. This value is valid for Visa, Mastercard and Discover.

Note: PAR may originate from the EMV chip card.

PEI (1 A/N) (POS Environment Indicator)

This field provides additional information about Visa transactions. Valid values are:

Value Description
C Card On File
I Installment Payment
R Recurring Payment

PFI (Payment Facilitator ID)

This 11-digit field, assigned by Mastercard or Visa, is assigned during registration for the Service Provider designated as a Payment Facilitator or Marketplace. This value must be present on all Mastercard or Visa transactions that originate from a Payment Facilitator/Marketplace.

PGP (1 A/N) (Program Protocol)

PGP must be provided by the merchant if they are participating in Mastercard Identity Check and have previously authenticated using the Mastercard Identity Check or SecureCode program. It identifies the type of 3D-Secure program.

Value Description
1 3D Secure Version 1.0 [3DS 1.0]
2 EMV 3-D Secure [3DS 2.0]

PON (Purchase Order Number)

This field can be used to set a 16, 17, or 25-character Purchase Order Number or Customer Reference Identifier supplied by the Visa or MasterCard Purchasing Card cardholder.

PRI (35 A/N) (PAN Reference Identifier)

PRI is assigned by Discover at the time of token provisioning and is associated with a specific mobile wallet.

PTI (Payment Transaction Indicator)

C03 rePower Load Value
C04 Gaming Re-Pay
C06 Payment of Credit Card Balance with Cash or Check
F07 General Person-to-Person Transfer
F08 Person-to-Person Transfer to Card Account
F52 General Transfer to Own Account
F53 Agent Cash Out
F54 Payment of Own Credit Card Bill
F55 Business Disbursement
F61 Transfer to Own Staged Digital Wallet Account
F64 Transfer to Own Debit or Prepaid Card Account
F65 General Business-to-Business Transfer
P10 Purchase Repayment

SID (Merchant Seller ID)

A seller/vendor code that uniquely identifies an aggregator's specific seller/vendor

SMI (Sub-Merchant ID)

This 15-digit field, assigned by the Payment Facilitator, must be provided on all Mastercard or Visa transactions that originate from a Payment Facilitator.

SQI (Spend Qualified Indicator)

Value Description
B Base spend assessment threshold has been met.
N Spend qualification threshold has not been met.
Q Spend qualification threshold has been met.
[SP] (' ' - Space)Spend qualification does not apply.

TAA (12 NUM) (Total Authorized Amount)

This 12-character numeric field contains the total authorized amount of the transaction being settled. For transactions authorized online, this field contains the sum of the original authorization amount and all subsequent incremental authorization amounts, less any authorization reversal amount. If Incremental Authorization and Authorization Reversal transaction are not being supported, this field will be identical to the Settlement Amount. The field entry must be right justified and zero-filled. For transactions processed offline, this field must be defaulted to zeros.

TAL (Token Assurance Level)

Defined by the token service provider, this Visa or MasterCard value indicates the assigned confidence level of the token-to-PAN/cardholder binding.

TFA (Transaction Fee Amount with Indicator)

C The surcharge indicates a credit to the consumer account.
D The surcharge indicates a debit from the consumer account.

Transaction fee amount is used in credit transactions to carry the acquirer-assessed surcharge for informational purposes only. This field can be zero length or nine alphanumeric characters in length. The format of the nine characters is "annnnnnnn" where "a" is either "D" for debit or "C" for credit and where "nnnnnnnn" is the numeric fee amount with the decimal implied.

Example: "D00000150" is a $1.50 transaction fee amount debited to the cardholder's account.

TIC (Transaction Integrity Class)

If returned in the Mastercard's authorization response, the component will include this field automatically in the settlement.

TMI (Transportation Mode Indicator)

00 Unknown
01 Urban Bus
02 Interurban Bus
03 Light Train Mass Transit (Underground Metro, LTR)
04 Train
05 Communter Train
06 Water Borne Vehicle
07 Toll
08 Parking
09 Taxi
10 High Speed Train
11 Rural Bus
12 Express Commuter Train
13 Para Transit
14 Self Drive Vehicle
15 Coach
16 Locomotive
17 Powered Motor Vehicle
18 Trailer
19 Regional Train
20 Inter City
21 Funicular Trailer
22 Cable Car

TRI (Token Requestor ID)

This 11-character alphanumeric field contains the value that uniquely identifies the pairing of token requestor with the token domain. This value is sent in capture to identify the requestor to the card brand.

TSI (Transaction Status Indicator)

The tables below provide the valid values for each card brand.

Valid value for Visa is:

I One or more incremental authorizations were performed.

Valid values for Mastercard are:

Value Description
0 Normal request (original presentment)
1 Deferred Authorizations
2 SecureCode Phone Order
3 ATM Installment Inquiry
4 Preauthorized request
5 Time Based Payment Authorization Request-Brazil domestic transactions
6 ATC Update
8 Account Status Inquiry Service (ASI)
9 Tokenization Request/Notification

Valid values for Discover are:

Value Description
0 Normal request (original presentment)
4 Preauthorized request
A Re-authorize for Full Amount
D Delayed Card Sale
E Resubmission of Card Sale
G Transit Aggregated Transaction
I Incremental Authorization
N No-Show Charge
P Partial Shipment
R Recurring Payment
S Merchant Installment Payment
T Third Party Installment Payment
U Unscheduled Payment
V Issuer Installment Payment

Note: For Purchase Return Authorization Requests: Value must be 0 (Mastercard and Discover).

TTC (Tax Treatment Code)

Value Description
0 NLL - Net prices with tax calculated at the line item level.
1 NIL - Net prices with tax calculated at the invoice level
2 GLL - Gross prices given with tax information provided at the line item level.
3 GIL - Gross prices given with tax information provided at the invoice level.
4 NON - No tax applies
[SP] (' ' - Space)Field not used.

TTT (Transit Transaction Type Indicator)

01 Prefunded
02 Real-time Authorized
03 Post-Authorized Aggregated
04 Authorized Aggregated Split Clearing
05 Other
07 Debt Recovery

WID (MasterCard Wallet Identifier)

This is a MasterCard value that is generated by the MasterPass online platform. This value is passed to the merchant at the time of consumer checkout for e-commerce transactions, and is included in the authorization request.

EMVAppCryptogram:   The clearing cryptogram used to validate transaction processing in the event of a dispute.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVAppInterchangeProfile:   A series of indicators that reflect the specific functions supported by the chip card account.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVAppTranCounter:   The count of the transactions performed within the application.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVCardSeqNum:   The number assigned to a specific card when two or more cards are associated with a single account number.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVCryptogramAmount:   Contains the transaction amount used by the chip when calculating the last cryptogram.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVCryptogramInfoData:   The type of cryptogram and the actions to be performed by the terminal.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVCurrencyCode:   The currency code of the transaction.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVCVMResults:   The results of the last Cardholder Verification Method (CVM) performed.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVData:   The EMV Data returned from a Pin Pad after reading an EMV card.

This configuration setting takes the entire TLV (tag-length-value) response received from a Pin Pad after reading an EMV card. When setting this field, any EMV tags that are not specified within the TSYS specifications, to include in the request, will be removed from the input. The component will send this data in an authorization request. Note that when performing an EMV transaction, POSDataCode is required.

EMVDedicatedFileName:   Identifies the name of the Dedicated File as described in ISO/IEC 7816-4. This field is required for Mastercard and Discover (including Diners, JCB, and CUP).

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVFormFactorID:   This indicators related to the attributes of the cardholder's device and the technology used for the communication between the cardholder's device and the acquiring device.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVIssuerAppData:   Application data for transmission to the issuer in an online transaction.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVIssuerAuthData:   Data sent by the Issuer to the Chip Card for the Chip Card to validate the authenticity of the Issuer.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVIssuerScriptResults:   The update command that the issuer sends in the authorization response to the card during online processing.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVTerminalCapabilities:   Indicates the card input data, the Cardholder Verification Method (CVM), and the security capabilities that are supported by the terminal.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVTranDate:   The local date at the terminal on which the transaction was authorized.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config. The value must be in YYMMDD format.

EMVTranType:   The Transaction Type used by the card to calculate the cryptogram.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVUnpredictableNum:   The number used in the generation of the cryptogram.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

EMVVerificationResult:   The indicators representing the results of offline and online processing, recorded by the terminal.

This value is returned by the EMV Pin Pad/Terminal device and is sent as part of the EMVData in the authorization. The component parses the EMVData to obtain and populate this config.

HeartlandDeviceId:   Specifies a device ID to uniquely identify each terminal (card data entry device).

The specified value must be 4 characters or less. Note that this value is required to comply with MasterCard's Authorization Data Accuracy Initiative.

HeartlandEncryptionMode:   Specifies the encryption mode to use in Heartland transactions.

This field allows you to specify the Heartland E3 encryption mode used when processing Heartland transactions. The available values are (descriptions describe the data that will be encrypted):

0No Encryption (default)
1Merchant ID and Card Data (reserved for future use)
2Merchant ID, Card Data, and Card Security Code (reserved for future use)
3Card Data Only

Note you will also need to set Processor to 1 (Heartland) and HeartlandKeyBlock if you wish to process Heartland E3 transactions.

IsBillPayment:   Indicates that the transaction is a bill payment transaction.

This field, when set to 'True', indicates that the transaction is a Bill Payment transaction and will be processed as such. When set to 'False' (default value) the transaction will be processed normally.

Leg1:   Used by Merchants that are in the airline industry to submit Leg 1 information for Passenger Transport transactions.

This configuration setting takes a semicolon (;) separated list of name-value pairs. The maximum number of travel legs per trip is 4. You must include information for at least the first leg of the trip (Leg 1).

There are four fields (Carrier, ServiceClass, StopOver and Destination) available for each leg, of which Destination is a required field. The list of available field names and their applicable values can be found below. The fields can be set in any order.

Code Example: TSYSDetailRecord.Config("Leg1=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX");

CarrierAirline Carrier Code for Leg 1 on ticket. Example: DL
ServiceClassOne-character value identifying the service class associated with Leg 1 on ticket. Example: C
StopOverOne-character value identifying whether a stop-over is permitted for Leg 1 on ticket. Possible values:
O Stop-over Allowed
X Stop-over Not Allowed
DestinationDestination Airport for Leg 1 of trip. Example for Los Angeles (CA): LAX. This is a required field for Visa Passenger Transport Transactions.

Leg2:   Used by Merchants that are in the airline industry to submit Leg 2 information for Passenger Transport transactions.

This configuration setting takes a semicolon (;) separated list of name-value pairs. The maximum number of travel legs per trip is 4. You must include information for at least the first leg of the trip (Leg 1).

There are four fields (Carrier, ServiceClass, StopOver and Destination) available for each leg, of which Destination is a required field. The list of available field names and their applicable values can be found below. The fields can be set in any order.

Code Example: TSYSDetailRecord.Config("Leg2=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX");

CarrierAirline Carrier Code for Leg 2 on ticket. Example: DL
ServiceClassOne-character value identifying the service class associated with Leg 2 on ticket. Example: C
StopOverOne-character value identifying whether a stop-over is permitted for Leg 2 on ticket. Possible values:
O Stop-over Allowed
X Stop-over Not Allowed
DestinationDestination Airport for Leg 2 of trip. Example for Los Angeles (CA): LAX. This is a required field for Visa Passenger Transport Transactions.

Leg3:   Used by Merchants that are in the airline industry to submit Leg 3 information for Passenger Transport transactions.

This configuration setting takes a semicolon (;) separated list of name-value pairs. The maximum number of travel legs per trip is 4. You must include information for at least the first leg of the trip (Leg 1).

There are four fields (Carrier, ServiceClass, StopOver and Destination) available for each leg, of which Destination is a required field. The list of available field names and their applicable values can be found below. The fields can be set in any order.

Code Example: TSYSDetailRecord.Config("Leg3=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX");

CarrierAirline Carrier Code for Leg 3 on ticket. Example: DL
ServiceClassOne-character value identifying the service class associated with Leg 3 on ticket. Example: C
StopOverOne-character value identifying whether a stop-over is permitted for Leg 3 on ticket. Possible values:
O Stop-over Allowed
X Stop-over Not Allowed
DestinationDestination Airport for Leg 3 of trip. Example for Los Angeles (CA): LAX. This is a required field for Visa Passenger Transport Transactions.

Leg4:   Used by Merchants that are in the airline industry to submit Leg 4 information for Passenger Transport transactions.

This configuration setting takes a semicolon (;) separated list of name-value pairs. The maximum number of travel legs per trip is 4. You must include information for at least the first leg of the trip (Leg 1).

There are four fields (Carrier, ServiceClass, StopOver and Destination) available for each leg, of which Destination is a required field. The list of available field names and their applicable values can be found below. The fields can be set in any order.

Code Example: TSYSDetailRecord.Config("Leg4=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX");

CarrierAirline Carrier Code for Leg 4 on ticket. Example: DL
ServiceClassOne-character value identifying the service class associated with Leg 4 on ticket. Example: C
StopOverOne-character value identifying whether a stop-over is permitted for Leg 4 on ticket. Possible values:
O Stop-over Allowed
X Stop-over Not Allowed
DestinationDestination Airport for Leg 4 of trip. Example for Los Angeles (CA): LAX. This is a required field for Visa Passenger Transport Transactions.

LocationDetailAddress:   Merchant's street address.

The maximum length is 38 characters (upper-case). This field is used to identify the merchant's street address where the transaction took place. If the address is more than 38 characters, use proper and meaningful abbreviation(s) when possible. Do not truncate.

For Mail Order, Phone Order, and Internet Industries, you may substitute the street address where the merchant's order processing facility is located, or the merchant's web address (URL) or e-mail address. URLs and e-mail addresses may be in lower case as appropriate.

LocationDetailCity:   Name of the city.

The maximum length, depending on the card brand, is 21 or 13 characters (upper-case). This field is used to identify the name of the city where the transaction took place. For Visa and Mastercard the maximum length is 13 characters while for Amex it's 21 characters. If the name is more than the maximum allowed, use proper and meaningful abbreviation(s) when possible. Do not truncate. Please refer to the latest "TSYS Sierra EIS-1081" documentation regarding this field's usage for Card Not Present (CNP) transactions and more.

LocationDetailCountry:   Country code.

The maximum length is 3 characters (upper-case). This field is used to identify the country code of the location where the transaction took place. For example, the country code for USA is "840."

LocationDetailName:   Merchant name.

The maximum length is 38 characters (upper-case). This field is used to identify the merchant name that appears on the storefront and/or customer receipts and statements. It is commonly referred to as the DBA (Doing Business As) Name. Use proper and meaningful abbreviation(s) when possible. Do not truncate.

LocationDetailPostal:   Postal code.

The maximum length is 15 characters (upper-case). This field is used to identify the postal / zip code of the location where the transaction took place.

LocationDetailRegion:   Region code that corresponds to the state, province, or other country subdivision.

The maximum length is 3 characters (upper-case). This field is used to identify the region code that corresponds to the state, province, or other country subdivision of the merchant location where the transaction took place. For example, the region code for California, USA is "CA". For non-US and Canada country codes, this field should be populated with spaces or "XX".

MerchantDescriptor:   Merchant Soft Descriptor information.

This is a free-text value field giving more information about the transaction. It can be used for merchant or client reporting purposes. Maximum length of this field is 25 characters.

MobileDeviceType:   Identifies the type of mobile device used by the cardholder to initiate the transaction.

This field is required for all MasterCard PayPass (contactless) transactions. Valid values are:

Value Description
00 Card (default)
01 Mobile Network Operator (MNO) controlled removable secure element (SIM or UICC) personalized for use with a mobile phone or smartphone
02 Key Fob
03 Watch using a contactless chip or a fixed (non-removable) secure element not controlled by the MNO
04 Mobile Tag
05 Wristband
06 Mobile Phone Case or Sleeve
07 Mobile Phone or Smartphone with a fixed (non-removable) secure element controlled by the MNO (such as CDMA)
08 Removable secure element not controlled by the MNO, for example, memory card personalized for use with a mobile phone or smartphone
09 Mobile Phone or Smartphone with a fixed (non-removable) secure element not controlled by the MNO
10 MNO controlled removable secure element (SIM or UICC) personalized for use with a tablet or e-book
11 Tablet or E-Book with a fixed (non-removable) secure element controlled by the MNO
12 Removable secure element not controlled by the MNO (such as memory card personalized for use with a tablet or e-book)
13 Tablet or E-Book with fixed (nonremovable) secure element not controlled by the MNO
14 Mobile Phone or Smartphone with a payment application running in a host processor
15 Tablet or E-Book with a payment application running in a host processor
16 Mobile Phone or Smartphone with a payment application running in the TEE of a host processor
17 Tablet or E-Book with a payment application running in the TEE of a host processor
18 Watch with a payment application running in the TEE of a host processor
19 Watch with a payment application running in a host processor
20 Card
21 Phone (i.e. Mobile phone)
22 Tablet/e-reader (i.e. Tablet computer or e-reader)
23 Watch/Wristband (i.e. Watch or wristband, including a fitness band, smart strap, disposable band, watch add-on, and security/ID band)
24 Sticker
25 PC (i.e. PC or laptop)
26 Device Peripheral (i.e. Mobile phone case or sleeve)
27 Tag (i.e. Key fob or mobile tag)
28 Jewelry (i.e. Ring, bracelet, necklace, and cuff links)
29 Fashion Accessory (i.e. Handbag, bag charm, and glasses)
30 Garment (i.e. Dress)
31 Domestic Appliance (i.e. Refrigerator, washing machine)
32 Vehicle (i.e. Vehicle, including vehicle attached devices)
33 Media/Gaming Device (i.e. Media or gaming device, including a set top box, media player, and television)
34-99 These values reserved for future form factors. Any value in this range may occur within form factors and transaction data without prior notice.
Origin:   First segment travel origination Airport.

This configuration setting is used to set the origination city of the trip. This is a three-character field denoting the airport code of the origination city. For example: LAX

Note: This is a required field for Passenger Transport Transactions.

PassengerName:   The passenger's name.

This configuration setting is used to set the name of the airline passenger. The maximum length is 20 characters. For example: "John Smith"

Note: This is a required field for Passenger Transport Transactions.

PFNameSubMerchantName:   Merchant name, Payment Facilitator Name and Sub-Merchant name, or Marketplace name.

The maximum length is 38 characters (upper-case). This field is used to identify one of those: Merchant (Location Detail) Name, Payment Facilitator Name, or Marketplace Name.

For Payment Facilitators, this field is a concatenation of two fields separated by an asterisk (*).

For Visa, Mastercard and Discover the name submitted should match what the PayFac registered with each brand and should follow the requirements defined by each brand.

For Visa Marketplaces, this field identifies the name of the Marketplace.

PFSubMerchantCity:   The Payment Facilitator Sub-Merchant City.

The maximum length is 21 characters (upper-case). This field is used for Mastercard and Visa to identify the name of the city where the Sub-Merchant is located. For Discover, identify the name of the city where the transaction occurred.

If the name is more than 21 characters, use proper and meaningful abbreviation(s) when possible. Do not truncate.

For Direct Marketing merchants and preferred customer/passenger transport and card not present transactions, this field must contain a phone number for merchant customer service in format XXX-XXXXXXX. The dash is required. If the phone is not available, use the website URL.

Note: For Marketplaces, this field is not required.

PFSubMerchantCountry:   The Payment Facilitator Sub-Merchant Country Code.

The maximum length is 3 characters (upper-case). This field is used to identify the country code of the location where the transaction took place. For example, the country code for USA is "840". It is used for Visa, Mastercard, and Discover transactions and must be included on all transactions that originate from a Payment Facilitator.

Note: For Marketplaces, this field is not required.

PFSubMerchantPostalCode:   The Payment Facilitator Sub-Merchant Postal Code.

The maximum length is 15 characters (upper-case). This field is used to identify the postal / zip code of the Sub-Merchant's location. It is used for Visa, Mastercard, and Discover transactions and must be included on all transactions that originate from a Payment Facilitator.

Note: For Marketplaces, this field is not required.

PFSubMerchantState:   The Payment Facilitator Sub-Merchant State/Province Code.

The maximum length is 3 characters (upper-case). This field is used to identify the region code that corresponds to the state, province, or other country subdivision of the merchant location where the transaction took place. For example, the region code for California, USA is "CA". For non-US and Canada country codes, this field should be populated with spaces or "XX". It is used for Visa, Mastercard, and Discover transactions and must be included on all transactions that originate from a Payment Facilitator.

Note: For Marketplaces, this field is not required.

POSDataCode:   Specifies the condition of the POS device used at the time of the transaction.

This configuration setting takes a semi-colon separated list of name-value pairs. The available field names and their applicable values can be found below. The fields can be set in any order and not all fields are required to be set (unless you wish to change their default values).

Code Example: TSYSRetail.Config("POSDataCode=CardholderAuthCap=1;CardInputMode=2;CardInputCap=2");

CardInputCap (Terminal card data input capability)

0 (default) Unspecified, data not available
1 Manual; no terminal; Voice auth/ARU
2 Magnetic stripe reader capability
3 Bar code/ Payment code
4 Optical character reader (OCR) capability, [MC, AX]
5 Integrated circuit card (ICC) capability and magnetic stripe reader
6 Key entry only capability; Mastercard recurring and installment transactions
A PAN auto-entry via contactless magnetic stripe
B Magnetic stripe reader and key entry capability
C Magnetic stripe reader, ICC, and key entry capability
D Magnetic stripe reader and ICC capability
E ICC entry capability
H ICC Reader and Contactless Capability; Magnetic stripe & manual entry implied
M PAN auto-entry via contactless chip
V Other capability, [MC]
X Reserved for private use

CardholderAuthCap (Terminal cardholder authentication capability)

0 No electronic authentication capability
1 PIN entry capability
2 Electronic signature analysis capability
3 mPOS software-based PIN entry capability
5 Electronic authentication capability is inoperative
6 Other
9 (default) Unspecified, data not available

CardCaptureCap (Terminal card-capture capability)

0 No capture capability
1 Card capture capability
9 (default) Unspecified, data not available

TerminalOpEnv (Terminal operating environment)

0 No terminal used; Voice auth/ARU; Mastercard recurring/installment transactions
1 On card acceptor premises; attended terminal
2 On card acceptor premises; unattended terminal
3 Off card acceptor premises; attended
4 Off card acceptor premises; unattended
5 On cardholder premises; unattended
6 Off cardholder premises; unattended
9 (default) Unspecified, data not available
M Off card acceptor premises; merchant mobile POS environment, including mPOS
P On card acceptor premises; merchant mobile POS environment, including mPOS
Q Off card acceptor premises; cardholder mobile environment, including home PC, mobile phone, PDA
R On card acceptor premises; cardholder mobile environment, including home PC, mobile phone, PDA
S Electronic delivery of product, [AX]
T Physical delivery of product, [AX]

CardholderPresent (Cardholder present data)

0 Cardholder present
1 Cardholder not present; unspecified reason
2 Cardholder not present; mail transaction
3 Cardholder not present; phone transaction
4 Cardholder not present; standing (recurring) transaction
5 Cardholder not present; electronic commerce
8 Cardholder not present; recurrent billing such as a loan or installment payment
R Recurring purchase transaction (original transaction was token-based with valid cryptogram)
T PayButton (Discover only)

CardPresent (Card present data)

0 Card not present
1 Card present
W Transponder, [AX]
X Contactless Chip Transactions, including AMEX Expresspay
Z Digital Wallet [AX]

CardInputMode (Card data input mode)

0 (default) Unspecified, data not available
1 Manual input; no terminal; Voice auth/ARU
2 Magnetic stripe reader input
3 Bar code/Payment code
6 Key entered input
7 Payment Credential stored on file. NOTE: This value is required for all Mastercard recurring transactions.
A PAN auto-entry via contactless magnetic stripe
B Magnetic stripe reader input; track data captured and passed unaltered
C Online Chip
F Offline Chip
M PAN auto-entry via contactless Chip Card (EMV Mode)
N Track data read and sent unaltered, chip capable terminal, chip data could not be read
P Empty candidate list fallback
R PAN Entry via electronic commerce, including remote chip
S Electronic commerce, no security, channel encrypted, or SET without cardholder certificate
V Manually entered with keyed CID, [AX, JCB Canada]
W Swiped transaction with keyed CID, [AX, JCB Canada]
X Reserved for private use
Y Reserved for private use
Z Contactless Interface Change Identifies when a Chip Card Transaction with a dualinterface card switches from a contactless to a contact chip card transaction [Discover]

NOTE: AMEX defines ApplePay with value C - Online Chip

CardholderAuthMethod (Cardholder authentication method)

0 Not authenticated
1 PIN
2 Electronic signature analysis
5 Manual signature verification
6 Other manual verification (such as a driver's license number)
9 (default) Unspecified, data not available
S Other systematic verification
T Electronic ticket environment, [AX]

CardholderAuthEntity (Cardholder authentication entity)

0 Not authenticated
1 ICC - Offline PIN
2 Card acceptance device (CAD)
3 Authorizing agent - Online PIN
4 Merchant/card acceptor - signature
5 Other
9 (default) Unspecified, data not available

CardOutputCap (Card data output capability)

0 (default) Unspecified, data not available
1 None
2 Magnetic stripe write
3 ICC
S Other

TerminalOutputCap (Terminal data output capability)

0 (default) Unspecified, data not available
1 None
2 Printing capability only
3 Display capability only
4 Printing and display capability

PINCaptureCap (PIN capture capability)

0 No PIN capture capability
1 (default) Unspecified, data not available
2 Reserved
3 Reserved
4 PIN capture capability four characters maximum
5 PIN capture capability five characters maximum
6 PIN capture capability six characters maximum
7 PIN capture capability seven characters maximum
8 PIN capture capability eight characters maximum
9 PIN capture capability nine characters maximum
A PIN capture capability 10 characters maximum
B PIN capture capability 11 characters maximum
C PIN capture capability 12 characters maximum

Note: Setting this configuration setting in TSYSDetailRecord class will not update the POSDataCode tag in the detail aggregate of the original transaction.

Processor:   Specifies the Processor you are connecting to.

This field allows you to specify the processor that you are connecting to (thus allowing the class to correctly generate the request and parse the response). The available values are:

0TSYS (default)
1Heartland

Note that when set, this property will set the Server and Port to the default values for the specified processor. Additionally, this config must be set prior to setting Card to ensure the card data is formatted correctly.

RequesterName:   Name of the requester.

This configuration setting can be used to set the name of the requester, if the card holder is not the person that ordered or purchased the product or service. This configuration setting applies to the Amex CAPN Corporate Purchasing Solution Extension.

RestrictedTicketIndicator:   Indicates if there are restrictions associated with this ticket.

This configuration setting is used to specify special restrictions associated with an issued airline ticket. The Default value is False. Possible values:

True Restricted Ticket/Non-Refundable
False No Restriction (default)
SpecialConditionIndicator:   Describes selected special conditions at the POS.

This field describes selected special conditions at the point of sale.

Valid values are:

Value Description
7 Purchase of Cryptocurrency. The transaction is related to purchase of cryptocurrency.
8 Quasi-Cash. The transaction is for a product or item that is representative of actual cash such as money orders, traveler's checks, foreign currency, lottery tickets, or casino gaming chips.
9 Existing Debt Indicator. The transaction includes payment on an existing debt.

SpendQualifiedIndicator:   Indicates whether or not the spend qualification threshold has been met.

This field is for High Value card transactions. Valid values are:

Value Description
B Base spend assessment threshold has been met.
N Spend qualification threshold has not been met.
Q Spend qualification threshold has been met.
[SP] (' ' - Space)Spend qualification does not apply.
TicketNumber:   The airline ticket number.

This configuration setting is used to set the airline ticket number. This 13-character value is comprised of a three-character Carrier Code followed by a 10-character Ticket identifier. For example: "8382152100395"

Note: This is a required field for Passenger Transport Transactions.

Token:   The token used in place of Card data.

This field will contain the token received from TSYS and used in place of Card data. This is used as an added security measure to protect a customer's Card and may also help decrease PCI Compliance verification as storing credit card data is no longer needed.

TotalTaxAmount:   Total Tax Amount assessed at the point-of-sale.

This configuration setting can be used to set the total of all taxes applicable to a transaction and it should not be used to report individual line item details for taxes. This configuration setting applies to the Amex CAPN Corporate Purchasing Solution Extension.

TsysETB:   The Encryption Transmission Block TSYS uses to decrypt encrypted data.

This field is used to specify the Base-64 encoded ETB (Encryption Transmission Block) used by TSYS to decrypt Voltage encrypted data. The value is retrieved from the POS device containing the Voltage encryption software. When specified, the transaction will be sent as a Voltage encrypted transaction. The encrypted card data will be specified as normal via the CardMagneticStripe or CardNumber fields.

VisaMVV:   Merchant Verification Value used for Visa transactions.

The Merchant Verification Value (MVV) is used by Visa to determine a merchant's eligibility to participate in a Select Merchant Fee (SMF) program. The maximum length of this property is 10 characters, and it may only contain 0-9 and A-F.

Base Config Settings

BuildInfo:   Information about the product's build.

When queried, this setting will return a string containing information about the product's build.

CodePage:   The system code page used for Unicode to Multibyte translations.

The default code page is Unicode UTF-8 (65001).

The following is a list of valid code page identifiers:

IdentifierName
037IBM EBCDIC - U.S./Canada
437OEM - United States
500IBM EBCDIC - International
708Arabic - ASMO 708
709Arabic - ASMO 449+, BCON V4
710Arabic - Transparent Arabic
720Arabic - Transparent ASMO
737OEM - Greek (formerly 437G)
775OEM - Baltic
850OEM - Multilingual Latin I
852OEM - Latin II
855OEM - Cyrillic (primarily Russian)
857OEM - Turkish
858OEM - Multilingual Latin I + Euro symbol
860OEM - Portuguese
861OEM - Icelandic
862OEM - Hebrew
863OEM - Canadian-French
864OEM - Arabic
865OEM - Nordic
866OEM - Russian
869OEM - Modern Greek
870IBM EBCDIC - Multilingual/ROECE (Latin-2)
874ANSI/OEM - Thai (same as 28605, ISO 8859-15)
875IBM EBCDIC - Modern Greek
932ANSI/OEM - Japanese, Shift-JIS
936ANSI/OEM - Simplified Chinese (PRC, Singapore)
949ANSI/OEM - Korean (Unified Hangul Code)
950ANSI/OEM - Traditional Chinese (Taiwan; Hong Kong SAR, PRC)
1026IBM EBCDIC - Turkish (Latin-5)
1047IBM EBCDIC - Latin 1/Open System
1140IBM EBCDIC - U.S./Canada (037 + Euro symbol)
1141IBM EBCDIC - Germany (20273 + Euro symbol)
1142IBM EBCDIC - Denmark/Norway (20277 + Euro symbol)
1143IBM EBCDIC - Finland/Sweden (20278 + Euro symbol)
1144IBM EBCDIC - Italy (20280 + Euro symbol)
1145IBM EBCDIC - Latin America/Spain (20284 + Euro symbol)
1146IBM EBCDIC - United Kingdom (20285 + Euro symbol)
1147IBM EBCDIC - France (20297 + Euro symbol)
1148IBM EBCDIC - International (500 + Euro symbol)
1149IBM EBCDIC - Icelandic (20871 + Euro symbol)
1200Unicode UCS-2 Little-Endian (BMP of ISO 10646)
1201Unicode UCS-2 Big-Endian
1250ANSI - Central European
1251ANSI - Cyrillic
1252ANSI - Latin I
1253ANSI - Greek
1254ANSI - Turkish
1255ANSI - Hebrew
1256ANSI - Arabic
1257ANSI - Baltic
1258ANSI/OEM - Vietnamese
1361Korean (Johab)
10000MAC - Roman
10001MAC - Japanese
10002MAC - Traditional Chinese (Big5)
10003MAC - Korean
10004MAC - Arabic
10005MAC - Hebrew
10006MAC - Greek I
10007MAC - Cyrillic
10008MAC - Simplified Chinese (GB 2312)
10010MAC - Romania
10017MAC - Ukraine
10021MAC - Thai
10029MAC - Latin II
10079MAC - Icelandic
10081MAC - Turkish
10082MAC - Croatia
12000Unicode UCS-4 Little-Endian
12001Unicode UCS-4 Big-Endian
20000CNS - Taiwan
20001TCA - Taiwan
20002Eten - Taiwan
20003IBM5550 - Taiwan
20004TeleText - Taiwan
20005Wang - Taiwan
20105IA5 IRV International Alphabet No. 5 (7-bit)
20106IA5 German (7-bit)
20107IA5 Swedish (7-bit)
20108IA5 Norwegian (7-bit)
20127US-ASCII (7-bit)
20261T.61
20269ISO 6937 Non-Spacing Accent
20273IBM EBCDIC - Germany
20277IBM EBCDIC - Denmark/Norway
20278IBM EBCDIC - Finland/Sweden
20280IBM EBCDIC - Italy
20284IBM EBCDIC - Latin America/Spain
20285IBM EBCDIC - United Kingdom
20290IBM EBCDIC - Japanese Katakana Extended
20297IBM EBCDIC - France
20420IBM EBCDIC - Arabic
20423IBM EBCDIC - Greek
20424IBM EBCDIC - Hebrew
20833IBM EBCDIC - Korean Extended
20838IBM EBCDIC - Thai
20866Russian - KOI8-R
20871IBM EBCDIC - Icelandic
20880IBM EBCDIC - Cyrillic (Russian)
20905IBM EBCDIC - Turkish
20924IBM EBCDIC - Latin-1/Open System (1047 + Euro symbol)
20932JIS X 0208-1990 & 0121-1990
20936Simplified Chinese (GB2312)
21025IBM EBCDIC - Cyrillic (Serbian, Bulgarian)
21027Extended Alpha Lowercase
21866Ukrainian (KOI8-U)
28591ISO 8859-1 Latin I
28592ISO 8859-2 Central Europe
28593ISO 8859-3 Latin 3
28594ISO 8859-4 Baltic
28595ISO 8859-5 Cyrillic
28596ISO 8859-6 Arabic
28597ISO 8859-7 Greek
28598ISO 8859-8 Hebrew
28599ISO 8859-9 Latin 5
28605ISO 8859-15 Latin 9
29001Europa 3
38598ISO 8859-8 Hebrew
50220ISO 2022 Japanese with no halfwidth Katakana
50221ISO 2022 Japanese with halfwidth Katakana
50222ISO 2022 Japanese JIS X 0201-1989
50225ISO 2022 Korean
50227ISO 2022 Simplified Chinese
50229ISO 2022 Traditional Chinese
50930Japanese (Katakana) Extended
50931US/Canada and Japanese
50933Korean Extended and Korean
50935Simplified Chinese Extended and Simplified Chinese
50936Simplified Chinese
50937US/Canada and Traditional Chinese
50939Japanese (Latin) Extended and Japanese
51932EUC - Japanese
51936EUC - Simplified Chinese
51949EUC - Korean
51950EUC - Traditional Chinese
52936HZ-GB2312 Simplified Chinese
54936Windows XP: GB18030 Simplified Chinese (4 Byte)
57002ISCII Devanagari
57003ISCII Bengali
57004ISCII Tamil
57005ISCII Telugu
57006ISCII Assamese
57007ISCII Oriya
57008ISCII Kannada
57009ISCII Malayalam
57010ISCII Gujarati
57011ISCII Punjabi
65000Unicode UTF-7
65001Unicode UTF-8
The following is a list of valid code page identifiers for Mac OS only:
IdentifierName
1ASCII
2NEXTSTEP
3JapaneseEUC
4UTF8
5ISOLatin1
6Symbol
7NonLossyASCII
8ShiftJIS
9ISOLatin2
10Unicode
11WindowsCP1251
12WindowsCP1252
13WindowsCP1253
14WindowsCP1254
15WindowsCP1250
21ISO2022JP
30MacOSRoman
10UTF16String
0x90000100UTF16BigEndian
0x94000100UTF16LittleEndian
0x8c000100UTF32String
0x98000100UTF32BigEndian
0x9c000100UTF32LittleEndian
65536Proprietary

LicenseInfo:   Information about the current license.

When queried, this setting will return a string containing information about the license this instance of a class is using. It will return the following information:

  • Product: The product the license is for.
  • Product Key: The key the license was generated from.
  • License Source: Where the license was found (e.g., RuntimeLicense, License File).
  • License Type: The type of license installed (e.g., Royalty Free, Single Server).
  • Last Valid Build: The last valid build number for which the license will work.
MaskSensitive:   Whether sensitive data is masked in log messages.

In certain circumstances it may be beneficial to mask sensitive data, like passwords, in log messages. Set this to true to mask sensitive data. The default is true.

This setting only works on these classes: AS3Receiver, AS3Sender, Atom, Client(3DS), FTP, FTPServer, IMAP, OFTPClient, SSHClient, SCP, Server(3DS), Sexec, SFTP, SFTPServer, SSHServer, TCPClient, TCPServer.

ProcessIdleEvents:   Whether the class uses its internal event loop to process events when the main thread is idle.

If set to False, the class will not fire internal idle events. Set this to False to use the class in a background thread on Mac OS. By default, this setting is True.

SelectWaitMillis:   The length of time in milliseconds the class will wait when DoEvents is called if there are no events to process.

If there are no events to process when DoEvents is called, the class will wait for the amount of time specified here before returning. The default value is 20.

UseInternalSecurityAPI:   Tells the class whether or not to use the system security libraries or an internal implementation.

When set to false, the class will use the system security libraries by default to perform cryptographic functions where applicable.

Setting this setting to true tells the class to use the internal implementation instead of using the system security libraries.

On Windows, this setting is set to false by default. On Linux/macOS, this setting is set to true by default.

To use the system security libraries for Linux, OpenSSL support must be enabled. For more information on how to enable OpenSSL, please refer to the OpenSSL Notes section.

Trappable Errors (TSYSDetailRecord Class)

Error Handling (C++)

Call the GetLastErrorCode() method to obtain the last called method's result code; 0 indicates success, while a non-zero error code indicates that this method encountered an error during its execution. Known error codes are listed below. If an error occurs, the GetLastError() method can be called to retrieve the associated error message.

TSYSDetailRecord Errors

501   Data field invalid length.
502   Data field invalid format.
503   Data field out of range.
592   Invalid or unparseable aggregate.
605   Invalid CardType.