PTechDetailRecord Class

Properties   Methods   Events   Config Settings   Errors  

The PTechDetailRecord class is a tool used to create off-line Credit or Force transactions to be settled by the PTECHMANUALSETTLE class. The PTDetailRecord class may also be used to modify the XML aggregates returned by the PTECHCHARGE class's GetDetailAggregate method.

Class Name

DPaymentsSDK_PTechDetailRecord

Procedural Interface

 dpaymentssdk_ptechdetailrecord_open();
 dpaymentssdk_ptechdetailrecord_close($res);
 dpaymentssdk_ptechdetailrecord_register_callback($res, $id, $function);
 dpaymentssdk_ptechdetailrecord_get_last_error($res);
 dpaymentssdk_ptechdetailrecord_get_last_error_code($res);
 dpaymentssdk_ptechdetailrecord_set($res, $id, $index, $value);
 dpaymentssdk_ptechdetailrecord_get($res, $id, $index);
 dpaymentssdk_ptechdetailrecord_do_config($res, $configurationstring);
 dpaymentssdk_ptechdetailrecord_do_getdetailaggregate($res);
 dpaymentssdk_ptechdetailrecord_do_parseaggregate($res, $aggregate);
 dpaymentssdk_ptechdetailrecord_do_reset($res);

Remarks

Credit and voice-authorization Capture transactions are off-line transactions. This means that there is no authorization of funds using the PTechCharge class. Instead, you must manually add these transactions to the settlement batch. The PTDetailRecord class can be used to create these transactions, which can then be added to the PTechManualSettle class's DetailRecords property.

To create a Credit, first set the TransactionType to dttCredit, and then set the IndustryType and EntryDataSource Next, set the Card, SettlementAmount, and the current TransactionDate and TransactionTime.

Since this is an off-line transaction, the SequenceNumber may be any value (except 0), and need not reflect the next available sequence number used for authorizations. Finally, set the PTechManualSettle class's DetailRecords array property with the value returned by the GetDetailAggregate method. You've just added a Credit to the settlement.

Voice authorization Capture transactions are similar to credits, with the exception that it 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 ApprovalCode property. The following example shows a Force transaction in a Retail environment.

In addition to creating Credit and Force transactions, the PTechDetailRecord class can be used to adjust the Detail Records returned from the PTechCharge class to reflect changes in the SettlementAmount. The most common reasons to modify these detail records are to add a GratuityAmount (tip) to a charge (itResturant IndustryType), or to add additional charges for the itHotel IndustryType. Note that when the SettlementAmount differs from the original authorized amount, the AmountStatus must be updated to asAmountChanged.

Property List


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

AmountStatusIndicates whether SettlementAmount has been modified from the original authorization.
ApprovalCodeThe Approval code returned in the response to the authorization linked to this transaction.
AuthSourceIndicates the source of the authorization code stored in ApprovalCode .
CardExpMonthExpiration month of the credit card specified by CardNumber .
CardExpYearExpiration year of the credit card specified by CardNumber .
CardNumberCustomer's credit card number from the original authorization request.
CardTypeType of the credit card.
CVVResultContains the returned CVV result code if it was requested.
ECIElectronic Commerce Indicator from the original authorization request.
EntryDataSourceShould reflect the Entry Data Source sent in the original authorization request.
GoodsIndicatorIndicates the type of goods being sold by an e-Commerce merchant.
GratuityAmountGratuity amount for settling restaurant industry transactions.
HotelArrivalDateDate the customer checked in, or the expected arrival date when authorizing a reservation.
HotelChargeDescriptorProvides additional information about what this transaction was used for at the hotel.
HotelDepartureDateDate the customer checked out, or the expected check-out date when authorizing a reservation.
HotelDurationThe number of days the customer stayed in the hotel, or the expected duration of stay when authorizing a reservation.
HotelExtraChargeAmountTotal amount of extra charges incurred by the customer.
HotelExtraChargesCodeList of extra charges added to the cost of lodging.
HotelPreferredCustomerSet this property to True to process a hotel transaction as card-not-present.
HotelSaleCodeProvides additional details about the type of this transaction.
IndustryTypeDetermines the merchant's industry type.
InvoiceNumberInvoice Number from the original authorization request.
Level2PurchaseIdPurchase Identifier for use when sending Level II data.
Level2SalesTaxSales Tax for use when sending Level II data.
Level2ShipToZipDestination ZipCode for use when sending Level II data.
NetworkIdThe Authorizing network Id from the original authorization response.
SequenceNumberSequence number of the transaction.
ServerNumberUsed for restaurant transactions: Id number of the server (waiter/waitress) making the transaction.
SettlementAmountThe amount that the customer will be charged.
TransactionDateLocal Transaction Date from the original authorization response.
TransactionTimeLocal transaction time from the original authorization response.
TransactionTypeIndicates transaction type for this detail record.

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.

SystemInformationSystem Information field for Batch Inquiry and Release 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.

AmountStatus Property (DPaymentsSDK_PTechDetailRecord Class)

Indicates whether SettlementAmount has been modified from the original authorization.

Object Oriented Interface


public function getAmountStatus();


public function setAmountStatus($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 1 );


dpaymentssdk_ptechdetailrecord_set($res, 1, $value );

Default Value

0

Remarks

asActualAmount (0) The SettlementAmount is the exact amount authorized in the original transaction.
asAmountChanged (1) The SettlementAmount is different from the amount originally authorized. This may be due to the addition of a GratuityAmount, or the settlement of a lesser amount.

Notes for the Hotel IndustryType:

To obtain the best interchange rate for Visa transactions in the Hotel IndustryType, the check out amount (SettlementAmount) must be within 15% of the original authorization amount. If the SettlementAmount is less than the original authorized amount by more than 15%, you must perform an authorization reversal using the PTechReversal class. This will immediately release funds from the cardholder's open to buy amount. The original transaction must then be settled for the new amount as usual. However, if the SettlementAmount exceeds the original authorized amount by more than 15%, you must submit an incremental authorization to make up the remaining amount. In this case even though there are two separate transactions, they are tied together with the same authorization code. Therefore, only the original authorization (with the newly updated SettlementAmount) is to be sent in the settlement.

