So you want to add payments functionality to your application or platform? In your search you’ll come across ACH transfers—but how do you know how to leverage ACH payments in the most cost effective and powerful way?

First, we’ll break down ACH for developers. Then, we’ll explain how you can lean on Dwolla to help you build ACH transfers into your product.

A quick overview of ACH

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 details 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 White Label, ACH transfers fall behind the look and feel of your brand—better yet, some partners have even integrated this 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 through the ACH network, notifying your application along the way of any 'Event' that occurs throughout the transfer process via webhooks.

In this example, we’ll outline a Dwolla user, "Bob" 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.

It is important to note that Dwolla is a network in itself, meaning that all bank transfers are routed through the Dwolla network before reaching their intended destination. Think of this as an archway the funds pass through before reaching Alice's account.

Assumption: Bob has a Dwolla account already created and has linked and verified his bank account.

Transfer created

Bob will specify which bank account he intends to use as the source of his transfer—represented as a unique funding source resource within Dwolla—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. 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 is receiving funds from Bob.

Transfer in-process

Dwolla’s cut off for bank transfers is 4pm CST, and once our file has been sent out 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”

Transfer settlement

Once the funds have cleared in the Dwolla network, Alice will receive an email stating that she's received funds from Bob, and she can quickly claim these funds by creating a Dwolla Direct account—a simple process in which she provides her routing and account number. 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

Due to the nature of ACH, 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 from Dwolla. More information on bank transfer status and workflow here.

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!

Get started now.

View the API. Talk to an integration specialist.
Financial institutions play an important role in our network.

Dwolla, Inc. is an agent of Veridian Credit Union and Compass Bank and all funds associated with your account in our network are held in pooled accounts at Veridian Credit Union and Compass Bank. These funds are not eligible for individual insurance, including FDIC insurance and may not be eligible for share insurance by the National Credit Union Share Insurance Fund. Dwolla, Inc. is the operator of a software platform that communicates user instructions for funds transfers to Veridian Credit Union and Compass Bank.