Skip to content

Transactions

This page provides details on how to process transactions through the API, including request and response formats, supported payment methods, responses and error handling.

Process

Process a transaction through the gateway.

TIP

If you do not have a default processor set, you must include the processor_id property in the request body or the transaction will fail.

TIP

Base Amount - If you are using base_amount it will be the base amount of the transaction. The surcharge and other related fees(if applicable) will be calculated and added unless those values are specifically passed in.

Amount - This will be the final amount you want charged and will include all surcharges and related fees(if applicable).

Request Method: POST

URL Endpoint: /api/transaction

NameTypeDefaultDescriptionRequired
idempotency_keyuint(uuid format)used to identify duplicate transactions. Default time is 5 minutes
typestring"sale", "authorize", "verification" or "credit"
amountintegerAmount to process in cents (should contain all applicable fees and taxes) (1299 = $12.99)
base_amountintegerAmount to process in cents (surcharge and related fees will be added to this amount during processing) (1299 = $12.99)
tax_exemptbooleanfalseIs the transaction tax exemptRequired for L3
tax_amountinteger0Tax Amount in centsRequired for L3
shipping_amountinteger0Shipping Amount in cents (should be included in Amount)
discount_amountinteger0Discount Amount in cents (should be included in Amount)
tip_amountinteger0Tip Amount in cents (should be included in Amount)
currencystring"USD"ISO 4217 currency (ex "USD")
descriptionstring""Text field for miscellaneous notes (max 255 characters)
order_idstringSupports up to 15 alphanumeric charactersRequired for L3
po_numberstringSupports up to 15 alphanumeric characters
processor_idstring""Designates a specific processor for the transaction. If no value is provided, the transaction will run against the default processor set on your gateway. If no value is provided and there is no default set, the transaction will fail.see description
ip_addressstringServer IPIPv4 or IPv6 value of the end user
allow_partial_paymentboolfalseAllow partial transactions to be approved (only if supported by processor)
email_receiptbooleanfalseIf true, sends an email receipt (email_address must be provided)
email_addressstringEmail address (must be valid email format, "example@mail.com")required if email_receipt is true
create_vault_recordbooleanfalseIf true, triggers the creation of a customer vault record after a successful transaction. Multiple transactions with the same details will create duplicative customer records.
vendor_idstring""Vendor ID passed along to certain processors if supported (Special Field, only use if instructed by support)
billing_methodstring"straight""straight", "initial_recurring", or "recurring"
summary_commodity_codestringSummary Commodity Code 4 AlphaNumeric charactersRequired for L3
ship_from_postal_codestringShip From Postal CodeRequired for L3
payment_adjustmentobjectObject containing payment adjustment details. (ex. convenience fees, service fees, and surcharges)
payment_adjustment
    .type
