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

# Approve a timesheet

> Review a submitted timesheet period, check the hours and money, correct an entry in place, and approve it so the time is settled and ready to invoice.

Open **Approvals → Timesheets → Awaiting approval**, click the row, check the numbers, and click **Approve**. The time is then settled.

## What approving means

Approving accepts a whole period. Every submitted entry in it becomes **approved**.

Approved time is settled. The person cannot edit it any more. It can be locked by a period close, and its billable part can go onto an invoice.

<Warning>
  Approving is a financial decision. Once you approve, the hours become the basis for what the client is billed. Check the billable split before you click.
</Warning>

## Two ways to approve

| Route                  | When to use it                                                |
| ---------------------- | ------------------------------------------------------------- |
| From the row menu      | You already trust the period and need it cleared              |
| From the review screen | You want to see the entries, the money, and the history first |

### From the row menu

<Steps>
  <Step title="Open the queue">
    Go to **Approvals → Timesheets → Awaiting approval**.
  </Step>

  <Step title="Open the row menu">
    Click `⋮` at the end of the person's row.
  </Step>

  <Step title="Click Approve">
    You get `Timesheet approved.` and the row leaves the queue.
  </Step>
</Steps>

### From the review screen

<Steps>
  <Step title="Click the row">
    The full review page opens for that person and period.
  </Step>

  <Step title="Check the header">
    Name, period, status badge, total hours, when it was submitted, and the billable / non-billable split.
  </Step>

  <Step title="Read the note">
    The person's **Submission note**, if they left one.
  </Step>

  <Step title="Scan the financial strip">
    Total logged, Billable, Billable amount and Expenses. Cost and Margin appear only if you can see cost.
  </Step>

  <Step title="Scan the entries">
    One row per entry, with a totals row at the bottom.
  </Step>

  <Step title="Fix anything small">
    With `time.editOthers` you can correct a row in place rather than bouncing the week back.
  </Step>

  <Step title="Click Approve">
    A dialog opens: "Approve `<name>`'s timesheet? Approving marks `<hours>` as approved for `<period>`."
  </Step>

  <Step title="Add a comment (optional)">
    Then click **Approve timesheet**. You get `Timesheet approved.` and go back to the queue.
  </Step>
</Steps>

## The review screen in detail

### Header

| Field                       | What it shows                                        |
| --------------------------- | ---------------------------------------------------- |
| Name and avatar             | Whose period this is                                 |
| Period label                | The exact date range                                 |
| Status badge                | Submitted, Approved, Changes requested, or Withdrawn |
| Total                       | Period hours                                         |
| **Submitted**               | Date and time it was sent                            |
| **Submitted by**            | Only when someone submitted on their behalf          |
| **Reviewed**                | Date, time and reviewer, once a decision exists      |
| **Billable / non-billable** | The hours split                                      |

Below that, the **Submission note** from the person and the **Reviewer** comment if one exists. A changes-requested comment is shown in red.

### Financial strip

| Tile                | What it is                                    |
| ------------------- | --------------------------------------------- |
| **Total logged**    | All hours in the period                       |
| **Billable**        | Billable hours, with non-billable in brackets |
| **Billable amount** | Billable hours times the billing rate         |
| **Expenses**        | Expenses in the period                        |
| **Cost**            | Hours times the cost rate                     |
| **Margin**          | Billable amount minus cost                    |

<Note>
  **Cost and Margin only appear if you hold `time.viewCost`.** They are not blanked out or greyed – they are not sent to your screen at all. Owners and Admins hold that capability by default. A Project Manager does not.
</Note>

### Time entries table

| Column             | What it shows                   |
| ------------------ | ------------------------------- |
| **Date**           | The entry date                  |
| **Project · task** | Where the time went, or a dash  |
| **Description**    | What was done, or a dash        |
| **Billable**       | A tick, or a dash               |
| **Hours**          | The tracked duration            |
| **Amount**         | Billable value of the entry     |
| **Cost**           | Only for cost-capable reviewers |

The footer row totals the entry count, hours, amount and cost. Rows that came back rejected and have not been redone are tinted.

### Correcting an entry in place

With `time.editOthers` you get two extra controls.

* A **pencil** on each row, which opens the entry form.
* An **Add entry** button above the table.

Both work while the entry is still submitted, so a small fix does not have to bounce a whole week back to the person. The totals update straight away.

Approved, locked and invoiced entries stay frozen. Those are corrected with an [adjustment](/approvals/adjustments).

### Activity log

Every event on the period, in order.

| Column                | What it shows                                                           |
| --------------------- | ----------------------------------------------------------------------- |
| **Date** and **Time** | When it happened                                                        |
| **Action**            | Submitted, Resubmitted, Approved, Requested changes, Withdrew, Reopened |
| **Actor**             | Who did it                                                              |
| **Comment / Reason**  | What they wrote                                                         |

### Action bar

A bar sticks to the bottom of the page with whatever is legal right now.

