---
title: How leave works in SquadBear
description: Types, policies, accrual and how a request's day count is calculated
order: 1
---

This is the model behind every leave request. Configuration (types, policies, accrual
rules) is separate from the transaction (a request), so changing next year's carryover
rule does not rewrite history.

## How the pieces fit together

- **Leave types** are the categories a request is filed against - Vacation, Sick leave
  and Unpaid leave in a new workspace - and carry whether the category is paid.
- **Policies** attach the rules to a type: days per year, notice period, the booking
  increment (the smallest bookable slice - full day, half day, 2 hours, or 1 hour),
  whether a replacement is required, who approves it.
- **Enrollment** is eligibility. Each employee is enrolled in at most one policy per
  leave type; with no enrollment the category does not apply to them - no accrual, no
  balance, and a request is refused as `not_eligible`. Only policies with
  **Automatically enroll new hires** pick up new starters.
- **Accrual rules** decide how those days land: **annual** (one grant on 1 January) or
  **monthly** (1/12 on the 1st), set per policy at Workspace settings → Leave policies →
  *[policy]* → Accrual schedule.
- **Balances** track accrued, carried-over, adjusted, used and reserved minutes, per
  person, per leave type, per year. Available is accrued + carried over + adjusted -
  used - reserved, rendered in days against each person's own daily norm.
- **Untracked types** carry no balance: a type is balance-tracked only when it is paid
  and its policy accrues more than **0 days a year**. Requests against one are checked
  against the booking rules only. Sick leave defaults to zero accrual with no per-request
  maximum, Unpaid leave to a 30-day maximum.
- **Requests** draw down the matching balance when they are approved, or on submission
  when the policy auto-approves, and move `pending → approved` (or `rejected`).
  [How leave approvals work](/docs/leave/approvals/) covers the chain, cancellation and
  the **Request history** trail.

## How a request's days are counted

Each day in the range is checked against the employee's own work schedule when the
policy excludes weekends, so a non-working day drops out the way a weekend does, and
against their holiday calendar when it excludes public holidays. Both switches ship on
for every seeded policy. A full day off costs exactly that date's scheduled hours;
[part-time schedules](/docs/leave/work-schedules/) prorate accrual by weekly hours.

Unused time carries into the next year under the policy's carryover mode - **Carry
everything**, the default; **Carry nothing**; or **Carry at most** a set number of days.
Only a positive balance rolls over.

## Worked example: joining mid-year

Aleksandra joins Northlake on 1 March. Marta enrolls her in the Standard vacation
policy - **annual** accrual, 26 days a year, prorated by start month - and the next
accrual run posts one lump grant: `26 × 10/12 = 21.67 days`, held to the minute
(10,400 minutes) so nothing is lost to rounding. Accruals run overnight; Workspace
settings → Workspace → General → Run accruals now posts them on demand.

Set to **monthly** accrual, the same policy grants 1,040 minutes (`26 / 12 = 2.17 days`)
on the 1st of each month - 10 grants from March to December, the same 10,400 minutes,
because each grant is a whole number of minutes.

> [!AGENT]
> Show me my current leave balances and explain how many of my unused days will carry into next year.

## Related

- [Set up your workspace](/docs/getting-started/quickstart/)
- [Connect Claude to SquadBear](/docs/getting-started/connect-an-agent/)
- [Three worked leave examples](/docs/leave/examples/)
