How to Handle New Year Bank Holiday Logic in
Your UK Leave Calculator
Building a leave calculator for UK employees sounds
straightforward until New Year hits. The date logic
around 1 January — and Scotland's additional 2 January
bank holiday — catches most implementations off guard.
This article walks through the key edge cases developers
need to handle for accurate UK New Year bank holiday logic.
The Basic Rule
New Year's Day is fixed to 1 January every year across
all four UK nations — England, Wales, Scotland and
Northern Ireland. Simple enough.
The problem starts when 1 January falls on a weekend.
Substitute Day Logic
When New Year's Day falls on a Saturday or Sunday,
a substitute bank holiday is observed on the next
available working day.
| New Year's Day | Substitute |
|---|---|
| Saturday | Monday 3 January |
| Sunday | Monday 2 January |
This means your date function cannot simply check
for 1 January. It must also check for the declared
substitute date from the official gov.uk bank
holidays list.
Scotland's Extra Complexity
Scotland observes 2 January as a separate bank holiday
— completely independent of New Year's Day.
When New Year's Day falls on Sunday, the substitute
moves to Monday 2 January. But Scotland already has
2 January as a bank holiday. In this case, Scotland's
2 January substitute shifts to Tuesday 3 January.
This means Scottish workers can end up with two
consecutive bank holidays — Monday and Tuesday —
at New Year. England and Wales only get one.
A single UK-wide holiday array will produce wrong
results here. You need separate arrays per nation.
Implementation Approach
The cleanest approach is to consume the gov.uk
bank holidays API directly:
This returns confirmed dates for all four nations
separately, with substitute days already resolved.
No calculation needed — just parse and cache.
For a static fallback, maintain a manually updated
JSON file per nation. Avoid hardcoding rules —
substitute day declarations can change.
Why This Matters for Payroll
Payroll systems that miscalculate New Year bank
holidays can generate incorrect pay for thousands
of workers. Scottish employees are most at risk
due to the 2 January complexity.
Always test your implementation against:
- New Year on Friday (no substitute needed)
- New Year on Saturday (Monday substitute)
- New Year on Sunday (Monday substitute,
Scotland shifts to Tuesday)
For confirmed New Year bank holiday dates
across all four UK nations verified against gov.uk,
this reference covers every year from 2024 to 2028.
For a complete overview of all UK bank holidays
and regional differences, find out more.
Summary
- Always use declared dates from gov.uk,
not calculated rules - Handle Scotland separately — 2 January
adds complexity - Test Sunday New Year edge case specifically
- Cache the gov.uk API response rather than
calling it on every request