Timing
An ACH entry settles on its effective date. This page covers how that date is chosen, the Same Day ACH windows, banking days, and when money is held and released.
Effective dates
- With neither
effective_datenorsame_day, the entry is dated the next banking day. - An
effective_datethat is a banking day is kept. One that falls on a weekend or holiday moves to the next banking day. - A date earlier than the next banking day answers
422withpayments.cutoff_passed, and thedetailnames the earliest date. Today is never a standard effective date; usesame_day. - The transfer's
effective_datein the response is the date after these rules.
Same Day ACH
same_day: true dates the entry today, Eastern time. It is accepted on a banking day while a window is still open.
| Window | Submit by | Settles at |
|---|---|---|
first | 10:30 ET | 13:00 ET |
second | 14:45 ET | 17:00 ET |
third | 16:45 ET | 18:00 ET |
- At 16:45 ET or later, or on a day that is not a banking day, the answer is
payments.cutoff_passed. - An entry above
100000000minor units, $1,000,000.00, answerspayments.limit_exceeded. - An
IATentry answerspayments.limit_exceeded. International entries are not eligible.
GET /rails returns these figures for the fedach rail, with the source they were taken from and whether each window is open now.
Files
Entries leave in NACHA files, and nothing in the payments service builds a file on a timer. Bank staff or the operations service call POST /rails/ach/files. With no body it takes the pending entries dated the next banking day. effective_date takes the entries for that date, and same_day: true takes today's while a window is open. A date with nothing pending answers payments.no_pending_transfers.
Two scheduler routines clean up behind it. A file the operator did not acknowledge is sent again. A pending entry whose effective date passed without a file is moved to the next banking day.
Settlement
The published schedule settles standard entries at 08:30 ET on the effective date. A transfer becomes settled when the operator's settlement of its file is posted at POST /rails/ach/files/{id}/settle. The journal is dated the bank's business date when that settlement is first confirmed.
Banking days
A banking day is a weekday that is not a Federal Reserve holiday: New Year's Day, Martin Luther King Jr. Day, Presidents Day, Memorial Day, Juneteenth, Independence Day, Labor Day, Columbus Day, Veterans Day, Thanksgiving Day and Christmas Day. A holiday on a Sunday is observed on Monday. One on a Saturday is not observed.
The bank's business date rolls at 4:00 p.m. Eastern. Anything posted at or after that time, or on a day that is not a banking day, is dated the next banking day. Incoming entries, return reversals and settlement postings are dated this way. The code marks the 4:00 p.m. cutoff as a proposal until the bank sets its own.
Holds and availability
- A credit places a
pending_debithold for the full amount when it is created. The available balance falls at once; the ledger balance falls at settlement. - The hold is released by the settlement journal, by a rejection at review, or by the cancellation of an international transfer.
- A debit holds nothing. The account is credited when the file settles.
- A prenotification holds and posts nothing.
- An incoming credit posts when it is received and is available the next banking day. An incoming debit posts when it is received.
Other clocks
| What | Time allowed |
|---|---|
A prenotification becomes verified | Three banking days after its effective date, once settled. See Changes and prenotes. |
| Refusing a notification of change | Fifteen days from receipt. |
| Returning a posted debit as unauthorized | Sixty days from settlement. See Returns. |
A settled debit counts against the originator's exposure_limit_amount | exposure_days banking days, five unless operations set another. |