What is ACH?
ACH
ACH is the US Automated Clearing House network. Nacha, the National Automated Clearing House Association, sets the rules and the file format banks exchange. Banks send batches of credits and debits through it. Most transfers take one to two business days. Same-day ACH is the same network with an earlier cutoff, and it can still return after it posts.
How does ACH work?
Your bank or processor files a batch. The ACH operator sorts it. The receiving bank posts it on a later cycle. Credits (you send money) and debits (you pull money) follow different risk rules. Returns can arrive days after you thought the payment was done.
ACH vs same-day ACH
Same-day ACH uses the same network and the same return windows. It adds extra processing windows so some payments post the same business day if you hit the cutoff. It is not instant. It is not RTP. Treat it as ACH with a shorter wait, not a new product.
ACH vs RTP and FedNow
ACH is batched and reversible for a window. RTP and FedNow are real-time and usually final. ACH is cheaper and more widely reachable today. Instant rails cost more and do not cover every account. Many products offer both and pick per transfer.
| ACH | RTP / FedNow | |
|---|---|---|
| Clearing | Batch windows | Immediate |
| Reversal | Returns for days | Usually final |
| Best for | Payroll, pulls, bill pay | Instant payouts |
How it works with Blnk
Blnk records the ACH obligation. Your bank or processor still files the Nacha batch.
You post between two named balances and hold the amount inflight until the Nacha file settles. For a deposit, the source is @WorldUSD_ACH and the destination is the customer wallet. For a payout, the source is the wallet and the destination is @PayoutUSD_ACH.
We use @WorldUSD_ACH and @PayoutUSD_ACH because they are system balances that belong to the organization. Blnk calls these internal balances.
Commit the post when the item settles. Void it if Nacha returns the item. Reconciliation matches those commits and voids to the bank file.
Record an ACH deposit in four steps:
Name the source and destination
The source is the balance that loses the amount. The destination is the balance that gains it. For this deposit, debit
@WorldUSD_ACHand credit the customer wallet.Record the transfer inflight
Create the transaction with
inflight: true. Settled balances stay unchanged until you commit or void.record-ach.tsawait blnk.Transactions.create({ precise_amount: 25000, precision: 100, reference: 'ach_in_20260816_001', currency: 'USD', source: '@WorldUSD_ACH', destination: 'customer_wallet_id', description: 'Deposit via ACH', inflight: true, meta_data: { rail: 'ach', sec_code: 'PPD', nacha_trace: '021000021234567', customer_id: 'cus_8f21a4', }, });Commit the settlement or void a return
After the processor files the batch, commit the inflight transaction when the item settles. Void it if Nacha sends a return. See update inflight.
Commitawait blnk.Transactions.updateStatus( 'txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c', { status: 'commit' }, );Voidawait blnk.Transactions.updateStatus( 'txn_c4e70eb8-e4d6-4e04-a2e2-92a43b969e0c', { status: 'void' }, );Match the Nacha file
Upload the Nacha or bank statement in reconciliation and match each line to the committed or voided post.