Non-Visa transactions do not allow for Incrementals to tie transactions together, nor Reversals to release funds from the cardholder's open to buy amount. There are no restrictions on the difference between the SettlementAmount and the original authorization amount. However, if the merchant suspects that the final transaction amount will be substantially higher than the original authorization amount, the merchant should perform an additional authorization for the difference. This subsequent authorization must be sent to the host as a standard authorization-only transaction, and will not be tied in any way to the original transaction. Both transactions must be present in the settlement.

Notes for the Restaurant IndustryType:

For Visa transactions, to obtain the best interchange rate the SettlementAmount must be within 20% of the authorized amount. The initial authorization must be submitted for the actual transaction amount. It must not be altered to include an additional percentage that accounts for a tip being added before settlement.

The same rule applies to MasterCard transactions, with the exception that MasterCard allows the SettlementAmount to be within 25% of the authorized amount.

There are no rules concerning authorization and settlement amounts for other card types.

This information was accurate at the time this document was written. Please see the Processing and Interchange Guidelines (provided by Paymentech) for updates as well as additional information on interchange rate qualification.

Data Type

Integer

ApprovalCode Property (DPaymentsSDK_PTechDetailRecord Class)

The Approval code returned in the response to the authorization linked to this transaction.

Object Oriented Interface


public function getApprovalCode();


public function setApprovalCode($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 2 );


dpaymentssdk_ptechdetailrecord_set($res, 2, $value );

Default Value

''

Remarks

If this is a Forced transaction, ApprovalCode should contain the voice auth code received from the call center. If this is a Credit (Refund) transaction it should remain empty or be space filled.

Data Type

String

AuthSource Property (DPaymentsSDK_PTechDetailRecord Class)

Indicates the source of the authorization code stored in ApprovalCode .

Object Oriented Interface


public function getAuthSource();


public function setAuthSource($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 3 );


dpaymentssdk_ptechdetailrecord_set($res, 3, $value );

Default Value

''

Remarks

This field contains a one character code indicating the source of the ApprovalCode. The received code must be stored and submitted in the batch settlement.

Valid source codes:

CodeDescription
1STIP (Stand-In Processing): time-out response.
2STIP: amount below issuer limit.
3STIP: issuer in Suppress Inquiry mode.
4STIP: issuer unavailable.
5Issuer generated response.
6Off-line approval: POS device generated.
7Acquirer approval: Base I unavailable.
8Acquirer approval of a referral.
9Use for non-authorized transactions; such as credit card credits.
DReferral: authorization code manually keyed.
EOff-line approval: authorization code manually keyed.
FCAFIS Interface Off-Line Post-Auth.*
GIssuer Approval: Post-Auth.*
* Currently in use by Japan Acquirer Services (JAS).

Data Type

String

CardExpMonth Property (DPaymentsSDK_PTechDetailRecord Class)

Expiration month of the credit card specified by CardNumber .

Object Oriented Interface


public function getCardExpMonth();


public function setCardExpMonth($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 4 );


dpaymentssdk_ptechdetailrecord_set($res, 4, $value );

Default Value

1

Remarks

This property contains the expiration date of the customer's credit card. This property must be in the range 1 - 12.

Data Type

Integer

CardExpYear Property (DPaymentsSDK_PTechDetailRecord Class)

Expiration year of the credit card specified by CardNumber .

Object Oriented Interface


public function getCardExpYear();


public function setCardExpYear($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 5 );


dpaymentssdk_ptechdetailrecord_set($res, 5, $value );

Default Value

1

Remarks

This property contains the expiration date of the customer's credit card. This property must be in the range 1 - 12.

Data Type

Integer

CardNumber Property (DPaymentsSDK_PTechDetailRecord Class)

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

Object Oriented Interface


public function getCardNumber();


public function setCardNumber($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 6 );


dpaymentssdk_ptechdetailrecord_set($res, 6, $value );

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

CardType Property (DPaymentsSDK_PTechDetailRecord Class)

Type of the credit card.

Object Oriented Interface


public function getCardType();


public function setCardType($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 7 );


dpaymentssdk_ptechdetailrecord_set($res, 7, $value );

Default Value

''

Remarks

Paymentech determines the type of credit card used for each authorization, and returns that value to the merchant in the response. The following is a list of card mnemonics and their meanings.

VIVisa
MCMasterCard
AXAmerican Exp.
DSDiscover
JCJCB
DBDebit
EBEBT
SVStored Value
CKCheck Authorization
IGIn Good Taste
PLRetail PL
CCClub Card
SCSmarte Carte
THTCH Light Fleet
TSTCRS Consumer Card
IRIrving Oil PL
RARAI
DYDisney Rewards
SRSears PL
BEBest
ENEnmark
GCFleetCor / GasCard
VYVoyager
FOFleet One
SHShell
GTGate
WXWEX
MMMotoMart
??Included in Batch Totals by Card Type responses when the host has summarized more than 14 card types within the batch (includes all other card types in the batch over 14).
99Supported in Enhanced Batch Inquiry requests when "all" details or totals are being requested.

Data Type

String

CVVResult Property (DPaymentsSDK_PTechDetailRecord Class)

Contains the returned CVV result code if it was requested.

Object Oriented Interface


public function getCVVResult();


public function setCVVResult($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 8 );


dpaymentssdk_ptechdetailrecord_set($res, 8, $value );

Default Value

''

Remarks

If a CVV value was sent in the authorization request, then this one character property will contain the host returned Card Verification Value result code.

MCVV2 match.
NCVV2 no match.
PNot processed.
SMerchant has indicated that CVV2 is not present on card.
UIssuer not certified and/or has not provided Visa encryption keys.

Data Type

String

ECI Property (DPaymentsSDK_PTechDetailRecord Class)

Electronic Commerce Indicator from the original authorization request.

