How HR configures leave in Arche: setting up leave types, building approval policies, understanding how balances accrue, carry over and expire, crediting compensatory leave, and adjusting a balance by hand when something needs a manual correction.
This guide covers the administration side of Leave Management: the leave settings page (open Leave Policies in the sidebar; the page itself is titled Leave Settings), 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 opens this page. Holders of manage_attendance_config edit the same public holidays on Attendance Policies (/time/settings) |
| Leave Balances | /leave/balances | view_leave, manage_leave, or request_leave to view a balance and its history; manage_leave for the team and everyone views, to adjust a balance or to credit compensatory leave |
| Leave Calendar | /leave/calendar | view_leave or manage_leave for your team; request_leave alone shows your own leave (read-only), plus colleagues as away when the leave planner allows it |
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. With view_all_leave, the Leave Calendar widens from your team to everyone. On Leave Balances, a person with manage_leave sees their team, and with manage_leave and view_all_leave the page widens to everyone.
The Leave Settings page has five tabs: Leave Types, Policies, Holidays, Blackout Periods, and Leave Planner. The Holidays tab is the same public-holiday calendar that the Attendance Policies page under Time & Attendance (/time/settings) shows, so a company with only one of the two modules can still manage it; a change made on either page shows on both. Overtime rules are configured only on Attendance Policies.
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. Ticking it shows Allow it to follow the request and Days allowed (1 to 90, default 7): employees can then submit first and attach the document within that many days after the later of the day they submit and their last day of leave. |
| Category | Annual, sick, maternity, paternity, compassionate, compensatory (time off in lieu), study, unpaid or other. Chosen when the type is created; it cannot change afterwards. |
| Accrual method | Lump sum at the start of the year, Prorated from the hire month or Earned month by month (see below). |
| Carry unused days into the next year | Checkbox. Ticking it shows Most days carried (0 carries every unused day) and Carried days expire after (months) (see Carry-over). |
| Hours in a working day | Compensatory types only, default 8. Credits entered in hours become days at this rate. |
| Credited days expire after (days) | Compensatory types only. Counted from the day worked. Leave it empty and credited days never expire. |
An annual leave type set to a lump sum gives someone who joins in October the whole year's days. The form and the Leave Types list show a warning on such a type: "New joiners get the full year's leave. Set the accrual method to prorated or monthly."
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 employment types are eligible, whether weekends and holidays count against the balance, and whether half-day requests are allowed. 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:
- Lump sum (
annual): the fullDefault 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 start of the year
Every hour Arche checks each company with Leave Management. On 1 January in the company's own time zone it sets up the new year's balances for every current employee, people on leave (maternity, sick, a sabbatical) included, once per year. If that run is missed, the next run in the year does it. Balances that already exist are left as they are. Each run is recorded in the audit log as an automatic action. Outside that run, a balance row is still created the first time it's needed, for example when someone submits a request or HR adjusts the balance; simply listing 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.
- The balance card says how many of its days were carried over, for example "Includes 5 carried over from 2026".
When carried days expire
Carried days expire after (months) on the leave type sets how long carried days last into the new year: 3 means they can be used until 31 March, on the company's calendar. Empty, the default, means they never expire. The date is set when the new year's balance is created.
- Carried days are used first. A request draws on them before the year's own days, and it holds them from the day it is submitted, not the day it is approved. So someone who books 5 carried days in January keeps them even if the approval only comes in April, after they would have expired.
- Carried and credited days pay only for leave that starts on or before their last day. Leave booked in March for December is paid from the year's own days, even while the carried days are still there.
- The day after the last day, the hourly job takes away what is left: carried days nobody used and no pending request holds. The balance shows a "Carried days expired" line in its history. It happens once.
- If a request that held expired carried days is later rejected or cancelled, those days are not given back: they had already expired.
- Once carried days have expired, a later change to last year's balance no longer changes this year's carry-over.
Adjusting a balance manually
On the Leave Balances page, anyone with manage_leave can click Adjust on the balance card of someone in their team (or of anyone, with view_all_leave) to open a small form: an Adjustment (days) field (positive to add days, negative to remove them; the field steps in half days as a hint, not a rule) and a required Reason. Apply Adjustment 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. Each adjustment, with its reason and who made it, is kept in the balance's history. 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.
Balance history
Every balance card has a History link, for the employee and for anyone who can see the balance. It lists, oldest first: carried-over days with the date they expire and how many are used or held by pending requests, compensatory credits with the day worked and the hours entered, overtime taken as leave (marked "Never expires"), manual adjustments with their reason, credits taken back, and what expired. Lines the system wrote, such as a carry-over or an expiry, are marked automatic. Below the cards, Overtime taken as leave lists the overtime employees took as leave instead of pay (see Taking Overtime as Leave).
Compensatory leave
Compensatory leave (time off in lieu) is for days someone worked when they would normally be off, such as a weekend, a public holiday or a long overtime shift. Set it up once as a leave type with the category Compensatory, its Hours in a working day and, if credits should not last for ever, Credited days expire after (days). Its default days per year is usually 0: the days come from credits.
To credit someone, open Leave Balances and choose Credit compensatory leave (needs manage_leave; managers can credit people in their team, never themselves). Pick the employee and the day worked, choose Days or Hours, and give a reason. In hours, the form shows the days it comes to (10 hours at 7.5 hours a day is 1.33 days); the server works the credit out itself and rounds to two decimals. For overtime, pick an Overtime rate with the hours (1x, 1.5x for weekday overtime, 2x for a rest day or public holiday): the credit is the hours times the rate, rounded up to the hundredth of a day at 1.5x or 2x so it is never worth less than the pay, and the reason records the rate. Do not also pay those hours as overtime in payroll. With Time & Attendance, employees can instead take approved overtime as leave themselves; see Taking Overtime as Leave. The days go on the current leave year, and the employee is told: "You were credited 1.33 compensatory days (10 hours) for work on 9 Jan 2027." The assistant can do the same with the credit_compensatory_leave tool, after you approve it.
Credits that expire are used first, the one expiring soonest first, and follow the same rules as carried days: a pending request holds its days, the hourly job takes away what is left after the last day, and a rejected or cancelled request does not get expired days back.
Blackout periods
Blackout windows are created and edited from the Blackout Periods tab of the Leave Settings page (the Leave Calendar page only displays them). Each one has a name, a start and end date, an optional reason, and applies company-wide. If your company also has the Time & Attendance licence and you have clock in, manage attendance or view attendance, you can instead scope a blackout to a single work location: it then blocks leave only for employees rostered there during those dates. Only leave types whose policy has Respect Blackouts turned on are actually blocked by them.
Leave planner
The Leave Planner tab (/leave/settings?tab=planner) holds two settings. Both are off for a new company, and neither ever stops a request.
- Who can employees see on the leave calendar? Nobody (the default) keeps the calendar as it was: each employee sees their own leave, and managers see their team. Their team adds colleagues who share the employee's manager. Their department adds colleagues in the same department. Colleagues appear by name and dates only, as "Away". The leave type, reason and number of days are never shown to them, because a type such as sick, maternity or compassionate leave can reveal health or family matters, which the Data Protection Act treats as sensitive. Only approved leave is shown, and only for current employees. People with
view_all_leavealready see everyone in full. - Warn approvers when more than N people in a team are away. Leave it empty for no warning. With a number set, the approver of a request sees a Team cover note when, on any day of the request, the requester's team (approved and pending leave, plus this request) would be above it. The team is the same manager, or the same department when the first setting is Their department. When the first setting is Their team or Their department, the employee also sees the note in the request form and the Leave Calendar marks the days at or above the limit. With Nobody, only the approver sees it, because staff then see nothing about colleagues, a head count included.
Public holidays
The Holidays tab, on Leave Settings (/leave/settings?tab=holidays) and on the Attendance Policies page (/time/settings?tab=holidays), 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. Every night at 04:00 a job generates the recurring holidays for the current year, and from December for the next year too, so you only enter New Year's Day, say, once. The nightly job does not bring back a holiday you deleted. The Generate {year} Holidays button for the selected year fills any gaps and also restores recurring holidays that were deleted. 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 (with Time & Attendance) 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, and each one is listed in the balance's history.
Do we have to press anything on 1 January? No. The new year's balances are set up automatically on the company's 1 January. Carried days and their expiry date appear then.
Someone booked carried days before they expired, and the request was approved after. Did they lose days? No. A request holds the carried days it uses from the moment it is submitted, so the expiry leaves them alone and the approval uses them.
Where do compensatory credits show on the balance? In the Adjustment figure on the card, and as Compensatory credit lines in the history.
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.