How HR configures leave in Arche: setting up leave types, building approval policies, understanding how balances accrue and carry over, and adjusting a balance by hand when something needs a manual correction.
This guide covers the administration side of Leave Management: the Leave Policies settings page, the Leave Balances page's adjustment flow, and how the year's holidays and blackout windows get onto the calendar. If you're looking for how an employee requests leave or how an approval moves through its steps, see the "Requesting & Approving Leave" guide instead: this one is about setting the rules up in the first place.
Who can do what
| Page | Route | Permission |
|---|---|---|
| Leave Settings | /leave/settings | manage_leave_config: the only permission that can write here |
| Leave Balances | /leave/balances | view_leave, manage_leave, or request_leave to view; manage_leave to adjust a balance |
| Leave Calendar | /leave/calendar | view_leave, manage_leave, or request_leave (read-only) |
manage_leave_config is deliberately separate from manage_leave: someone can approve leave requests day to day without being able to change what a leave type entitles people to or how approvals are routed.
The Leave Settings page has three tabs: Leave Types, Policies, and Blackout Periods. The public-holiday calendar and overtime rules are configured on the Attendance Policies page under Time & Attendance (/time/settings), gated on manage_attendance_config; leave's working-day calculations read the same calendar from there.
Leave types
The Leave Types tab lists every leave type your company has defined, and the Add Leave Type form covers:
| Field | Notes |
|---|---|
| Name | Display name, e.g. "Annual Leave". |
| Code | A short identifier, e.g. ANNUAL. |
| Description | Free text. |
| Default Days/Year | The base entitlement granted to an eligible employee. |
| Min Service (months) | How long someone must have been employed before this type applies, used for things like sick leave that only kick in after a qualifying period. |
| Gender Restriction | All, Female, or Male: for leave types like maternity or paternity that only apply to one gender. |
| Paid Leave | Checkbox. Unpaid leave types skip the balance check entirely when a request is submitted. |
| Requires Document | Checkbox. Flags that supporting paperwork (like a medical certificate) is expected. |
A few things a leave type controls are set when the type is created through the API or a company's initial setup rather than through this form: which broad category it belongs to (annual, sick, maternity, and so on), how days accrue over the year (see below), which employment types are eligible, whether weekends and holidays count against the balance, whether half-day requests are allowed, and carry-over limits. If you need one of those changed on an existing leave type, that's a support/API-level change rather than something to edit from this page.
Approval policies
Approval routing lives on its own Policies tab, separate from the leave type itself: a leave type only gets an approval chain once you add a policy for it, one policy per leave type.
| Field | Notes |
|---|---|
| Leave Type | Which type this policy governs. Locked once the policy exists: delete and recreate to move a policy to a different type. |
| Approval Mode | Auto-approve, Single approver, or Approval chain. |
| Max Consecutive Days | 0 means no limit. |
| Min Notice Days | How many days ahead a request must be submitted. |
| Respect Blackouts | Whether this leave type is blocked by active blackout periods. |
When the mode isn't auto-approve, an Approval Steps builder appears below. Each step has:
- Approver Type: Direct Manager, Department Head, Role Holder, or Specific Employee (the latter two need a role name or employee ID).
- An optional Fallback: the same four approver types, used if the primary approver can't be resolved.
- Auto-escalate (hours): how long the step waits before escalating.
Steps can be reordered, added, or removed. A single approval mode only ever uses the first step (later steps are shown but greyed out if you add more than one). A chain mode needs at least one step and walks through all of them in order.
How balances accrue
Balances are computed, not pre-loaded. A balance row for an employee/leave-type/year is created the first time it's needed (for example, when they submit their first request of the year), based on the leave type's accrual method:
- Annual: the full
Default Days/Yearfigure is granted immediately. - Prorated: scaled from the hire date: an employee hired partway through the year gets a fraction of the annual figure based on the months remaining, calculated once when the balance is first created.
- Monthly: the entitlement grows month by month, capped at the annual figure. Only fully-elapsed months in which the employee was already employed count, and every time the balance is looked at, the stored entitlement is topped up if the freshly calculated monthly figure is higher: it never goes down, and re-checking it twice in the same month doesn't double up.
The backend has a year-initialization operation, but this guide does not assume a scheduled annual run. A request or balance adjustment calls the balance-creation path when a row is missing; simply listing existing balances does not create every missing row.
Carry-over
If a leave type allows carry-over, the amount that rolls into the new year is the smaller of last year's leftover Available balance and the type's carry-over cap (a cap of 0 means unlimited). This isn't a single year-end batch job. It's computed lazily:
- The first time a new year's balance is created, it snapshots the carry-over from whatever the prior year's balance looked like at that moment.
- After that, any change to the current year's balance (leave approved, rejected, cancelled, or manually adjusted) recomputes next year's carry-over from the current year's fresh numbers, if next year's balance already exists. That keeps things correct even when, say, a manager approves a December leave request in January: next year's opening balance adjusts to match.
Adjusting a balance manually
On the Leave Balances page, anyone with manage_leave can click Adjust on a balance card to open a small form: an Adjustment (days) field (positive to add days, negative to remove them, in half-day steps) and a required Reason. The button stays disabled until both a non-zero adjustment and a reason are entered.
The adjustment is additive: applying +2 twice adds 4 days total, it doesn't set the adjustment to 2. The most recent reason is what's kept on the record. Adjusting a balance also re-triggers the carry-over recompute described above, so a change to this year's balance keeps next year's opening figure honest.
Blackout periods
Blackout windows are created and edited from the Blackout Periods tab of the Leave Policies page (the Leave Calendar page only displays them). Each one has a name, a start and end date, an optional reason, and can be scoped to a single work location or left to apply company-wide. Only leave types whose policy has Respect Blackouts turned on are actually blocked by them.
Public holidays
The Holidays tab on the Attendance Policies page (Time & Attendance, /time/settings) manages the calendar of gazetted public holidays, one year at a time with previous/next navigation. Each holiday has a name, a date, a country code (defaults to KE), and a Recurring annually flag for holidays that fall on the same date every year. A Generate Holidays button for the currently selected year fills in a date for every holiday flagged recurring that doesn't already have one for that year, so you only enter New Year's Day, say, once, and then generate it forward each year rather than re-entering it. These are the dates working-day calculations exclude when a leave type doesn't include holidays.
FAQ
Why does an employee's balance not exist yet on the Balances page? Balances are created on first use, not pre-loaded for the whole company on day one. Submitting a request or having HR adjust the balance creates it if it isn't there yet.
We changed the Default Days/Year on a leave type. Does everyone's balance update? Annual and prorated balances already created are not automatically replaced. Monthly balances can increase on a later accrual top-up when the newly calculated entitlement is higher, but do not decrease automatically. Use a manual adjustment when an existing balance needs an explicit correction.
Can I set which department a blackout period applies to? The current form scopes a blackout to a work location or company-wide, not to a department.
Does adjusting a balance overwrite the previous adjustment or stack with it? It stacks. Each adjustment is added to the running total, not set as a fixed override.
Why did next year's balance change when I approved a leave request for this year? If the leave type carries over and next year's balance row already exists, approving, rejecting, cancelling, or adjusting this year's balance recomputes next year's carry-over from the current numbers automatically.
Can I require exceptions to a blackout period from the UI? Not currently: the blackout form covers name, dates, reason, and work-location scope. Anything about exceptions would need to be set at the API level.