Object Oriented Interface


public function getECI();


public function setECI($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 9 );


dpaymentssdk_ptechdetailrecord_set($res, 9, $value );

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 (DPaymentsSDK_PTechDetailRecord Class)

Should reflect the Entry Data Source sent in the original authorization request.

Object Oriented Interface


public function getEntryDataSource();


public function setEntryDataSource($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 10 );


dpaymentssdk_ptechdetailrecord_set($res, 10, $value );

Default Value

0

Remarks

If sending an off-line credit or capture this property should reflect the way in which the card was presented for the credit or capture.

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).
edsTrack1Contactless (5)Full magnetic stripe read (Track 1 only), Chip Card capable terminal (Visa, Mastercard, and JCB Transactions only).
edsTrack2Contactless (6)Full magnetic stripe read (Track 2 only), Chip Card capable terminal (Visa, Mastercard, and JCB Transactions only).
edsManualEntryContactlessCapable (7)Manually keyed, Chip Card read capable terminal (Visa, MasterCard, and JCB transactions only).
edsIVR (8)Interactive Voice Response processing. This is applicable to Mail Order/Telephone Order (MOTO) transactions. (CardNumber, CardExpMonth, and CardExpYear are sent).
edsKiosk (9)Automated kiosk transaction. Track1 or Track2 data must be sent. The transaction cannot be manually entered.

The following data sources are supported - edsTrack1, edsTrack2, edsManualEntryTrack1Capable, edsManualEntryTrack2Capable, edsManualEntryNoCardReader, edsTrack1Contactless, edsTrack2Contactless, edsManualEntryContactlessCapable

This property is not available at design time.

Data Type

Integer

GoodsIndicator Property (DPaymentsSDK_PTechDetailRecord Class)

Indicates the type of goods being sold by an e-Commerce merchant.

Object Oriented Interface


public function getGoodsIndicator();


public function setGoodsIndicator($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 11 );


dpaymentssdk_ptechdetailrecord_set($res, 11, $value );

Default Value

0

Remarks

If the merchant is selling physical goods (goods that are shipped or are otherwise tangible) this property must be set to giPhysicalGoods. If the merchant is selling Digital goods, such a membership, or any software or file that is delivered electronically, this field must be set to giDigitalGoods. This property is only valid when the IndustryType is set to itECommerce.

Data Type

Integer

GratuityAmount Property (DPaymentsSDK_PTechDetailRecord Class)

Gratuity amount for settling restaurant industry transactions.

Object Oriented Interface


public function getGratuityAmount();


public function setGratuityAmount($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 12 );


dpaymentssdk_ptechdetailrecord_set($res, 12, $value );

Default Value

''

Remarks

This field contains the gratuity (tip) amount of the transaction being settled. This amount is only sent when the PTechCharge class's IndustryType is set to "itRestaurant". If a transaction includes a GratuityAmount amount, the SettlementAmount must reflect the total of the original Authorized Amount plus the GratuityAmount.

This must be formatted as a dollar amount with a real decimal point, excluding the dollar sign. For instance "12.00".

Data Type

String

HotelArrivalDate Property (DPaymentsSDK_PTechDetailRecord Class)

Date the customer checked in, or the expected arrival date when authorizing a reservation.

Object Oriented Interface


public function getHotelArrivalDate();


public function setHotelArrivalDate($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 13 );


dpaymentssdk_ptechdetailrecord_set($res, 13, $value );

Default Value

'010101'

Remarks

Date the customer checked in, or the expected arrival date when authorizing a reservation. This property must contain an actual valid date.

Data Type

String

HotelChargeDescriptor Property (DPaymentsSDK_PTechDetailRecord Class)

Provides additional information about what this transaction was used for at the hotel.

Object Oriented Interface


public function getHotelChargeDescriptor();


public function setHotelChargeDescriptor($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 14 );


dpaymentssdk_ptechdetailrecord_set($res, 14, $value );

Default Value

1

Remarks

Provides additional information about what this transaction was used for at the hotel. If used to pay for actual hotel accommodations, this should be set to cdLodging. If this transaction was used for any hotel-provided services, it should be set to the corresponding description listed below. Available descriptors include:

  • cdHealthClub (0)
  • cdLodging (1)
  • cdRestaurant (2)
  • cdGiftShop (3)
  • cdHairSalon (4)
  • cdConventionFees (5)
  • cdTennisClub (6)
  • cdGolfShop (7)

Data Type

Integer

HotelDepartureDate Property (DPaymentsSDK_PTechDetailRecord Class)

Date the customer checked out, or the expected check-out date when authorizing a reservation.

Object Oriented Interface


public function getHotelDepartureDate();


public function setHotelDepartureDate($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 15 );


dpaymentssdk_ptechdetailrecord_set($res, 15, $value );

Default Value

'010101'

Remarks

Date the customer checked out, or the expected check-out date when authorizing a reservation. This property must contain an actual valid date.

Data Type

String

HotelDuration Property (DPaymentsSDK_PTechDetailRecord Class)

The number of days the customer stayed in the hotel, or the expected duration of stay when authorizing a reservation.

Object Oriented Interface


public function getHotelDuration();


public function setHotelDuration($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 16 );


dpaymentssdk_ptechdetailrecord_set($res, 16, $value );

Default Value

1

Remarks

The number of days the customer stayed in the hotel, or the expected duration of stay when authorizing a reservation. This property must be between 1 and 99 days.

Data Type

Integer

HotelExtraChargeAmount Property (DPaymentsSDK_PTechDetailRecord Class)

Total amount of extra charges incurred by the customer.

Object Oriented Interface


public function getHotelExtraChargeAmount();


public function setHotelExtraChargeAmount($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 17 );


dpaymentssdk_ptechdetailrecord_set($res, 17, $value );

Default Value

'0.00'

Remarks

Total amount of extra charges incurred by the customer. Use the HotelExtraChargesCode to indicate the types of charges that have been added on to this transaction.

