Skip to content

Entitlement policies

Entitlement lives in the Policy card at the bottom of a leave type’s editor (Leave → Settings → Leave types → the type). It answers one question: how many days does this person get this leave year?

The editor is a matrix.

  • Rows are scopes — who the row applies to: everyone, a department, a designation, or a designation grade.
  • Columns are tenure milestones in whole years, shared across every row. The fixed first column 0y is the day-one base.
  • Cells are days granted per leave year.

So a two-row, three-column matrix might say: everyone gets 8 days on day one, 12 from year 2 and 16 from year 5 — except Engineering, who get 12 / 16 / 20.

The card summary shows {n} scopes · entitlement grows with tenure, or a warning when there are none: No scopes configured — employees with this leave type will get no entitlement.

Select Edit to open the matrix.

  1. Select Add scope to add a row. It starts as Organization with 14 days in every cell.

  2. Set Applies toOrganization, Department, Grade or Designation. Changing this clears the target.

  3. Set Target. Organization shows Everyone with nothing to pick. Department and Designation take a single selection. Grade is multi-select — one row can cover grades A and B together.

  4. Fill in the per-row columns:

    • Carry-fwd — the maximum days that may roll into the next leave year. 0 means nothing carries.
    • Min service (mo) — months of service before this entitlement applies at all. Employees below it see Requires {n} months’ service on their balance card and can’t apply.
    • Max consec. — the longest single request allowed, in working days. Blank means no cap.
  5. Enter the 0y day-one entitlement.

  6. Select Tenure milestone to add a column. Type the year in the small numeric box; columns re-sort ascending when you leave the field, carrying every row’s cells with them.

  7. Fill the tenure cells. A blank cell falls back to that row’s 0y value — which is what the placeholder is showing you.

  8. Select Save.

The trash icon above a column header removes that milestone from every row. The trash icon at the start of a row removes the scope. Both are immediate, with no confirmation.

When someone applies for leave, exactly one scope row is chosen — the most specific match:

  1. Designation
  2. Designation grade
  3. Department
  4. Organization

If two rows tie at the same specificity, the one with the higher priority wins. If nothing matches at all, the employee can’t apply: No leave policy matches this employee, and their balance card reads No policy configured.

Everything is checked when you select Save, and the first problem stops the save with a toast:

Message Fix
Tenure milestones must be whole years between 1 and 60 Milestones are whole years only.
Two milestones share the same year — give each a distinct year Merge or renumber the columns.
“{scope}”: pick at least one target A department, grade or designation row needs a target.
Two scopes target the same department. Change or remove one. Two rows can’t compete for the same group.
“{scope}”: minimum service can’t exceed 60 months Cap is five years.
“{scope}”: max consecutive days must be between 0 and 365
“{scope}”: day-one entitlement must be a number like 14 or 14.5 The 0y cell can’t be blank.
“{scope}”: carry-forward must be a number Carry-fwd can’t be blank — use 0.
“{scope}”: entitlement after 2 years must be a number Fix the flagged tenure cell.

Cells with invalid text turn red as you type, but typing isn’t blocked.

Saving the matrix changes the rules. It does not rewrite anybody’s existing balance — run Recompute balances from the Settings tab afterwards.

When a balance is computed, this is the order of operations.

Service length is measured from the employee’s tenure date — their join date, unless a tenure-effective date has been set to recognise prior service. The band with the highest milestone at or below that service length wins; if none qualifies, the row’s 0y base is used.

Service months are day-of-month aware: joined 15 January, as at 14 March is one month, not two.

Only when the employee’s tenure starts after the leave-year window starts, and only when Prorate entitlement for mid-year joiners is on. Anniversary-basis types never prorate — their windows are already full years from the join date.

The three bases behave differently for someone joining 15 April on a calendar year with 12 days’ entitlement:

Basis Result Why
By days 8.58 261 remaining days ÷ 365 × 12
By month (lenient) 9 Any day in April counts April as a full month → 9/12
By month (strict) 8 Only a 1 April join counts April → counts from May → 8/12

Financial-year types anchor proration on the fiscal start month, not January.

Any fraction of 0.5 or more always rounds up to the next whole day — that isn’t configurable. Fractions below 0.5 follow Sub-half rounding: from a raw 14.3 days, Round down gives 14, Round to half-day gives 14.5, Round up gives 15.

Rounding only touches derived fractions. A base you typed as 0.5 stays 0.5.

On Monthly accrual types, the stored entitlement is still the full annual figure — the available slice is computed live as the year progresses. The month containing the window start credits immediately.

The Tenure band promotion setting on the type decides what happens when someone crosses a milestone inside a leave year.

Yearly — the band is fixed at the start of the leave year. Crossing a threshold in March changes nothing until 1 January. Simple to explain to employees.

Pro-rated — the year is split at the crossing date and the two rates are blended. For someone who joined 15 April 2024 with bands 0y → 8, 1y → 12, 2y → 16:

Leave year Yearly Pro-rated
2025 8 10.86 (104 days at 8, then 261 at 12)
2026 12 14.86 (104 days at 12, then 261 at 16)
2027 16 16 — already at the top band

Pro-rated figures are kept to two decimals and deliberately skip sub-half rounding, so employees see values like 10.86.

Carry-fwd on each scope row caps how many unused days roll into the next leave year. The rollover happens when you close the leave year — see Year-end and carry-forward.

Two rules surprise people:

  • Consumption draws from carried days first. Leave taken is charged against last year’s carry before this year’s fresh entitlement, which maximises how much fresh entitlement remains carry-eligible.
  • Carried days never stack. Only a window’s own entitlement (plus any adjustment) can carry into the next one. Days carried into a year must be used in that year or they’re lost at the next rollover.

A negative adjustment reduces what can carry; a positive one can itself carry.

The seeded organization-wide policies, for reference:

Code Type Day one Bands (2y / 5y) Min service
AL Annual Leave 8 12 / 16
SL Sick Leave 14 18 / 22
HL Hospitalization Leave 60
ML Maternity Leave 98 3 months
PL Paternity Leave 7 12 months
UL Unpaid Leave 365

Bands sit at 0, 24 and 60 months per Employment Act 1955 sections 60E and 60F. Off-in-lieu has no policy at all — it runs on grants.