Use a token

Create a payment using an ACHQ or 3rd party token

Overview

If you've already generated an ACHQ token or have a compatible 3rd-party token (Plaid, MX) you can use it to generate payments without ever transmitting or storing sensitive bank data

📘

Don't throw all the data away

We recommend storing at least the Bank Name and "last 4 digits" of all bank accounts in your system. It's important to display this information to end-users when a transaction is authorized or initiated.

Fields and values

All API requests should include the fields detailed in the General Implementation Rules.

The following values are specific to creating a payment when using a bank token:

Field NameUsageField Value Format ConstraintsMax Length
CommandRequiredSet to ECheck.ProcessPayment50
Provider_TransactionIDOptionalA unique identifier assigned to this payment50
DateScheduledOptionalDate to process this payment. Format mm/dd/yyyy-
PaymentDirectionRequiredValue must be FromCustomer or ToCustomer12
AmountRequiredThe amount of the check.-
Merchant_ReferenceIDOptionalReference ID the merchant wants assigned to this payment50
DescriptionOptionalA description for this transaction100
Billing_CustomerIDOptionalA unique ID assigned to the Customer.20
Billing_CustomerNameRequiredName of person on bank account80
Billing_CompanyConditionalCompany name on bank account. Required if CheckType field is set to Business80
Billing_Address1RequiredStreet Address on bank account70
Billing_Address2OptionalAdditional street address information40
Billing_CityRequiredCity70
Billing_StateRequiredState30
Billing_ZipRequiredZip Code. Format: ##### or #####-####10
Billing_CountryOptional2-letter country code (ISO 3166). Default is US2
Billing_PhoneRequiredPhone number20
Billing_EmailRequiredCustomer email address80
SendEmailToCustomerRequiredValue must be Yes or No3
Customer_IPAddressConditionalCustomer’s IP Address. Only required if the SECCode field is set to WEB.15
Run_ExpressVerifyRequiredValue must be Yes or No3
Create_ACHQTokenOptionalValue must be Yes or No. Default is No if not specified.3
SECCodeRequiredValue must be PPD, CCD, WEB, or TEL.3
AccountTokenRequiredThe token representing a customer’s bank account information100
TokenSourceRequiredPossible values: ACHQ, Plaid, MX50

Sample request

curl --request POST \
     --url 'https://www.speedchex.com/datalinks/transact.aspx/?ProviderID=99&Provider_GateKey=test&Provider_GateID=test&MerchantID=2001&Merchant_GateID=test&Merchant_GateKey=test&CommandVersion=2.0&Command=ECheck.ProcessPayment&tokenpayment=' \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --data Provider_TransactionID=21321312 \
     --data Amount=42.00 \
     --data PaymentDirection=FromCustomer \
     --data 'Description=Rent Payment' \
     --data SECCode=WEB \
     --data DeliveryWindow=Standard \
     --data 'Billing_CustomerName=Bob Loblaw' \
     --data 'Billing_Address1=123 Street' \
     --data Billing_City=Town \
     --data Billing_State=NY \
     --data Billing_Zip=12345 \
     --data Billing_Country=US \
     --data [email protected] \
     --data Billing_Phone=555-867-5309 \
     --data Customer_IPAddress=0.0.0.0 \
     --data SendEmailToCustomer=No \
     --data AccountToken=processor-sandbox-74fb6a84-c434-41bb-8c3f-dd71fd1c18c9 \
     --data TokenSource=Plaid \
     --data Merchant_ReferenceID=44444

Response

{
  "CommandStatus": "Approved",
  "Description": "Command Successful.  Approved.",
  "ErrorInformation": null,
  "ExpressVerify": {
    "Status": null,
    "Code": null,
    "Description": null
  },
  "ResponseData": null,
  "ACHQToken": null,
  "Provider_TransactionID": "21321312",
  "TransAct_ReferenceID": "14476924",
  "ResponseCode": "000"
}

📜 Full API reference here