This guide uses the following endpoints
To create an ACH transfer you will need to
1. Get the Account ID
The first step in creating an ACH transfer is to obtain the ID of the account the funds will be transferred from.Both a savings and checking account have been pre-created in the Developer Sandbox for testing purposes; however, you can also create and use your own bank accounts if you prefer.
GET
request to the account
endpoint.
id
property of each account object.
2. Get the Counterparty ID
The next piece of data required for an ACH is the ID of the Counterparty (the person or entity on the other side of that transaction) or put more simply: Who the funds are being transferred to. If you have not yet created a Counterparty in your Developer Sandbox, read the next section for instructions on how to accomplish this. Otherwise, feel free to skip ahead to Retrieve an existing Counterparty.Create a Counterparty
Creating a Counterparty requires making aPOST
request to the counterparty
endpoint, and passing along the name of person or entity who owns the account, as well as three pieces of data required for ACH:
- The ACH specific bank account number
- The account type (checking or savings)
- The routing number
id
property representing the counterparty ID.
Retrieve an Existing Counterparty
To find the IDs of any existing Counterparty objects, make aGET
request to the counterparty
endpoint
id
property representing the counterparty ID.
3. Create the ACH Transfer
With the Account ID, and Counterparty ID, the ACH transfer can now be made. But first a final note on two additional properties. Thedirection
property specifies whether this transfer is a credit or debit (in this case a credit since money is being sent), and the sec_code
which specifies the type of transfer according to the ACH Network. More details on those topics can be found in the ACH documentation.
The protocol that underlies the ACH network is batch-oriented and does not provide success responses (only error responses). As a result, ACH transfers follow a particular workflow as they are processed by the network. You can track a transfer’s progress by checking the status attribute on the ACH object.Enough details, let’s make the transfer!
4. Get Status Updates
There are two ways to find out when the status of the ACH transfer has changed:Manually Checking for Status Updates
By making aGET
request to the ach
endpoint and passing in the id
of the ACH transfer you’d like the status for. This will return an ACH object with the latest status.
status
has been changed to “sent”.
Listening for Status Updates with Webhooks
By registering a webhook to respond to theach.update
event, you can be notified of changes in the status of the ACH transfer when they occur.
ach.update
webhook notification is received, follow the steps outlined above to obtain the latest status of the transfer, or simply make a GET
request to the URL specified in the url
property of the data object.
What’s Next Once the ACH Transfer object reaches a status of “sent”, then the transfer is complete! Congratulations on making your first ACH transfer. If you’d like to dig deeper, check out the ACH API documentation. And since you’re already on a hot-streak, why not try out Issuing Debit Cards?