Looking to add payment functionality to your application or platform? As you search you’ll come across ACH transfers and it is important to understand that ACH payments are the most cost effective way to move money.
A quick overview of ACH payments
ACH refers to the Automated Clearing House, an electronic network that allows banks and their customers to send funds between one another in the United States. Basically, when you pay a bill online and opt to use a bank account rather than a credit card, your payment is being processed through the ACH Network.
By entering your account and routing number instead of your credit card number, you’re initiating an ACH transaction. For a more detailed breakdown of ACH, check out this ACH for beginners blog post.
How ACH works with Dwolla
Think of Dwolla as the on-ramp to the ACH Network. Dwolla’s API alone does not let you process payments, but rather it connects you to enable bank transfers between you and your users.
Integrating Dwolla into your platform or application allows you to enable bank transfers via the ACH Network. With Dwolla’s White Label API, ACH transfers fall behind the look and feel of your brand. Some of our customers have been able to integrate our API in as little as two weeks.
Dwolla ACH transfer lifecycle and events
Dwolla’s API simplifies the ACH bank transfer process down to a single API call. Your application tells Dwolla the “funding source” (Bank Account) of the payer and the destination account or email.
Behind the scenes, Dwolla handles the necessary steps to send the transfer to the ACH Network, notifying your application along the way of any ‘Event’ that occurs throughout the transfer process via a webhook.
For an example, we will use, “Bob” who is making a payout from your application at 2pm CST on Monday from his bank account to “Alice’s” email address, an email that is not associated with an existing user account.
Bob will specify which bank account he intends to use as the source of his transfer and where he wants those funds to go.
In this example, he wants the funds to go to an email address.
Using the bank transfer API and with authorization from Bob, your application will call Dwolla’s API telling Dwolla to create an ACH transfer entry.
If the API call was successful, Dwolla will create a unique transfer ID: 8576f0c3-d1cd-e511-80de-0aa34a9b2388. At which point, a notification with the topic of ‘transfer_created’ is sent asynchronously to your application.
Events: bank_transfer_created and transfer_created
Transfer status: “pending”
As soon as the transfer is initiated, Alice will receive an email stating that she will receive funds from Bob.
Dwolla’s cut off for bank transfers is 4pm CST and once our file has been sent for the day, the process described in our ACH for beginners blog post takes over.
While the transfer is being processed through the ACH Network, the transfer status remains as “pending”.
Transfer status: “pending”
Once the funds have cleared in the Dwolla network, Alice will receive an email stating that she’s received funds from Bob. As soon as these funds have cleared, a transfer_completed event is sent via webhook to your application and the transfer status is updated to “processed”. All subsequent transfers to Alice’s email address will be routed directly to her linked financial institution.
Events: bank_transfer_completed and transfer_completed
Transfer status: “processed”
Transfer failures and ACH returns
Because the ACH Network is based on the assumption of good funds and correct information, a bank transfer can fail for a number of reasons even after the transfer has been processed (insufficient funds, payment dispute, closed bank account, etc.).
Your application should be prepared to handle ‘transfer_failed’ events notifications from Dwolla.
As a developer, facilitating ACH transactions can be simple and the first step is getting familiar with what that flow looks like.
Now that we’ve explained what an ACH transaction looks like with Dwolla, get started with your integration today.