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 Name | Usage | Field Value Format Constraints | Max Length |
---|---|---|---|
Command | Required | Set to ECheck.Update | 50 |
Transact_ReferenceID | Required | A unique identifier assigned to the original payment by ACHQ | 50 |
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 Name | Usage | Field Value Format Constraints | Max Length |
---|---|---|---|
Command | Required | Set to ECheck.Update | 50 |
Transact_ReferenceID | Required | A unique identifier assigned to the original payment by ACHQ | 50 |
Amount | Optional | The new value of the payment | 50 |
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.
Updated over 2 years ago