Public Holidays & Leave Policy for Distributed Teams
Early May in Poland is close to a national shutdown. May 1 and May 3 are both public holidays, and when the dates land kindly, three vacation days can stretch into nine straight days off. The UK gets one bank holiday Monday in the same stretch. So a Polish employee and a British colleague booking the identical week are spending different amounts of leave, and a single company-wide holiday calendar has to get one of them wrong: either Warsaw is billed for a day the law already gave her, or London collects Polish holidays for free.
One calendar is fine while everyone sits in one country. The moment you hire abroad, it turns quietly unfair, and the person it's unfair to can do the arithmetic.
The model that works
Three rules cover it:
- One holiday calendar per country. Not per office or team. Public holidays are set by national law, so the country is the natural unit.
- Each person resolves to their own country's calendar. The country they work in, not where the company is registered.
- Count every request per date. Each day in the range is checked against that person's work schedule, and against their holiday calendar if the policy says holidays don't consume leave. A day that fails either check isn't charged.
Per-date counting sounds pedantic, but it absorbs the awkward cases for free. A holiday that lands on a Saturday costs nobody anything, because that date was never a working day to begin with.
Should holidays burn PTO at all?
Whether a public holiday inside a request reduces its day count is a policy decision, not a law of nature. Exclude means the holiday doesn't consume leave. Include means it does, usually with a padded entitlement to compensate.
In the EU, exclude is the norm. Statutory annual leave and public holidays are separate entitlements in most member states, contracts treat them that way, and billing someone a vacation day for Constitution Day reads as a payroll bug rather than a policy. The include model mostly appears in US-style consolidated PTO banks. If your team is European, pick exclude. Either way, make it a per-policy setting, not a system-wide assumption: an unlimited sick leave policy has no balance for it to protect.
Same two weeks, three charges
Ola is in Gdańsk, Jonas in Berlin, Priya in London. All three work Monday to Friday, and all three book the same two calendar weeks off around the start of May: ten working days on paper.
- Ola (Poland): May 1 and May 3 both sit inside her window. In a year where both fall on weekdays, her request charges 8 days.
- Jonas (Germany): Germany observes May 1 too, but May 3 means nothing there. Charge: 9 days.
- Priya (UK): neither Polish date exists for her, but the UK's early May bank holiday is a Monday inside her window. Charge: 9 days.
Jonas and Priya land on the same number for different reasons, Ola pays a day less than either, and every charge is correct. In a year where May 3 falls on a weekend, Ola is charged 9 instead, no override needed; the per-date check already knew Saturday wasn't a working day.
Now rewind to Jonas's first month, before anyone thought about a German calendar.
The quiet failure mode
When a person's country has no holiday calendar, most systems don't throw an error. The days silently count as ordinary working days, the charge comes out high, and nobody notices until Jonas compares numbers with a colleague.
The failure is quiet, so the setup has to be loud. Two things help: seed known calendars at setup rather than trusting an admin to remember, and warn at request time. In SquadBear, a request from someone whose country has no calendar still goes through, but the preview carries a warning naming the missing country: one visible flag instead of months of silent overcharging.
"Who's off Thursday?" stops having one answer
Once holidays resolve per person, team availability stops being a single fact. Thursday can be a normal working day in London and Corpus Christi in Poland. What helps is one shared view of everyone's effective days off: approved leave and public holidays together. A manager needs the same view before approving overlapping requests; who approves and who covers is its own design problem, and one for another post.
Where this lives in SquadBear
Holiday calendars sit at Workspace settings → Holiday calendars: one per country per workspace, created by picking the country. Prepared sets ship for 25 countries covering 2026 and 2027, with moveable holidays like Easter Monday and Corpus Christi already resolved to real dates. Poland is 14 dates a year, Germany 9, Sweden 16. The workspace's default country is seeded automatically when the workspace is created. Countries without a preset start empty, ready to fill in by hand.
Each employee resolves to a calendar through their country: a personal override set at People → People → [person] → Edit profile → Country, or the workspace default without one. Matching is exact, no fallback to a neighboring country. Whether holidays affect leave day counts is the per-policy Exclude public holidays setting. Attendance and time tracking always treat a holiday as zero expected time.
For the shared view, SquadBear publishes an iCal feed: approved absences as all-day events named for the person (and leave type, if the workspace opts in), plus public holidays, over a rolling window. Pending and rejected requests never appear. Generate the URL from Team calendar → iCal feed, or Workspace settings → Workspace under Calendar feeds, and subscribe from Google Calendar, Outlook or Apple Calendar. The feed is read-only and its URL is a revocable token, replaceable if a link leaks. If you want one shared Google calendar that SquadBear keeps updated, that's the Google Calendar app, installed once at Workspace settings → Apps.
With an assistant connected, setup is a sentence:
"Create a holiday calendar for Germany and list what's currently on Poland's calendar for this year."
And so is the coordination question:
"List the public holidays on my calendar for next month, and who on the team is off around them."
Honest caveats
- Presets are a starting point, not a subscription. Sets cover 2026 and 2027 for 25 countries. Years after that, and regional days (German Länder, Swiss cantons), are added by hand. Budget a little upkeep each year.
- One calendar per country is a national compromise. Germany's states observe different holidays, and a single German calendar has to pick one list. Pick the set matching where your people actually sit and accept the odd regional gap.
- The legal layer stays yours. How public holidays interact with statutory leave varies by jurisdiction, and some countries grant a day in lieu when a holiday falls on a weekend. The calendar model handles the counting; a local advisor handles the law.
Try it on your own map
Start free: a workspace registered in Poland gets the 2026 calendar out of the box, or ask the demo to walk the trio's arithmetic on sample data.
Related: PTO accrual, explained, on where the balance those requests draw down comes from.