Guide

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

Maria Sirotkina Last updated

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

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, 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, including in-app ACH pull deposits for 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 35.2 billion payments (up nearly 5%), $93 trillion in value (up almost 8%), 1.4 billion same-day ACH payments (up 16.7%), $3.9 trillion same-day ACH value (up 21.4%). THE ACH NETWORK IN 2025 35.2B payments ▲ up nearly 5% $93T in value ▲ up almost 8% 1.4B same-day payments ▲ up 16.7% $3.9T same-day value ▲ up 21.4% Source: Nacha, January 2026 · change vs 2024
The ACH Network in 2025. Source: Nacha, January 2026.

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 ACH push for deposits Pull: the user links their bank once in your app, enters an amount and taps deposit, and the app pulls the money; the next deposit is one tap. Push: the user copies your account details, opens their own bank, adds a payee and sends the transfer; every deposit goes back through their bank. ACH pull ACH debit Stays in your app 1 Link their bank your app · first time only 2 Enter an amount, tap deposit your app 3 Your app pulls the money automatic Next deposit: one tap ACH push ACH credit Leaves your app 1 Copy your account details your app · first time only 2 Tap out to their bank app your app 3 Send the transfer there outside your app Next deposit: out to their bank again
Pull keeps the user in your app. Push sends them to their bank to make the transfer.

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.

Animated demo of an ACH pull deposit: the user enters $500, picks fastest available delivery, confirms, and sees the balance update, all inside the app. Callout: least friction for users.
ACH pull: every step happens in your app.

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.

Animated demo of an ACH push deposit: the user copies account details in the app, taps Open my bank app, leaves the app to send the transfer in their own bank, and the balance updates in the app once the money lands. Callout: best for larger deposits.
ACH push: the transfer itself happens outside your app.
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 Rails by Spritz

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 weeksfrom 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 Read the fomo case study

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 Submit by 10:30 a.m. to settle at 1:00 p.m.; by 2:45 p.m. to settle at 5:00 p.m.; by 4:45 p.m. to settle at 6:00 p.m. Eastern. Standard ACH settles 8:30 a.m. next business day. SAME-DAY ACH WINDOWS · ONE BUSINESS DAY · ET 8a 9a 10a 11a 12p 1p 2p 3p 4p 5p 6p 7p W1 submit by 10:30 settles 1:00 p.m. W2 submit by 2:45 settles 5:00 p.m. W3 submit by 4:45 settles 6:00 p.m. next day 8:30 a.m. standard submission deadline settlement Source: Federal Reserve Financial Services
Same-day ACH windows, Eastern Time. Source: Federal Reserve Financial Services.

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). Same-day ACH is capped at $1 million per payment today, rising to $10 million on September 17, 2027.

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).

Timeline of a $500 ACH pull deposit Fastest available makes some or all funds available immediately. The bank debit settles in about 3 to 5 banking days, then standard delivery completes. A bank or funds issue can return it within about 2 banking days of settlement; a dispute up to 60 calendar days. ONE $500 ACH PULL DEPOSIT, STARTED MONDAY 11:00 A.M. ET Mon Tue Wed Thu Fri Mon day 60 11:00 a.m. deposit Fastest available some or all funds now Bank debit settles about 3 to 5 banking days Standard delivery after settlement Bank or funds issue about 2 banking days User disputes it up to 60 days Business days only; the weekend is skipped. Settlement timing from Spritz docs.
One $500 pull deposit: when the funds are available, when the bank money settles, and how long it can still come back.

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.

How long a pulled ACH deposit can come back A bank or funds issue (closed account, wrong details, no money) can return a pulled deposit within about 2 banking days of settlement; a dispute, where the user says they did not authorize it, up to 60 calendar days. HOW LONG A PULLED DEPOSIT CAN COME BACK settles day 2 day 4 day 60 Bank or funds issue closed account, wrong details, no money 2 banking days User disputes it says they did not authorize it 60 calendar days with instant credit, funds are already out
Most returns land within two banking days. Disputed payments can come back two months later.

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). 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).

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
Picking a US bank rail Deposits: everyday deposits from the user's own bank use ACH pull from a linked bank; large, recurring or third-party deposits use a push by ACH or wire to your account details. Cash-outs: if needed now or on a weekend, RTP or push to debit; otherwise same-day or standard ACH. PICKING A US BANK RAIL Which way is money moving In: deposits Out: cash-outs Everyday, from their own bank Needed now, or on a weekend yes no yes no ACH pull linked bank · in app Push deposit ACH or wire to you RTP or push to debit Same-day ACH or standard ACH
A rule of thumb for picking a rail.

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, trading apps, wallets and exchanges, and payout platforms.

For pull, users link a bank once and deposit by ACH debit without leaving the app, the flow fomo runs today (linked bank on-ramp). 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). Cash-outs go out by same-day or standard ACH, RTP, wire, or push to debit (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.

Rails by Spritz

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 View the docs

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). For an app, the main risk is returns on pulled deposits, which is why bank verification and careful early release matter.

Sources