This must be formatted as a dollar amount with a real decimal point, excluding the dollar sign. For instance "12.00"

Data Type

String

HotelExtraChargesCode Property (DPaymentsSDK_PTechDetailRecord Class)

List of extra charges added to the cost of lodging.

Object Oriented Interface


public function getHotelExtraChargesCode();


public function setHotelExtraChargesCode($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 18 );


dpaymentssdk_ptechdetailrecord_set($res, 18, $value );

Default Value

'000000'

Remarks

List of extra charges added to the cost of lodging. You may include a list of extra charges for hotel transactions. Simply add the code below to this property. Multiple codes may be specified by concatenating them together. Only six extra charges may be added. For instance "240000" indicates the customer dined at the hotel restaurant and drank from the mini bar in his room. Available codes include:

0 None. If there are no extra charges, this property should contain six zeros- "000000".
2 Restaurant.
3 Gift shop.
4 Mini bar.
5 Telephone charges.
6 Other charges not listed.
7 Laundry service.

Data Type

String

HotelPreferredCustomer Property (DPaymentsSDK_PTechDetailRecord Class)

Set this property to True to process a hotel transaction as card-not-present.

Object Oriented Interface


public function getHotelPreferredCustomer();


public function setHotelPreferredCustomer($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 19 );


dpaymentssdk_ptechdetailrecord_set($res, 19, $value );

Default Value

false

Remarks

Set this property to True to process a hotel transaction as card-not-present. This can be used for phoned-in reservations, no-show charges, or any transaction that takes place without the customer's physical card present. This property is only applicable for Visa and MasterCard transactions. Other card types must use the PTechECommerce class for phone or internet reservations.

Data Type

Boolean

HotelSaleCode Property (DPaymentsSDK_PTechDetailRecord Class)

Provides additional details about the type of this transaction.

Object Oriented Interface


public function getHotelSaleCode();


public function setHotelSaleCode($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 20 );


dpaymentssdk_ptechdetailrecord_set($res, 20, $value );

Default Value

1

Remarks

Provides additional details about the type of this transaction.

Data Type

Integer

IndustryType Property (DPaymentsSDK_PTechDetailRecord Class)

Determines the merchant's industry type.

Object Oriented Interface


public function getIndustryType();


public function setIndustryType($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 21 );


dpaymentssdk_ptechdetailrecord_set($res, 21, $value );

Default Value

0

Remarks

This property sets the merchant's industry type. Valid values are shown in the table below:

Industry TypeDescription
pitRetail (0)Retail environments are classified as those environments where the card and cardholder are physically present at the time of purchase.
pitDirectMarketing (1)Mail Order or Phone Order (MOPO) environments are classified as those environments where the card and/or cardholder are not physically present at the time of purchase and the transaction is performed through the mail or over the telephone.
pitECommerce (2)Electronic Commerce environments are classified as those environments where the card and/or cardholder are not physically present at the time of purchase and the transaction is performed over the Internet.
pitRestaurant (3)Restaurant environments are similar to retail environments, where the card and cardholder are physically present at the time of purchase.* A gratuity may be added at the time of authorization, or before settlement. Note that the itRestaurant industry type requires merchants to use Paymentech's Terminal Capture System (TCS) to process transactions, and batches must be manually settled using the PTechManualSettle class.
pitHotel (4)Hotel/Lodging environments allow for both card-present and card-not-present transactions* (for instance, a phoned-in reservation or a charge for a no-show). Additional hotel (PTechHotelInfo) information must be submitted in the authorization and capture. Additional charges may be added on to the initial authorization using the PTechDetailRecord class before the transaction is settled with the PTechManualSettle class. Note that the itHotel industry type requires merchants to use Paymentech's Terminal Capture System (TCS) to process transactions, and batches must be manually settled using the PTechManualSettle class.
Note: Setting the IndustryType has the side effect of changing the CardEntryDataSource to the default value for the selected industry type. In addition, setting the IndustryType to itDirectMarketing or itECommerce will also reset the PINCapability to ppNoPIN.

* Restaurant orders taken over the phone should be processed as itDirectMarketing transactions. Hotel transactions should always be processed in the itHotel IndustryType. Setting the HotelPreferredCustomer property to True.

Data Type

Integer

InvoiceNumber Property (DPaymentsSDK_PTechDetailRecord Class)

Invoice Number from the original authorization request.

Object Oriented Interface


public function getInvoiceNumber();


public function setInvoiceNumber($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 22 );


dpaymentssdk_ptechdetailrecord_set($res, 22, $value );

Default Value

''

Remarks

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

Data Type

String

Level2PurchaseId Property (DPaymentsSDK_PTechDetailRecord Class)

Purchase Identifier for use when sending Level II data.

Object Oriented Interface


public function getLevel2PurchaseId();


public function setLevel2PurchaseId($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 23 );


dpaymentssdk_ptechdetailrecord_set($res, 23, $value );

Default Value

''

Remarks

Purchase Identifier for use when sending Level II data. This property contains a Purchase Identifier (Purchase Order Number or Order Number). The Level2PurchaseId, Level2SalesTax, and Level2ShipToZip properties are used to transmit Level II purchasing card data to the host. If any of these properties contain a value, Level II purchasing data will be sent with the authorization request. If they are all empty, Level II data will not be sent. The maximum length for this property is 17 characters.

Data Type

String

Level2SalesTax Property (DPaymentsSDK_PTechDetailRecord Class)

Sales Tax for use when sending Level II data.

Object Oriented Interface


public function getLevel2SalesTax();


public function setLevel2SalesTax($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 24 );


dpaymentssdk_ptechdetailrecord_set($res, 24, $value );

Default Value

''

Remarks

Sales Tax for use when sending Level II data. This property contains the portion of the TransactionAmount which is sales tax. This amount is presented in US Dollars with a decimal point in the proper position, and has a maximum length of 9 characters. Set this property to "EXEMPT" if the transaction is not taxable. Set it to "0.00" if there is no tax provided.

