Update a payment

Allow merchants to make last-minute changes to a payment without leaving your system

Overview

Due to the asynchronous nature of ACH payments there may be instances where a payment is created via an API request and subsequently needs to be modified. Common use cases include:

  • Change payment date due to customer request
  • Update amount
  • Modify contact information
  • Correct bank account information

As indicated on the link shared above, as long as the current status of the payment is scheduled all values in the payment record may be updated programmatically.

Fields and values

📘

Sick references, man!

Remember to pass in the Transact_ReferenceID as it's the key to querying the desired payment record

All other values can be included/omitted depending on the field you are attempting to modify.

The following values are specific to updating a payment record:

Field NameUsageField Value Format ConstraintsMax Length
CommandRequiredSet to ECheck.Update50
Transact_ReferenceIDRequiredA unique identifier assigned to the original payment by ACHQ50

For brevity's sake, just know that you can use the above values plus any combination of fields used in the Create a payment or Use a token.

As a thought exercise, to change the payment amount of the sample payment call we would first reference the super important Transact_ReferenceID returned in the [API response] (https://developers.achq.com/docs/create-a-payment-bank-account#response).

OK - once we've got that, the Update call to change the amount from the original value of $42.00 to a new value of $142.00 would look something like this

Field NameUsageField Value Format ConstraintsMax Length
CommandRequiredSet to ECheck.Update50
Transact_ReferenceIDRequiredA unique identifier assigned to the original payment by ACHQ50
AmountOptionalThe new value of the payment50

Remember, all API requests should always include the fields detailed in the General Implementation Rules.

Resulting in the following 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.Update&update=' \
     --header 'Content-Type: application/x-www-form-urlencoded' \
     --data Transact_ReferenceID=14476929 \
     --data Amount=142.00

and response:

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

Make sense? OK. Great. To play around with different scenarios, check out the 🤡 modify a payment API reference.