> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Leave accrual

> Let people earn leave over time instead of a fixed grant: set the amount and frequency, prorate new hires, handle expiry, and check the maths.

Accrual means people **earn** leave as time passes, instead of getting a lump
sum once a year.

Turn it on per policy in **Settings → Time off → Policies**.

## What it is, in one sentence

Every time a full month (or a full year) goes by, the policy adds a fixed amount
to everyone's balance.

## When to use it

* New joiners should not get a full year's leave on day one.
* You want the balance to reflect time served, month by month.
* You are moving off a spreadsheet that already worked this way.

Leave accrual **off** and use an **opening balance** instead when everyone gets a
fixed allowance each year that you top up by hand.

## The settings

Open a policy and switch **Enable accrual** on.

| Field                         | What it does                                                                            |
| ----------------------------- | --------------------------------------------------------------------------------------- |
| **Amount earned each period** | How much is added each period, in the policy's unit. Decimals are fine, such as `1.75`. |
| **Frequency**                 | `Monthly` or `Yearly`.                                                                  |
| **Prorate new hires**         | Scales the first period to the part of it the person actually worked.                   |
| **Unused balance expires**    | An accrual older than a year is not credited.                                           |

The policies table shows this as `1.5/mo` or `20/yr`, or `Off`.

## How it works

<Steps>
  <Step title="A period has to finish first">
    A month only pays out once it has fully elapsed. January's accrual lands when
    January is over, not on 1 January.
  </Step>

  <Step title="A daily job credits what is due">
    Once a day, TimeTracker credits every period that finished since the last time
    it looked, and moves a marker forward.
  </Step>

  <Step title="Nothing is ever credited twice">
    The marker is the guard. Running twice on the same day adds nothing. Missing
    several days and catching up credits each missed period exactly once.
  </Step>

  <Step title="Each credit is written to the ledger">
    An **Accrual** row appears in the balance history, with `System` as the actor.
  </Step>
</Steps>

<Note>
  Periods are whole calendar months or whole calendar years. There is no
  "every 4 weeks" or "on payday" option.
</Note>

## A worked balance

Sarah Lin joins Northwind Studio on **10 March**. The `Annual leave` policy is:

* Unit: **days**
* Accrual: **2 days**, **Monthly**
* **Prorate new hires**: on
* Opening balance: **off**

March has 31 days. She joined on the 10th, so she works 22 of them –
10 March to 31 March inclusive is 22 days.

| Period | Credited | Why                            |
| ------ | -------- | ------------------------------ |
| March  | **1.42** | Prorated: 2 × 22 ÷ 31 = 1.419… |
| April  | 2        | Full month                     |
| May    | 2        | Full month                     |
| June   | 2        | Full month                     |

At the end of June her **accrued** figure is `1.42 + 2 + 2 + 2` = **7.42 days**.

She has taken nothing, so:

| Figure    | Value |
| --------- | ----- |
| Accrued   | 7.42  |
| Used      | 0     |
| Pending   | 0     |
| Remaining | 7.42  |
| Available | 7.42  |

Now she books **3 days** and it is approved:

| Figure    | Value    |
| --------- | -------- |
| Accrued   | 7.42     |
| Used      | 3        |
| Remaining | **4.42** |

Turn **Prorate new hires** off and March would credit the full **2 days**
instead, making her end-of-June accrued **8 days**.

## Prorating explained

Proration only ever touches the **first** period – the one the person joined in.
Every period after it is credited in full.

The fraction is the part of that period they were with you:

```
credit = amount × (days worked in the period ÷ days in the period)
```

Someone who joins on the first of a month gets the full amount, because they
worked the whole period.

## When accrual starts

On the very first run for a person and policy, the engine starts from **the later
of**:

* the day the person joined the workspace, and
* the day the policy was created.

That second rule matters. Without it, someone who joined three years before you
created the policy would be back-credited three years of leave in one lump.

Someone who joins **after** the policy exists still starts from their own join
date, and prorates from there.

## Expiry

Switch **Unused balance expires** on and an accrual whose one-year horizon has
already passed is not credited.

