<!-- Markdown mirror. Canonical: https://www.spritz.finance/ach -->

# How ACH works: push vs pull, speeds, and returns

> A plain guide to ACH for fintechs adding bank deposits: pull vs push, how long transfers take, how instant deposits work, and how returns work. Updated for 2026.

_2026-11-04 · Maria Sirotkina · last updated 2026-11-04_

**In short**

- ACH is the US network for moving money between bank accounts. It is cheap and everywhere, but it runs on business days, and transfers take hours or days.
- Pull (ACH debit): the user links their bank once and deposits without leaving your app. Push (ACH credit): you show the user account details and they send the money from their own bank.
- Standard ACH settles in one to two business days, and same-day ACH within the business day. Apps can still offer instant deposits by making funds available before the transfer settles.
- A pulled deposit can be sent back, called a return, for up to 60 days. That is the main risk to plan for before you add ACH deposits.
- Rails by Spritz powers in-app bank linking and ACH pull deposits for fomo, the trading app, where users have connected 30,000+ bank accounts.

ACH, short for Automated Clearing House, is the network US banks use to move money between accounts. Payroll, rent, subscriptions, and most bank deposits into apps run on it. In 2025 it carried 35.2 billion payments worth $93 trillion, according to [Nacha](https://www.nacha.org/news/same-day-ach-and-business-business-payments-propel-ach-network-volume-growth-2025), the organization that writes the network's rules.

This guide is for product and operations teams at fintechs adding bank payments to their app: neobanks, trading and investing apps, wallets, and payout platforms. It covers the choices you will actually make: which direction to move money, how fast to release it, and what to do when a payment comes back.

We run ACH every day for the Spritz consumer app and for partners on [Rails by Spritz](https://www.spritz.finance/product), including in-app ACH pull deposits for [fomo](#fomo), so the examples come from real flows. One example runs through the guide: a user funds their app balance with $500 by ACH at 11:00 a.m. ET on a Monday.

![The ACH Network in 2025](/ach/05-ach-in-numbers.svg)

## How ACH works

ACH moves money in batches between banks, a few times each business day, under rules set by Nacha. The Federal Reserve and The Clearing House run the central hubs that route payments from one bank to another. Because payments are batched, ACH is far cheaper than a wire, and also slower.

For an app, three facts matter more than the plumbing. ACH only settles on business days, and pulled payments can come back days or weeks later. Every payment also starts from either your side or the user's side, which is the push versus pull choice below.

## ACH pull vs push: how the money gets to your app

In an ACH pull, also called an ACH debit, the user links their bank account inside your app once, enters an amount, and taps deposit; your app pulls the money from their account. In an ACH push, also called an ACH credit, your app shows the user bank account details, and the user logs into their own bank and sends the money there. The difference for the user is simple: pull keeps them in your app, push sends them to their bank.

![ACH pull vs push](/ach/02-push-vs-pull.svg)

### ACH pull: the user stays in your app

Pull is the better experience for everyday deposits. After the first bank link, a repeat deposit takes a few seconds, and you control the amount and timing.

The catch is that the money is not yours yet when you pull it: the user's bank can still send it back. That is the return risk covered below.

![ACH pull demo](/ach/ach-pull-demo.gif)

### ACH push: the user goes to their bank

Push asks more of the user every time. They copy account details from your app, tap out to their own bank app, add you as a payee, and send the transfer; your app sees nothing until the money lands, the same day with same-day ACH or within one to two business days with standard ACH.

In return, push is safer for you. There is no debit for the user's bank to dispute, and push works for large amounts and for money from someone else, such as an employer paying salary straight into the account. Cash-outs work the same way in reverse: your app pushes money to the user's bank.

![ACH push demo](/ach/ach-push-demo.gif)

| | ACH pull (debit) | ACH push (credit) |
|---|---|---|
| What the user does | Links their bank once, then taps deposit in your app | Copies your account details, then sends a transfer from their bank |
| Leaves your app | No | Yes, every deposit |
| Who starts the payment | Your app, with the user's authorization | The user, from their bank |
| Can it come back | Yes, for up to 60 days | Rarely; the user sent it on purpose |
| Best for | Frequent, everyday deposits | Large, recurring, or third-party deposits, such as payroll |
| Example | Topping up a trading, investing, or wallet balance from a linked bank | Salary or a large transfer sent to a dedicated account number |

## Case study: fomo

**fomo users fund their accounts by ACH pull, on Rails**

fomo, the trading app backed by Benchmark, Index Ventures, and Union Square Ventures, uses Rails by Spritz for in-app bank linking and ACH pull deposits. Users link their bank once and deposit without leaving fomo; cash-outs to bank accounts run on the same integration.

- 30,000+ bank accounts connected
- $2M+ processed every month
- <2 weeks from integration start to launch

> "The Spritz team were professional, knowledgeable, and willing to work with us to create a custom native solution." — Paul Erlanger, Co-founder, fomo

[Get the same setup](https://form.typeform.com/to/lB1zdVfD) · [Read the fomo case study](https://www.spritz.finance/customers/fomo)

## How long ACH takes

Standard ACH settles in one to two business days. Same-day ACH settles within the business day if the payment makes one of three daily cutoffs at 10:30 a.m., 2:45 p.m., and 4:45 p.m. ET. Nothing settles on weekends or federal holidays, so a deposit made on Friday evening starts moving on Monday.

![Same-day ACH windows](/ach/04-same-day-windows.svg)

Those are network times. In practice, providers wait longer before treating a pulled deposit as done, because a settled debit can still come back; on Rails by Spritz, an ACH debit takes about three to five banking days to settle ([Spritz docs](https://docs.spritz.finance/guides/timing)). Same-day ACH is capped at $1 million per payment today, rising to [$10 million on September 17, 2027](https://www.nacha.org/rules/increasing-same-day-ach-dollar-limit-10-million-0).

### Instant deposits

ACH moves money between banks in hours or days, but users do not have to wait that long. With instant deposits, the app makes the funds available right away and the bank transfer completes in the background.

On Rails by Spritz, the user chooses: standard delivery, where funds arrive once the transfer settles, or fastest available, where some or all of the funds arrive right away and the rest after settlement ([Spritz docs](https://docs.spritz.finance/guides/ach-debit-user-experience)).

![$500 pull deposit timeline](/ach/03-deposit-timeline.svg)

## ACH returns: when a deposit comes back

A return is the user's bank sending a pulled payment back. Most returns come quickly, within about two banking days, for reasons like a closed account or not enough money. Returns where the account holder says they did not authorize the payment can arrive up to 60 calendar days later.

![ACH return windows](/ach/06-return-windows.svg)

For any app, timing is everything. If the funds have not been released yet, a return costs nothing; if the user has already spent, traded, or withdrawn them, you are chasing the money, and in crypto, where funds may already sit in the user's own wallet, the return is usually a loss. That is the trade-off behind every "instant deposit" button.

Nacha also watches how often your payments come back: above 0.5% for unauthorized returns, 3% for account errors, or 15% overall, it triggers a review of your payments ([Nacha](https://www.nacha.org/system/files/2019-05/Risk-and-Quality-Rules-Fact-Sheet.pdf)). Each return carries a short reason code, such as R01 for insufficient funds, which your ops team will see in reports.

Four habits keep returns low:

- Only debit bank accounts the user linked and verified in your app
- Release early only what you are comfortable advancing, and the rest after settlement
- Stop using a bank account after it has a return; ask the user to link another one
- Tell the user what to do next in plain words, and never show raw return codes or accuse them of fraud

On Rails by Spritz, each return arrives with the amount at risk, the bank account is disabled automatically, and the API tells you which next step to show the user ([Spritz docs](https://docs.spritz.finance/guides/ach-returns)).

## ACH vs wire vs RTP vs push to debit

Most apps end up offering more than one rail. ACH is the cheapest and handles both directions; wires suit large deposits; RTP and push to debit make cash-outs instant, including on weekends.

| Rail | Direction | Speed | Runs | Can it come back | Best for |
|---|---|---|---|---|---|
| ACH pull | Deposits | 1 to 2 business days on the network; providers often wait 3 to 5 | Business days | Yes, for up to 60 days | Everyday in-app deposits |
| ACH push | Deposits and cash-outs | 1 to 2 business days | Business days | Rarely | Large or recurring deposits; standard cash-outs |
| Same-day ACH | Deposits and cash-outs | Same business day | Business days, three windows | Same as standard ACH | Faster cash-outs on business days |
| Wire | Deposits and cash-outs | Same business day | Business days | No; final once sent | Large deposits |
| RTP | Cash-outs | Seconds | 24/7/365 | No; final once sent | Cash a user wants now |
| Push to debit | Cash-outs | Minutes | 24/7/365 | Rarely | Money straight onto the user's debit card |

![Choosing a rail](/ach/07-choose-a-rail.svg)

## Adding ACH to your app: decisions to make

Before you ship ACH, settle these five questions with your product, ops, and support teams. Your provider will ask about most of them during onboarding.

| Decision | Options | What to weigh |
|---|---|---|
| Which direction | Pull, push, or both | Pull converts better; push carries less risk and suits large amounts |
| Delivery speed | Standard, early release, or a user choice | Early release feels instant but means advancing funds until settlement |
| Return handling | Who sees returns, and what the user is told | Disable the bank account, show one clear next step, and reconcile daily |
| Cash-out rails | Standard ACH, same-day ACH, RTP, push to debit | Speed users expect versus cost per payout |
| Support answers | "Where is my deposit" and "why was it returned" | Show the expected date in the user's time zone, labeled as an estimate |

## ACH on Rails by Spritz

Rails by Spritz gives fintechs both directions of ACH inside their own app, without building bank, compliance, or payment operations in-house. It is built for [neobanks](https://www.spritz.finance/use-cases/neobanks), [trading apps](https://www.spritz.finance/use-cases/trading), [wallets and exchanges](https://www.spritz.finance/use-cases/wallets-exchanges), and [payout platforms](https://www.spritz.finance/use-cases/payouts).

For pull, users link a bank once and deposit by ACH debit without leaving the app, the flow [fomo](#fomo) runs today ([linked bank on-ramp](https://docs.spritz.finance/guides/use-cases/linked-bank-onramp)). For push, each user gets dedicated account details, and money that arrives by ACH or wire is converted to the stablecoin or token the app chooses ([on-ramp guide](https://docs.spritz.finance/guides/use-cases/on-ramp)). Cash-outs go out by same-day or standard ACH, RTP, wire, or push to debit ([off-ramp](https://www.spritz.finance/product/off-ramp)).

KYC, transaction monitoring, settlement, reconciliation, and return handling run inside the stack, and one KYC covers deposits, cash-outs, and bill pay. The same rails power the Spritz consumer app and had processed $350M+ as of June 2026.

## Add ACH deposits to your app

In-app bank linking, ACH pull and push, instant deposits, and cash-outs behind one integration. fomo went live in under two weeks.

[Book a call](https://form.typeform.com/to/lB1zdVfD) · [View the docs](https://docs.spritz.finance/guides/use-cases/linked-bank-onramp)

## Glossary

- **ACH (Automated Clearing House)**: The US network for moving money between bank accounts in batches, on business days.
- **Nacha**: The organization that writes the rules for the ACH Network.
- **ACH pull (ACH debit)**: A payment your app starts, taking money from the user's linked bank account with their authorization.
- **ACH push (ACH credit)**: A payment the sender starts, sending money from their bank to an account number.
- **Account details**: The routing and account number an app gives a user so they can push money to it from their bank.
- **Same-day ACH**: ACH payments that settle within the same business day, in three daily windows.
- **Settlement**: The moment the money actually moves between banks.
- **Return**: A pulled payment sent back by the user's bank, with a short reason code.
- **RTP**: An instant payment network that settles push payments in seconds, every day of the year.

## Frequently asked questions

### What is the difference between ACH pull and ACH push?

In an ACH pull, your app takes money from the user's linked bank account after they authorize it, so the user never leaves your app. In an ACH push, the user sends money from their own bank to account details you give them.

### How long does an ACH transfer take?

Standard ACH settles in one to two business days, and same-day ACH within the business day if it makes a cutoff. Providers often wait a few more banking days before treating a pulled deposit as final, because it can still be returned.

### Does ACH work on weekends?

No. ACH settles on business days only, so a payment started on Friday evening settles on Monday at the earliest. RTP and push to debit run every day of the year.

### Can ACH deposits be instant?

Yes, for the user. The bank transfer itself takes hours or days, but the app can make the funds available right away and let the transfer finish in the background. On Rails by Spritz, this is the fastest available option.

### Can an ACH deposit be reversed?

Yes, if it was pulled. The user's bank can return it within about two banking days for reasons like a closed account or missing funds, and up to 60 calendar days if the account holder says they did not authorize it.

### What is an ACH return code?

A short code that says why a payment came back, such as R01 (not enough money), R02 (account closed), or R10 (the account holder says it was not authorized). Use it for reconciliation and support, not in messages to users.

### Is ACH push or pull better for my app?

Most apps offer both. Pull gives the smoothest everyday deposits; push suits large and recurring deposits and carries less return risk.

### Does Rails by Spritz support ACH pull deposits?

Yes. Users link a bank once and deposit by ACH debit inside your app, with standard or fastest available delivery. fomo runs this flow on Rails today.

### Is ACH safe?

ACH runs between regulated banks under Nacha rules, and new fraud monitoring rules took effect in 2026 ([Nacha](https://www.nacha.org/newrules)). For an app, the main risk is returns on pulled deposits, which is why bank verification and careful early release matter.

## Sources

- Nacha, [Same Day ACH and business-to-business payments propel ACH Network volume growth in 2025](https://www.nacha.org/news/same-day-ach-and-business-business-payments-propel-ach-network-volume-growth-2025), January 2026
- Nacha, [Increasing the Same Day ACH dollar limit to $10 million](https://www.nacha.org/rules/increasing-same-day-ach-dollar-limit-10-million-0)
- Nacha, [New rules](https://www.nacha.org/newrules)
- Nacha, [Risk and quality rules fact sheet](https://www.nacha.org/system/files/2019-05/Risk-and-Quality-Rules-Fact-Sheet.pdf)
- Federal Reserve Financial Services, [FedACH processing schedule](https://frbservices.org/resources/resource-centers/same-day-ach/fedach-processing-schedule.html)
- Spritz docs, [Settlement timing](https://docs.spritz.finance/guides/timing), [ACH debit user experience](https://docs.spritz.finance/guides/ach-debit-user-experience), and [ACH returns](https://docs.spritz.finance/guides/ach-returns)