The Level2PurchaseId, Level2SalesTax, and Level2ShipToZip properties are used to transmit Level II purchasing card data to the host. If any of these properties contain a value, Level II purchasing data will be sent with the authorization request. If they are all empty, Level II data will not be sent.

Data Type

String

Level2ShipToZip Property (DPaymentsSDK_PTechDetailRecord Class)

Destination ZipCode for use when sending Level II data.

Object Oriented Interface


public function getLevel2ShipToZip();


public function setLevel2ShipToZip($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 25 );


dpaymentssdk_ptechdetailrecord_set($res, 25, $value );

Default Value

''

Remarks

Destination ZipCode for use when sending Level II data. This property contains the zip code where the purchased goods are to be shipped. If this is a face-to-face transaction in a retail environment where the customer immediately receives the goods, this property should be the Zip code of the merchant location where the item was purchased.

The Level2PurchaseId, Level2SalesTax, and Level2ShipToZip properties are used to transmit Level II purchasing card data to the host. If any of these properties contain a value, Level II purchasing data will be sent with the authorization request. If they are all empty, Level II data will not be sent.

Data Type

String

NetworkId Property (DPaymentsSDK_PTechDetailRecord Class)

The Authorizing network Id from the original authorization response.

Object Oriented Interface


public function getNetworkId();


public function setNetworkId($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 26 );


dpaymentssdk_ptechdetailrecord_set($res, 26, $value );

Default Value

''

Remarks

This property should be identical to the NetworkId returned from Paymentech in the authorization response.

Data Type

String

SequenceNumber Property (DPaymentsSDK_PTechDetailRecord Class)

Sequence number of the transaction.

Object Oriented Interface


public function getSequenceNumber();


public function setSequenceNumber($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 27 );


dpaymentssdk_ptechdetailrecord_set($res, 27, $value );

Default Value

1

Remarks

This should be identical to the sequence number sent in the original authorization.

Data Type

Integer

ServerNumber Property (DPaymentsSDK_PTechDetailRecord Class)

Used for restaurant transactions: Id number of the server (waiter/waitress) making the transaction.

Object Oriented Interface


public function getServerNumber();


public function setServerNumber($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 28 );


dpaymentssdk_ptechdetailrecord_set($res, 28, $value );

Default Value

''

Remarks

Each server should have his or her own unique Id number.

Data Type

String

SettlementAmount Property (DPaymentsSDK_PTechDetailRecord Class)

The amount that the customer will be charged.

Object Oriented Interface


public function getSettlementAmount();


public function setSettlementAmount($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 29 );


dpaymentssdk_ptechdetailrecord_set($res, 29, $value );

Default Value

'0.00'

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 GratuityAmount amount, the SettlementAmount must reflect the total of the original authorized amount plus the GratuityAmount (this is only applicable to the itResturant IndustryType).

This must be formatted as a dollar amount with a real decimal point, excluding the dollar sign. For instance "12.00".

Notes for the Hotel IndustryType:

To obtain the best interchange rate for Visa transactions in the Hotel IndustryType, the check out amount (SettlementAmount) must be within 15% of the original authorization amount. If the SettlementAmount is less than the original authorized amount by more than 15%, you must perform an authorization reversal using the PTechReversal class. This will immediately release funds from the cardholder's open to buy amount. The original transaction must then be settled for the new amount as usual. However, if the SettlementAmount exceeds the original authorized amount by more than 15%, you must submit an incremental authorization to make up the remaining amount. In this case even though there are two separate transactions, they are tied together with the same authorization code. Therefore, only the original authorization (with the newly updated SettlementAmount) is to be sent in the settlement.

Non-Visa transactions do not allow for Incrementals to tie transactions together, nor Reversals to release funds from the cardholder's open to buy amount. There are no restrictions on the difference between the SettlementAmount and the original authorization amount. However, if the merchant suspects that the final transaction amount will be substantially higher than the original authorization amount, the merchant should perform an additional authorization for the difference. This subsequent authorization must be sent to the host as a standard authorization-only transaction, and will not be tied in any way to the original transaction. Both transactions must be present in the settlement.

Notes for the Restaurant IndustryType:

For Visa transactions, to obtain the best interchange rate the SettlementAmount must be within 20% of the authorized amount. The initial authorization must be submitted for the actual transaction amount. It must not be altered to include an additional percentage that accounts for a tip being added before settlement.

The same rule applies to MasterCard transactions, with the exception that MasterCard allows the SettlementAmount to be within 25% of the authorized amount.

There are no rules concerning authorization and settlement amounts for other card types.

This information was accurate at the time this document was written. Please see the Processing and Interchange Guidelines (provided by Paymentech) for updates as well as additional information on interchange rate qualification.

Data Type

String

TransactionDate Property (DPaymentsSDK_PTechDetailRecord Class)

Local Transaction Date from the original authorization response.

Object Oriented Interface


public function getTransactionDate();


public function setTransactionDate($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 30 );


dpaymentssdk_ptechdetailrecord_set($res, 30, $value );

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.

Data Type

String

TransactionTime Property (DPaymentsSDK_PTechDetailRecord Class)

Local transaction time from the original authorization response.

Object Oriented Interface


public function getTransactionTime();


public function setTransactionTime($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 31 );


dpaymentssdk_ptechdetailrecord_set($res, 31, $value );

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 (DPaymentsSDK_PTechDetailRecord Class)

Indicates transaction type for this detail record.

Object Oriented Interface


public function getTransactionType();


public function setTransactionType($value);

Procedural Interface


dpaymentssdk_ptechdetailrecord_get($res, 32 );


dpaymentssdk_ptechdetailrecord_set($res, 32, $value );

Default Value

1

Remarks

This property indicates the type of transaction that is being settled.

Note that only credit card transactions are supported here. EBT, Stored Value, Debit, and Canadian Debit cards must be processed with the Host Capture System, and cannot be manually settled.

