> ## 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.

# Time off permissions

> Who can request, approve, view and manage time off: the four leave capabilities, role defaults, supervision scope, and Free versus Pro.

Four capabilities govern Time Off.

| Capability           | What it unlocks                                                                  |
| -------------------- | -------------------------------------------------------------------------------- |
| `leave.request`      | Request your own leave, withdraw your own pending request, see your own balance. |
| `leave.approve`      | Approve, reject and reverse decisions on other people's requests.                |
| `leave.viewOthers`   | See other people's requests, balances and ledger.                                |
| `leave.managePolicy` | Create and edit policies, holidays, and adjust balances by hand.                 |

## Role defaults

| Role            | `leave.request` | `leave.approve` | `leave.viewOthers` | `leave.managePolicy` |
| --------------- | --------------- | --------------- | ------------------ | -------------------- |
| Owner           | Yes             | Yes             | Yes                | Yes                  |
| Admin           | Yes             | Yes             | Yes                | Yes                  |
| Project Manager | Yes             | Yes             | Yes                | No                   |
| Finance         | Yes             | No              | No                 | No                   |
| Member          | Yes             | No              | No                 | No                   |
| Contractor      | Yes             | No              | No                 | No                   |
| Client          | No              | No              | No                 | No                   |

<Note>
  Project Manager approves leave but does not write the rules. Editing policies,
  holidays and balances is HR configuration, so it stays with Owner and Admin. You
  can move it with a custom role – see [/team/custom-roles](/team/custom-roles).
</Note>

Finance can request its own leave and nothing more. It is a working role, not a
delivery approver. Client-portal contacts hold no leave capabilities at all.

See [/concepts/roles-and-capabilities](/concepts/roles-and-capabilities).

## Capability is not scope

Holding `leave.approve` says you **may** approve. Supervision scope says **whose**
requests you see.

A Project Manager with a narrowed scope only sees the queue for the people they
supervise. Someone outside that scope never appears, even though the capability
is there.

The same is true of `leave.viewOthers` – it unlocks the surface, scope decides the
rows. See [/concepts/supervision-scope](/concepts/supervision-scope).

<Warning>
  The server enforces both. A member without `leave.viewOthers` is force-scoped to
  their own rows on every read and every export, whatever the page sends. Hiding a
  filter in the UI is a convenience, not the boundary.
</Warning>

## What each surface requires

| Surface                               | Needs                                                |
| ------------------------------------- | ---------------------------------------------------- |
| **Time Off** in the sidebar           | The Time Off app on                                  |
| **Request time off** dialog           | `leave.request` and a policy that applies to you     |
| **Requests** tab, your own rows       | `leave.request`                                      |
| **Member** filter on the Requests tab | `leave.viewOthers`                                   |
| **Timeline** tab, your own leave      | `leave.request`                                      |
| **Timeline** tab, everyone's leave    | `leave.viewOthers`                                   |
| **Balance** tab roster                | `leave.viewOthers`                                   |
| **History** dialog for someone else   | `leave.viewOthers`                                   |
| **Adjust balance**                    | `leave.managePolicy`                                 |
| **Approvals → Time Off** queue        | `leave.approve`                                      |
| **Approve** and **Reject**            | `leave.approve` plus **Pro**                         |
| **Withdraw approval**                 | `leave.approve`, any plan                            |
| **Settings → Time off → Policies**    | `leave.managePolicy`                                 |
| **Settings → Time off → Holidays**    | `leave.managePolicy`                                 |
| **Export**                            | `leave.viewOthers` for everyone's rows, plus **Pro** |

## Plan gating

Time Off is on **Free**. Two things inside it are not.

| Action                                                     | Plan                  | Why                                                                            |
| ---------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------ |
| Request, withdraw, see balances, set policies and holidays | Free                  | Recording your work is free.                                                   |
| **Approve** or **Reject** a request                        | **Pro** (`approvals`) | Resolving it is what Pro sells.                                                |
| **Export** requests or balances                            | **Pro** (`exports`)   | Taking data out as a file is Pro.                                              |
| **Withdraw an approval**                                   | Free                  | A workspace that lapses must still be able to undo a decision it already made. |

On Free, requests keep arriving and keep queueing. The backlog clears the day the
workspace upgrades – nothing is lost. See
[/concepts/plans-and-features](/concepts/plans-and-features).

## App gating

