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

# Project profitability

> See whether a project is making money in TimeTracker: billable value, actual cost, gross profit, forecast margin, and the project health chip.

Profitability is the gap between what you charge and what the work costs you. TimeTracker shows it on each project's **Overview** tab.

## The two numbers behind everything

| Number             | What it is                            | Comes from                             |
| ------------------ | ------------------------------------- | -------------------------------------- |
| **Billable value** | What the tracked time is worth to you | Hours × the billing rate on each entry |
| **Actual cost**    | What the tracked time cost you        | Hours × the cost rate on each entry    |

**Gross profit = billable value − actual cost.**

Both are computed from the rate captured on each time entry when it was recorded, not from today's rates. See [/rates/rate-snapshots](/rates/rate-snapshots).

## What Overview shows

Open a project and stay on the **Overview** tab. The **Financials** panel shows:

| Element                    | Meaning                                                                                                      |
| -------------------------- | ------------------------------------------------------------------------------------------------------------ |
| **Budget bar**             | Spend against the budget. A thin tick marks task completion, so you can see spend running ahead of progress. |
| **Legend**                 | `62% spent · 48% complete`                                                                                   |
| **Health chip**            | **On track**, **At risk** or **Over budget**                                                                 |
| **Forecast at completion** | Projected revenue, and cost when you can see cost                                                            |
| **Forecast margin**        | The projected margin percentage                                                                              |
| **Gross profit**           | Billable value minus actual cost                                                                             |
| **Effective hourly rate**  | What the project is really earning per hour                                                                  |
| **Awaiting approval**      | Hours submitted but not yet approved, and how many entries                                                   |
| **Overdue tasks**          | A caption when overdue tasks may push the forecast                                                           |

## Health

| Chip            | Reads                                                   |
| --------------- | ------------------------------------------------------- |
| **On track**    | Spend and forecast are within budget                    |
| **At risk**     | Close enough to warrant attention                       |
| **Over budget** | The budget is exceeded, or the forecast says it will be |

The project list uses the same idea in its **Budget** column: under 90% is muted, 90% and above is a warning tint, and 100% or more turns red and changes the wording to `118% over budget` rather than `118% of budget`.

<Note>
  The true percentage always prints. A project at 210% says 210% – nothing is capped or rounded away.
</Note>

## Approved time only

Spend and margin count **approved** time. Time that has been submitted but not yet approved is shown separately, as a caption:

> `12.5h awaiting approval · 4 entries`

Hovering it explains: *"Submitted time not yet approved – excluded from spent and margin until a manager approves it."*

This is what stops a project looking healthy right up to the moment a week of approvals lands.

## The cost firewall

Cost, forecast cost, forecast margin and gross profit are only shown to someone who may see cost – `time.viewCost` or `rate.viewCost`.

<Warning>
  These figures are removed **before** they leave the server. Without the capability the tiles are not there at all. Nothing is sent to your browser and then hidden.
</Warning>

Revenue-side figures – billable value, forecast revenue – are not cost, so everyone with project access can read them.

## Example

**Website Redesign** for Bluebird Coffee, a `$40,000` fixed fee.

| Figure          | Value                                            |
| --------------- | ------------------------------------------------ |
| Approved hours  | 246                                              |
| Billable value  | `$24,600`                                        |
| Actual cost     | `$11,070`                                        |
| Gross profit    | `$13,530`                                        |
| Budget          | `$40,000`                                        |
| Utilisation     | 62% spent                                        |
| Task completion | 48% complete                                     |
| Health          | **At risk** – spend is running ahead of progress |

Spend is at 62% while the work is only 48% done. If that pace holds, the forecast at completion exceeds the budget, so the chip warns before the money runs out.

