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

# Approval permissions

> Who can approve timesheets, timecards, expenses and time off in TimeTracker, how supervision scope limits your queue, and which actions need a Pro plan.

Approving needs three things to line up – the **capability** for that domain, a **supervision scope** that reaches the person, and, for most actions, a **Pro** plan.

## The four approve capabilities

Each domain has its own. Holding one never grants another.

| Domain     | Capability         | Owner | Admin | Project Manager | Finance | Member | Contractor | Client |
| ---------- | ------------------ | ----- | ----- | --------------- | ------- | ------ | ---------- | ------ |
| Timesheets | `time.approve`     | Yes   | Yes   | Yes             | –       | –      | –          | –      |
| Expenses   | `expense.approve`  | Yes   | Yes   | Yes             | Yes     | –      | –          | –      |
| Time off   | `leave.approve`    | Yes   | Yes   | Yes             | –       | –      | –          | –      |
| Timecards  | `timecard.approve` | Yes   | Yes   | Yes             | –       | –      | –          | –      |

The **Approvals** page shows one tab per domain you can approve. One capability means one tab. No capabilities at all means "You do not have access to approvals."

Finance holds `expense.approve` and nothing else in that table. Expenses are a money surface; the other three are delivery decisions.

## The supporting capabilities

Approving is rarely the only thing a reviewer needs.

| Action                               | Capability            | Owner | Admin | Project Manager | Finance |
| ------------------------------------ | --------------------- | ----- | ----- | --------------- | ------- |
| Reopen a timesheet approval          | `time.reopenApproval` | Yes   | Yes   | –               | –       |
| Reopen a timecard approval           | `timecard.reopen`     | Yes   | Yes   | –               | –       |
| Close a period                       | `period.close`        | Yes   | Yes   | –               | –       |
| Correct settled time                 | `time.adjust`         | Yes   | Yes   | Yes             | Yes     |
| Correct a teammate's entry in review | `time.editOthers`     | Yes   | Yes   | Yes             | –       |
| See a teammate's time                | `time.viewOthers`     | Yes   | Yes   | Yes             | –       |
| Submit for a teammate                | `time.submitOnBehalf` | Yes   | Yes   | Yes             | –       |
| Send a reminder                      | `time.remind`         | Yes   | Yes   | Yes             | –       |
| See cost and margin                  | `time.viewCost`       | Yes   | Yes   | –               | –       |
| Correct clock times                  | `timecard.manage`     | Yes   | Yes   | Yes             | –       |

## The pattern behind the tiers

Three tiers, and each one has a reason.

<Steps>
  <Step title="Making a decision – Project Manager and up">
    Approving and requesting changes belong to whoever runs delivery. `time.approve`, `leave.approve`, `timecard.approve`.
  </Step>

  <Step title="Reversing a decision – Owner and Admin only">
    Reopening reverses something already recorded. `time.reopenApproval` and `timecard.reopen` sit above the manager tier for the same reason `period.close` does.
  </Step>

  <Step title="Correcting settled records – includes Finance">
    `time.adjust` is the one approval-adjacent capability Finance holds. Finance does not sign off delivery; it corrects the books after the fact.
  </Step>
</Steps>

## Capability is not scope

Holding `time.approve` does not mean you see every submission in the workspace.

|                       | What it decides                      |
| --------------------- | ------------------------------------ |
| **Capability**        | Whether you may approve at all       |
| **Supervision scope** | Whose submissions land in your queue |

Your queue is derived from both, plus yourself. Every submission from a person your scope reaches appears, and so do your own.

<Note>
  The person submitting does **not** choose who reviews. Naming a reviewer at submit time is a routing note for the notification. Every reviewer who supervises them still sees the submission, so nobody can route around a manager by naming a friendlier one.
</Note>

See [/concepts/supervision-scope](/concepts/supervision-scope) for how scope is set.

## Self-approval

Your own submitted period appears in your own queue. This is an explicit product decision, and it applies to timesheets and timecards alike.

If your workspace does not want that, do not grant the approve capability to people who also submit.

## Plan gating

The plan gate is separate from the capability gate, and it runs last.

| Action                                                   | Plan    |
| -------------------------------------------------------- | ------- |
| Approve a timesheet, timecard, expense, or leave request | **Pro** |
| Request changes                                          | **Pro** |
| Reopen a timesheet approval                              | Free    |
| Withdraw an expense approval                             | Free    |
| Withdraw a leave approval                                | Free    |
| Close a period                                           | Free    |
| Post an adjustment                                       | Free    |
| Export                                                   | **Pro** |

The asymmetry is deliberate. **Granting** an approval is resolution, and resolution is what Pro sells. **Taking one back** must work on every plan – a workspace whose subscription lapses mid-week would otherwise be stuck holding a decision it can neither complete nor undo.

