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

# Expense permissions

> Who can submit, approve and invoice expenses in TimeTracker. The full role and capability matrix, plus the cost firewall that hides internal amounts.

Expenses use four capabilities: `expense.submit`, `expense.approve`, `expenseCategory.manage` and `time.viewCost`. Each one answers a different question.

| Capability               | The question it answers                                |
| ------------------------ | ------------------------------------------------------ |
| `expense.submit`         | May you record and file your own expenses?             |
| `expense.approve`        | May you review other people's expenses?                |
| `expenseCategory.manage` | May you curate the category list?                      |
| `time.viewCost`          | May you see the internal amount someone actually paid? |

## The role matrix

| Action                                         | Owner | Admin | Project Manager | Finance | Member | Contractor | Client |
| ---------------------------------------------- | ----- | ----- | --------------- | ------- | ------ | ---------- | ------ |
| Create a draft expense                         | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| Edit your own draft or rejected expense        | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| Submit your own expense                        | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| Withdraw your own submitted expense            | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| Delete your own draft or rejected expense      | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| Upload and open a receipt                      | Yes   | Yes   | Yes             | Yes     | Yes    | Yes        | No     |
| See the approval queue                         | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |
| Approve an expense                             | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |
| Reject an expense                              | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |
| Withdraw an approval                           | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |
| See the raw amount on someone else's expense   | Yes   | Yes   | No              | No      | No     | No         | No     |
| Add, rename or archive a category              | Yes   | Yes   | No              | Yes     | No     | No         | No     |
| Build a workspace-wide Expenses report         | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |
| Put an approved billable expense on an invoice | Yes   | Yes   | Yes             | Yes     | No     | No         | No     |

## The capabilities in detail

### `expense.submit`

Held by every working role: Owner, Admin, Project Manager, Finance, Member and Contractor. Not held by Client.

It covers your **own** expenses only:

* create a draft
* edit a draft or rejected expense
* submit for approval
* withdraw a submitted expense back to draft
* delete a draft or rejected expense
* upload a receipt, and open a receipt

The breadth mirrors `time.submit`. Anyone who does client work can spend money on it, so anyone who does client work can file an expense.

<Note>
  Holding `expense.submit` does not let you touch anyone else's expense. Every edit, withdraw and delete re-checks that you are the submitter.
</Note>

### `expense.approve`

Held by Owner, Admin, Project Manager and Finance. This is the review tier.

It covers:

* seeing the **Approvals → Expenses** queue and history
* approving a submitted expense
* rejecting a submitted expense with a reason
* withdrawing an approval you gave
* building a workspace-wide Expenses report

That last one matters. `expense.approve` is the workspace-wide "see expenses that are not mine" capability. `expense.submit` is deliberately **not** enough to build an Expenses report – if it were, any Member could aggregate the whole company's spend.

Approve and Reject additionally need the **Pro** plan. Withdrawing an approval does not.

### `expenseCategory.manage`

Held by Owner, Admin and Finance.

**Project Manager is deliberately excluded.** Categories are a finance taxonomy, not a delivery one. A PM approves expenses and manages budgets but does not shape the chart of accounts.

It covers:

* opening **Settings → Expense categories**
* adding a category
* renaming a category
* archiving and restoring a category

There is no inline-create path. The expense form only offers the managed active list, so every category change – including the very first one – needs this capability.

### `time.viewCost`

Held by Owner and Admin only.

It is not an expense capability as such. It is the cost firewall that decides whether you see the **raw amount** and **markup %** on someone else's expense.

| You are looking at                            | You see the billable value | You see the raw amount |
| --------------------------------------------- | -------------------------- | ---------------------- |
| Your own expense                              | Yes                        | Yes, always            |
| Someone else's, as Owner or Admin             | Yes                        | Yes                    |
| Someone else's, as Project Manager or Finance | Yes                        | No                     |

This is the same firewall that hides cost rates from a Project Manager. See [cost rates](/rates/cost-rates).

The firewall also applies in reports. The **Expense cost** measure requires `time.viewCost`; the **Billable value** and **Expenses** count measures do not.

## Example

Northwind Studio, with all seven roles in play.

| Person        | Role            | What they can do with expenses                                                                                                     |
| ------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Maya Ellis    | Owner           | Everything. Files her own, approves anyone's, sees every raw amount, manages categories.                                           |
| Tom Whitfield | Admin           | The same, except deleting the workspace itself.                                                                                    |
| Priya Raman   | Project Manager | Files her own and approves the team's. Sees `$276.00` billable but never the `$240.00` Sarah paid. Cannot touch the category list. |
| Daniel Okafor | Finance         | Files his own, approves the team's, owns the category list. Also sees only the billable value on other people's expenses.          |
| Sarah Lin     | Member          | Files, edits, withdraws and deletes her own expenses. Sees her own amounts in full. No queue, no reports on others.                |
| Jonas Bergman | Member          | Same as Sarah.                                                                                                                     |
| Ana Ferreira  | Contractor      | Same as Sarah. Contractor is narrower elsewhere, but not for expenses.                                                             |
| Ruth Castillo | Client          | Nothing. A portal contact holds no internal capabilities.                                                                          |

