Create a payment

Submit a payment on behalf of your customers using bank account data

Overview

If you haven't independently used the create a token service to generate an encrypted bank token, the ACHQ API allows for a payment transaction to be created using a receiver's plain text bank account details. Once the transaction is created, the API will return a secure bank token to be used for subsequent transactions.

📘

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 is 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 using a bank account

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_EmailRequriedCustomer's 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. Additional details here3
CheckTypeRequiredValue must be Personal or Business8
AccountTypeRequiredValue must be Checking or Savings8
RoutingNumberRequiredBank routing number9
AccountNumberRequiredBank account number30

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&bankaccountpayment=' \
     --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 AccountType=Checking \
     --data RoutingNumber=123123123 \
     --data AccountNumber=12345678 \
     --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=111-867-5309 \
     --data Customer_IPAddress=0.0.0.0 \
     --data SendEmailToCustomer=No \
     --data CheckType=Personal \
     --data Create_ACHQToken=Yes

Response

{
  "CommandStatus": "Approved",
  "Description": "Command Successful.  Approved.",
  "ErrorInformation": null,
  "ExpressVerify": {
    "Status": null,
    "Code": null,
    "Description": null
  },
  "ResponseData": null,
  "ACHQToken": "achq-sandbox-127a3-ee432-2a07e",
  "Provider_TransactionID": "21321312",
  "TransAct_ReferenceID": "14476929",
  "ResponseCode": "000"

📜 Full API reference here