<Note>
  Nothing is destroyed when a workspace is on Free. Submissions keep arriving, keep their totals, and queue up. The whole backlog clears the day the workspace pays. A lapse never costs you data.
</Note>

On the Free plan the Approvals page shows a blurred page shape with an upgrade card over it. Inside the queue, the **Approve** and **Reject…** items stay listed and carry a **Pro** badge – a menu item that vanishes reads like a bug, and this is the exact moment the work on screen is worth the most.

## App gating

Each tab also needs its app switched on in **Settings → Apps**.

| Tab        | App        | On by default | Depends on       |
| ---------- | ---------- | ------------- | ---------------- |
| Timesheets | Timesheets | Yes           | Time tracking    |
| Expenses   | Expenses   | Yes           | Projects & tasks |
| Time Off   | Time off   | Yes           | –                |
| Timecards  | Time Clock | **No**        | Work schedules   |

An app that is **off** removes its tab completely, and the sidebar badge stops counting it. A feature not on your **plan** keeps the surface visible behind a paywall. They are different things – see [/concepts/apps-and-modules](/concepts/apps-and-modules).

## Example

Northwind Studio's approval setup.

| Person        | Role            | What they approve                                            |
| ------------- | --------------- | ------------------------------------------------------------ |
| Maya Ellis    | Owner           | Everything, plus reopening and closing periods               |
| Tom Whitfield | Admin           | Everything, plus reopening and closing periods               |
| Priya Raman   | Project Manager | Timesheets, time off and expenses for people on her projects |
| Daniel Okafor | Finance         | Expenses only. Posts adjustments after month end             |
| Sarah Lin     | Member          | Nothing                                                      |
| Jonas Bergman | Member          | Nothing                                                      |
| Ana Ferreira  | Contractor      | Nothing                                                      |
| Ruth Castillo | Client          | Nothing – a portal contact holds no internal capabilities    |

Priya's sidebar badge counts only her people. When Ana submits a week for a project Priya does not run, it goes to Tom instead.

When Bluebird Coffee queries an invoice after month end, Priya cannot reopen the closed period. Daniel posts an adjustment instead – the one correction route that survives a close.

## Custom roles and per-person overrides

The tables above are **defaults**. Your workspace can change them.

* **Custom roles** – build a role with exactly the capability set you want. See [/team/custom-roles](/team/custom-roles).
* **Per-person overrides** – deny a specific capability to one person, even though their role has it. See [/team/per-person-permissions](/team/per-person-permissions).

One capability can never be moved: deleting the workspace stays with the Owner role, no matter what.

## Common questions

<AccordionGroup>
  <Accordion title="I hold time.approve but the queue is empty.">
    Either nothing is submitted, or your supervision scope reaches nobody. Capability and scope are separate gates.
  </Accordion>

  <Accordion title="Can a Member approve their teammate's timesheet?">
    Not by default. Give them a custom role that includes `time.approve`, and set a scope that reaches the right people.
  </Accordion>

  <Accordion title="Why does Finance approve expenses but not timesheets?">
    Finance owns the money surface. Timesheet sign-off is a delivery judgement, so it belongs to the delivery roles.
  </Accordion>

  <Accordion title="Can a Project Manager close a period?">
    Not by default. `period.close` is Owner and Admin only, because it freezes financial records for everyone.
  </Accordion>

  <Accordion title="Can a client-portal contact ever approve something?">
    No. The Client role holds zero internal capabilities.
  </Accordion>

  <Accordion title="Does approving on Free lose the submission?">
    No. You cannot approve on Free, but the submission sits safely in the queue with its totals intact until you upgrade.
  </Accordion>
</AccordionGroup>

## Troubleshooting

* **"You do not have access to approvals."** No approve capability for any switched-on app.
* **"You can't approve time."** Your role lacks `time.approve`, or the workspace is on Free.
* **"You can't reopen an approved timesheet."** `time.reopenApproval` is Owner and Admin only.
* **"You can't post an adjustment."** You do not hold `time.adjust`.
* **A button shows a Pro badge.** You have the capability but not the plan.
* **A whole tab is missing.** Its app is switched off, or you lack that domain's approve capability.

## Related guides

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

  <Card title="Supervision scope" icon="eye" href="/concepts/supervision-scope">
    Why capability alone does not fill your queue.
  </Card>

  <Card title="Approvals overview" icon="check-check" href="/approvals/overview">
    The inbox these permissions unlock.
  </Card>

  <Card title="Plans and features" icon="credit-card" href="/concepts/plans-and-features">
    What Pro sells, and what Free always keeps.
  </Card>

  <Card title="Apps and modules" icon="toggle-right" href="/concepts/apps-and-modules">
    Off versus not-on-your-plan.
  </Card>

  <Card title="Timesheet permissions" icon="clock" href="/timesheets/timesheet-permissions">
    The submitter side of the same model.
  </Card>
</CardGroup>
