An ACH transaction is part of the Automated Clearing House (ACH) Network, an electronic network for financial transactions in the United States that supports both credit and debit transactions.

For businesses needing to add a payment functionality to their application or platform, we recommend ACH transfers because ACH transactions are the most cost-effective way of moving money.

Let us explain what ACH transactions are:

Types of ACH Transactions

ACH transactions come in two forms: debits and credits.

The ACH debit process authorizes the withdrawal of funds from a bank account. For example, setting up an automatic monthly payment for a car payment.

When the payment is due, a new ACH entry is created by the lender’s bank. That entry is then sent to your bank—which debits your account for the amount due—and credits the lender’s bank account.

The ACH credit process is most commonly used with employers direct depositing payroll.

Think of an ACH credit as money coming to you; an ACH debit is when money is deducted from your account.

What are ACH Payments? A Quick Overview of ACH Payments

Entering your bank account and routing information means initiating an ACH transaction for an ACH payment.

When a bill is paid online and you choose to use a bank account rather than a credit card—that ACH payment is being processed through the ACH Network, using ACH transactions.

Think of Dwolla as an on-ramp to the ACH Network. Dwolla’s ACH payment API alone will not let you process payments but it will enable bank transfers between you and your end-users. Dwolla’s White-Label API remains in the background—keeping your branding at the forefront—submerging your users in your own user experience while still initiating ACH transactions.

This Ebook goes into more detail about Dwolla’s relationship with the ACH Network.

ACH Transaction Lifecycle

Dwolla’s API simplifies the ACH transaction process down to a single API call, being able to move money in three API endpoints. 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.

Learn more about ACH transfer times with our ACH Transfer Timeline guide.


Eddy Lu
“Dwolla freed us from previous payouts restrictions and got us up and running with our own branded bank transfer solution in 10 days.”
Eddy Lu

Creating an ACH Transfer

To illustrate an example, let’s use Bob. Bob is making a payout from an application at 2 p.m. on Monday from his bank account to Alice’s email address, an email that is 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, the application will call Dwolla’s API telling Dwolla to create an ACH transaction entry.

If the API call was successful, Dwolla will create a unique transfer ID like this one: 8576f0c3-d1cd-e511-80de-0aa34a9b2388. At this 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 ACH transaction is initiated, Alice will receive an email stating that she will receive funds from Bob.

ACH Transfer in-process

Dwolla’s cut off for bank transfers is 4 p.m. Central Time. Once our file has been sent for the day, the process described in our ACH for beginners blog post takes over.

Transfers initiated after 4 p.m. are processed the next business day.

While the transfer is being processed through the ACH Network, the transfer status remains as “pending.”

Transfer status: “pending”

Settling an ACH Transfer

After the funds clear 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”

Want to stay updated on Dwolla? Sign up here.

Transfer Failures & 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.).

ACH returns can be referred to as “ACH disputes” or “ACH chargebacks” but while those terms might seem like synonyms, they are crucially different. “Disputes” and “chargebacks” are terms used heavily in the credit card space and imply that there is a third-party arbiter looking at evidence to determine a fair outcome.

That does not happen during the ACH return process. An ACH transaction is not “disputed” nor is it “charged back,” it is simply returned.

Your application should be prepared to handle ‘transfer_failed’ event notifications from Dwolla. There are more than 80 ACH return codes.

Next Steps

Now that we’ve explained what an ACH transaction looks like with Dwolla, you may get started with your integration today.

Conversely, if you’d like to see what transactions look like with Dwolla, you may start building in our sandbox for free, right now. Get a feel for how our API works before going live in production.

Stay Updated with Dwolla