Leave management
The leave module lets your workspace define what kinds of leave employees can take, how much they get, who is eligible, and how requests are reviewed. Everything lives under Leave in the admin sidebar (routes begin with /admin/leave). Employees apply and check balances from their portal.
How leave fits together
Leave is built up in layers. Set them up in this order the first time:
| Layer | What it does | Where |
|---|---|---|
| Leave type | A named kind of leave (Annual, Casual, Sick…). | /admin/leave/types |
| Leave policy | The rules for one type — quota, eligibility, carry-forward, sandwich rules, effective dates. | /admin/leave/policies |
| Leave group | A bundle of policies attached to a shift or employee, so different staff get different entitlements. | /admin/leave/groups |
| Allocation | Writes each employee's yearly balance for the fiscal year. | /admin/leave/allocations |
| Balance | The running total an employee can draw from. | /admin/leave/balances |
Your workspace already ships with a starter set of leave types and policies, so you can review and adjust rather than build from scratch.
Leave types
A leave type is the label employees see when they apply. To add one, open Leave Types and select Add Leave Type.
| Field | Notes |
|---|---|
| Name | Shown to employees. Must be unique in your workspace. |
| Code | A short tag (up to 10 characters, e.g. AL, SL). Also unique. |
| Color | Used on the calendar and balance chips. |
| Paid | Whether the leave is paid. Unpaid types (like leave without pay) are still tracked. |
Deleting a type deactivates it rather than erasing history. You cannot deactivate a type that still has pending applications — resolve those first.
Leave policies
Each type needs a policy to be usable. From Leave Types, use the settings action on a type (or open Leave Policies and pick the type) to reach the policy editor at /admin/leave/policies/{leaveTypeId}.
A type has one active policy at a time, versioned by its effective dates. Saving updates the current active policy; setting an Effective To date lets you retire an old policy and start a new one later.
Accrual mode
- Annual Quota — the standard mode. The full yearly quota is credited when leave is allocated.
- Cyclic Accrual — credits a fixed number of leave days for every block of worked days (for example, 1 day of rest for every 20 worked). Used for residential or rotational staff. When you choose this, set Worked Days per Cycle, Leave Days Credited, and an optional Max Accumulated cap. A daily job counts qualifying worked days and tops up the balance automatically.
Policy settings
| Setting | What it controls |
|---|---|
| Annual Quota (days) | Days granted per fiscal year (for annual-quota mode). |
| Max Consecutive Days | The longest single stretch an employee can request. |
| Carry Forward | Whether unused days roll into the next year, and the Max Carry Forward Days cap. |
| Encashment | Whether leftover days can be cashed out, and the Rate Per Day. |
| Negative Balance | Whether employees may go below zero, and by how many days. |
| Applicable Gender | Restrict a type to all, male, or female employees. |
| Min Service Months | Hold the type until an employee reaches a tenure. |
| Pro-rata for New Joiners | Scale the quota down for staff who joined mid-year. |
| Requires Document After (days) | Force an attachment when a request exceeds this length (0 = never). |
| Accrual Method | How the quota becomes available: Annual releases it all at once; Monthly releases it gradually (one-twelfth per completed month of service). Quarterly is also selectable. |
Sandwich rules
Sandwich rules make non-working days (weekends, week-offs, public holidays) count against leave in some cases:
- Between — off-days that fall between two leave days count as leave (e.g. a Friday + Monday request consumes the weekend too).
- Adjacent — off-days immediately next to a leave day count as leave. The Adjacent Scope picks Immediate (one day per side) or All (chains through every connected off-day and adjacent holiday).
Without any sandwich rule, requests only consume actual working days — weekends and holidays inside the range are skipped automatically.
Leave groups
Not every employee gets every policy. A leave group bundles the policies that apply to a category of staff (office staff, drivers, residential workers…), and that bundle is what an employee actually draws from.
On Leave Groups, create a group, then tick the policies it contains. Groups are grouped by accrual mode (Annual Quota vs Cyclic Accrual) to make selection clearer.
How a group reaches an employee, in order of priority:
- Direct assignment — a group set on the employee record.
- Shift default — the default leave group on the employee's active shift.
- Company default — the group flagged Default group, used as a workspace-wide fallback.
An employee is only allocated (and can only apply for) policies that belong to their single resolved group. A group that is still assigned to employees or shifts cannot be deleted — reassign them first.
Allocating leave
Allocation writes each employee's starting balance for a fiscal year. Open Allocations, pick the fiscal year, and select Allocate for All Employees.
What allocation does:
- Grants each eligible employee the quota from every annual-quota policy in their leave group.
- Applies pro-rata for anyone who joined mid-year (when the policy allows it).
- Carries forward last year's leftover balance, capped by the policy's carry-forward limit.
- Skips employees who fail a policy's gender, tenure, or employment-type conditions.
- Never duplicates an allocation that already exists for the selected year.
You can also allocate a single employee via the API, but the page handles the common "run it for everyone" case.
When your fiscal year rolls over automatically (see Company Setup → Fiscal Years), the new year's allocation — including carry-forward from the year that just closed — runs the same night. A daily job also fills any current fiscal year that has no allocations yet, and catches up at platform start, so allocation self-heals regardless of when your year starts. The manual Allocate for All Employees button remains for immediate reruns.
Balances
Leave Balances shows what each employee has left. The balance for a type is:
balance = accrued + carried forward − used − encashed
- Accrued is the amount available so far. For annual accrual that equals the full allocation; for monthly accrual it grows month by month.
- Used rises when a request is approved; encashed rises when days are cashed out.
Employees see their own balances in the portal; admins with view access see everyone's.
Applications and approvals
Applying
Employees apply from the portal (/portal/leaves/apply). A request captures the leave type, from/to dates, an optional half-day, a reason, and an optional attachment. When submitted, the system checks that:
- the type is active and the dates fall inside the current fiscal year;
- the employee meets the policy's gender, tenure, employment-type, and leave-group conditions;
- the range contains working days, and does not exceed the max consecutive limit;
- there is enough balance (unless the policy permits a negative balance within its limit);
- the dates don't overlap an existing pending or approved request;
- an attachment is present if the length triggers the document requirement.
The number of days is calculated from working days in the range, adjusted for any sandwich rule.
Reviewing
New requests arrive as Pending. The employee's reporting manager is emailed, and any reviewer with the approve permission can act on the queue at Pending Approvals (/admin/leave/pending):
- Approve — marks the request approved, deducts the days from the balance, and marks those dates as on leave on the attendance record. The employee is emailed.
- Reject — requires a reason, which is emailed to the employee.
Managers can also watch their own team's requests through the team view, and Leave Applications (/admin/leave/applications) lists every request with status filters, search, CSV export, and a printable register.
Cancelling
An employee can cancel a request that is still pending, or an approved request whose start date is still in the future. Cancelling an approved leave restores the balance and clears the attendance marks; the employee is notified.
Leave calendar
Leave Calendar (/admin/leave/calendar) shows approved leave across the whole workspace on a month grid. Each employee-on-leave appears as a colored dot (using the leave type's color) on the days they're away — a quick way to spot coverage gaps before approving more requests.
Encashment
If a policy allows encashment, unused days can be paid out. Open Encashment (/admin/leave/encashment), choose an employee, and their leave types with a positive balance appear. Select Process Encashment on a type to cash out its balance.
The payout is days × the policy's encashment rate per day, and the encashed days are deducted from the balance. A type only appears here when its policy has encashment enabled and a rate configured.
Who can do what
Access to leave features is governed by permissions (see /docs/workspace/access-control):
| Permission | Grants |
|---|---|
leave.view_own | See your own balances, applications, and team requests. |
leave.view_all | View all applications, balances, the calendar, and groups. |
leave.apply | Apply for and cancel your own leave. |
leave.approve | Review the pending queue and approve or reject requests. |
leave.configure | Manage types, policies, groups, allocations, and encashment. |
Email notifications
The module sends automatic emails at each step — a request notice to the manager, and approval, rejection, or cancellation notices to the employee. You can review and customize the wording under your workspace's email templates.