# banking.bacs-processing-date The three days of the Bacs cycle a payment file joins: the input day (day 1, the file is accepted), the processing day (day 2) and the entry day (day 3, when a Direct Credit lands in the recipient's account and a Direct Debit is taken). Payroll and supplier runs are planned backwards from day 3, and a bank holiday in the middle moves it. ## The rules Bacs describes the cycle for Direct Credit as: "Input day is the latest day a business user/bureau may submit a payment file to Bacs for a processing cycle. Payment files must be transmitted to Bacs between 07.00 and 22.30"; on day 2 files are delivered to the receiving banks; on day 3 "payments are simultaneously credited to the recipients' accounts and debited from your account". Source: Bacs, "Bacs Direct Credit", https://www.bacs.co.uk/bacs-schemes/getting-started/bacs-direct-credit/ (read 2026-09-23). The days are Bacs processing days: Monday to Friday, excluding bank holidays in England and Wales, which Bacs uses as its non-processing days for the whole of the UK (Scotland's and Northern Ireland's extra holidays do not stop Bacs). The published Bacs processing calendar is the authority; the bank holidays here come from `dates.bank-holidays` (gov.uk data, region `england-and-wales`), and the working-day steps from `dates.add-business-days`. So: - input day = the submission date if it is a processing day and the file was sent by 22:30 (`afterCutoff` false); otherwise the next processing day. A file sent at a weekend or on a bank holiday joins the next processing day whatever the time; - processing day = the next processing day after the input day; - entry day = the processing day after that. ## Why `afterCutoff` is a flag The time of day is the caller's to read (this capability never reads a clock), and comparing a timestamp with 22:30 is simpler at the call site than passing a time zone in. The 22:30 deadline is the one Bacs publishes (quoted above); a bureau or bank may set an earlier internal deadline, in which case pass `afterCutoff` against that. ## Limits The bank holiday data covers the years gov.uk publishes (2019 to 2028 in `dates.bank-holidays@1.0.0`). A cycle that needs a year outside it fails with that capability's error rather than treating an unknown Christmas as a working day. Next year's calendar is only consulted when the cycle actually runs into next year, so a December cycle in the last published year still works. This gives the cycle for a submission. It does not work backwards from a required arrival date; for that, step back two processing days from the entry day with `dates.add-business-days` and the same holiday list.