How ACH works: A developer perspective - Part 3

At Gusto, we rely heavily on the ACH network to pay employees and to remit various payroll taxes to federal and state agencies on behalf of our clients.

In part 1 of this post, I outlined the basics of how we originate ACH debits and credits. In part 2 of this post, I outlined how ACH returns are handled. Part 3 of this post will go into the timing of these ACH transfers.

As with the previous post, I'll talk specifically in the case of ACH debits (i.e. us debiting money from a customer's account). Timing on ACH credits is exactly the same.

Leg 1: Originator -> ODFI (our bank) by Day 1, 7:00pm

Depending on who your bank is and the agreement you've made with them, they will ask you to SFTP your ACH file to them by a certain time for processing. This is sometimes referred to as the ACH cut-off time. Here at Gusto, we have a great relationship with Silicon Valley Bank, who has an ACH cut-off time of 7pm. Once the 7pm deadline hits, our bank will validate that our ACH files pass a series of sanity checks (account numbers makes sense, amounts don't exceed certain underwriting thresholds, etc.). They'll also take steps to verify that the files came from us, and not someone pretending to be us.

Leg 2: ODFI -> Federal Reserve -> RDFI (receiver's bank) by Day 2, 12:01am

Once our bank has deemed our ACH file acceptable, they'll forward the ACH file to the Federal Reserve for processing. The ACH protocol is a next-day settlement system. That means that ACH debit requests sent to the Federal Reserve are processed around midnight and made available to the RDFI (receiving bank) around the same time.

Leg 3: RDFI -> Receiver by Day 2, ~5:00am

The receiving bank will pick up the notification of the credit sometime in the morning when they open for business (let's say 5am for simplicity's sake) and will decrement the funds in their customer's account at that time.

ACH Timeline

As you can see, timing for non-returned ACH transfers is quite straightforward: ACH files originated before 7pm are settled the following morning.

ACH Returns

Things start taking longer when an ACH file is returned.

Leg 4: RDFI -> Federal Reserve -> ODFI by Day 4, 12:01am

When the RDFI receives word of the ACH debit at the start of day 2, they are given until the end of the next business day to tell the Federal Reserve that they want to return the ACH debit. Sometimes, a bank moves quickly and will notify the Federal Reserve by the end of the same day. Most of the time, however, the banks will notify the Federal Reserve as late as possible, which is the end of day 3.

Once the Federal Reserve receives a return, they will let ODFI know that the ACH debit was returned that evening.

There is a notable exception to the next-day deadline: If the customer notifies the bank that they did not authorize the ACH debit (for example, in the case of a fraudster using a stolen bank account), the RDFI is allowed 60 days to return the ACH debit. Because of this, the ACH protocol is very consumer friendly, since the originator of the ACH debit must now return the money they debited and try to get back whatever was given in return for the debit.

Leg 5: ODFI -> Originator by Day 4, ~5:00am

The ODFI bank will pick up the notification of the return sometime in the morning when they open for business (again, let's say 5am for simplicity's sake) and will forward it on to the originator.

ACH Timeline when there are returns

Below is another way to visualize the ACH timeline when there are returns involved.

ACH Timeline

It’s important to note that the ACH system never provides positive confirmation that an ACH debit has gone through successfully. The only response an ACH originator may get is one notifying them of a return. Because of this “no news is good news” policy, it is wise for originators of ACH debits to wait for 3 additional business days of “no news” to ship their product to the customer. Though the ACH system is described as a next-day settlement system, in practice, it is not because of this.

So, for example, a business that submits an ACH debit on a Monday generally should not consider the funds to be good until Thursday morning. An ACH debit submitted on a Wednesday should not be considered good until Monday morning.

A faster protocol?

Because of the inherent delays in the ACH system, alternate protocols and means of transferring money (for example, Dwolla and Bitcoin) have begun to see pockets of popularity. Their biggest downside of course, is their lack of widespread adoption. Nearly all banks today are part of the ACH network and $39 trillion are moved through the ACH system annually.

An addendum to the ACH protocol to support same-day ACH settlement is something that is almost unanimously desired by the ACH community. The good news is that NACHA, the governing organization behind ACH, has recently announced plans to roll out a same-day ACH protocol. The challenge is coordinating the adoption of the new protocol across all participating banks. Once fully implemented, the same-day ACH system would likely cut one day from the timelines outlined here.

Parts 1, 2, and 3 of this series should give a pretty good overview of the ACH protocol at a high level, although for the sake of clarity, much has been simplified in these posts. There are tons more details and nuances that make ACH payments a very interesting problem. At Gusto, we move billions of dollars annually through the ACH network and we're exploring ways to shorten these timelines for our customers. If problems of this nature look interesting to you, we're hiring talented engineers.

If there's interest in the comments, I'll write a part 4 of this post, detailing the actual ACH file format (spoiler alert: It's a fixed width file format that you can generate using Fixy.

Comments on Hacker News