Credit Debit Card Transactions
This page describes how to process credit and debit card transactions via the Paysafe Web Service. The following operations are supported:
Operation | Description | Request Type |
---|---|---|
Authorization | Allows you to authorize an amount on a customer’s credit/ debit card. The authorized amount must be settled in a subsequent settlement transaction. | |
Purchase | Allows you to both authorize and settle an amount on a customer’s credit/debit card in a single transaction. | |
Verification | Allows you to run an AVS and/or CVD check on a customer’s credit card without processing a charge against that card. | |
Authorization Reversal | Allows you to reverse all or part of an existing authorization, provided no settlements (either full or partial) have been processed against that authorization. This transaction type does not function with purchase transactions, but only with authorizations. | |
Credit | Allows you to credit back to a customer’s credit/debit card an amount that has previously been settled. You can credit all or part of an existing settlement. | |
Settlement | Allows you to settle an amount that was previously authorized on a customer’s credit/debit card. You can settle all or part of an existing authorization. | |
Stored Data Authorization | Allows you to authorize an amount on a customer’s credit/debit card using customer data that is stored in our database. You provide only a minimum of information, saving you time and effort. | |
Stored Data Purchase | Allows you to both authorize and settle an amount on a customer’s credit/debit card using customer data that is stored in our database. You provide only a minimum of information, saving you time and effort. | |
Cancel | Allows you to cancel a Credit, Settlement, Payment, or Independent Credit transaction. You can cancel one of these transactions as long as it is in a Pending state, which typically is before midnight of the day that it is requested. In some cases, you may find older Credit transactions in a Pending state. | |
Payment | Allows you to credit an amount to a customer’s credit card. The Payment transaction is not associated with a previously existing authorization, so the amount of the transaction is not restricted in this way. | |
Independent Credit | Allows you to credit an amount to a customer’s credit card. The Independent Credit transaction is not associated with a previously existing authorization, so the amount of the transaction is not restricted in this way. | |
Information Lookup | Allows you to run a report through the API over a date range you specify to return data on credit card transactions processed through your merchant account. | |
Enrollment Lookup | Allows you to determine whether a customer’s credit card is enrolled in the 3D Secure program. NOTE: This operation is supported only for 3D Secure 1.0.2. | |
Authentication | Allows you to send an Authentication request, in order to validate a cardholder’s password for credit cards enrolled in the 3D Secure program. NOTE: This operation is supported only for 3D Secure 1.0.2. |
Availability of credit card operation types is allotted on a merchant-by-merchant basis, since not all merchant banks support all operations. If you have any questions, contact your account manager.
- The Authorization, Purchase, and Verification operations accept a ccAuthRequestV1 document object.
- The Authorization Reversal operation accepts a ccAuthReversalRequestV1 document object.
- The Settlement and Credit operations accept a ccPostAuthRequestV1 document object.
- The Stored Data operations accept a ccStoredDataRequestV1 document object.
- The Cancel Settle, Cancel Credit, and Cancel Payment operations accept a ccCancelRequestV1 document object.
- The Payment and Independent Credit operations accept a ccPaymentRequestV1 document object.
- The Information Lookup operation accepts a ccTxnLookupRequestV1 document object.
- The Enrollment Lookup operation accepts a ccEnrollmentLookupRequestV1 document object.
- The Authentication operation accepts a ccAuthenticateRequestV1 document object.
- All operations return a ccTxnResponseV1 response.
.NET example
Building Purchase/Authorization/Verification requests
Purchase, Authorization, and Verification requests require the ccAuthRequestV1 document object. This section describes the structure of a ccAuthRequestV1 and how to construct one.
Purchase example – C#
All optional elements that take non-nullable data types (e.g., int or enum) must have their specified attribute set to true when setting values for those elements. See the cardType element in the example below.
The following is a Purchase example in C#.
To make this an Authorize or Verification request, modify the value “ccPurchase” – in the line “CCTxnResponseV1 ccTxnResponse = ccService.ccPurchase(ccAuthRequest);” below – to “ccAuthorize” or “ccVerification”, respectively.
//Prepare the call to the Credit Card Web Service
CCAuthRequestV1 ccAuthRequest = new CCAuthRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ccAuthRequest.merchantAccount = merchantAccount;
ccAuthRequest.merchantRefNum = "Ref-12345";
ccAuthRequest.amount = "10.00";
CardV1 card = new CardV1();
card.cardNum = "4653111111111111";
CardExpiryV1 cardExpiry = new CardExpiryV1();
cardExpiry.month = 11;
cardExpiry.year = 2006;
card.cardExpiry = cardExpiry;
card.cardType = CardTypeV1.VI;
card.cardTypeSpecified = true;
card.cvdIndicator = 1;
card.cvdIndicatorSpecified = true;
card.cvd = "111";
ccAuthRequest.card = card;
BillingDetailsV1 billingDetails = new BillingDetailsV1();
billingDetails.cardPayMethod = CardPayMethodV1.WEB; //WEB = Card Number Provided
billingDetails.cardPayMethodSpecified = true;
billingDetails.firstName = "Jane";
billingDetails.lastName = "Jones";
billingDetails.street = "123 Main Street";
billingDetails.city = "LA";
billingDetails.Item = (object) StateV1.CA; // California
billingDetails.country = CountryV1.US; // United States
billingDetails.countrySpecified = true;
billingDetails.zip = "90210";
billingDetails.phone = "555-555-5555";
billingDetails.email = "janejones@emailserver.com";
ccAuthRequest.billingDetails = billingDetails;
ccAuthRequest.customerIP = "127.0.0.1";
ccAuthRequest.productType = ProductTypeV1.M;
//M = Both Digital and Physical(e.g., software downloaded followed by media
shipment)
ccAuthRequest.productTypeSpecified = true;
// Perform the Web Services call for the purchase
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccPurchase(ccAuthRequest);
// Print out the result
String responseTxt = ccTxnResponse.code + " - " + ccTxnResponse.decision + " - "
+ ccTxnResponse.description + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
ccAuthRequestV1 schema
A ccAuthRequestV1 has the following structure:
ccAuthRequestV1 elements
The ccAuthRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 80 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
merchantRefNum | Yes | String Max = 255 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
customerTokenId | For internal use only. | |||
amount | Yes | String Max= | This is amount of the transaction request. NOTE: Though mandatory, this value will be ignored for the ccVerification transaction. | |
card | cardNum | Yes | String Min = 8 Max = 20 | This is the card number used for the transaction. |
cardExpiry | Yes | The cardExpiry child element has two further child elements – month and year. | ||
Child Element of cardExpiry | ||||
month | Yes | Int Max = 2 | This is the month the credit card expires. | |
year | Yes | Int Length = 4 | This is the year the credit card expires. | |
cardType | Optional | Enumeration | This is the type of card used for the transaction. Possible values are: • AM – American Express • DC – Diners Club • DI – Discover • JC – JCB • MC – Mastercard • MD – Maestro • SF – Swiff • SO – Solo • VD – Visa Debit • VE – Visa Electron • VI – Visa | |
issueNum | Optional | Integer Max = 2 | The 1- or 2-digit number located on the front of the card, following the card number. NOTE: The issueNum element can be used only when the cardType is MD (Maestro), or SO (Solo). | |
cvdIndicator | Optional | Integer Length = 1 | This is the status of CVD value information. • 0 – The customer did not provide a value. • 1 – The customer provided a value. • 2 – The value is illegible. • 3 – The value is not on the card. NOTE: The cvdIndicator element is mandatory for the ccVerification transaction. Also note that even though this element is optional, it is required for several risk-related checks and we strongly advise you to include it to avoid failed transactions. | |
cvd | Conditional | String Length = 3 or 4 | The 3- or 4-digit security code that appears on the card following the card number. This code does not appear on imprints. NOTE: The cvd element is mandatory when the cvdIndicator element value = 1. | |
authentication NOTE: Use this element with ccAuthorize or ccPurchase requests only. | indicator | Optional | Integer Value = 1 | This is the Electronic Commerce Indicator code, a 2-digit value that gets returned by the card issuer indicating whether the cardholder was successfully authenticated. Possible values are: Visa / Amex / JCB • 05 – Identifies a successfully authenticated transaction. • 06 – Identifies an attempted authenticated transaction. • 07 – Identifies a non-authenticated transaction. Mastercard • 01 – Identifies a non-authenticated transaction. • 02 – Identifies a successfully authenticated transaction. This value is returned in the eci child element of the tdsAuthenticateResponse element in the ccTxnResponseV1 to your ccAuthenticateRequestV1 request. |
cavv | Optional | String Max = 80 | This is the Cardholder Authentication Verification Value. This value is returned in the cavv child element of the tdsAuthenticateResponse element in the ccTxnResponseV1 to your ccAuthenticateRequestV1 request. | |
xid | Optional | String Max = 80 | This is the transaction identifier returned by the card issuer. This value is returned in the xid child element of the tdsAuthenticateResponse element in the ccTxnResponseV1 to your ccAuthenticateRequestV1 request. NOTE: This exists only for 3D Secure 1.0.2. | |
enrollmentStatus | Optional | Enumeration | This indicates whether 3D Secure authentication is available for the cardholder. Possible values are: • Y – Authentication available • N – Cardholder not enrolled • U – Authentication unavailable • E – Error NOTE: This exists only for 3D Secure 1.0.2. | |
authenticationStatus | Optional | Enumeration | This indicates the authentication outcome. Possible values are: • Y – Cardholder successfully authenticated with their Card Issuer. • A – Cardholder authentication was attempted. • N – Cardholder failed to successfully authenticate with their Card Issuer. • U – Authentication with the Card Issuer was unavailable. • E – Error • R – Rejected transaction NOTE: The value R exists only for 3D Secure 2.| | |
directoryServerTransactionId | Optional | String Max = 36 | This is the unique directory server transaction ID required for Mastercard. NOTE: This exists only for 3D Secure 2 and is required only for the Mastercard brand. | |
threeDSecureVersion | Optional | String Min = 5 Max = 8 | This is the 3D Secure protocol version. NOTE: If no version is specified in the request, value defaults to 1.0.2. and is echoed in the response. | |
authCode | Optional | String Max = 50 | This is the Authorization code assigned by the issuing bank and returned by Paysafe for a previous transaction. NOTE: Include this element only when instructed to do so by Paysafe. | |
billingDetails | cardPayMethod | Optional | Enumeration | This is how the card was presented for the transaction. Possible values are: • WEB – Card number provided online • TEL – Card number provided by phone • P – Card present • PD – Card present deferred • D – Deferred NOTE: Include this element only when instructed to do so by Paysafe. |
firstName | Optional | String Max = 40 | This is the customer’s first name. | |
lastName | Optional | String Max = 40 | This is the customer’s last name. | |
street | Optional | String Max = 50 | This is the first line of the customer’s street address. NOTE: the street element is mandatory if you are processing a ccVerification transaction. | |
street2 | Optional | String Max = 50 | This is the second line of the customer’s street address. | |
city | Optional | String Max = 40 | This is the city in which the customer resides. | |
state/region | Optional | If state, If region, then string | This is the state/province/region in which the customer resides. Provide state if within U.S./Canada. Provide region if outside of U.S./Canada. | |
country | Optional | Enumeration | This is the country in which the customer resides. | |
zip | Mandatory | String Max = 10 | This is the customer’s ZIP code if in the U.S.; otherwise, this is the customer’s postal code. | |
phone | Optional | String Max = 40 | This is the customer’s telephone number. | |
Optional | String Max = 100 | This is the customer’s email address. | ||
shippingDetails | carrier | Optional | Enumeration | This is the shipment carrier. • APC – APC Overnight • APS – AnPost • CAD – Canada Postal Service • DHL • FEX – Fedex • RML – Royal Mail • UPS – United Parcel Service • USPS – United States Postal Service • OTHER |
shipMethod | Optional | Enumeration | The method of shipment. • N – Next Day/Overnight • T – Two-Day Service • C – Lowest Cost • O – Other | |
firstName | Optional | String Max = 40 | This is the recipient’s first name. | |
lastName | Optional | String Max = 40 | This is the recipient’s last name. | |
street | Optional | String Max = 50 | This is the first line of the recipient’s street address. | |
street2 | Optional | String Max = 50 | This is the second line of the recipient’s street address. | |
city | Optional | String Max = 40 | This is the city in which the recipient resides. | |
state/region | Optional | If state, If region, then string | This is the state/province/region in which the recipient resides. Provide state if within U.S./Canada. Provide region if outside of U.S./Canada. | |
country | Optional | Enumeration | This is the country in which the recipient resides. | |
zip | Optional | String Max = 10 | This is the recipient’s ZIP code if in the U.S.; otherwise, this is the recipient’s postal code. | |
phone | Optional | String Max = 40 | This is the recipient’s phone number. | |
Optional | String Max = 100 | This is the recipient’s email address. | ||
recurring | Optional | NOTE: You cannot include both the recurring element and the storedCredential element in the same authorization request. Paysafe recommends using storedCredential. | ||
recurringIndicator | Conditional | Enumeration | Use this parameter to indicate whether a transaction is an initial or a repeat transaction for a specific customer for whom you will be processing recurring transactions. Depending on which processing gateway is used, if the value for a repeat transaction is set to R, the gateway may be more lenient regarding certain requirements such as CVD data and address information, authorizing the request without this data. Possible values are: • I – Initial Recurring • R – Subsequent Recurring | |
originalConfirmation | Conditional | String Max = 15 | If this is a recurring transaction, this is the confirmation number returned by Paysafe for the initial transaction in the series. If you include this value, Paysafe will be able to more precisely identify an Authorization to Settle or a Settlement to Credit, should either of those transactions be required in the future. | |
previousConfirmation | Conditional | String Max = 15 | If this is a recurring transaction, this is the confirmation number returned by Paysafe for the most recent transaction in the series. If you include this value, Paysafe will be able to more precisely identify an Authorization to Settle or a Settlement to Credit, should either of those transactions be required in the future. | |
storedCredential | Optional | The storedCredential element is used to identify authorization requests that use credit card numbers that are stored by merchants, in order to improve authorization rates and reduce fraud. NOTE: You cannot include both the recurring element and the storedCredential element in the same authorization request. Paysafe recommends using storedCredential. If you are not sending this element and are sending the recurringIndicator element with the value R, type will be defaulted to RECURRING and occurrence will be defaulted to SUBSEQUENT. If recurringIndicator is sent with the value I, type will be defaulted to RECURRING and occurrence will be defaulted to INITIAL. | ||
type | Optional | Enumeration | This specifies the type of request being made. Possible values are: • ADHOC – Ad hoc consumer-initiated request • TOPUP – Unscheduled merchant-initiated request when a consumer balance is below a set limit • RECURRING – Scheduled, merchant-initiated recurring request | |
occurrence | Optional | Enumeration | This specifies whether this stored credential request is initial or recurring. Possible values are: • INITIAL – Used when this is the first time the consumer uses this credit card • RECURRING – Used when the consumer uses this credit card for subsequent requests NOTE: The card cvd value is required when this is set to INITIAL. | |
customerIP | Optional | String Max = 50 | This is the customer’s IP address. | |
productType | Optional | Enumeration | This is the type of product sold. • P – Physical Goods • D – Digital Goods • C – Digital Content) • G – Gift Certificate/Digital Cash • S – Shareware • M – Both Digital and Physical • R – Account Replenish | |
targetVirtualAccount | No | This element is not applicable for credit card transactions. | ||
cardRiskService | For internal use only. | |||
dupeCheck | Optional | Boolean | This validates that this request is not a duplicate. A request is considered a duplicate if the cardNum, amount, and merchantRefNum are the same. | |
sdk | version | Conditional | String Max = 20 | This is the version of the SDK used, if any. Required if sdk element is provided. |
platform | Conditional | String Max = 10 | This is the integration language of the SDK used (e.g., Java, .NET). Required if sdk element is provided. | |
provider | Conditional | String Max = 20 | This is the author of the SDK used. Set to value “op” when the SDK is provided by Paysafe. Required if sdk element is provided. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. | |
merchantDescriptor NOTE: Not all processing gateways support this parameter. Contact your account manager for more information. | dynamicDescriptor | Optional | String Max = 25 | This is a merchant descriptor that will be displayed on a customer’s credit card statement. |
phone | Optional | String Max = 13 | This is the merchant’s phone number, which will be appended to the merchant descriptor on a customer’s credit card statement. | |
accordD NOTE: Include this element only when instructed to do so by Paysafe. | financingType | Conditional | Enumeration | This is the type of financing offered. Possible values are: • D – Deferred payment financing • E – Equal payment financing |
plan | Conditional | String Max = 3 | This is the plan number for this financing transaction. | |
gracePeriod | Optional | Integer Max = 2 | This is the grace period, in months, associated with deferred payment transactions. | |
term | Optional | Integer Max = 2 | This is the number of payments, in months, for equal payment transactions. | |
description | Optional | String Max = 255 | This is a description of the transaction, provided by the merchant. | |
cardEntryMode | Optional | Enumeration | This is the method used to capture the card information. Possible values are: • SWIPED – A card reader was used. • MANUAL – The card number was entered manually. | |
geoLocation | Optional | This is the geographical location of the mobile transaction. | ||
latitude | Conditional | String Max = 24 | This is the latitude of the mobile transaction (e.g., 44.903889). | |
longitude | Conditional | String Max = 24 | This is the longitude of the mobile transaction (e.g., -77.255123). | |
walletTransactionId | Internal use only. | |||
profile | dateOfBirth | Conditional | This field allows you to record the cardholder’s date of birth, if you have it. It may be used to assist in authenticating the customer’s identity with a third-party validation service. | |
Child Element of dateOfBirth | ||||
day | Mandatory | Integer Min = 1 | This is the customer‘s day of birth. | |
month | Mandatory | Integer Min = 1 | This is the customer‘s month of birth. | |
year | Mandatory | Integer Min = 1900 | This is the customer‘s year of birth. | |
visaAdditionalAuthData | NOTE: This element is supported for both Visa and Mastercard. The recipient is deemed to be the person or party who has the contractual relationship with the merchant/ financial institution. This may be different from the cardholder, e.g., in the case of a parent topping up a child’s savings account. Therefore, the fields should not be collected on the same page as cardholder information, but instead be passed in the background from the merchant’s records. Include this element if your Merchant Category Code is 6012 and your registered trading address is in the United Kingdom. If you have any questions, contact your account manager. All fields are optional, however scheme fines may apply if data is consistently not supplied and chargebacks persist. | |||
recipientDateOfBirth | Optional | |||
Child Element of recipientDateOfBirth | ||||
day | Conditional | Integer Min = 1 | This is the recipient’s day of birth. | |
month | Conditional | Integer Min = 1 | This is the recipient’s month of birth. | |
year | Conditional | Integer Min = 1900 | This is the recipient’s year of birth. | |
recipientZip | Optional | String Max = 10 | This is the recipient‘s postcode. NOTE: The last 3 characters are not sent to the banking network. | |
recipientLastName | Optional | String Max = 40 | This is the recipient‘s last name or surname. NOTE: Only the first 6 characters are sent to the banking network. | |
recipientAccountNumber | Optional | String Max = 25 | This is the recipient‘s account number, e.g., a loan agreement number or customer ID. In the case where the recipient account is a prepaid card, the card number may be sent in full. NOTE: Only the first 6 and last 4 characters are sent to the banking network and will be masked accordingly within the back office and any other reports, to comply with PCI regulations. |
addendumData tag/value pairs
Not all processing gateways support all addendumData tag/value pairs. Contact your account manager for more information.
The following table contains the tag/value pairs supported for the addendumData element.
Tag | Value |
---|---|
CUST_ACCT_OPEN_DATE | This is the date the merchant account opened. Format = yyyymmdd |
CUSTOMER_ID | This is an ID used by the merchant. Maximum of 64 numeric characters. |
CUSTOMER_SESSION_ID | This string is used to initiate a lookup call with a device profiler. It must be the same string you use as the session identifier in the profiling JavaScript on the HTML page you present to your customer for device profiling. Accepted characters are: [a-z][A-Z][_][-] |
KEYWORD | This value can be any text the merchant wants to use, e.g., used for reporting purposes in the Paysafe merchant back office. For example, you can use this as a tag to identify the transaction or the product purchased at your site. • Maximum of 255 alphanumeric characters. • Can be specified more than once, with a different value each time. • Valid for CCAuthRequestV1 and CCStoredDataRequestV1 objects. |
MERCHANT_COUNTRY_CODE | This is a two-character country code. Value is not validated. |
MERCHANT_SIC_CODE | This is the ISO Standard Industry Code (SIC) for the merchant. This is a 4-character numerical string. |
MERCHANT_ZIP_CODE | Maximum of 10 alphanumeric characters. |
PRODUCT_TYPE | This is the type of product purchased. Possible values are: • P – Physical goods • D – Digital goods • C – Digital content • G – Gift certificate/digital cash • S – Shareware • M – Digital and physical • R – Account replenish (e.g., subscription renewal) |
PRODUCT_CODE | This is the product code of the item purchased. Maximum of 18 alphanumeric characters. |
SERVICE_REQUEST_CURRENCY NOTE: This tag/value pair can be included with the ccAuthRequestV1 document object only (i.e., for Authorization, Purchase, and Verification card transaction requests). | Include this tag/value pair in order to have the merchant account’s currency returned in the transaction response. Possible values: • on • off |
USER_DATA_04 | This is a user-defined field. Maximum of 255 alphanumeric characters. |
USER_DATA_05 | This is a user-defined field. Maximum of 255 alphanumeric characters. |
USER_DATA_06 | This is a user-defined field. Maximum of 255 alphanumeric characters. |
Building Authorization Reversal requests
Authorization Reversal requests allow you to reverse all or part of an existing authorization, provided no settlements (either full or partial) have been processed against that authorization.
You can use Authorization Reversal transactions to reverse Authorizations only. You cannot reverse Purchase transactions.
Authorization Reversal requests require the ccAuthReversalRequestV1 document object. This section describes the structure of a ccAuthReversalRequestV1 and how to construct one.
Authorization Reversal example – C#
The following is an Authorization Reversal example in C#.
//Prepare the call to the Credit Card Web Service
CCAuthReversalRequestV1 authReversalRequest = new CCAuthReversalRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
authReversalRequest.merchantAccount = merchantAccount;
authReversalRequest.confirmationNumber = "115147689";
authReversalRequest.merchantRefNum = "AR2";
authReversalRequest.reversalAmount = "18.00";
// Perform the Web Services call for the Auth Reversal
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccAuthorizeReversal(authReversalRequest);
// Print out the result
String responseTxt = ccTxnResponse.confirmationNumber + " - " + ccTxnResponse.code + " - " + ccTxnResponse.decision + " - " + ccTxnResponse.description;
responseTxt += Environment.NewLine;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " + ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
consoleTextBox.Text = responseTxt;
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " + ccTxnResponse.decision);
}
ccAuthReversalRequestV1 schema
A ccAuthReversalRequestV1 has the following structure:
ccAuthReversalRequestV1 elements
The ccAuthReversalRequestV1 document object contains the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 80 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
confirmationNumber | Yes | String Max = 15 | This is the confirmation number returned by Paysafe for the Authorization you want to reverse. | |
merchantRefNum | Yes | String Max = 255 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
reversalAmount | Optional | String Max= | This is amount of the original authorization that you want to reverse. If you omit this element, the full amount of the original authorization will be reversed. NOTE: Not all processing gateways support partial authorization reversals. Contact your account manager for more information. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. | |
geoLocation | Optional | This is the geographical location of the mobile transaction. | ||
latitude | Conditional | String Max = 24 | This is the latitude of the mobile transaction (e.g., 44.903889). | |
longitude | Conditional | String Max = 24 | This is the longitude of the mobile transaction (e.g., -77.255123). |
Building Settlement/Credit requests
Settlement and Credit requests require the ccPostAuthRequestV1 document object. This section describes the structure of a ccPostAuthRequestV1 and how to construct one.
Settlement example – C#
The following is a Settlement example in C#.
To make this a Credit request, just modify the value “ccSettlement” – in the line “CCTxnResponseV1 ccTxnResponse = ccService.ccSettlement(ccPostAuthRequest);” below – to “ccCredit”.
//Prepare the call to the Credit Card Web Service
CCPostAuthRequestV1 ccPostAuthRequest = new CCPostAuthRequestV1();
ccPostAuthRequest.confirmationNumber = "123456";
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID= "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ccPostAuthRequest.merchantAccount = merchantAccount;
ccPostAuthRequest.merchantRefNum = "Ref-12345";
ccPostAuthRequest.amount = "10.00";
// Perform the Web Service call for the Settlement
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccSettlement(ccPostAuthRequest);
// Print out the result
String responseTxt = ccTxnResponse.code + " - " + ccTxnResponse.decision +
" - " + ccTxnResponse.description ;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
ccPostAuthRequestV1 schema
A ccPostAuthRequestV1 document object has the following structure:
ccPostAuthRequestV1 elements
The ccPostAuthRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
confirmationNumber | Yes | String Max = 15 | This is the confirmation number returned by Paysafe for the original request. | |
merchantRefNum | Yes | String Max = 40 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
amount | Optional | String Max= | This is amount of the transaction request. You can Settle all or part of an Authorization. You can Credit all or part of a Settlement. | |
origMerchantTxn | Conditional | String Max = 255 | This is the merchant transaction ID from a Settlement that was processed via the Direct Payment API and that is now being credited via the Web Services API. | |
dupeCheck | Optional | Boolean | This validates that this request is not a duplicate. A request is considered a duplicate if the cardNum, amount, and merchantRefNum are the same. | |
sdk | version | Conditional | String Max = 20 | This is the version of the SDK used, if any. Required if sdk element is provided. |
platform | Conditional | String Max = 10 | This is the integration language of the SDK used (e.g., Java, .NET). Required if sdk element is provided. | |
provider | Conditional | String Max = 20 | This is the author of the SDK used. Set to value “op” when the SDK is provided by Paysafe. Required if sdk element is provided. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. | |
geoLocation | Optional | This is the geographical location of the mobile transaction. | ||
latitude | Conditional | String Max = 24 | This is the latitude of the mobile transaction (e.g., 44.903889). | |
longitude | Conditional | String Max = 24 | This is the longitude of the mobile transaction (e.g., -77.255123). | |
accordD NOTE: Include this element only when instructed to do so by Paysafe. It cannot be used for credit requests. | Optional | You can include the accordD element only if you have already provided it in the authorization request you are now settling and you want to change one or more of the terms specified in the child elements. | ||
financingType | Conditional | Enumeration | This is the type of financing offered. Possible values are: • D – Deferred payment financing • E – Equal payment financing | |
plan | Conditional | String Max = 3 | This is the plan number for this financing transaction. | |
gracePeriod | Optional | Integer Max = 2 | This is the grace period, in months, associated with deferred payment transactions. | |
term | Optional | Integer Max = 2 | This is the number of payments, in months, for equal payment transactions. |
Building Stored Data Requests
Stored Data Authorization/Purchase requests require the ccStoredDataRequestV1 document object. This section describes the structure of a ccStoredDataRequestV1 and how to construct one.
Stored Data requests allow you to perform credit card Authorizations and Purchases by providing a minimum of customer information. The Stored Data request requires a Confirmation Number from a previous Authorization or Purchase.
The Confirmation Number can be a maximum of 24 months old.
This Confirmation Number allows Paysafe to access from its database most of the data required for the transaction.
If you are processing a Stored Data request using a Confirmation Number from a transaction that included the visaAdditionalAuthData element , then this information will be included in the new request. However, if you add the visaAdditionalAuthData element separately to the new Stored Data request, it will overwrite any similar data associated with the Confirmation Number, for that request only.
Stored Data Authorization example – C#
The following is a Stored Data Authorization example in C#.
To make this a Stored Data Purchase request, just modify the value “ccStoredDataAuthorize” – in the line “CCTxnResponseV1 ccTxnResponse = ccService.ccStoredDataAuthorize(ccStoredDataRequest);” below – to “ccStoredDataPurchase”.
//Prepare the call to the Credit Card Web Service
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
CCStoredDataRequestV1 ccStoredDataRequest = new CCStoredDataRequestV1();
ccStoredDataRequest.confirmationNumber = "111374429";
ccStoredDataRequest.amount = "97.97";
ccStoredDataRequest.merchantRefNum = "jim55";
ccStoredDataRequest.merchantAccount = merchantAccount;
// Perform the Web Service call for the Stored Data Transaction
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccStoredDataAuthorize(ccStoredDataRequest);
String responseTxt = "";
// Print out the result
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
ccStoredDataRequestV1 schema
A ccStoredDataRequestV1 document object has the following structure:
ccStoredDataRequestV1 elements
The ccStoredDataRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Required | String Max = 10 | This is the merchant account number. |
storeID | Required | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Required | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
merchantRefNum | Required | String Max = 255 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
confirmationNumber | Required | String Max = 15 | This is the confirmation number returned by Paysafe for the original request. NOTE: The confirmationNumber can be a maximum of 24 months old. | |
amount | Required | String Max= | This is amount of the transaction request. | |
cardExpiry | month | Optional | Int Max = 2 | This is the month the credit card expires. Use this element to include updated card expiry date information, if required, to be included with the rest of the transaction data. |
year | Optional | Int Length = 4 | This is the year the credit card expires. Use this element to include updated card expiry date information, if required, to be included with the rest of the transaction data. | |
cvdIndicator | Optional | Integer Length = 1 | This is the status of CVD value information. • 0 – The customer did not provide a value. • 1 – The customer provided a value. • 2 – The value is illegible. • 3 – The value is not on the card. | |
cvd | Conditional | String Length = 3 or 4 | The 3- or 4-digit security code that appears on the card following the card number. This code does not appear on imprints. When you provide the CVD for a Stored Data request, the transaction benefits from full CVD protection. However, you must never store the CVD information, but instead have the consumer pass it in with the request. NOTE: The cvd element is mandatory when the cvdIndicator element value = 1. | |
storedCredential | Optional | The storedCredential element is used to identify stored data requests that use credit card information stored by Paysafe. In this case, it would be card information associated with a confirmation number returned in the response to a previously successful authorization. | ||
type | Optional | Enumeration | This specifies the type of request being made. Possible values are: • ADHOC – Ad hoc consumer-initiated request • TOPUP – Unscheduled merchant-initiated request when a consumer balance is below a set limit • RECURRING – Scheduled, merchant-initiated recurring request NOTE: Default value is ADHOC. | |
occurrence | Optional | Enumeration | This specifies whether this stored credential request is initial or recurring. Possible values are: • INITIAL – Used when this is the first time the consumer uses this credit card • SUBSEQUENT – Used when the consumer uses this credit card for subsequent requests NOTE: Default value is SUBSEQUENT. The card cvd value is required when this is set to INITIAL. | |
merchantDescriptor NOTE: Not all processing gateways support this parameter. Contact your account manager for more information. | dynamicDescriptor | Optional | String Max = 25 | This is a merchant descriptor that will be displayed on a customer’s credit card statement. |
phone | Optional | String Max = 13 | This is the merchant’s phone number, which will be appended to the merchant descriptor on a customer’s credit card statement. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. |
Building Cancel requests
Use the ccCancelRequestV1 document object to cancel Settle, Credit, Payment, and Independent Credit transactions. This section describes the structure of a ccCancelRequestV1 and how to construct one.
Cancel Settle example – C#
The following is a Cancel Settle example in C#.
To make this a request to cancel a Credit, Payment, or an Independent Credit, just modify the value “ccCancelSettle” – in the line “CCTxnResponseV1 ccTxnResponse = ccService.ccCancelSettle(ccCancelRequest);” below – to “ccCancelCredit”, “ccCancelPayment”, or “ccCancelIndependentCredit”, respectively.
//Prepare the call to the Credit Card Web Service
CCCancelRequestV1 ccCancelRequest = new CCCancelRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID= "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ccCancelRequest.merchantAccount = merchantAccount;
ccCancelRequest.confirmationNumber = "123456";
// Perform the Web Services call for the cancel settle
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccCancelSettle(ccCancelRequest);
// Print out the result
String responseTxt = ccTxnResponse.code + " - " + ccTxnResponse.decision +
" - " + ccTxnResponse.description ;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
ccCancelRequestV1 schema
A ccCancelRequestV1 document object has the following structure:
ccCancelRequestV1 elements
The ccCancelRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
confirmationNumber | Yes | String Max = 15 | This is the confirmation number returned by Paysafe for the original Settlement or Credit request. | |
sdk | version | Conditional | String Max = 20 | This is the version of the SDK used, if any. Required if sdk element is provided. |
platform | Conditional | String Max = 10 | This is the integration language of the SDK used (e.g., Java, .NET). Required if sdk element is provided. | |
provider | Conditional | String Max = 20 | This is the author of the SDK used. Set to value “op” when the SDK is provided by Paysafe. Required if sdk element is provided. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. | |
geoLocation | Optional | This is the geographical location of the mobile transaction. | ||
latitude | Conditional | String Max = 24 | This is the latitude of the mobile transaction (e.g., 44.903889). | |
longitude | Conditional | String Max = 24 | This is the longitude of the mobile transaction (e.g., -77.255123). |
Building Payment/Independent Credit requests
Payments and Independent Credits require the ccPaymentRequestV1 document object. This section describes the structure of a ccPaymentRequestV1 and how to construct one.
Payment example – C#
All optional elements that take non-nullable data types (e.g., int or enum) must have their specified attribute set to true when setting values for those elements. See the cardType element in the example below.
The following is a Payment example in C#.
To make this an Independent Credit request, just modify the value “ccPayment” – in the line “CCTxnResponseV1 ccTxnResponse = ccService.ccPayment(ccPaymentRequest);” below – to “ccIndependentCredit”.
//Prepare the call to the Credit Card Web Service
CCPaymentRequestV1 ccPaymentRequest = new CCPaymentRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ccPaymentRequest.merchantAccount = merchantAccount;
ccPaymentRequest.merchantRefNum = "Ref-12345";
ccPaymentRequest.amount = "10.00";
CardV1 card = new CardV1();
card.cardNum = "4653111111111111";
CardExpiryV1 cardExpiry = new CardExpiryV1();
cardExpiry.month = 11;
cardExpiry.year = 2006;
card.cardExpiry = cardExpiry;
card.cardType = CardTypeV1.VI;
card.cardTypeSpecified = true;
card.cvdIndicator = 1;
card.cvdIndicatorSpecified = true;
card.cvd = "111";
ccPaymentRequest.card = card;
BillingDetailsV1 billingDetails = new BillingDetailsV1();
billingDetails.cardPayMethod = CardPayMethodV1.WEB; //WEB = Card Number Provided
billingDetails.cardPayMethodSpecified = true;
billingDetails.firstName = "Jane";
billingDetails.lastName = "Jones";
billingDetails.street = "123 Main Street";
billingDetails.city = "LA";
billingDetails.Item = (object)StateV1.CA; // California
billingDetails.country = CountryV1.US; // United States
billingDetails.countrySpecified = true;
billingDetails.zip = "90210";
billingDetails.phone = "555-555-5555";
billingDetails.email = "janejones@emailserver.com";
ccPaymentRequest.billingDetails = billingDetails;
// Perform the Web Services call for the payment request
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccPayment(ccPaymentRequest);
// Print out the result
String responseTxt ccTxnResponse.code + " - " + ccTxnResponse.decision + " - "
+ ccTxnResponse.description ;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
}
catch (WebException we)
{
consoleTextBox.Text += we.Message.ToString();
consoleTextBox.Refresh();
}
ccPaymentRequestV1 schema
A ccPaymentRequestV1 has the following structure:
ccPaymentRequestV1 elements
The ccPaymentRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 80 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
merchantRefNum | Yes | String Max = 40 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
customerTokenId | For internal use only. | |||
amount | Yes | String | This is amount of the transaction request. The amount maximum is configured on a merchant-by-merchant basis. It applies to each transaction and to the daily maximum per credit card. Contact your account manager for details. | |
card | cardNum | Yes | String Min = 8 Max = 20 | This is the card number used for the transaction. |
cardExpiry | Yes | The cardExpiry child element has two further child elements – month and year. | ||
Child Element of cardExpiry | ||||
month | Yes | Int Max = 2 | This is the month the credit card expires. | |
year | Yes | Int Length = 4 | This is the year the credit card expires. | |
cardType | Optional | Enumeration | This is the type of card used for the transaction. Possible values are: • AM – American Express • DC – Diners Club • DI – Discover • JC – JCB • MC – Mastercard • MD – Maestro • SO – Solo • VD – Visa Debit • VE – Visa Electron • VI – Visa | |
issueNum | Optional | Integer Max = 2 | The 1- or 2-digit number located on the front of the card, following the card number. NOTE: The issueNum element can be used only when the cardType is MD (Maestro), or SO (Solo). | |
cvdIndicator | Optional | Integer Length = 1 | This is the status of CVD value information. • 0 – The customer did not provide a value. • 1 – The customer provided a value. • 2 – The value is illegible. • 3 – The value is not on the card. NOTE: Even though this element is optional, it is required for several risk-related checks and we strongly advise you to include it to avoid failed transactions. | |
cvd | Conditional | String Length = 3 or 4 | The 3- or 4-digit security code that appears on the card following the card number. This code does not appear on imprints. NOTE: The cvd element is mandatory when the cvdIndicator element value = 1. | |
billingDetails | cardPayMethod | For internal use only. | ||
firstName | Optional | String Max = 40 | This is the customer’s first name. | |
lastName | Optional | String Max = 40 | This is the customer’s last name. | |
street | Optional | String Max = 50 | This is the first line of the customer’s street address. | |
street2 | Optional | String Max = 50 | This is the second line of the customer’s street address. | |
city | Optional | String Max = 40 | This is the city in which the customer resides. | |
state/region | Optional | If state, If region, then string | This is the state/province/region in which the customer resides. Provide state if within U.S./Canada. Provide region if outside of U.S./Canada. | |
country | Optional | Enumeration | This is the country in which the customer resides. | |
zip | Mandatory | String Max = 10 | This is the customer’s ZIP code if in the U.S.; otherwise, this is the customer’s postal code. | |
phone | Optional | String Max = 40 | This is the customer’s telephone number. | |
Optional | String Max = 100 | This is the customer’s email address. | ||
sdk | version | Conditional | String Max = 20 | This is the version of the SDK used, if any. Required if sdk element is provided. |
platform | Conditional | String Max = 10 | This is the integration language of the SDK used (e.g., Java, .NET). Required if sdk element is provided. | |
provider | Conditional | String Max = 20 | This is the author of the SDK used. Set to value “op” when the SDK is provided by Paysafe. Required if sdk element is provided. | |
authcode | Optional | String Max = 50 | This is the Authorization code assigned by the issuing bank and returned by Paysafe for a previous transaction. NOTE: Include this element only when instructed to do so by Paysafe. | |
previousConfirmationNumber | Optional | String Max = 20 | This is the confirmation number of a previously processed authorization. NOTE: Include this element only when instructed to do so by Paysafe. | |
addendumData | tag | Optional | String Max = 30 | This is additional data that can be included with the transaction request. |
value | Optional | String Max = 1024 | This is additional data that can be included with the transaction request. |
Building Transaction Lookup requests
The credit card Transaction Lookup request allows you to run a report, over a date range you specify, to return data for credit card transactions processed through your merchant account. For example, you might want to determine the result of a transaction that timed out, with no response returned, or the result of a batched transaction that gets declined at a later date.
You can look up the following transaction types:
- Authorization
- Purchase
- Settlement
- Credit
- Payment/Independent Credit
Transaction Lookup example – C#
The following is a ccTxnLookupRequest example in C#.
// Prepare the call to the Credit Card Web Service
CCTxnLookupRequestV1 ccTxnLookupRequest = new CCTxnLookupRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
ccTxnLookupRequest.merchantAccount = merchantAccount;
ccTxnLookupRequest.merchantRefNum = "123456789";
DateV1 startDate = new DateV1();
startDate.year = "2012";
startDate.month = "08";
startDate.day = "15";
startDate.hour = "11";
startDate.minute = "00";
startDate.second = "00";
ccTxnLookupRequest.startDate = startDate;
DateV1 endDate = new DateV1();
endDate.year = "2012";
endDate.month = "08";
endDate.day = "15";
endDate.hour = "14";
endDate.minute = "00";
endDate.second = "00";
ccTxnLookupRequest.endDate = endDate;
//Perform the Web Services call to process the request
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccTxnLookup(ccTxnLookupRequest);
// Print out the result
String responseTxt = ccTxnResponse.code + " - " + ccTxnResponse.decision;
responseTxt += "Transactions:" + Environment.NewLine;
if (ccTxnResponse.transaction != null)
{
for (int i = 0; i < ccTxnResponse.txnLookupResult.length; i++)
{
responseTxt += " - confirmationNumber: " +
ccTxnResponse.txnLookupResult[i].confirmationNumber + Environment.NewLine;
responseTxt += " - decison: " +
ccTxnResponse.txnLookupResult[i].decision + Environment.NewLine;
responseTxt += " - code: " +
ccTxnResponse.txnLookupResult[i].code + Environment.NewLine;
responseTxt += " - transaction type: " +
ccTxnResponse.txnLookupResult[i].tranType + Environment.NewLine;
responseTxt += " - transaction time: " +
ccTxnResponse.txnLookupResult[i].txnTime + Environment.NewLine;
responseTxt += " - merchantRefNum: " +
ccTxnResponse.txnLookupResult[i].merchantRefNum + Environment.NewLine;
responseTxt += " - card ending: " +
ccTxnResponse.txnLookupResult[i].cardEnding + Environment.NewLine;
responseTxt += " - card ending: " +
ccTxnResponse.txnLookupResult[i].cardEnding + Environment.NewLine;
CardExpiryV1 expiry = ccTxnResponse.txnLookupResult[i].cardExpiry;
responseTxt += " - card expiry: " +
expiry.month + "/" + expiry.year + Environment.NewLine;
responseTxt += Environment.NewLine + Environment.NewLine;
}
System.Console.WriteLine(responseTxt);
}
ccTxnLookupRequestV1 schema
A ccTxnLookupRequestV1 has the following structure:
ccTxnLookupRequestV1 elements
The ccTxnLookupRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
confirmationNumber | Optional | String Max = 15 | This is the confirmation number returned by Paysafe in response to the original request. Include this element only if you want to search using this field. This field takes precedence over the merchantRefNum field. NOTE: If you include this element, you do not have to specify the startDate or endDate elements. | |
netbanxReference | Optional | String Max = 18 | This is a transaction ID used to identify certain legacy transactions. NOTE: If you include this element, you must specify the startDate and endDate elements. | |
merchantRefNum | Optional | String Max = 255 | This is a unique ID number associated with the original request. The value is created by the merchant and submitted as part of the request. NOTE: If you include this element, you must specify the startDate and endDate elements. | |
startDate | year | Conditional | Int Max = 9999 | This is the year set for the search start. |
month | Conditional | Int Min = 1 Max = 12 | This is the month set for the search start. | |
day | Conditional | Int Min = 1 Max = 31 | This is the day set for the search start. | |
hour | Conditional | Int Min = 0 Max = 23 | This is the hour set for the search start. | |
minute | Conditional | Int Min = 0 Max = 59 | This is the minute set for the search start. | |
second | Conditional | Int Min = 0 Max = 59 | This is the second set for the search start. | |
endDate | year | Conditional | Int Max = 9999 | This is the year set for the search end. |
month | Conditional | Int Min = 1 Max = 12 | This is the month set for the search end. | |
day | Conditional | Int Min = 1 Max = 31 | This is the day set for the search end. | |
hour | Conditional | Int Min = 0 Max = 23 | This is the hour set for the search end. | |
minute | Conditional | Int Min = 0 Max = 59 | This is the minute set for the search end. | |
second | Conditional | Int Min = 0 Max = 59 | This is the second set for the search end. |
Building Enrollment Lookup requests
Use the Enrollment Lookup request to determine whether a cardholder’s credit card is enrolled in the 3D Secure program. Enrollment Lookup requests require the ccEnrollmentLookupRequestV1 document object. This section describes the structure of a ccEnrollmentLookupRequestV1 and how to construct one.
This operation is supported only for 3D Secure 1.0.2.
See here for information about using 3D Secure 2.
Enrollment Lookup example – C#
The following is an Enrollment Lookup example in C#.
All optional elements that take non-nullable data types (e.g., int or enum) must have their specified attribute set to true when setting values for those elements. See the cardType element in the example below.
//Prepare the call to the Credit Card Web Service
CCEnrollmentLookupRequestV1 enrollmentLookupRequest = new CCEnrollmentLookupRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
enrollmentLookupRequest.merchantAccount = merchantAccount;
enrollmentLookupRequest.merchantRefNum = "Ref-12345";
enrollmentLookupRequest.amount = "97.97";
CardV1 card = new CardV1();
card.cardNum = "4653111111111111";
CardExpiryV1 cardExpiry = new CardExpiryV1();
cardExpiry.month = 11;
cardExpiry.year = 2013;
card.cardExpiry = cardExpiry;
card.cardType = CardTypeV1.VI;
card.cardTypeSpecified = true;
enrollmentLookupRequest.card = card;
// Perform the Web Services call for the TDS Enrollment Lookup
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccTDSLookup(enrollmentLookupRequest);
// Print out the result
String responseTxt = ccTxnResponse.confirmationNumber + " - " + ccTxnResponse.code + " - " + ccTxnResponse.decision + " - " + ccTxnResponse.description;
responseTxt += Environment.NewLine;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " + ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt += "TDSResponse:" + Environment.NewLine;
if (ccTxnResponse.tdsResponse != null)
{
responseTxt += " - " + ccTxnResponse.tdsResponse.acsURL + Environment.NewLine;
responseTxt += " - " + ccTxnResponse.tdsResponse.paymentRequest + Environment.NewLine;
responseTxt += " - " + ccTxnResponse.tdsResponse.enrollmentStatus + Environment.NewLine;
responseTxt += " - " + ccTxnResponse.tdsResponse.eci + Environment.NewLine;
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
consoleTextBox.Text = responseTxt;
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " + ccTxnResponse.decision);
}
ccEnrollmentLookupRequestV1 schema
A ccEnrollmentLookupRequestV1 has the following structure:
ccEnrollmentLookupRequestV1 elements
The ccEnrollmentLookupRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
merchantRefNum | Yes | String Max = 255 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. | |
amount | Yes | String Max= | This is amount of the transaction request. NOTE: Though the amount element is mandatory for the Enrollment Lookup transaction, no amount is actually processed against the credit card. | |
card | cardNum | Yes | String Min = 8 Max = 20 | This is the card number used for the transaction. |
cardExpiry | Yes | The cardExpiry child element has two further child elements – month and year. | ||
Child Element of cardExpiry | ||||
month | Yes | Int Max = 2 | This is the month the credit card expires. | |
year | Yes | Int Length = 4 | This is the year the credit card expires. | |
cardType | Optional | Enumeration | This is the type of card used for the transaction. Possible values are: • JC – JCB • MC – Mastercard • VI – Visa | |
issueNum | Optional | Integer Max = 2 | The 1- or 2-digit number located on the front of the card, following the card number. NOTE: The issueNum element is not used for this request type. | |
cvdIndicator | Optional | Integer Length = 1 | This is the status of CVD value information. • 0 – The customer did not provide a value. • 1 – The customer provided a value. • 2 – The value is illegible. • 3 – The value is not on the card. NOTE: the cvdIndicator element is not used for this request type. | |
cvd | Conditional | String Length = 3 or 4 | The 3- or 4-digit security code that appears on the card following the card number. This code does not appear on imprints. NOTE: The cvd element is not used for this request type. |
Building Authentication requests
Use the Authentication request to allow a cardholder to authenticate their card at the issuer and to retrieve the values required for the authentication element of a ccAuthRequestV1 transaction. Authentication requests require the ccAuthenticateRequestV1 document object. This section describes the structure of a ccAuthenticateRequestV1 and how to construct one.
This operation is supported only for 3D Secure 1.0.2.
See here for information about using 3D Secure 2.
Authentication example – C#
The following is an Authentication example in C#.
//Prepare the call to the Credit Card Web Service
CCAuthenticateRequestV1 authenticateRequest = new CCAuthenticateRequestV1();
MerchantAccountV1 merchantAccount = new MerchantAccountV1();
merchantAccount.accountNum = "12345678";
merchantAccount.storeID = "myStoreID";
merchantAccount.storePwd = "myStorePWD";
authenticateRequest.merchantAccount = merchantAccount;
authenticateRequest.confirmationNumber = "myConfirmationNumber";
authenticateRequest.paymentResponse = "myPaymentResponse";
// Perform the Web Services call for the authentication
CreditCardServiceV1 ccService = new CreditCardServiceV1();
CCTxnResponseV1 ccTxnResponse = ccService.ccTDSAuthenticate(authenticateRequest);
// Print out the result
String responseTxt = ccTxnResponse.confirmationNumber + " - " +
ccTxnResponse.code + " - " + ccTxnResponse.decision + " - " +
ccTxnResponse.description;
responseTxt += Environment.NewLine;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
consoleTextBox.Text = responseTxt;
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
}
ccAuthenticateRequestV1 schema
A ccAuthenticateRequestV1 has the following structure:
ccAuthenticateRequestV1 elements
The ccAuthenticateRequestV1 document object may contain the following elements:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
merchantAccount | accountNum | Yes | String Max = 10 | This is the merchant account number. |
storeID | Yes | String Max = 20 | This is the Paysafe store identifier, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
storePwd | Yes | String Max = 20 | This is the Paysafe store password, used to authenticate the request. It is defined by Paysafe and provided to the merchant as part of the integration process. | |
confirmationNumber | Yes | String Max = 15 | This is the confirmation number in the ccTxnResponseV1 returned by Paysafe in response to the ccEnrollmentLookupRequestV1. | |
paymentResponse | Yes | String | This is the Payment Authentication Response that is returned from the issuing bank via your customer’s Web browser once your customer has provided their authentication information. It is an encoded response generated by the Issuer ACS software. Its digital signature will be verified through Paysafe to ensure it was generated by a legitimate Issuer. | |
merchantRefNum | Optional | String Max = 255 | This is a unique ID number associated with each request. The value is created by the merchant and submitted as part of the request. |
The following elements are relevant for a ccTxnResponseV1:
Element | Child Element | Required | Type | Description |
---|---|---|---|---|
confirmationNumber | Yes | String Max = 15 | This is the confirmation number returned by Paysafe. | |
merchantRefNum | Optional | String Max = 255 | This is a unique ID number that was created by the merchant and submitted as part of the request. | |
childAccountNum | Optional | String Max = 10 | This is the child merchant account number, and provided only if the transaction was processed via a master account. | |
decision | Yes | Enumeration | This is the status of the transaction. One of the following is returned: • Accepted – the transaction was processed. • Error – the transaction was attempted, but failed for some reason. • Declined – the transaction was declined before it was sent for processing. • Held – the transaction has been placed on hold due to risk considerations. | |
code | Yes | Int | This is a numeric code that categorizes the response. | |
actionCode | Optional | Enumeration | This indicates what action the caller should take. Possible values are: • C – Consumer Parameter Error. The consumer has provided incorrect information. Ask the customer to correct the information. • D – Do Not Retry. Further attempts will fail. • M – Merchant Parameter Error. Your application has provided incorrect information. Verify your information. • R – Retry. The problem is temporary. Retrying the request will likely succeed. | |
description | Yes | String Max = 1024 | This is a human readable description of the code element. | |
authCode | Optional | String Max = 20 | This is the Authorization code assigned by the issuing bank and returned by Paysafe. | |
avsResponse | Optional | Enumeration | This is the AVS response from the card issuer. Possible values are: • X – Exact. Nine-digit zip code and address match. • Y – Yes. Five-digit zip code and address match. • A – Address matches, but zip code does not. • W – Nine-digit zip code matches, but address does not. • Z – Five-digit zip code matches, but address does not. • N – No part of the address matches. • U – Address information is unavailable. • R – Retry. System unable to process. • S – AVS not supported. • E – AVS not supported for this industry. • B – AVS not performed. • Q – Unknown response from issuer/banknet switch. | |
cvdResponse | Optional | Enumeration | This is the response to the cvdValue submitted with the transaction request. Possible values are: • M (Match) – The CVD value provided matches the CVD value associated with the card. • N (No Match) – The CVD value provided does not match the CVD value associated with the card. • P (Not Processed) – The CVD value was not processed. • Q (Unknown Response) – No results were received concerning the CVD value. • S (Not Present) – CVD should be on the card. However, the cardholder indicated it was not present. • U – Issuer is not certified and/or has not provided Visa encryption keys. | |
detail | tag | Optional | String Max = 30 | This is the tag/value pair returned as part of the detail element. |
value | Optional | String Max = 1024 | ||
txnTime | Yes | dateTime | This is the date and time the transaction was processed by Paysafe. | |
duplicateFound | Yes | Boolean | This indicates if this transaction is a duplicate transaction, if a duplicate check was requested. | |
duplicateTransactionResponse | Optional | CCTxnResponseV1 | If a duplicate record was found, this element contains the details of that record. | |
tdsResponse This element and its child elements are returned only in response to the ccEnrollmentLookupRequestV1 transaction request. | acsURL | Optional | String Max = 255 | This is a fully qualified URL to redirect the consumer to complete the Payment Authentication Request transaction. |
paymentRequest | Optional | String | This is an encoded Payment Authentication Request generated by the merchant authentication processing system (MAPS). | |
enrollmentStatus | Yes | Enumeration | This indicates whether or not the cardholder is enrolled in 3-D Secure. Possible values are: • Y – Authentication available • N – Cardholder not enrolled • U – Authentication unavailable • E – Error | |
eci | Optional | Enumeration | Visa/JCB • 05 – Identifies a successfully authenticated transaction. • 06 – Identifies an attempted authenticated transaction. • 07 – Identifies a non-authenticated transaction. Mastercard • 01 – Identifies a non-authenticated transaction. • 02 – Identifies a successfully authenticated transaction. If the cardholder is not enrolled in 3D Secure, you can use this E-Commerce Indicator value for the indicator child element of the authentication element in your ccAuthRequestV1 Authorization/Purchase request. However, if the cardholder is enrolled in 3D Secure, use the eci value in the tdsAuthenticateResponse element below. | |
tdsAuthenticateResponse This element and its child elements are returned only in response to the ccAuthenticateRequestV1 transaction request. | status | Yes | Enumeration | This indicates the outcome of the authentication request. • Y – Cardholder successfully authenticated with their Card Issuer. • A – Cardholder authentication was attempted. • N – Cardholder failed to successfully authenticate with their Card Issuer. • U – Authentication with the Card Issuer was unavailable. • E – Error |
cavv | Optional | String Max = 80 | This is the Cardholder Authentication Verification Value returned by the card issuer. Use this value for the indicator child element of the authentication element in a ccAuthRequestV1. | |
signature | Yes | Enumeration | This indicates whether the paymentResponse element that was submitted with the Authentication request passed integrity checks. • Y – All transaction and signature checks satisfied • N – At least one transaction or signature check failed. | |
xid | Optional | String Max = 80 | This is the transaction identifier returned in response to a ccAuthenticateRequestV1 Authentication request. | |
eci | Optional | Enumeration | Use this E-Commerce Indicator value for the indicator child element of the authentication element in your ccAuthRequestV1 Authorization/Purchase request. Visa/JCB • 05 – Identifies a successfully authenticated transaction. • 06 – Identifies an attempted authenticated transaction. • 07 – Identifies a non-authenticated transaction. Mastercard • 01 – Identifies a non-authenticated transaction. • 02 – Identifies a successfully authenticated transaction. | |
lbCascading | Optional | This element provides information on transactions that were retried due to load balancing. | ||
retryCount | Conditional | Int | This is the number of times Paysafe retried the transaction. | |
originalCode | Conditional | Int | The original response code returned by the system that caused Paysafe to retry the transaction. | |
addendumResponse | Optional | This element allows Paysafe to return certain gateway-specific response values to the merchant. | ||
service | Conditional | String Max = 50 | This is the service provider who provides the values for the tag/value pair. | |
detail | Conditional | There may be multiple detail elements, if required. | ||
Child Element of detail | ||||
tag | Conditional | String Max = 30 | This is the tag/value pair returned as part of the addendumResponse. | |
value | Conditional | String Max = 30 | ||
amount | Optional | String Max= | This is amount of the transaction request. | |
tranType NOTE: The tranType element is returned only in response to a ccTxnLookupRequestV1. | Optional | Enumeration | This is the type of transaction that was looked up. Possible values are: • A – Authorization • S – Settlement • P – Purchase • CR – Credit • PY – Payment • N – Independent Credit | |
cardEnding NOTE: The cardEnding element is returned only in response to a ccTxnLookupRequestV1. | Optional | String Max = 4 | This is the last four digits of the card associated with this transaction. | |
cardExpiry NOTE: The cardExpiry element is returned only in response to a ccTxnLookupRequestV1. | Optional | |||
month | Conditional | Int Max = 2 | This is the month the credit card expires. | |
year | Conditional | Int Length = 4 | This is the year the credit card expires. | |
netbanxReference NOTE: The netbanxReference element is returned only in response to a ccTxnLookupRequestV1. | Optional | String Max = 18 | This is a transaction ID that identifies certain legacy transactions. | |
txnLookupResult NOTE: The txnLookupResult element is returned only in response to a ccTxnLookupRequestV1. | Conditional | This contains all the elements contained in the standard ccTxnResponseV1 that would have been returned for the initial request, in addition to the elements in this table that are identified as being returned only in response to a ccTxnLookupRequestV1 (e.g., tranType). | ||
profile | id | Optional | String Max = 50 | This is an internal ID returned in the response to the profile request, used to identify a customer. |
card | Conditional | |||
Child Element of card | ||||
id | Conditional | String Max = 50 | This is the card ID returned by Paysafe to identify the profile card. | |
lastFourDigits | Conditional | Integer | This is the last 4 digits of the card number associated with the profile. | |
paymentToken | Conditional | String Max = 50 | This is a token generated by Paysafe that represents the card. |
To process the response:
-
Get the response details, which are available via get() methods of the response.
String responseTxt = ccTxnResponse.code + " - " + ccTxnResponse.decision +
" - " + ccTxnResponse.description ;
responseTxt += "Details:" + Environment.NewLine;
if (ccTxnResponse.detail != null)
{
for (int i = 0; i < ccTxnResponse.detail.Length; i++)
{
responseTxt += " - " + ccTxnResponse.detail[i].tag + " - " +
ccTxnResponse.detail[i].value + Environment.NewLine;
}
}
responseTxt = responseTxt.Replace("\n", Environment.NewLine);
System.Console.WriteLine(responseTxt);
if (DecisionV1.ACCEPTED.Equals(ccTxnResponse.decision))
{
System.Console.WriteLine("Transaction Successful.");
}
else
{
System.Console.WriteLine("Transaction Failed with decision: " +
ccTxnResponse.decision);
} -
Process based on the decision element. You would insert handling code appropriate to your application. You can also look at the code element to provide more fine-grained control for your application.
Detail tag/value pairs
Not all processing gateways support all detail tag/value pairs. Contact your account manager for more information.
The following table contains the tag/value pairs supported for the data element.
Tag | Value |
---|---|
CurrencyCode | This value is returned if the addendumData tag element of the original transaction was set to SERVICE_REQUEST_CURRENCY. |
BalanceResponse | This value is the balance remaining on a gift card, if a gift card was used for the original transaction. Note that decimal is implied for currency, so, for example, |
addendumResponse tag/value pairs
Not all processing gateways support all addendumResponse tag/value pairs. Contact your account manager for more information.
The following table contains the tag/value pairs supported for the addendumResponse element.
Tag | Service | Value |
---|---|---|
BATCH_NUMBER | DJN | This is your batch number. |
EFFECTIVE_DATE | DJN | This is the date of the bank deposit associated with the transaction. |
SEQ_NUMBER | DJN | This is your sequence number. |
TERMINAL_ID | DJN | This is your terminal ID. |
Currency codes
Code | Currency |
---|---|
ARS | Argentine Peso |
AUD | Australian Dollar |
BGN | Bulgarian Lev |
BRL | Brazilian Real |
CAD | Canadian Dollar |
CHF | Swiss Franc |
CZK | Czech Koruna |
DKK | Danish Krone |
EUR | Euro |
GBP | Pound Sterling |
HKD | Hong Kong Dollar |
HUF | Forint |
ILS | New Israeli Sheqel |
ISK | Iceland Krona |
JPY | Yen |
MXN | Mexican Peso |
NOK | Norwegian Krone |
NZD | New Zealand Dollar |
PLN | Zloty |
RON | New Leu |
SEK | Swedish Krona |
SGD | Singapore Dollar |
THB | Baht |
TWD | New Taiwan Dollar |
USD | US Dollar |
ZAR | Rand |
Was this page helpful?
- .NET example
- Building Purchase/Authorization/Verification requests
- Building Authorization Reversal requests
- Building Settlement/Credit requests
- Building Stored Data Requests
- Building Cancel requests
- Building Payment/Independent Credit requests
- Building Transaction Lookup requests
- Building Enrollment Lookup requests
- Building Authentication requests
- Processing the response