## App and plan gates

Capabilities are only one of three gates. All three must pass.

<Steps>
  <Step title="Is the app on?">
    Expenses must be switched on in **Settings → Apps**. Off means hidden entirely – the sidebar item is gone and the URL is blocked. Expenses requires the Projects & tasks app.
  </Step>

  <Step title="Do you hold the capability?">
    Your role, plus any custom role or per-person override your workspace has set.
  </Step>

  <Step title="Does your plan include it?">
    Recording an expense is free. Approving one needs Pro.
  </Step>
</Steps>

| Gate                     | Off means                                                                   |
| ------------------------ | --------------------------------------------------------------------------- |
| App switched off         | Hidden. No sidebar item, no route.                                          |
| Capability missing       | The control is hidden or the page shows a no-access panel.                  |
| Plan does not include it | The control stays visible with a **Pro** badge and opens an upgrade dialog. |

Never confuse "turned off" with "not on your plan". See [apps and modules](/concepts/apps-and-modules) and [plans and features](/concepts/plans-and-features).

## Custom roles and per-person overrides

Your workspace can define custom roles with a different capability set, and can deny specific capabilities to individual people.

Two rules to keep in mind:

1. **A capability is not a scope.** `expense.approve` says you **may** review expenses. Supervision scope decides **whose** expenses route to you. Both have to pass. See [supervision scope](/concepts/supervision-scope).
2. **Not every capability is freely movable.** Some are owner-exclusive and some are deny-only. Check the role editor before assuming a capability can be granted to any role.

## Common questions

<AccordionGroup>
  <Accordion title="Can a Member see the whole team's expenses?">
    No. The Expenses page is pinned to the person viewing it. Workspace-wide visibility needs `expense.approve`.
  </Accordion>

  <Accordion title="Why does Finance manage categories but Project Manager does not?">
    Categories are how spend is classified for the books. That is a finance concern. A PM's expense authority is reviewing amounts on their projects, not shaping the taxonomy.
  </Accordion>

  <Accordion title="Can a Project Manager ever see what we actually paid?">
    Only on their own expenses. Seeing another person's raw amount needs `time.viewCost`, which is Owner and Admin only.
  </Accordion>

  <Accordion title="Can a Contractor submit expenses?">
    Yes. Contractor is the narrowest staff role, but it holds `expense.submit` in full.
  </Accordion>

  <Accordion title="Can a client portal contact see expenses?">
    No. A Client role holds an empty internal capability set. A portal contact only sees what is explicitly shared with their client company.
  </Accordion>

  <Accordion title="Do I need Pro to submit an expense?">
    No. Recording is free on every plan, forever. Only approving is Pro.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                                   | Cause and fix                                                          |
| --------------------------------------------------------- | ---------------------------------------------------------------------- |
| **Expenses** is missing from the sidebar                  | The app is switched off in **Settings → Apps**.                        |
| The **Expenses** tab is missing from Approvals            | You lack `expense.approve`.                                            |
| **Settings → Expense categories** shows a no-access panel | You lack `expenseCategory.manage`. Project Manager does not hold it.   |
| **Forbidden: expense.submit**                             | Your role or a per-person override does not allow submitting expenses. |
| **Forbidden: expense.approve**                            | You are not on the review tier.                                        |
| Approve shows a **Pro** badge                             | Your plan does not include `approvals`.                                |
| You see a billable value but no amount                    | Working as designed. You lack `time.viewCost`.                         |
| The Expenses report source is not offered                 | It requires `expense.approve`.                                         |

## Related guides

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

  <Card title="Approve an expense" icon="check" href="/expenses/approve-an-expense">
    The reviewer surface these capabilities unlock.
  </Card>

  <Card title="Expense categories" icon="tags" href="/expenses/expense-categories">
    Managed by the money tier only.
  </Card>

  <Card title="Cost rates" icon="eye-slash" href="/rates/cost-rates">
    The same cost firewall on people.
  </Card>

  <Card title="Apps and modules" icon="toggle-on" href="/concepts/apps-and-modules">
    The app gate that sits above every capability.
  </Card>

  <Card title="Plans and features" icon="credit-card" href="/concepts/plans-and-features">
    Why approving is Pro and recording is free.
  </Card>
</CardGroup>