string"""flat" or "percentage"
payment_adjustment
    .value
integer0Amount of adjustment in cents for "flat" (ex. 199 = $1.99) or 3 decimal places for "percentage" (ex. 1000 = 1.000%)
payment_methodobjectObject containing payment method details, must contain only one of the following: card, ach, customer, terminal, token, apmmust include one payment method
payment_method
    .card
objectObject containing details for processing a transaction against a debit or credit card
payment_method
    .card
    .entry_type
stringMust be "keyed" or "swiped"
payment_method
    .card
    .number
stringCard number (digits only)required if payment_method.card is present
payment_method
    .card
    .expiration_date
stringExpiration date (format MM/YY)required if payment_method.card is present
payment_method
    .card
    .cvc
stringCard Verification Coderequired if the applicable rule is set on the gateway
payment_method
    .card
    .track_1
stringDecrypted track_1
payment_method
    .card
    .track_2
stringDecrypted track_2
payment_method
    .card
    .encrypted_track_1
stringEncrypted Track 1
payment_method
    .card
    .encrypted_track_2
stringEncrypted Track 2
payment_method
    .card
    .ksn
stringKSN used to encrypt the supplied encrypted tracks
payment_method
    .card
    .cardholder_authentication
objectOptionally pass 3DS collected dataif passed, it must contain valid values
payment_method
    .card
    .cardholder_authentication
    .eci
stringECI indicator, ie 01,02,05,07..etc
payment_method
    .card
    .cardholder_authentication
    .cavv
stringCAVV
payment_method
    .card
    .cardholder_authentication
    .xid
stringXID
payment_method
    .card
    .cardholder_authentication
    .cryptogram
stringCryptogram
payment_method
    .card
    .cardholder_authentication
    .version
stringVersion, 1 or 2
payment_method
    .card
    .cardholder_authentication
    .ds_transaction_id
stringDS Transaction ID
payment_method
    .card
    .cardholder_authentication
    .acs_transaction_id
stringACS Transaction ID
payment_method
    .ach
objectObject containing details for processing a transaction via ACH
payment_method
    .ach
    .routing_number
stringRouting number for account to be chargedrequired if payment_method.ach is present
payment_method
    .ach
    .account_number
stringAccount number for account to be chargedrequired if payment_method.ach is present
payment_method
    .ach
    .sec_code
stringSEC code for ACH transaction type: "web", "ccd", "ppd", or "tel"required if payment_method.ach is present
payment_method
    .ach
    .account_type
stringACH account type: "checking" or "savings"required if payment_method.ach is present
payment_method
    .ach
    .check_number
stringCheck numberrequired if payment_method.ach.sec_code = "tel"
payment_method
    .ach
    .accountholder_authentication
stringObject containing details for accountholder authenticationif required by processor
payment_method
    .ach
    .accountholder_authentication
    .dl_state
stringDriver's License staterequired if payment_method.ach.accountholder_authentication is present
payment_method
    .ach
    .accountholder_authentication
    .dl_number
stringDriver's License numberrequired if payment_method.ach.accountholder_authentication is present
payment_method
    .customer
objectObject containing details for processing a transaction against a vaulted customer record
payment_method
    .customer
    .id
stringCustomer IDrequired if payment_method.customer is present
payment_method
    .customer
    .payment_method_id
stringCustomer defaultID of customer's saved payment method to be charged
payment_method
    .customer
    .payment_method_type
stringCustomer defaultThe type of the payment method referenced in payment_method_id
payment_method
    .customer
    .billing_address_id
stringCustomer defaultID of customer's saved billing address to be used
payment_method
    .customer
    .shipping_address_id
stringCustomer defaultID of customer's saved shipping address to be used
payment_method
    .terminal
objectObject containing details for processing a transaction against a Terminal
payment_method
    .terminal
    .id
stringID of the terminal to be used for the transactionrequired if payment_method.terminal is present
payment_method
    .terminal
    .expiration_date
stringOptionally pass an expiration date along with the transaction
payment_method
    .terminal
    .cvc
stringOptionally pass a CVV along with the transaction
payment_method
    .terminal
    .print_receipt
string"no" (no receipt), "customer" (customer copy only), "merchant" (merchant copy only), or "both" (both copies)required if payment_method.terminal is present
payment_method
    .terminal
    .signature_required
stringIf true, requests that the terminal capture a signature (if supported)required if payment_method.terminal is present
payment_method
    .apm
objectObject containing details for processing APM transactions
payment_method
    .apm
    .type
stringAPM type (see chart below)required if payment_method.apm is present
payment_method
    .apm
    .merchant_redirect_url
stringThis is the redirect url you wish to send the customer to after processing the paymentrequired if payment_method.apm is present
payment_method
    .apm
    .locale
stringLocale to be used for the payment page, if supported by the APM (ex. "en-US")required if payment_method.apm is present
payment_method
    .apm
    .mobile_view
booleanIf true, tells the APM to render a mobile version of the landing page (if supported by the APM)required if payment_method.apm is present
payment_method
    .apm
    .national_id
stringConsumer's National ID (max 30 characters)
payment_method
    .apm
    .consumer_ref
stringUnique reference identifiying the customer. May contain [a-z0-9-], max 20 characters
billing_addressobjectnullObject containing billing address details
billing_address
    .first_name
stringUp to 50 characters
billing_address
    .last_name
stringUp to 50 characters
billing_address
    .company
stringUp to 100 characters
billing_address
    .address_line_1
stringUp to 100 characters
billing_address
    .address_line_2
stringUp to 100 characters
billing_address
    .city
stringUp to 50 characters
billing_address
    .state
stringState abbrevation
billing_address
    .postal_code
stringIf payment_method.card is present, defaults to Postal Code associated with cardRequired for L3
billing_address
    .country
string"US"
billing_address
    .email
stringEmail address (must be valid email format, "example@mail.com")
billing_address
    .phone
stringDigits only
billing_address
    .fax
stringDigits only
shipping_addressobjectnullObject containing billing address details
shipping_address
    .first_name
stringUp to 50 characters
shipping_address
    .last_name
stringUp to 50 characters
shipping_address
    .company
stringUp to 100 characters
shipping_address
    .address_line_1
stringUp to 100 characters
shipping_address
    .address_line_2
stringUp to 100 characters
shipping_address
    .city
stringUp to 50 characters
shipping_address
    .state
stringState abbreviation
shipping_address
    .postal_code
stringRequired for L3
shipping_address
    .country
string
shipping_address
    .email
stringEmail address (must be valid email format, "example@mail.com")
shipping_address
    .phone
stringDigits only
shipping_address
    .fax
stringDigits only
group_namestring"default"custom fields group name
custom_fieldsobjectObject based where the key is the id of the custom field and the value is an array of strings(even is single value)Only required if fields are set to required
iias_statusstring""Required for HSA/FSA Valid values are: "verified" or "exempt"
additional_amountsobject
additional_amounts
    .hsa
    .total
int0Required for HSA/FSA Total amount for HSA/FSA, passed as an unsigned integer
additional_amounts
    .hsa
    .rx_amount
int0RX AMount for HSA/FSA, passed as an unsigned integer
additional_amounts
    .hsa
    .vision_amount
int0Vision Mount for HSA/FSA, passed as an unsigned integer
additional_amounts
    .hsa
    .clinic_amount
int0Clinic Mount for HSA/FSA, passed as an unsigned integer
additional_amounts
    .hsa
    .dental_amount
int0Dental Mount for HSA/FSA, passed as an unsigned integer
line_itemsarrayArray of line itemsRequired for L3
line_items[]
    name
stringFriendly name up to 50 alpha characters
line_items[]
    description
stringProduct Description up to 50 alpha characters
line_items[]
    product_code
stringProduct Code/SKU up to 50 alpha characters
line_items[]
    commodity_code
stringCommodity Code up to 12 alpha characters
line_items[]
    quantity
float64Quantity ##.##
line_items[]
    discount_amount
intin cents
line_items[]
    freight_amount
intin cents
line_items[]
    unit_price
intin cents
line_items[]
    tax_amount
intin cents
line_items[]
    national_tax_amount
intin cents
line_items[]
    amount
intin cents
line_items[]
    national_tax_rate
string3 decimal rate. 10% = 10.000
line_items[]
    tax_rate
string3 decimal rate. 10% = 10.000
line_items[]
    unit_of_measure
string
processor_specificobjectOptional: this only applys to specific processor types
processor_specific
    .paysafe_direct
    .subscription_trial_solution
bool
processor_specific
    .paysafe_direct
    .subscription_start_date
stringYYYY-MM-DD
processor_specific
    .paysafe_direct
    .subscription_trial_start_date
stringYYYY-MM-DD
processor_specific
    .paysafe_direct
    .subscription_trial_end_date
stringYYYY-MM-DD
processor_specific
    .paysafe_direct
    .subscription_secondary_billing_date
stringYYYY-MM-DD
processor_specific
    .paysafe_direct
    .subscription_cancel_url
stringweburl
processor_specific
    .paysafe_direct
    .subscription_amount
uintin cents
processor_specific
    .paysafe_direct
    .subscription_unit_cost
uintin cents
processor_specific
    .paysafe_direct
    .subscription_item_quantity
uint
processor_specific
    .paysafe_direct
    .subscription_product_desc
string
descriptorobjectOptional: this only applys to specific processor types
descriptor
    .name
string (38 Char)
descriptor
    .address
string (38 Char)
descriptor
    .city
string (21 Char)
descriptor
    .state
string (2 Char)
descriptor
    .postal_code
string (5 Char)
subscriptionsarrayArray of subscriptions
card_on_file_indicatorstring[CR]Optional value, C = General purpose storage, R = recurring payment
initiated_bystring"customer" or "merchant"Who is inititating the transaction, "customer" or "merchant"
initial_transaction_idstringOptional if using our tokenization, otherwise this is transaction id used when storing the payment
stored_credential_indicatorstringOptional if using our tokenization, otherwise "used" or "stored"

Code Samples

CIT - MIT

TIP

When processing transactions the following variables are available for including CIT/MIT variables to the processors.

NameRequiredDescription
card_on_file_indicatorOptional
initiated_byRequiredIndicates who initiated the transaction.
initial_transaction_idOptionalOptional if using our tokenization
stored_credential_indicatorOptionalIndicates if a stored payment was used or not
billing_methodOptionalDefaults to "straight", but if this is a recurring transaction, passing "recurring" will set recurring indicators on the transaction

Fee Calculation


TIP

Using this endpoint will calculate any applicable fees that should be applied to the transaction. This includes Surcharge, Cash Discount Fees and Payment Adjustment, if applicable.

Request Method: POST

URL Endpoint: /api/lookup/fees

NameTypeRequiredDescription
typestringyesType of request, "integrations"
statestringnoBilling address state
binstringno6 - 19 digits of a card
customer_idstringnoCustomer ID
payment_idstringnoPayment method ID for a customer
payment_methodstringyesThe method of payment, i.e 'card' or 'ach'
base_amountuintyesAmount in lowest form of currency. $1.00 = 100
json
➜  ~ curl -H 'Authorization: API_KEY' -H "Content-Type: application/json" -X POST -d '{
        "type": "integrations",
        "type_id":"",
        "state": "IL",
        "bin": "517246700",
        "payment_method": "card",
        "base_amount": 1000
}' { url goes here }/api/api/lookup/fees

{
  "status": "success",
  "msg": "success",
  "data": {
    "service_fee": 0,
    "payment_adjustment": {
      "value": 0,
      "type": ""
    },
    "requested_amount": 1350,
    "discount_amount": null,
    "surcharge": 350
  }
}

Amount calculation


Request Method: POST

URL Endpoint: /api/calculate/amounts

NameTypeRequiredDefaultDescription
processor_idstringtrue
subtotaluinttruenull
amountuintif line_items or products not presentnull
currencystringtrue
payment_methodstringtrueCan be 'card' or 'ach'
transaction_typestringtrueCan be 'verification', 'auth', 'sale', 'void', 'refund', 'credit'
productsarrayif amount or line_items not presentnull
products[].idstringtrue
products[].namestringtrue
products[].descriptionstringfalse
products[].pricestringtrue
products[].local_taxstringfalse
products[].national_taxstringfalse
products[].fixed_amountboolfalsefalse
products[].fixed_qtyboolfalsefalse
products[].unit_of_measurestringfalsenull
line_itemsarrayif amount or products not presentnull
line_items[].idstringtrue
line_items[].statusstringtrueCan be 'paid', 'pending', 'rejected'
line_items[].typestringtrueCan be 'flat' or 'percentage'
line_items[].namestringtrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
line_items[].descriptionstringfalsefalseIf true, the calculated amount will be added to the total amount
line_items[].unit_priceinttrue
line_items[].quantityfloat64true
line_items[].quantity_shippedfloat64false
line_items[].product_codestringfalse
line_items[].commodity_codestringfalse
line_items[].unit_of_measurestringfalse
line_items[].alternate_tax_identifierstringfalse
line_items[].taxableboolfalsefalse
line_items[].local_tax_ratestringfalseFormat is 10.25
line_items[].national_tax_ratestringfalseFormat is 10.25
line_items[].tax_ratestringfalseFormat is 10.25
line_items[].discount_amountuintfalse
line_items[].freight_amountuintfalse
line_items[].discount_ratestringfalse
processor_payment_adjustmentobjectfalsenull
processor_payment_adjustment.typestringtrueCan be 'flat' or 'percentage'
processor_payment_adjustment.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
processor_payment_adjustment.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
shipping_amountobjectfalsenull
shipping_amount.typestringtrueCan be 'flat' or 'percentage'
shipping_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
shipping_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
addon_amountarrayfalsenull
addon_amount[].typestringtrueCan be 'flat' or 'percentage'
addon_amount[].valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
addon_amount[].includeboolfalsefalseIf true, the calculated amount will be added to the total amount
discount_amountarrayfalsenull
discount_amount[].typestringtrueCan be 'flat' or 'percentage'
discount_amount[].valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
discount_amount[].includeboolfalsefalseIf true, the calculated amount will be added to the total amount
duty_amountobjectfalsenull
duty_amount.typestringtrueCan be 'flat' or 'percentage'
duty_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
duty_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
tip_amountobjectfalsenull
tip_amount.typestringtrueCan be 'flat' or 'percentage'
tip_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
tip_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
additional_amountsarrayfalsenull
additional_amounts[].typestringtrueCan be 'flat' or 'percentage'
additional_amounts[].valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
additional_amounts[].includeboolfalsefalseIf true, the calculated amount will be added to the total amount
tax_amountobjectfalsenull
tax_amount.typestringtrueCan be 'flat' or 'percentage'
tax_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
tax_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
national_tax_amountobjectfalsenull
national_tax_amount.typestringtrueCan be 'flat' or 'percentage'
national_tax_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
national_tax_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
local_tax_amountobjectfalsenull
local_tax_amount.typestringtrueCan be 'flat' or 'percentage'
local_tax_amount.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
local_tax_amount.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
service_feeobjectfalsenull
service_fee.typestringtrueCan be 'flat' or 'percentage'
service_fee.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
service_fee.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
surchargeobjectfalsenull
surcharge.typestringtrueCan be 'flat' or 'percentage'
surcharge.valueuinttrueIf type is 'flat', round to 2 decimals (ex. $10.00 should be 1000), if 'percentage' round to 3 (ex. %10.000 should be 10000)
surcharge.includeboolfalsefalseIf true, the calculated amount will be added to the total amount
cc_binstringif surcharge allowednull
countrystringif surcharge allowednull
statestringif surcharge allowednull
flagsobjectfalse
flags.skip_cash_discountboolfalsefalseIf true, skips the cash discount calculation
flags.skip_surchargeboolfalsefalseIf true, skips the cash surcharge calculation
flags.skip_service_feeboolfalsefalseIf true, skips the cash service fee calculation
flags.skip_consumer_choiceboolfalsefalseIf true, skips the cash consumer choice calculation
flags.include_default_tax_to_totalboolfalsenullIf true, and tax has not been overridden, the merchant's default tax amount will be added to the total amount
flags.tax_exemptboolfalsenullIf true, sets the national, local and tax amount fields to 0
flags.processor_surcharge_fallbackboolfalsefalseIf true, processor's surcharge fallback will be available
flags.add_tax_to_totalboolfalsenullIf true, the tax will be added to the total amount
sourcestringfalse

Workflow:

  1. Call the Amount calculation endpoint with the properly filled request
  2. Take the response of the Amount calculation and place it into the Transaction Request into the amounts field and fill the other fields of the request
  3. Submit the transaction with the pre-calculated amounts
sh
  ~ curl -H 'Authorization: API_KEY' -H "Content-Type: application/json" -X POST -d '{
    "processor_id": "<processor id>",
    "amount" : 1000,
    "subtotal" : 1000,
    "currency": "USD",
    "payment_method": "card",
    "transaction_type": "sale"
}' { url goes here }/api/calculate/amounts

{
  "status": "success",
  "msg": "success",
  "data": {
    "line_items": null,
    "shipping_amount": null,
    "discount_amount": null,
    "freight_amount": null,
    "addon_amount": null,
    "duty_amount": null,
    "tip_amount": null,
    "additional_amounts": null,
    "tax_amount": 180,
    "national_tax_amount": null,
    "local_tax_amount": null,
    "service_fee": 350,
    "surcharge": null,
    "processor_id": "<processor id>",
    "payment_method": "card",
    "included_amounts": {
      "shipping_amount": null,
      "discount_amount": null,
      "duty_amount": null,
      "tip_amount": null,
      "tax_amount": 180,
      "national_tax_amount": null,
      "local_tax_amount": null,
      "service_fee": 350,
      "surcharge": null
    },
    "subtotal": 1000,
    "amount": 1000,
    "additional_total": 0,
    "total": 1530,
    "features": {
      "surcharge": false,
      "cash_discount": false,
      "dual_pricing": false,
      "dual_pricing_v2": false
    },
    "display": {
      "subtotal": {
        "value": 1000,
        "display": true
      },
      "amount": {
        "value": 1000,
        "display": true
      },
      "shipping": {
        "value": 0,
        "display": false
      },
      "freight": {
        "value": 0,
        "display": false
      },
      "duty": {
        "value": 0,
        "display": false
      },
      "discount": {
        "value": 0,
        "display": false
      },
      "service_fee": {
        "value": 350,
        "display": true
      },
      "surcharge": {
        "value": 0,
        "display": false
      },
      "tax": {
        "value": 180,
        "display": true
      },
      "national_tax": {
        "value": 0,
        "display": false
      },
      "local_tax": {
        "value": 0,
        "display": false
      },
      "tip": {
        "value": 0,
        "display": false
      },
      "total": {
        "value": 1530,
        "display": true
      },
      "consumer_choice": {
        "card": 0,
        "ach": 0,
        "display": false
      }
    },
    "disclaimer": {
      "text": "",
      "html": "",
      "display": false
    }
  }
}

Response Codes


TIP

Response Codes are grouped as follows: 100 thru 199 are Approvals and Partial Approvals. 200 thru 299 are Declined via the processor. 300 thru 399 are Gateway Declines. 400 thru 499 are processor rejection errors.


Response CodeProcessor DefinitionDescription
0UnknownUnknown, please contact support for more information
99Pending paymentUsed in redirect processors prior to payment being received
100ApprovedTransaction was successfully approved
110Partial approvalTransaction was successfully approved, but for a lesser amount
200 - 299DeclineTransaction has been declined by the issuer for various reasons
300 - 399Gateway DeclinePlatform decline for configuration or fraud reasons
400 - 499Transaction error returned by processorErrors returned from the processor

AVS Response Codes

Address verification response codes (AVS)


AVS Response CodeDefinitionCode Applies toCard Brands
0AVS Not AvailableDomestic + InternationalV, MC, AX, D, PP, JCB
AAddress match onlyDomestic + InternationalV, AX, D,PP, JCB
BAddress matches, ZIP not verifiedDomestic + InternationalV
CIncompatible formatDomestic + InternationalV
DExact matchInternationalV
FExact match, UK-issued cardsDomestic + InternationalV
GNon-U.S. Issuer does not participateInternationalV
INot verifiedInternationalV, D, PP, JCB
MExact matchInternationalV
NNo address or ZIP matchDomestic + InternationalV, MC, AX, D, PP, JCB
PPostal Code matchDomestic + InternationalV
RIssuer system unavailableDomesticV, MC, AX, D, PP, JCB
SService not supportedDomesticMC, AX, D, PP, JCB
UAddress unavailableDomesticV, MC, AX, D, PP, JCB
W9-character numeric ZIP match onlyDomestic + International (MC)MC, D, PP, JCB
XExact match, 9-character numeric ZIPDomestic + International (MC)MC, D, PP, JCB
YExact match, 5-character numeric ZIPDomesticV, MC, AX, D, PP, JCB
Z5-character ZIP match onlyDomestic + International (V)V, MC, AX, D, PP, JCB
LPartial match, Name and billing postal code matchFor AMEX cards onlyAX
1Cardholder name and ZIP matchDomesticAX
2Cardholder name, address and ZIP matchDomesticAX
3Cardholder name and address matchDomesticAX
4Cardholder name matchesDomesticAX
5Cardholder name incorrect, ZIP matchesDomesticAX
6Cardholder name incorrect, address and zip matchDomesticAX
7Cardholder name incorrect, address matchesDomesticAX
8Cardholder name, address, and ZIP do not matchDomesticAX

Get Transaction By ID

Retrieve details for a specific transaction.

Request Method: GET

URL Endpoint: /api/transaction/{ transaction ID }

json
{
  "status": "success",
  "msg": "success",
  "data": [
    {
      "id": "b7kgflt1tlv51er0fts0",
      "type": "sale",
      "amount": 1112,
      "tax_amount": 100,
      "tax_exempt": false,
      "shipping_amount": 100,
      "currency": "usd",
      "description": "test transaction",
      "order_id": "someOrderID",
      "po_number": "somePONumber",
      "ip_address": "4.2.2.2",
      "email_receipt": false,
      "payment_method": "card",
      "response": {
        "card": {
          "id": "b7kgflt1tlv51er0ftsg",
          "card_type": "visa",
          "first_six": "401200",
          "last_four": "5439",
          "masked_card": "401200******5439",
          "expiration_date": "12/20",
          "status": "approved",
          "auth_code": "TAS731",
          "processor_response_code": "00",
          "processor_response_text": "APPROVAL TAS731 ",
          "processor_type": "tsys_sierra",
          "processor_id": "b7kgflt1tlv51er0f1sg",
          "avs_response_code": "0",
          "cvv_response_code": "M",
          "processor_specific": {},
          "created_at": "2017-10-19T20:15:19.80368Z",
          "updated_at": "2017-10-19T20:15:20.777011Z"
        }
      },
      "status": "pending_settlement",
      "billing_address": {
        "first_name": "John",
        "last_name": "Smith",
        "company": "Test Company",
        "address_line_1": "123 Some St",
        "address_line_2": "",
        "city": "Wheaton",
        "state": "IL",
        "postal_code": "60187",
        "country": "US",
        "phone": "5555555555",
        "fax": "5555555555",
        "email": "help@website.com"
      },
      "shipping_address": {
        "first_name": "John",
        "last_name": "Smith",
        "company": "Test Company",
        "address_line_1": "123 Some St",
        "address_line_2": "",
        "city": "Wheaton",
        "state": "IL",
        "postal_code": "60187",
        "country": "US",
        "phone": "5555555555",
        "fax": "5555555555",
        "email": "help@website.com"
      },
      "created_at": "2017-10-19T20:15:19.560708Z",
      "updated_at": "2017-10-19T20:15:20.832049Z"
    }
  ],
  "total_count": 1
}

Search Transactions

Retrieve details for all transactions that match provided search criteria.

TIP

If you do not pass in a created_at date range, we will default this range to the prior four months.

Request Method: POST

URL Endpoint: /api/transaction/search

QuerySearchString: Operator can be =, !=

QuerySearchInt: Operator can be =, !=, <, >

json
Example Body
{
  "{name}": {
    "operator": "=", // =, !=, <, >
    "value": "{value}"
  }
}
NameTypeDescription
transaction_idQuerySearchStringSearches for transaction id
user_idQuerySearchStringSearches for user_id
typeQuerySearchStringSearches for transaction type (sale, authorize...etc)
ip_addressQuerySearchStringSearches for ip_address, either ipv4 or ipv6
amountQuerySearchIntSearches for originally requested amount
amount_authorizedQuerySearchIntSearches for amount_authorized
amount_capturedQuerySearchIntSearches for amount_captured
amount_settledQuerySearchIntSearches for amount_settled
tax_amountQuerySearchIntSearches for tax_amount
po_numberQuerySearchStringSearches for po_number
order_idQuerySearchStringSearches for order_id
payment_methodQuerySearchStringSearches by payment_method, (token, card, terminal)
payment_typeQuerySearchStringSearches by payment_type (card, echeck)
statusQuerySearchStringSearches by transaction status (unknown, declined, authorized, pending_settlement, settled, voided, reversed, refunded)
processor_idQuerySearchStringSearches by processor_id
customer_idQuerySearchStringSearches by customer_id
created_atQueryDateRangeSearches by created_at between the provided start_date and end_date. (Dates in UTC "YYYY-MM-DDTHH:II:SSZ")
captured_atQueryDateRangeSearches by captured_at between the provided start_date and end_date. (Dates in UTC "YYYY-MM-DDTHH:II:SSZ")
settled_atQueryDateRangeSearches by settled_at between the provided start_date and end_date. (Dates in UTC "YYYY-MM-DDTHH:II:SSZ")
billing_address
    .address_id
QuerySearchStringSearches by billing_address.id
billing_address
    .first_name
QuerySearchStringSearches by billing_address.first_name (0-50 characters)
billing_address
    .last_name
QuerySearchStringSearches by billing_address.last_name (0-50 characters)
billing_address
    .company
QuerySearchStringSearches by billing_address.company (0-50 characters)
billing_address
    .address_line_1
QuerySearchStringSearches by billing_address.address_line_1 (0-100 characters)
billing_address
    .address_line_2
QuerySearchStringSearches by billing_address.address_line_2 (0-100 characters)
billing_address
    .city
QuerySearchStringSearches by billing_address.city (0-50 characters)
billing_address
    .state
QuerySearchStringSearches by billing_address.state (2 Character)
billing_address
    .postal_code
QuerySearchStringSearches by billing_address.postal_code (0-6 Characters)
billing_address
    .country
QuerySearchStringSearches by billing_address.country (2 Characters)
billing_address
    .email
QuerySearchStringSearches by billing_address.email
billing_address
    .phone
QuerySearchStringSearches by billing_address.phone (0-14 digits only)
billing_address
    .fax
QuerySearchStringSearches by billing_address.fax (0-14 digits only)
shipping_address
    .address_id
QuerySearchStringSearches by shipping_address.id
shipping_address
    .first_name
QuerySearchStringSearches by shipping_address.first_name (0-50 characters)
shipping_address
    .last_name
QuerySearchStringSearches by shipping_address.last_name (0-50 characters)
shipping_address
    .company
QuerySearchStringSearches by shipping_address.company (0-50 characters)
shipping_address
    .address_line_1
QuerySearchStringSearches by shipping_address.address_line_1 (0-100 characters)
shipping_address
    .address_line_2
QuerySearchStringSearches by shipping_address.address_line_2 (0-100 characters)
shipping_address
    .city
QuerySearchStringSearches by shipping_address.city (0-50 characters)
shipping_address
    .state
QuerySearchStringSearches by shipping_address.state (2 Character)
shipping_address
    .postal_code
QuerySearchStringSearches by shipping_address.postal_code (0-6 Characters)
shipping_address
    .country
QuerySearchStringSearches by shipping_address.country (2 Characters)
shipping_address
    .email
QuerySearchStringSearches by shipping_address.email
shipping_address
    .phone
QuerySearchStringSearches by shipping_address.phone (0-14 digits only)
shipping_address
    .fax
QuerySearchStringSearches by shipping_address.fax (0-14 digits only)
limitintegerMaximum records to return (0-100)
offsetintegerNumber of records to offset the return by

Capture

Capture funds for a specified transaction that has already been authorized.

Request Method: POST

URL Endpoint: /api/transaction/{ transaction ID }/capture

NameTypeDefaultDescriptionRequired
amountintegeramount from authTotal amount to capture, in cents. (1299 = $12.99)
tax_amountintegertax_amount from authTax amount to capture, in cents. (199 = $1.99)
shipping_amountintegershipping_amount from authShipping amount to capture, in cents. (299 = $2.99)
tax_exemptbooleanfalseIs the transaction tax exempt
order_idstringorder_id from authAlphanumeric (max 17 characters)
po_numberstringpo_number from authAlphanumeric (max 17 characters)
ip_addressstringip_address from authIPV4 or IPV6 address

Void / Auth Reversal

Void a transaction that is pending settlement. Where applicable, a void will be processed as an auth reversal.

Request Method: POST

URL Endpoint: /api/transaction/{ transaction ID }/void

json
{
  "status": "success",
  "msg": "success",
  "data": null
}

Refund

Process a refund for a transaction that has already been settled. Multiple partial refunds can be processed, but the total amount of all refunds cannot exceed the previously settled amount.

Request Method: POST

URL Endpoint: /api/transaction/{ transaction ID }/refund

NameTypeDefaultDescriptionRequired
amountintegeramount from authTotal amount to capture, in cents. (1299 = $12.99)
surchargeintegernullSurcharge amount, in cents. (1299 = $12.99)