---
title: Applying for leave
order: 4
updated: 2026-07-12
---

# Applying for leave

Leave applications live in the *Leaves* tab of *Attendance*. From there you submit a fresh request, watch its approval status, edit or cancel it while it is still pending, and — if your role allows — see and act on what your teammates have applied for. Every rule the form hints at is re-checked by the server when you submit, so a request that looks valid on screen can still be rejected if it breaks a rule (an overlapping leave, an inactive leave type, a half-day spanning two dates, and so on).

## Open the tab

1. Open *Human Resources* in the sidebar and click *Attendance*.
2. Open the *Leaves* tab. It opens on *My Leaves*.
3. If your role allows it, a *Team's Leaves* sub-tab appears next to *My Leaves*. It shows applications from everyone you are allowed to see (your reports, or the whole firm) with an extra *Applicant* column, and it hides your own rows — those stay under *My Leaves*.

The *Team's Leaves* sub-tab appears if you are a firm administrator or hold any one of these attendance permissions: *view all leave applications*, *approve all users' leave*, *approve leave*, *cancel approved leave*, *cancel back-date leave*, *cancel all users' approved leave*, or *cancel all users' back-date leave*. Without any of them you only ever see your own leaves.

The *Apply Leave* button only shows on the *My Leaves* sub-tab, and only if you are an administrator or hold the *apply leave* permission. If you cannot see it, you do not have permission to raise a leave for yourself.

## Apply for leave

1. On *My Leaves*, click *Apply Leave*. The *Apply for Leave* modal opens.
2. Fill in the fields below.
3. Click *Submit Application*.

Your request lands in *My Leaves* with a `Pending` status and an *Applied On* date. It sits there until an approver approves or rejects it. Approving it also writes the leave onto your attendance calendar — see [Marking attendance](/docs/human-resources/marking-attendance).

If no leave types have been created yet, the modal shows a notice — *No leave types have been created yet. Ask HR to add them in Settings.* — and you cannot submit. An administrator adds them under [HR settings](/docs/human-resources/hr-settings).

### Leave Type

A searchable picker of the leave types your firm has configured. Type to filter by name or code; each entry shows the type *name*, its short *code* (for example `CL`, `ML`), and a *Paid* or *Unpaid* tag. The first type in the list is pre-selected when the modal opens.

