How leave works in Arche: the leave types you can apply for, how a request moves through approval, how balances are tracked, and the policy rules (notice, length, blackout periods) that the system checks before a request goes through.
Leave in Arche lives under Leave Management. Depending on what you can do, the page is titled My Leave, Team Leave Approvals, or Leave Management. Everyone with the request_leave permission can submit and track their own requests. Approvers act on requests assigned to them. Holders of manage_leave see team or company-wide requests and can file leave on behalf of others. view_leave lets you export leave records; seeing other people's requests on the web also needs manage_leave.
This guide covers the employee side (requesting, balances) and the approver side (the approval chain, escalation), plus the calendar of holidays and blackout periods.
Leave types
Each company defines its own leave types. Every type has a code, a name, and a category. The category is one of:
| Category | Typical use |
|---|---|
annual | Annual leave |
sick | Sick leave |
maternity | Maternity leave |
paternity | Paternity leave |
compassionate | Bereavement and family emergencies |
compensatory | Time off in lieu, credited for days worked (see "Leave Policies & Balances") |
unpaid | Leave without pay. Arche requires Paid Leave to be unticked for this category, so no balance is checked |
study | Study or exam leave |
other | Anything else the company configures |
A leave type also controls who can use it and how days are counted:
- Entitlement:
defaultDaysPerYearsets the base allocation. TheaccrualMethoddecides how it is granted:annual(full amount at the start of the year),monthly(earned over the year), orprorated(scaled from the hire date for mid-year joiners). - Eligibility:
minServiceMonths(for example, 12 months before sick leave applies),eligibleEmploymentTypes(such as full-time, part-time), andgenderRestrictionfor maternity and paternity. - Day counting:
includesWeekendsandincludesHolidays. When both are off (the usual case), only working days count; weekends and gazetted public holidays are skipped. - Other flags:
isPaid,allowHalfDay,requiresDocumentation(for example, a medical certificate for sick leave), and carry-over settings (allowCarryOver,maxCarryOverDays,carryOverExpiryMonths).
Requesting leave
Open Leave Requests in the Leave menu, then click New Request. The form asks for:
| Field | Notes |
|---|---|
| Leave Type | Only active types appear in the list |
| Start Date / End Date | The range you want off |
| Reason | Optional, up to 1000 characters |
| Half-day leave | Counts as 0.5 days when ticked. Pick Morning or Afternoon in the Which half of the day dropdown |
| Supporting document | Shown only for leave types that need one, such as a medical certificate. If the type lets the document follow, you can attach it now or later, by the date shown |
As soon as you have picked a type and both dates, a live preview appears showing the working days the request will consume, your balance after, and any policy warnings. This preview is computed by the server, so it reflects the same rules that apply when you submit. Red messages block the request and Submit Request stays off until you fix them. Amber messages are notes and do not stop you, so you can adjust dates before committing.
Once both dates are picked, the form also names who else is away on those days, for example "Also away on these dates: Jane Wanjiru, Peter Otieno". It lists the people the Leave Calendar shows you (see below), and it is information only: it never stops a request. If your company shows colleagues on the leave calendar and has set a limit on how many people in a team may be away at once, an amber note tells you when your dates would go above it. That note does not stop you either; your approver sees the same note.
When you click Submit Request, the system checks eligibility, documents, dates, policy, overlap, and balances. The main checks are:
1. Leave type is valid and active
2. You are an active employee
3. Gender restriction (maternity / paternity)
4. Employment type is eligible
5. Minimum service months met
6. Required supporting documentation supplied
7. Valid dates and allowed half-day period; at least one working day for full-day leave
8. Policy: max consecutive days, min notice, blackout periods
9. Sufficient balance in each leave year (skipped when the type is unpaid)
10. No overlapping pending, escalated, or approved request
If everything passes, the request is created with status Pending and the approval chain is resolved (see below). For paid leave, days are reserved as pending or confirmed as used when auto-approved. A request spanning December and January is split between the respective yearly balances.
The backend supports filing for another employee with manage_leave. The current web New Request form has no employee selector and submits for the signed-in employee.
Half-day leave
Half-day leave is allowed only when the leave type permits it. Start and end must be the same working date, and you choose Morning or Afternoon. It consumes 0.5 days. A weekend or holiday excluded by that leave type cannot be used for a half-day request.
Supporting documents
For a leave type that needs paperwork, the form shows a Supporting document field. Where the type allows the document to follow, you can submit now and attach it later from the request, by the due date the form shows. HR can filter requests whose document is overdue.
One block across leave types
Sometimes one stretch of leave is two kinds of leave: say two compensatory days and then three days of annual leave. In the New Request form, choose Split across leave types. You get two to four parts, each with its own leave type and dates, and a half day where you need one. Two parts can share a day only as its morning and its afternoon.
If your company has a compensatory leave type, Use my compensatory days first does the splitting for you: give the first and last day and the leave type for the rest, and choose Fill the parts. Arche puts your compensatory working days first, as many as you have in that year; half a day left over becomes a compensatory morning and an afternoon of the other type.
Each part is checked as a request of its own would be, with its own preview, and Submit Request stays off while any part has a red message. The parts are saved together as one block:
- One approval chain decides the whole block: the chain of the part whose leave type has the most approval steps (annual leave on a tie). The approver sees every part, approves or rejects them together, and can approve with changes to that part.
- Each part's days come from its own balance. A rejection or cancellation gives every part's days back.
- Cancelling any part cancels the whole block.
- You and your approver get one message for the block, naming every part, for example "2 days of Time off in lieu and 3 days of Annual Leave".
- Colleagues who see you as away on the leave planner see one absence, never the types.
In lists, each part shows the whole block under its leave type, and approving or rejecting through any part decides the block. On the Leave Calendar a block is one bar; you and your team see its leave types, colleagues see only "Away". In the phone app a block is one card, and the new request form has Use my compensatory days first, which splits the dates the same way; choosing the parts by hand is on the web.
The approval flow
Approval is driven by a leave policy attached to each leave type, not by a fixed hierarchy. A policy has an approvalMode:
| Mode | What happens |
|---|---|
auto | The request is approved immediately, no approver needed |
single | One approver resolves it |
chain | Multiple steps, approved in order |
Each policy defines its steps, and each step says who should approve it through a resolverType:
- DIRECT_MANAGER: the requester's manager.
- DEPARTMENT_HEAD: the head of the requester's department.
- ROLE_HOLDER: the first active holder of a named role (for example, HR Manager).
- SPECIFIC_EMPLOYEE: a named person.
A step can also carry a fallback resolver (used if the primary cannot be found) and an autoEscalateHours timer. When a request is submitted, Arche resolves each step to a real person and creates the approval chain. A requester is never assigned to approve their own leave; that step is skipped.
If every step ends up skipped (common when a senior person like a CEO requests leave and there is no one above them), the request falls to the company's designated senior escalation approver if one is configured. If no approver can be found at all, the request is auto-approved.
Statuses
A leave request moves through these statuses:
| Status | Meaning |
|---|---|
| Pending | Waiting on the current approver |
| Escalated | The current step timed out and moved to a fallback or the next step |
| Approved | All steps approved; days moved from pending to used |
| Rejected | An approver declined; remaining steps skipped, balance restored |
| Cancelled | Withdrawn by the employee before it started |
Approving or rejecting
Approvers see a Team Approvals tab listing requests assigned to them right now. Approve hides the request and shows an Undo toast for a few seconds; the approval is sent when the toast closes or you leave the page. Reject asks for a comment, and you cannot confirm without one. Holders of manage_leave also get a third tab, All Requests if they have view_all_leave and Team Requests if not, with status filters and a Documents overdue filter.
Approve a step
└─ more steps remain? → move to the next approver
└─ last step? → request Approved, balance confirmed as used
Reject a step
└─ request Rejected, all later steps skipped, reserved balance returned
Only the approver assigned to the current step can act. Trying to approve or reject a request that is already approved, rejected, or cancelled is blocked.
If the requester is rostered on any published shifts during the leave dates, the approval screen shows, to approvers with view_schedule, a schedule conflict notice listing those shifts and flagging any that would drop below their required headcount if the leave is granted. This is advisory only: it never blocks the approval, it just tells the approver what coverage they will need to backfill.
If your company has set a team limit under Leave Planner in Leave Settings, the approver also sees a Team cover note when the request would put more people from the team away on the same day than the limit, for example "On 3 Nov 2026, 4 people in this team would be away (limit 3)." The count includes approved and pending leave of the requester's team (people with the same manager, or the same department when the planner is set to departments). It is a note only: Approve stays available.
Auto-escalation
If a step has an autoEscalateHours timer and the approver does not act in time, Arche escalates automatically the next time the queue is read:
- Single mode: the step is reassigned to its configured fallback approver (for example, HR), and the request shows as Escalated.
- Chain mode: the overdue step is marked escalated and the request advances to the next step in the chain.
Telling the employee at each step
In Leave Settings, a policy has the option Tell the employee at each approval step. When it is on, the employee is told each time a step is approved and the request moves on ("Your leave request was approved by Jane Otieno. It is now with Sam Mwangi."). They are also told when an escalation or a fallback hands the request to someone else. They always get the final approval or rejection, with the option on or off.
Policies you created before this option existed keep it off. New policies start with it on. A policy with automatic approval has no steps, so the option does not apply.
Approving with changes
Sometimes you want to approve a request, but not exactly as it was asked for. In Leave Settings, tick This approver may change the request on the step that should have this choice, usually the HR step. When a request reaches that step, its approver sees Approve with changes next to Approve (on the web, and on the phone under Leave Approvals).
You can:
- Shorten the dates. The new dates must fall inside the dates the employee asked for.
- Make it a half day, morning or afternoon, on one of the requested days.
- Move it to another leave type, for example from annual leave to sick leave. On the phone you can shorten the request or make it a half day; moving it to another leave type is on the web.
You always give a reason, and you can never add days. A change to another leave type goes through the same checks as a new request for that type, such as eligibility, documents and blackout periods, and the employee needs enough balance in it. Notice is not checked again. The days held for the old request go back to its balance, and the new days are held in the new one.
The step is then approved as usual. If more steps follow, the request moves to the next approver; if it was the last step, the request is approved. The approval chain stays the one the request started with, even when you move it to another leave type.
The employee does not need to agree. They get a message, by email and in the app, such as "Your Annual Leave request was approved with changes: 5 days (5 Oct 2026 to 9 Oct 2026) became 3 days (5 Oct 2026 to 7 Oct 2026). Reason: ...". The request shows what was asked for, what was approved and why. If the change does not suit them, they can cancel the request themselves with Cancel, on the web or in the phone app, until the day before the leave starts.
Leave balances
Balances are tracked per employee, per leave type, per year. Open My Leave Balances (or Leave Balances / Team Leave Balances if you manage others) to see them. Each card shows three numbers, a badge with the days left, and any manual adjustment with its reason:
| Field | Meaning |
|---|---|
| Entitled | Base entitlement plus any carried-over days |
| Used | Days from approved leave |
| Pending | Days reserved by requests awaiting approval |
| "left" badge | Entitled plus adjustments, minus used and pending |
History on a card lists where the days came from: carried-over days and when they expire, compensatory credits, adjustments, and anything that expired.
The lifecycle of days through a balance:
Submit request → days move to Pending
Fully approved → Pending → Used
Rejected → Pending returned to Available
Cancelled (pending) → Pending returned
Cancelled (approved) → Used returned
Each year's balances are set up automatically on 1 January, or the first time they are needed. For carry-over types, unused days from the previous year roll forward up to maxCarryOverDays (or with no cap if that is set to 0). If the leave type sets an expiry, carried days are used first and the ones left after the expiry date are taken away; a request you submitted before then keeps the carried days it holds, even if it is approved later. Carried and compensatory days only pay for leave that starts on or before their last day. HR can apply a manual adjustment (positive or negative) with a reason; this is reflected in the days left. Unpaid leave does not touch any balance.
Policy rules the system enforces
When a leave type has an active policy, these limits are checked on submit (and surfaced as live warnings in the preview):
| Rule | Field | Behavior |
|---|---|---|
| Maximum consecutive days | maxConsecutiveDays | Blocks requests longer than the limit (0 = no limit) |
| Minimum notice | minNoticeDays | Blocks requests that start sooner than the required notice |
| Blackout periods | respectBlackoutPeriods | Blocks requests overlapping an active blackout |
Working days are calculated by walking the date range and skipping weekends and active public holidays, unless the leave type is set to include them.
Blackout periods and the leave calendar
A blackout period is a window when leave cannot normally be requested, useful for peak seasons. Each blackout has a name, a date range, an optional reason, and can be scoped to a single work location or apply company-wide. Blackouts are created and edited from the Leave Policies page in the sidebar, which is titled Leave Settings (see the companion "Leave Policies & Balances" guide). The Leave Calendar page only displays them.
The Leave Calendar page shows a month at a time in two views. Timeline, the default, has one row per person (you first, then your team, then colleagues) and one bar for each leave across its days. Weekends and public holidays are shaded columns (hover over a day for the holiday's name), blackout periods are a hatched band above the rows, and a People away row counts who is off each day. Month is the familiar calendar grid. On a phone-sized screen, the page lists the month as an agenda grouped by week instead.
Your own leave is green; your team's approved leave is a solid dark bar and pending leave a dashed outline. Approved and pending leave appears for your team if you can view or manage leave, otherwise your own requests. Click your own bar, or a team member's if you can view leave, to open the request. With view_all_leave, a My team / Everyone toggle appears so you can switch to the whole company.
When HR turns on the leave planner, you also see colleagues who are away, as a grey Away bar: their team (the same manager) or their department, depending on the setting. You see their name and dates only. The leave type, the reason and the number of days are never shown, because they can reveal health or family matters, and only approved leave appears. A colleague who is already in your team view shows there in full instead. If your company has set a team limit, days at or above it are marked with an amber rule on the People away row and listed by date above the timeline.
People who see only their own leave also get two lists under the calendar:
- Blackout Periods: name and dates, so you know when not to book leave.
- Public Holidays: the gazetted holidays, in date order. These are the days excluded from working-day counts.
FAQ
Why was my request approved instantly?
The leave type's policy is set to auto, or no approver could be resolved for it. Either way, no manual approval was needed.
Can I cancel after approval? A pending or escalated request can be cancelled until it is decided. An approved one can be cancelled until the day before the leave starts. On the web and in the phone app, Cancel stays on a pending request, and on an approved one as long as the first day of leave is still ahead on your company's calendar. If your company uses the AI Assistant, you can also ask it to cancel. The days go back to your balance. Once the leave has started, it cannot be cancelled, and HR has to adjust it.
Can one request use two kinds of leave? Yes, as a block across leave types: choose Split across leave types in the New Request form. The parts are approved, rejected and cancelled together.
My balance looks short while a request is pending. Pending requests reserve their days so you cannot over-book. If the request is rejected or cancelled, those days return to Available.
I do not have enough balance. Can I still apply? Not for paid leave; the request is blocked if Available is below the days requested. Unpaid leave types skip the balance check entirely.
Why can't I approve a request I can see? You can only act on the request's current step, and only if that step is assigned to you. Earlier steps must be approved first, and already-decided requests cannot be changed.
Who gets a request if my manager is unavailable? If the step has an escalation timer, it reassigns to the fallback approver (single mode) or advances to the next step (chain mode) once the timer passes.
Can HR file leave for me?
The API supports this with manage_leave and applies the same checks. The current web New Request form submits only for the signed-in employee.