Time Off is an app, on by default, in the **Work** group of
**Settings → Apps**. It has no dependencies on other apps.

Switching it off:

* Hides Time Off from the sidebar and blocks the route.
* Stops new requests.
* **Pauses accrual** for the whole workspace.
* Keeps every balance and past request.

<Warning>
  Accrual does not back-credit the months it was paused for. If you switch Time Off
  off for a quarter and back on, post adjustments for the missed periods. See
  [/time-off/leave-accrual](/time-off/leave-accrual).
</Warning>

"App off" and "not on your plan" are different states. An app that is off is
hidden entirely. A feature not on your plan stays visible with a paywall. See
[/concepts/apps-and-modules](/concepts/apps-and-modules).

## Two capabilities, not one, for balances

Reading a balance and moving one are separate on purpose.

* **Reading** someone else's balance needs `leave.viewOthers`.
* **Moving** it needs `leave.managePolicy`.

A Project Manager can see that Sarah Lin has 11 days left. They cannot give her
two more. That takes an Owner or Admin.

Your own balance is always readable, no extra capability needed.

## Example

Northwind Studio:

| Person        | Role            | What they can do with Time Off                                                                              |
| ------------- | --------------- | ----------------------------------------------------------------------------------------------------------- |
| Maya Ellis    | Owner           | Everything – policies, holidays, adjustments, approvals.                                                    |
| Tom Whitfield | Admin           | Everything except deleting the workspace.                                                                   |
| Priya Raman   | Project Manager | Requests her own leave, approves her team's, sees their balances. Cannot edit policies or adjust a balance. |
| Daniel Okafor | Finance         | Requests his own leave. Sees nobody else's.                                                                 |
| Sarah Lin     | Member          | Requests her own leave, sees her own balance.                                                               |
| Ana Ferreira  | Contractor      | The same as Sarah.                                                                                          |
| Ruth Castillo | Client          | No access to Time Off at all.                                                                               |

If Maya wants Priya to run leave policies too, she creates a custom role from
Project Manager and adds `leave.managePolicy`.

## Common questions

<AccordionGroup>
  <Accordion title="Can someone approve their own request?">
    Yes, if they hold `leave.approve`. Their own row appears in the queue like
    anyone else's. Whether that is acceptable is a policy decision for your team.
  </Accordion>

  <Accordion title="Can I let a manager see balances but not approve?">
    Yes. Build a custom role with `leave.viewOthers` and without `leave.approve`.
  </Accordion>

  <Accordion title="Why can a Member not see the Balance tab?">
    The roster is gated on `leave.viewOthers`. Their own balance is in the request
    dialog and on their member record.
  </Accordion>

  <Accordion title="Can contractors request leave?">
    Yes. Contractor holds `leave.request` by default. Assign them to whichever
    policies make sense – often unpaid leave only.
  </Accordion>

  <Accordion title="Do client-portal contacts count toward anything here?">
    No. They hold no leave capabilities and never appear in leave data. They do
    count toward your seat total, which is a billing matter – see
    /team/seats-and-billing.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                         | Fix                                                                 |
| ----------------------------------------------- | ------------------------------------------------------------------- |
| "You are not assigned to any leave policy yet." | The policy is member-scoped. Add the person, or set it to everyone. |
| A queue is empty despite pending requests       | Those requesters are outside your supervision scope.                |
| Approve shows a Pro badge                       | The workspace is on Free.                                           |
| Settings → Time off is missing                  | The app is off, or you do not hold `leave.managePolicy`.            |
| An export only returned your own rows           | You do not hold `leave.viewOthers`.                                 |
| Balances stopped growing                        | The Time Off app is off, which pauses accrual.                      |

## Related guides

<CardGroup cols={2}>
  <Card title="Roles and capabilities" href="/concepts/roles-and-capabilities">
    The whole permission model.
  </Card>

  <Card title="Supervision scope" href="/concepts/supervision-scope">
    Who each approver can see.
  </Card>

  <Card title="Plans and features" href="/concepts/plans-and-features">
    Free versus Pro.
  </Card>

  <Card title="Apps and modules" href="/concepts/apps-and-modules">
    Switching Time Off on and off.
  </Card>

  <Card title="Custom roles" href="/team/custom-roles">
    Move a leave capability to another role.
  </Card>

  <Card title="Time off overview" href="/time-off/overview">
    Back to the basics.
  </Card>
</CardGroup>