- Only **active** leave types appear here — inactive ones are filtered out.
- The server independently confirms the chosen type still exists and is active at submit time; a type deactivated between opening the form and submitting is rejected with *Leave type not found or inactive*.
- Leave types themselves are created and edited under [HR settings → Leave Types](/docs/human-resources/hr-settings#add-a-leave-type).

### Half-Day Leave

A checkbox — *Half-Day Leave* — for taking half of a single day off. Its helper text reads *Only applies to a single day. Other half counts as present.*

- When ticked, a *Morning Off* / *Evening Off* toggle appears (default *Morning Off*). *Morning Off* means the morning is leave and the evening is counted present; *Evening Off* is the reverse.
- Ticking it locks the *To* date equal to the *From* date — a half-day is always one calendar day. The *To* field is disabled while this is on.
- The request counts as `0.5` days regardless of the session chosen.
- The server enforces both rules: a half-day must have `fromDate == toDate`, and it must carry a session. A forged payload with a half-day spanning two dates, or with no session, is rejected.

### From and To dates

The leave period, inclusive of both ends. Both default to today.

- Pick each date from its calendar popover or type it into the segmented field.
- If you set *From* later than the current *To*, *To* snaps forward to match — the range can never run backwards.
- For a normal (non-half-day) leave, the total is the inclusive day count: a `From`–`To` of the same day is `1` day, a Monday-to-Friday range is `5` days, and so on. **Weekends and holidays inside the range are counted in this on-screen total**, but they are skipped when the approved leave is written onto the attendance calendar (see [How approval affects attendance](#how-approval-affects-your-attendance)).
- The server re-checks that `fromDate` is on or before `toDate` and rejects an inverted range.

### Reason

A required free-text box (*Family function, travel, medical…*). You must enter something — the *Submit Application* button stays disabled until the reason is non-empty. The server trims the text and caps it at `500` characters; an empty or over-long reason is rejected.

### The summary card

Once a type and a valid range are chosen, a card previews the request — for example *3 days of Casual Leave*, the date range, and a *Paid* or *Unpaid* tag matching the selected type. It is a preview only; nothing is saved until you submit.

## Overlapping leaves are blocked

You cannot have two leaves covering the same day. When you submit (or save an edit), the server looks for any of your existing applications in `pending` or `approved` status whose range overlaps the new one — across **all** leave types, not just the same type — and refuses the new request with *Overlapping leave application already exists*. Cancelled and rejected applications do not count, so a day freed up by cancelling one leave can be re-applied for. When editing, the application being edited is excluded from its own overlap check.

## Track an application

Each row in *My Leaves* shows the leave type and code (with an *Unpaid* marker where relevant), the date range, the total *Days* (a half-day shows `(½)`), and a status pill. The statuses are:

- `Pending` — submitted, awaiting an approver.
- `Approved` — an approver accepted it; the days are now on your attendance calendar.
- `Rejected` — an approver declined it, with a reason.
- `Cancelled` — it was withdrawn (by you while pending, or by an authorised approver later), with an optional reason.

Click *View* to open the *Leave Application* detail. It lays out the applicant (only shown when the leave is not your own), the leave type, the dates, the duration (with the half-day session spelled out), the reason, the *Applied On* date, and — where relevant — the rejection reason or cancellation reason. A leave whose start date is today or already past shows a *Backdated* marker at the top (unless it is cancelled or rejected).

Dates throughout this screen display in `12 Jul 2026` form (day, short month, year).

## Edit or cancel a pending application

Open the leave from *My Leaves → View*. The action buttons at the bottom of the detail only appear for actions your role and the leave's state allow.

### Edit

*Edit* re-opens the application form pre-filled, letting you change the type, dates, half-day setting/session, or reason.

- Editing is allowed **only while the leave is `Pending`, and only for the person who applied**. Once a leave is approved it is frozen — the server rejects an edit with *Cannot edit a leave with status 'approved'. Approved leaves must be cancelled and re-submitted.* To correct an approved leave you cancel it and apply again (and cancelling an approved leave itself needs a cancellation permission — see below).
- The same validations as a fresh application run again on save: active leave type, `from ≤ to`, the half-day single-day/session rules, and the overlap check (excluding this leave itself).

### Cancel Leave

*Cancel Leave* withdraws the application. Who can cancel what depends on the leave's owner and its start date — the server enforces this in layers:

- **Your own pending leave** — you can always cancel it yourself, on any date. This is the personal escape hatch and needs no extra permission.
- **A future-dated leave** (start date after today), when it is approved or belongs to someone else — needs *cancel approved leave* (which only covers your own reports) or *cancel all users' approved leave* (firm-wide).
- **A backdated leave** (start date today or in the past) — needs *cancel back-date leave* (your reports only) or *cancel all users' back-date leave* (firm-wide). Backdated cancels are gated separately and more tightly because they rewrite attendance that has already happened.
- **Firm administrators** can cancel any pending or approved leave regardless of date or owner.

Cancelling a backdated leave shows a warning first: *This leave has already started … Cancelling now will remove the on-leave attendance entries for the past days — they will fall back to present/absent.* Confirm with *Cancel Leave* or back out with *Keep it*. On cancel, the server deletes the attendance rows this leave created (they are lazily rebuilt as present on the next calendar view) and restores any comp-off credits the leave had consumed. Only `pending` and `approved` leaves can be cancelled; a rejected or already-cancelled one cannot.

## Approving from the detail (approvers only)

If you have approval rights, the same *Leave Application* detail carries *Approve* and *Reject* buttons for a pending request. This is the same action covered on the [Approvals](/docs/human-resources/approvals) page, and it is available wherever you open a pending leave — including from *Team's Leaves*.

- *Approve* / *Reject* need the *approve leave* permission (which only lets you act on your direct or indirect reports) or *approve all users' leave* (firm-wide); administrators can act on anyone.
- *Reject* opens a *Reject leave application* prompt; a rejection reason is required and is shown to the applicant on their leave detail.
- You can only approve or reject a leave that is still `Pending`.

### How approval affects your attendance

Approving a leave stamps it onto the applicant's attendance calendar: it creates an attendance record marked *On Leave* (or *Half Day*, with the correct half-present session) for each **working day** in the range. Non-working days for the firm and any holidays inside the range are skipped, so they are not consumed as leave. This is why the on-screen *Days* total (which counts every calendar day in the range) can be larger than the number of days actually deducted. See [Marking attendance](/docs/human-resources/marking-attendance).

## Comp-off leaves

If your firm runs a comp-off (compensatory-off) scheme, a leave type coded `COMP` or `COMPOFF` draws down earned comp-off credits instead of ordinary paid/unpaid days. When such a leave is approved, the server consumes the oldest available, unexpired credits — one per day (a half-day still rounds up to one). If you do not have enough credits, approval fails with *Insufficient comp-off balance*. Cancelling the leave later returns those credits to available. Ordinary leave types do not touch this ledger.

## Common questions

### What if I do not see the leave type I need?

Leave types are configured by an administrator under [HR settings → Leave Types](/docs/human-resources/hr-settings#add-a-leave-type). Ask them to add it. Inactive types never appear in the picker, and a type that is deactivated after you open the form is rejected on submit.

### Can I attach a medical certificate?

A leave type can be marked to *allow attachments*, and the backend accepts and validates attachment files. However, the current *Apply for Leave* form does not expose a file-upload control — it submits with no attachments — so in practice you cannot attach a document from this screen today. If your firm needs proof for a leave, share it through your usual channel and note it in the *Reason*.

### Where do I see how many leave days I have left?

There is no running paid-leave balance on this tab — each type only carries a *Paid* or *Unpaid* tag, and paid days are reflected as deductions in the salary report and on your day-by-day calendar rather than as a countdown here. The one exception is comp-off: leave types coded `COMP`/`COMPOFF` draw from your comp-off credit ledger, and approval is blocked if you lack the credits.

### Why was my application rejected the moment I submitted it?

That is a validation rejection, not an approver's decision. The server independently re-checks everything: an overlapping pending/approved leave on any day of your range, an inactive or invalid leave type, a half-day that is not exactly one day or has no morning/evening session, an inverted date range, or an over-long reason. Fix the flagged issue and submit again.

### Can I edit a leave after submitting it?

Only while it is `Pending`, and only your own. Open it from *My Leaves → View → Edit*. Once approved it is frozen — cancel it (if you are allowed) and apply again.

### Can I cancel a leave that has already started?

Only if you hold a back-date cancellation permission (*cancel back-date leave* for your reports, or *cancel all users' back-date leave* firm-wide), or you are an administrator. Cancelling it removes the *On Leave* days already written to the calendar; they fall back to present or absent. Your own leave, while still pending, you can always cancel yourself.

### Why can I see my teammates' leaves but not act on them?

Viewing and acting are separate permissions. *View all leave applications* lets you see the *Team's Leaves* list; approving, rejecting, and cancelling each need their own permission, and the junior-scoped variants (*approve leave*, *cancel approved leave*, *cancel back-date leave*) only apply to people who report to you. The buttons on a leave's detail appear only for the actions you are actually allowed to perform on that specific leave.