| Button              | Shown when                                                                                    |
| ------------------- | --------------------------------------------------------------------------------------------- |
| **Request changes** | The period is **Submitted**                                                                   |
| **Approve**         | The period is **Submitted**                                                                   |
| **Reopen**          | The period is **Approved**, nothing is locked or invoiced, and you hold `time.reopenApproval` |

## Example

Priya Raman opens Sarah Lin's week at Northwind Studio.

The header reads 32 hours total, submitted Friday at 17:04, split 24 billable and 8 non-billable. Sarah's note says "Wireframe round two took longer than estimated."

The strip shows Total logged `32.00h`, Billable `24.00h (8.00h non-billable)`, Billable amount **$2,400.00**, Expenses **$0.00**. Priya cannot see Cost or Margin – she is a Project Manager.

Scanning the entries, she sees one 3-hour row on "Website Redesign · Homepage wireframes" with an empty description. Rather than send the whole week back, she clicks the pencil, types the description, and saves.

She clicks **Approve**, adds the comment "Approved – wireframe overrun noted against the estimate," and confirms. Sarah gets a notification.

Sarah's 24 billable hours at $100/hour are now settled at **$2,400\*\* against Bluebird Coffee's \$40,000 Website Redesign budget.

## Permissions

| Action                          | Capability            | Default roles                 |
| ------------------------------- | --------------------- | ----------------------------- |
| See the queue and review screen | `time.approve`        | Owner, Admin, Project Manager |
| Approve or request changes      | `time.approve`        | Owner, Admin, Project Manager |
| Correct an entry during review  | `time.editOthers`     | Owner, Admin, Project Manager |
| See cost and margin             | `time.viewCost`       | Owner, Admin                  |
| Reopen an approval              | `time.reopenApproval` | Owner, Admin                  |

Supervision scope also applies to every one of these. Acting on someone's period is a cross-member write, so your scope has to reach them – there is no way around it.

Self-approval is allowed. Your own submitted period appears in your queue.

## Plan gating

**Approving is Pro.** On the Free plan the queue still renders in full – seeing the week your team submitted is exactly what makes the wall worth paying to clear – but **Approve** and **Reject…** carry a **Pro** badge and open the upgrade dialog instead of acting.

Nothing is lost. Every submission keeps its totals and clears the moment the workspace upgrades.

## What happens next

* Every submitted entry in the period becomes **approved**.
* The period moves from **Awaiting approval** to **History**.
* The person is notified that you approved it.
* The approval is stamped with your name and the time.
* An owner or admin can later lock the period, after which only an adjustment can change it.

## Common questions

<AccordionGroup>
  <Accordion title="Can I approve part of a period?">
    No. Approval works on the whole period. If one entry is wrong, correct it in place or send the period back.
  </Accordion>

  <Accordion title="Is my comment required?">
    No. The comment on approval is optional. A reason is required only when you request changes or reopen.
  </Accordion>

  <Accordion title="Can I undo an approval?">
    An owner or admin can reopen it, as long as nothing has been locked or invoiced yet.
  </Accordion>

  <Accordion title="Why can I not see Cost and Margin?">
    You do not hold `time.viewCost`. Cost is internal – ask an owner or admin if you need it.
  </Accordion>

  <Accordion title="Does approving change the hours?">
    No. It changes their status. The hours are exactly what was tracked.
  </Accordion>

  <Accordion title="Does approving create an invoice?">
    No. It makes the billable time available to invoice. Someone still has to create the invoice.
  </Accordion>
</AccordionGroup>

## Troubleshooting

* **"Someone else changed this while you had it open."** Another reviewer acted first. The screen shows a message with a reload prompt.
* **"That period is closed."** Entries have already been locked or invoiced.
* **"There's nothing submitted for that period yet."** The submission was withdrawn while you were looking at it.
* **"You can't approve time."** Your role lacks `time.approve`, or the workspace is on Free.
* **The Approve button carries a Pro badge.** The workspace is on the Free plan.

## Related guides

<CardGroup cols={2}>
  <Card title="Reject a timesheet" icon="undo" href="/approvals/reject-a-timesheet">
    Send a period back with a required reason.
  </Card>

  <Card title="Reopen an approval" icon="rotate-ccw" href="/approvals/reopen-an-approval">
    Reverse an approval you already made.
  </Card>

  <Card title="Approvals overview" icon="check-check" href="/approvals/overview">
    The whole approvals home and every tab.
  </Card>

  <Card title="Close a period" icon="lock" href="/approvals/close-a-period">
    Lock approved time through a date.
  </Card>

  <Card title="Invoice from tracked time" icon="receipt" href="/invoicing/invoice-from-tracked-time">
    Turn approved billable hours into an invoice.
  </Card>

  <Card title="Cost rates" icon="dollar-sign" href="/rates/cost-rates">
    What the Cost and Margin tiles are built from.
  </Card>
</CardGroup>
