Guide
How ACH works: push vs pull, speeds, and returns
Maria Sirotkina Last updated
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.
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: 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 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 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 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.
"The Spritz team were professional, knowledgeable, and willing to work with us to create a custom native solution."
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.
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).
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.
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 |
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.
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
- Nacha, Same Day ACH and business-to-business payments propel ACH Network volume growth in 2025, January 2026
- Nacha, Increasing the Same Day ACH dollar limit to $10 million
- Nacha, New rules
- Nacha, Risk and quality rules fact sheet
- Federal Reserve Financial Services, FedACH processing schedule
- Spritz docs, Settlement timing, ACH debit user experience, and ACH returns