<Warning>
  Expiry stops old accruals from being credited late. It does **not** claw back
  balance someone already earned. To remove earned-but-unused balance, post a
  negative adjustment – see
  [/time-off/leave-balances](/time-off/leave-balances).
</Warning>

## Year-end negative reset

Set separately, in the **negative balance** section of the policy. When
**Reset at year end** is on and a balance is negative at a year boundary, a
`Year-end reset` row brings it back to exactly zero.

Positive balances are never touched. They carry forward.

## What pauses accrual

| Situation                                | Effect                                    |
| ---------------------------------------- | ----------------------------------------- |
| The Time Off app is switched off         | Accrual pauses for the whole workspace.   |
| The policy has accrual off               | No accrual for that policy.               |
| The person is not assigned to the policy | No accrual for them.                      |
| The person has left the workspace        | No accrual – they are no longer a member. |

<Note>
  Switching Time Off back on does **not** back-credit the paused months. Balances
  would otherwise drift and be wrong on the day you switch it on. If you need the
  missed periods, post an adjustment.
</Note>

## Checking someone's accrual

<Steps>
  <Step title="Open Time Off → Balance">
    Find their row for the policy.
  </Step>

  <Step title="Open the row menu → History">
    The ledger lists every movement.
  </Step>

  <Step title="Read the Accrual rows">
    Each one shows the amount, the date the period closed, and `System` as the
    actor, with the note `Scheduled accrual`.
  </Step>
</Steps>

## Permissions

| Action                             | Capability                             |
| ---------------------------------- | -------------------------------------- |
| Turn accrual on and set the amount | `leave.managePolicy` – Owner, Admin    |
| See someone's accrual history      | `leave.viewOthers`, or your own record |
| Correct a balance by hand          | `leave.managePolicy` – Owner, Admin    |

Accrual itself runs automatically. Nobody triggers it.

## Common questions

<AccordionGroup>
  <Accordion title="Can I accrue every two weeks or on payday?">
    No. The choices are monthly and yearly, on calendar boundaries.
  </Accordion>

  <Accordion title="When exactly does the credit appear?">
    Shortly after the period closes, on the next daily run. A January accrual
    shows up in early February.
  </Accordion>

  <Accordion title="I turned accrual on today. Will everyone be back-credited?">
    Only from the day the policy was created, or their join date if that is
    later. A brand-new policy credits nothing until its first period closes.
  </Accordion>

  <Accordion title="Can accrual take someone above a cap?">
    There is no cap. Balance keeps growing until it is used or adjusted down.
  </Accordion>

  <Accordion title="Does someone accrue while they are on leave?">
    Yes. Accrual is based on calendar periods and membership, not on days worked
    after the first period.
  </Accordion>

  <Accordion title="Does changing the accrual amount rewrite past credits?">
    No. Past ledger rows are never rewritten. The new amount applies from the next
    period that closes.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                      | What to check                                                               |
| -------------------------------------------- | --------------------------------------------------------------------------- |
| Nobody is accruing                           | The Time Off app is off, or **Enable accrual** is off on the policy.        |
| One person is not accruing                   | They are not on the policy's assignee list, or they are no longer a member. |
| A new joiner got less than expected          | **Prorate new hires** is on. Check the join date against the period.        |
| The first credit was smaller than the amount | Same reason – it was prorated.                                              |
| The balance jumped after several quiet days  | A catch-up run credited each missed period once. That is correct.           |
| A negative did not clear in January          | **Reset at year end** is off, or the balance was already positive.          |

## Related guides

<CardGroup cols={2}>
  <Card title="Leave balances" href="/time-off/leave-balances">
    Where accrued sits in the five figures.
  </Card>

  <Card title="Leave policies" href="/time-off/leave-policies">
    Where the accrual settings live.
  </Card>

  <Card title="Request time off" href="/time-off/request-time-off">
    Spending what you earned.
  </Card>

  <Card title="Export leave" href="/time-off/export-leave">
    Take balances out for payroll.
  </Card>
</CardGroup>