Zooming in on one entry: Sarah tracks 3 hours on "Homepage wireframes". Her billing rate is `$100/hour`, so the entry is worth \*\*$300**. Her cost rate is `$45/hour\`, so it costs Northwind **$135**. The margin on those 3 hours is **$165** – a 55% margin.

## Improving margin

| Lever                             | Where                                                                                                                      |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Raise the billing rate            | [/rates/billable-rates](/rates/billable-rates) or a project override at [/projects/project-rates](/projects/project-rates) |
| Put lower-cost people on the work | [/projects/project-members](/projects/project-members)                                                                     |
| Cut scope                         | [/projects/project-sections](/projects/project-sections) and task estimates                                                |
| Catch it earlier                  | Set a margin floor – [/budgets/budget-alerts](/budgets/budget-alerts)                                                      |

## Margin-floor alerts

The budget card has **Alert if margin falls below**, a percentage from 0 to 100. When the forecast margin drops under it, an alert appears on the project's **Alerts** list and, if configured, by email.

Leave it blank to skip margin alerts entirely.

## Permissions

| To see                                                    | You need                           |
| --------------------------------------------------------- | ---------------------------------- |
| Billable value, forecast revenue, health, utilisation     | Project access                     |
| Actual cost, forecast cost, forecast margin, gross profit | `time.viewCost` or `rate.viewCost` |
| Billing rates on the roster                               | `rate.viewBilling`                 |
| Set the budget and margin floor                           | `budget.manage`                    |

Cost visibility is a **capability** question, never a plan question.

## App and plan gating

| Gate                                | Effect                                                    |
| ----------------------------------- | --------------------------------------------------------- |
| **Budgets & profitability** app off | The whole Financials panel and the Alerts list are hidden |
| Not on **Pro**                      | Budgets and profitability are Pro features                |

There is one honest half-gate: on **Free** you cannot **set** a cost rate. Cost, revenue and margin already recorded stay readable, and billing rates stay free to set. See [/concepts/plans-and-features](/concepts/plans-and-features).

## Common questions

<AccordionGroup>
  <Accordion title="Why do I see revenue but no margin?">
    You can see billing but not cost. Margin needs cost. Ask an admin for `rate.viewCost` or `time.viewCost`.
  </Accordion>

  <Accordion title="Why is the Effective hourly rate a dash?">
    No tracked hours have rolled up yet. It fills in once approved time exists.
  </Accordion>

  <Accordion title="Why is spend lower than I expected?">
    Only approved time counts. Check the "awaiting approval" caption, then look at [/approvals/overview](/approvals/overview).
  </Accordion>

  <Accordion title="Does a non-billable project have profitability?">
    It has cost but effectively no billable value, so the margin is negative by definition. That is correct – internal work costs money and earns none.
  </Accordion>

  <Accordion title="Can I see profitability across all projects at once?">
    Yes, with a report on the **Projects** source. See [/projects/project-reporting](/projects/project-reporting).
  </Accordion>

  <Accordion title="Do expenses count toward cost?">
    Expenses have their own workflow and their own reporting source. See [/expenses/overview](/expenses/overview).
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                  | Cause                                                          | Fix                                    |
| ---------------------------------------- | -------------------------------------------------------------- | -------------------------------------- |
| "No budget set" on Overview              | No budget, and no approved time yet                            | Set one in **Settings → Finance**      |
| No cost or margin tiles                  | You lack cost visibility                                       | Ask an admin                           |
| Margin looks wrong                       | Some people have no cost rate, so their hours cost nothing     | Set cost rates at **Settings → Rates** |
| Health says At risk but spend looks fine | The **forecast** exceeds the budget even though spend does not | Check the forecast tile                |
| Overview is blank                        | The Budgets app is off                                         | Turn it on in **Settings → Apps**      |

## Related guides

<CardGroup cols={2}>
  <Card title="Profitability and margin" icon="chart-line" href="/budgets/profitability-and-margin">
    The canonical explanation.
  </Card>

  <Card title="Calculate project profitability" icon="calculator" href="/budgets/calculate-project-profitability">
    A worked, step-by-step example.
  </Card>

  <Card title="Cost rates" icon="wallet" href="/rates/cost-rates">
    Where cost comes from.
  </Card>

  <Card title="Project overview page" icon="gauge" href="/projects/project-overview-page">
    Every element on the dashboard.
  </Card>

  <Card title="Budget alerts" icon="bell" href="/budgets/budget-alerts">
    Margin floors and thresholds.
  </Card>

  <Card title="Project reporting" icon="table" href="/projects/project-reporting">
    Profitability across every project.
  </Card>
</CardGroup>