dttSale (1)If the original transaction was a Sale (and not an Auth-only), the TransactionType will be set to dttSale after calling ParseAggregate. You should not then modify this value.
dttCapture (3)If the original transaction was an Auth-Only, the TransactionType will be set to dttCapture after calling ParseAggregate. This value may also be used to process voice authorization (Force) transactions. Simply fill out all of the detail record properties manually, and set the ApprovalCode property with the authorization code you received from the call center.
dttHotelNoShow (4)This is used only for the Hotel IndustryType, when a customer fails to show for his reservation.
dttCredit (6)This is a purely off-line TransactionType. It is used to credit a transaction from a previously settled batch. In this case the ApprovalCode is irrelevant, and all of the detail record properties must be filled manually. The SettlementAmount indicates the amount to be returned to the cardholder.

Note that transactions Voided with the PTechCharge class must be removed from the batch. Voided transactions must not be settled.

Data Type

Integer

Config Method (DPaymentsSDK_PTechDetailRecord Class)

Sets or retrieves a configuration setting.

Object Oriented Interface

public function doConfig($configurationstring);

Procedural Interface

dpaymentssdk_ptechdetailrecord_do_config($res, $configurationstring);

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.

GetDetailAggregate Method (DPaymentsSDK_PTechDetailRecord Class)

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

Object Oriented Interface

public function doGetDetailAggregate();

Procedural Interface

dpaymentssdk_ptechdetailrecord_do_getdetailaggregate($res);

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 PTechManualSettle 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 PTechDetailRecord 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:

PTechCharge.Sale(); PTechManualSettle.DetailRecord[0] = PTechCharge.GetDetailAggregate();

ParseAggregate Method (DPaymentsSDK_PTechDetailRecord Class)

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

Object Oriented Interface

public function doParseAggregate($aggregate);

Procedural Interface

dpaymentssdk_ptechdetailrecord_do_parseaggregate($res, $aggregate);

Remarks

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

Reset Method (DPaymentsSDK_PTechDetailRecord Class)

Clears all properties to their default values.

Object Oriented Interface

public function doReset();

Procedural Interface

dpaymentssdk_ptechdetailrecord_do_reset($res);

Remarks

This method clears all properties to their default values.

Error Event (DPaymentsSDK_PTechDetailRecord Class)

Information about errors during data delivery.

Object Oriented Interface

public function fireError($param);

Procedural Interface

dpaymentssdk_ptechdetailrecord_register_callback($res, 1, array($this, 'fireError'));

Parameter List

 'errorcode'
'description'

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 (PTechDetailRecord 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.

PTechDetailRecord Config Settings

SystemInformation:   System Information field for Batch Inquiry and Release transactions.

System Information that all software packages must supply to the Paymentech host when sending a Batch Inquiry or Release transaction. Unless Paymentech indicates otherwise, the value of this configuration setting should not be changed. If it is changed, it should meet the specifications below.

The class will construct the System Information data based on the following specifications:

  • Application Name - 7 characters
  • Release Date - 6 characters (MMDDYY)
  • EPROM / Version Number - 10 characters
For example: DIRPAYI110613VERSION6.0

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 (PTechDetailRecord Class)

PTechDetailRecord Errors

501   Property length is invalid
502   Property is set with invalid data.
504   Luhn digit check failed.
505   Card date invalid.
506   Card expired.
517   Response length mismatch.
546   Missing property for current method call.

Paymentech Server Errors:

The following is a list of error codes which may be returned by the Paymentech Server. In the case of a server-side error condition, the ResponseCode property will contain "E", the error code will be contained in the ResponseApprovalCode property, and the description in ResponseText

Paymentech Issuer Errors

ResponseApprovalCodeResponseTextDescription
200Auth DeclinedCardholder's bank did not approve transaction.
201Call Voice OperAuthorizer needs more information for approval.
202Hold - CallCard issuer does not want that card used. Call for further instructions.
203Call Voice OperAuthorizer didn't respond within allotted time.
204Invalid Card NoAccount #/mag stripe is invalid.
205Invalid Exp. DateExpiration date is either incorrect format or prior to today.
206Invalid ICA NoInvalid International Control Account number.
207Invalid ABA NoInvalid American Banking Association number.
208Invalid PIN NoThe Personal ID Number for a debit transaction is incorrect.
209Invalid Bank MID The Bank Merchant ID is incorrect.
210Invalid Term NoThe merchant ID is not valid or active.
211Invalid AmountAmount is either: equal to 0, has no decimal, has decimal in wrong place, or has multiple decimals.
213Invalid Tran FmtThe transaction format isn't valid, typically invalid SIC code
214Call Voice OperAuthorization center cannot be reached.
215Lost/Stolen CardCard has been reported lost or stolen.
216Invalid PINPersonal ID code is incorrect.
217Over Credit FlrAmount requested exceeds credit limit.
218Request DeniedTransaction is not valid for this authorizer.
220Not Online to XXFatal communications error.
221Auth Down-RetryDebit authorizer temporarily unavailable.
222Auth DeclinedVehicle not found in positive file.
223Invalid Pin NoDriver # not found in positive file.
224Auth DeclinedCard is on private label negative file.
225Card Not AllowedMerchant does not accept this card.
226PL Setup ReqdMerchant not set up for Private Label.
227BIN Not AllowedMerchant cannot accept this Private Label BIN range.
228Card Not AllowedMerchant cannot accept this card.
229Inv Merc Rstrct CodeRestriction code field contains invalid data.
230Prod RestrictedMerchant attempted a product code not permitted by this merchant.
231Prod Not On FileMerchant attempted a product code that does not exist on host.
232Auth DeclinedInvalid card type for Prior Auth sale.
233Auth DeclinedTerminal Type not supported.
234Auth DeclinedT&E card used for Sale when merchant only allows Auth Only.
235*Request Denied*Prior Auth selected with no Auth code provided.
238Invalid Driver NumberThe Driver Number entered is invalid.
247PIN Not SelectedEBT recipient has not selected a PIN for this card.
248Unmatch Vch InfoVoucher submitted does not match one previously issued.
248CVC2/CID ERRORCVC2 or CID entered was not valid for the card number.
249Tran Not DefinedThis type of transaction is not allowed for this type of card.
257Block Act Not AlwdThe merchant.is not allowed to process Stored Value Block Activations
258Incorrect Act AmtThe activation amount requested does not match the predenominated amount for the card.
292Auth Down - RetryAuthorizer is not responding.
293Auth Busy - RetryAuthorizer not available at this time.
294Auth Busy - RetryAuthorizer not available at this time.
297Auth Error - RetryAuthorizer not available at this time.
298Err - Pls RetryDebit authorizer experienced an error.
299Err - Pls RetryDebit authorizer experienced an error.

Paymentech Format Errors

ResponseApprovalCodeResponseTextDescription
300Invalid Term IDThe length of the merchant ID is incorrect or contains invalid data.
301Invalid FunctionTran code is incorrect or wrong length.
302Invalid CardMag stripe contains invalid data or account # is greater than 19 digits
303Invalid Exp. DateCard has expired, month was not 01-12 or year was not 00-99.
304Invalid Action CodeAction code is longer than 1 digit.
305Amt Entry ErrorAmount less than .01 or greater than 99999.99 or contained non- numeric data.
306Invalid PINIncorrect PIN block length.
307Invalid Card Invalid card type or account number.
308Auth # Not EnteredAuth code was not entered on a Prior Auth, Incremental or Rev.
309Invalid Down Pay IndInsurance down payment indicator is invalid.
310Policy # Wrong LenInsurance policy number is incorrect length.
311Invalid Ind CodeIndustry type must be RE or DM.
312Invalid FunctionTran code is invalid or contains alpha data.
313Entry Mode InvalidPOS Entry mode is less than 01 or greater than 04.
314Invalid Industry DataThe Industry Specific field contains invalid data.
315Inv Fleet DataThe Fleet Card field contains invalid data.
316Invalid Sys InfoThe System Information field contains invalid data.
317Invalid FormatPayment Service indicator or Transaction ID is invalid.
318Inv Transaction ClassTransaction class not "F" for financial transaction.
319Inv PIN CapabilityPin capability code field contains invalid data.
320Inv/Missing Retr RefRetrieval Reference # is missing or contains alpha data.
321Inv MSDIMarket Specific Data field contains invalid data.
322Invalid DurationMarket specific data field Duration is 00, blank or missing.
323Inv Pref Cust IndPreferred Customer indicator contains invalid data.
324Inv MO/TO NumberMail/Telephone Order number is invalid (InvoiceNumber must have a value).
325Inv Sale/Chg Des/FolioHotel Sale Code, Charge Descriptor or Folio contains invalid data.
326Inv Mult Clr Seq NoMultiple Clearing sequence number is invalid.
327Inv Purch Card DataPurchasing card field contains invalid data.
328Inv Input/Use VRUInsurance transaction not from VRU.
329Invalid EC Data 329Invalid Electronic Commerce Data.
330INV Function or Multiple FS or Unknown TKNIndicates system problem, notify Paymentech Network Services or Multiple field separators received without required data or A token of unknown definition was received
331INV TKN ValueInvalid token value was received.
332CVD Data ErrorError with the cardholder verification data received; invalid value or not allowable for this card for this transaction.
333TKN Data ErrorIndicates system problem, notify Paymentech Network Services.
359Invalid Sequence NumberThe SequenceNumber must be a number between 0 and 2400.

Paymentech Host / Setup Errors

ResponseApprovalCodeResponseTextDescription
400Invalid Term IDMerchant ID not found in merchant file.
401Invalid Term IDMerchant ID not found in terminal file.
402Term Not ActiveActive flag for merchant set to "N".
403Invalid Act CodeMerchant not set up for cash advance function.
404Void Not AllowedThe transaction requested for voiding is not an EFT transaction.
405Ref Num Not FoundTransaction requested for reversal not found.
406Proc Error 7The host can't clear all transaction records for the requested Batch Release.
407Too Many BatchesThere are 999 open batches for this merchant.
408Release BatchCurrent batch has 999 records. Release batch before continuing.
409Invalid FunctionDebit transaction requested but debit flag is set to "N".
410Invalid Term IDThe Terminal ID portion of the merchant ID is incorrect.
411Invalid Term IDThe maximum retries for this merchant have been exceeded.
412Proc Error 13Unable to read reference number file.
413Proc Error 14413
414Proc Error 15414
415Invalid Function 415
416Invalid FunctionMerchant is Authorization Only and a debit record was sent.
417Invalid FunctionPrivate label flag is "N" but a private label account number was sent.
418Please Try AgainIncorrect debit working key.
419Invalid Function Manually entered transactions are not allowed for this terminal ID.
420Amount Too LargeMaximum sale amount exceeded.
421Amount Too LargeMaximum return amount exceeded.
422Invalid Term IDHost couldn't read terminal file within specified time.
423Proc Error 24Host couldn't read reference number file within specified time.
424Invalid Term IDTransaction open flag has been set to "Y" within prior 3 minutes.
425Invalid FunctionCash management not allowed for this merchant ID.
426Rev Not AllowedHost found no batch number matching the one sent.
427Rev Not AllowedHost found no transactions meeting the specifications sent.
428Dscv Not AllowedMerchant not set up for Discover transactions.
429Rev Not AllowedThe batch containing the transaction to void has been released.
430Dscv Not AllowedMerchant not set up for Discover.
431DC Not AllowedMerchant not set up for Diners Club.
432CB Not AllowedMerchant not set up for Carte Blanche.
433Invalid KeyNo AMEX subscriber number, process control ID or product code set up
434Invalid KeyFuture use.
435Failed-Plz CallDebit transaction being sent to an authorizer not set up on host file.
436Failed-Plz CallDebit security key does not exist on the security management file.
437Failed-Plz CallFailure occurred during encryption/decryption of PIN.
438Failed-Plz CallError occurred while generating a debit working key.
439Failed-Plz CallThe DB (debit) sponsor institution on the merchant file is not set up on sponsor file.
440Failed-Plz CallThe network set up on the sponsoring bank file for this institution is not set up on the host's network file.
441Failed-Plz CallThe host is unable to communicate with decryption device.
442JCB Not AllowedJCB CD flag on merchant record not set up for JCB transactions.
443JCB Not AllowedJCB subscriber number not set up for JCB transactions.
444Bank Not On FileDebit BIN not set up for this merchant in routing table.
445No Sponsor InstNo valid sponsorship was found on Merchant record.
446Failed Plz CallFuture use.
447WX Not AllowedMerchant not set up to accept WEX.
448Amount Too LargeAmount exceeds maximum limit.
449Reenter OdometerOdometer was 000000 or contained non-numeric data.
450Duplicate TranNo ACK reversal was followed by a duplicate request
451Tran Not AllowedRequested transaction type is not allowed for this card/merchant.
452Bat Already RelsBatch has already been released.
453Invalid Rtng IndInvalid Routing Indicator field.
454AX Not AllowedAMEX not allowed.
999Invalid MerchantMerchant number not on file.

Paymentech Debit / EBT Specific Errors

ResponseApprovalCodeResponseTextDescription
602Call Voice OpAuth center cannot be reached.
692Auth Down-Retry Debit authorizer temporarily unavailable.
693Auth Busy-Retry Queue for debit authorizer too long.
694Auth Busy-Retry Debit authorizer not responding in time.

Paymentech Batch Management Errors (use the ErrorCode configuration setting to retrieve this information from the PTechHostSettle class.

ErrorCodeResponseTextDescription
105Invalid Term IDMerchant ID on a Batch Inquiry or Release is incorrect.
106Term Not ActiveActive flag for the merchant ID is set to N.
107No TransactionsA Batch Inquiry or Release was requested but no open batch exists.
108Bat Already RelsA second batch release was attempted.
109Batch Not FoundRequested batch does not exist.

The class may also return one of the following error codes, which are inherited from other classes.

HTTP Errors

118   Firewall Error. Error description contains detailed message.
143   Busy executing current method.
151   HTTP protocol error. The error message has the server response.
152   No server specified in URL
153   Specified URLScheme is invalid.
155   Range operation is not supported by server.
156   Invalid cookie index (out of range).
301   Interrupted.
302   Can't open AttachedFile.

The class may also return one of the following error codes, which are inherited from other classes.

TCPClient Errors

100   You cannot change the RemotePort at this time. A connection is in progress.
101   You cannot change the RemoteHost (Server) at this time. A connection is in progress.
102   The RemoteHost address is invalid (0.0.0.0).
104   Already connected. If you want to reconnect, close the current connection first.
106   You cannot change the LocalPort at this time. A connection is in progress.
107   You cannot change the LocalHost at this time. A connection is in progress.
112   You cannot change MaxLineLength at this time. A connection is in progress.
116   RemotePort cannot be zero. Please specify a valid service port number.
117   You cannot change the UseConnection option while the class is active.
135   Operation would block.
201   Timeout.
211   Action impossible in control's present state.
212   Action impossible while not connected.
213   Action impossible while listening.
301   Timeout.
302   Could not open file.
434   Unable to convert string to selected CodePage.
1105   Already connecting. If you want to reconnect, close the current connection first.
1117   You need to connect first.
1119   You cannot change the LocalHost at this time. A connection is in progress.
1120   Connection dropped by remote host.

SSL Errors

270   Cannot load specified security library.
271   Cannot open certificate store.
272   Cannot find specified certificate.
273   Cannot acquire security credentials.
274   Cannot find certificate chain.
275   Cannot verify certificate chain.
276   Error during handshake.
280   Error verifying certificate.
281   Could not find client certificate.
282   Could not find server certificate.
283   Error encrypting data.
284   Error decrypting data.

TCP/IP Errors

10004   [10004] Interrupted system call.
10009   [10009] Bad file number.
10013   [10013] Access denied.
10014   [10014] Bad address.
10022   [10022] Invalid argument.
10024   [10024] Too many open files.
10035   [10035] Operation would block.
10036   [10036] Operation now in progress.
10037   [10037] Operation already in progress.
10038   [10038] Socket operation on non-socket.
10039   [10039] Destination address required.
10040   [10040] Message too long.
10041   [10041] Protocol wrong type for socket.
10042   [10042] Bad protocol option.
10043   [10043] Protocol not supported.
10044   [10044] Socket type not supported.
10045   [10045] Operation not supported on socket.
10046   [10046] Protocol family not supported.
10047   [10047] Address family not supported by protocol family.
10048   [10048] Address already in use.
10049   [10049] Can't assign requested address.
10050   [10050] Network is down.
10051   [10051] Network is unreachable.
10052   [10052] Net dropped connection or reset.
10053   [10053] Software caused connection abort.
10054   [10054] Connection reset by peer.
10055   [10055] No buffer space available.
10056   [10056] Socket is already connected.
10057   [10057] Socket is not connected.
10058   [10058] Can't send after socket shutdown.
10059   [10059] Too many references, can't splice.
10060   [10060] Connection timed out.
10061   [10061] Connection refused.
10062   [10062] Too many levels of symbolic links.
10063   [10063] File name too long.
10064   [10064] Host is down.
10065   [10065] No route to host.
10066   [10066] Directory not empty
10067   [10067] Too many processes.
10068   [10068] Too many users.
10069   [10069] Disc Quota Exceeded.
10070   [10070] Stale NFS file handle.
10071   [10071] Too many levels of remote in path.
10091   [10091] Network subsystem is unavailable.
10092   [10092] WINSOCK DLL Version out of range.
10093   [10093] Winsock not loaded yet.
11001   [11001] Host not found.
11002   [11002] Non-authoritative 'Host not found' (try again or check DNS setup).
11003   [11003] Non-recoverable errors: FORMERR, REFUSED, NOTIMP.
11004   [11004] Valid name, no data record (check DNS setup).