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

# Calculate project profitability

> A step-by-step walkthrough of working out whether a client project makes money in TimeTracker – set up rates, approve time, then read the Financials panel.

To see whether a project is profitable, make sure everyone has both rates, get the time approved, then open the project's **Overview → Financials** panel.

This page walks the whole thing through on one project.

## What you need first

Profitability needs four things. Miss any one and the numbers are wrong rather than missing.

<Steps>
  <Step title="A billing rate on everyone who works the project">
    Without one, their hours earn nothing and margin looks terrible. See [billable rates](/rates/billable-rates).
  </Step>

  <Step title="A cost rate on everyone who works the project">
    Without one, their hours cost nothing and margin looks great. This is the most common cause of a wrong number. See [cost rates](/rates/cost-rates).
  </Step>

  <Step title="Time tracked against the project">
    Hours are the raw material. Both figures are rate × hours.
  </Step>

  <Step title="Time approved">
    Cost and revenue only count once a reviewer approves the time. Unapproved time sits outside the figures.
  </Step>
</Steps>

A project budget is **not** required to see profitability. It is required to see utilisation, health and alerts.

## The walkthrough

**Bluebird Coffee – Website Redesign.** Sold at \$40,000. Estimated at 400 hours.

### Step 1 – Check the rates

| Person        | Billable rate | Cost rate |
| ------------- | ------------- | --------- |
| Sarah Lin     | \$100/hour    | \$45/hour |
| Jonas Bergman | \$120/hour    | \$60/hour |
| Ana Ferreira  | \$80/hour     | \$55/hour |

All three have both rates. Good.

### Step 2 – Check the approved hours

| Person        | Approved hours |
| ------------- | -------------- |
| Sarah Lin     | 150            |
| Jonas Bergman | 50             |
| Ana Ferreira  | 50             |
| **Total**     | **250**        |

### Step 3 – Work out revenue

Revenue is billing rate × hours, per person.

| Person        | Calculation | Revenue      |
| ------------- | ----------- | ------------ |
| Sarah Lin     | 150 × \$100 | \$15,000     |
| Jonas Bergman | 50 × \$120  | \$6,000      |
| Ana Ferreira  | 50 × \$80   | \$4,000      |
| **Total**     |             | **\$25,000** |

### Step 4 – Work out cost

Cost is cost rate × hours, per person.

| Person        | Calculation | Cost         |
| ------------- | ----------- | ------------ |
| Sarah Lin     | 150 × \$45  | \$6,750      |
| Jonas Bergman | 50 × \$60   | \$3,000      |
| Ana Ferreira  | 50 × \$55   | \$2,750      |
| **Total**     |             | **\$12,500** |

### Step 5 – Work out margin

```
margin = $25,000 − $12,500 = $12,500
margin % = $12,500 ÷ $25,000 × 100 = 50%
```

The project is running at a **50% gross margin**.

### Step 6 – Work out where it is heading

The forecast projects the remaining estimated work at the same rates.

```
remaining hours = 400 − 250 = 150
forecast cost = $12,500 + 150 × $45 = $12,500 + $6,750 = $19,250
forecast revenue = $25,000 + 150 × $100 = $25,000 + $15,000 = $40,000
forecast margin = $40,000 − $19,250 = $20,750
```

Forecast margin percentage: $20,750 ÷ $40,000 × 100 = **51.875%**.

The project is on course to finish at $40,000 of revenue – exactly what it was sold for – costing $19,250 and keeping \$20,750.

### Step 7 – Check it against the budget

```
utilisation % = $12,500 ÷ $40,000 × 100 = 31.25%
completion % = 250 ÷ 400 × 100 = 62.5%
```

The project has used under a third of its budget and delivered nearly two thirds of the estimated work. Spend is trailing progress by 31 points, which is healthy.

The bar reads **31% spent · 63% complete**, and the health chip reads **On track**.

## Reading the Financials panel

Everything above appears on the project's Overview.

| Element                         | Value in this example              |
| ------------------------------- | ---------------------------------- |
| Health chip                     | **On track**                       |
| Budget bar caption              | `31% spent · 63% complete`         |
| **Forecast at completion** tile | $40,000 / $19,250                  |
| **Forecast margin** tile        | The projected margin at completion |
| **Gross profit** tile           | \$12,500                           |
| **Effective hourly rate** tile  | \$100.00                           |

Effective hourly rate check: $25,000 ÷ 250 hours = $100.00 exactly.

The **Forecast at completion** tile shows revenue first, then cost after a slash. Someone without cost visibility sees only the revenue half, and the two cost tiles are not rendered at all.

## Comparing projects

To rank projects by profitability, build a report on the **Profitability** source.

<Steps>
  <Step title="Create a report">
    Go to **Reports** and start a new report on the Profitability source.
  </Step>

  <Step title="Group by project">
    Or by client, to see which relationships pay best.
  </Step>

  <Step title="Add the measures">
    **Billable value** for revenue, **Actual cost**, **Gross profit** and **Margin %**.
  </Step>

  <Step title="Set the date range">
    A quarter is usually the right window. Too short and one big invoice distorts it.
  </Step>

  <Step title="Save it">
    Save the report so the same view is one click away each month.
  </Step>
</Steps>

The cost and profit measures require `time.viewCost`. Someone without it can still build the report but sees only the revenue columns.

See [build a report](/reports/build-a-report) and [metrics reference](/reports/metrics-reference).

## A worked warning – what wrong numbers look like

Suppose Ana Ferreira had no cost rate.

| Person        | Hours   | Revenue      | Cost        |
| ------------- | ------- | ------------ | ----------- |
| Sarah Lin     | 150     | \$15,000     | \$6,750     |
| Jonas Bergman | 50      | \$6,000      | \$3,000     |
| Ana Ferreira  | 50      | \$4,000      | **\$0**     |
| **Total**     | **250** | **\$25,000** | **\$9,750** |

Margin would read $25,000 − $9,750 = **\$15,250**, which is 61% – a full 11 points better than the truth.

Nothing warns you. The number is wrong, and it stays wrong on every report that reads it.

<Warning>
  The single biggest risk to a profitability number is a missing cost rate. Check every person on the project has one before you trust the margin – especially contractors, who are often added in a hurry.
</Warning>

## Common causes of a wrong figure

| Symptom                                                | Likely cause                                                      |
| ------------------------------------------------------ | ----------------------------------------------------------------- |
| Margin is unrealistically high                         | Someone has no cost rate                                          |
| Margin is unrealistically low                          | Someone has no billing rate, or lots of hours are non-billable    |
| Cost and revenue are both zero                         | No time has been approved                                         |
| Margin dropped sharply after approvals                 | Correct – approval adds real cost that was previously excluded    |
| Two projects with the same team show different margins | Different billable rates, or a different mix of who did the hours |
| Effective hourly rate is far below your headline rates | Non-billable hours, or cheaper people doing most of the work      |

## Permissions

| Action                                  | Capability                          | Roles                                |
| --------------------------------------- | ----------------------------------- | ------------------------------------ |
| See revenue and billable value          | – (workspace member)                | Any member                           |
| See cost, gross profit and margin       | `time.viewCost` or `rate.viewCost`  | Owner, Admin                         |
| See a person's cost rate                | `rate.viewCost`                     | Owner, Admin                         |
| Set a cost rate                         | `rate.manage` + Pro `profitability` | Owner, Admin, Project Manager on Pro |
| Set a project budget                    | `budget.manage` + Pro `budgets`     | Owner, Admin, Project Manager on Pro |
| Approve the time that feeds the figures | `time.approve` + Pro `approvals`    | Owner, Admin, Project Manager on Pro |

## Common questions

<AccordionGroup>
  <Accordion title="Do I need a budget to see profitability?">
    No. Margin comes from rates and hours. A budget adds utilisation, health and alerts on top.
  </Accordion>

  <Accordion title="Can I see profitability across a whole client?">
    Yes. The client detail page rolls up its projects. A project in a different currency is counted separately rather than summed into a mismatched total.
  </Accordion>

  <Accordion title="How often should I check?">
    Weekly on live projects, and always before you quote a similar job. A project you only check at the end is a project you can only learn from, not steer.
  </Accordion>

  <Accordion title="Why does a fixed-fee project show revenue above the fee?">
    Revenue is billable value – hours at their rates. On a fixed-fee job that figure can exceed the fee, and when it does, you are delivering more work than you sold. Compare it against the budget.
  </Accordion>

  <Accordion title="Should I include non-billable hours?">
    They are already included, on the cost side. That is what makes the number honest.
  </Accordion>

  <Accordion title="What if a person's rate changed mid-project?">
    Each time entry snapshots the rates in force when it was recorded, so historical entries keep their original figures. See [rate snapshots](/rates/rate-snapshots).
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                                    | Cause and fix                                                                               |
| ------------------------------------------ | ------------------------------------------------------------------------------------------- |
| No Financials panel at all                 | The Budgets app is off, or the project has no budget and no approved time.                  |
| Cost tiles missing                         | You lack `time.viewCost` and `rate.viewCost`.                                               |
| Utilisation is 0% but people are working   | The time is not approved yet, on a money budget.                                            |
| Forecast equals actuals                    | No task on the project has an estimate, so there are no remaining hours to project.         |
| Client roll-up flags mismatched currencies | One of the client's projects uses a different currency. It is counted, not silently summed. |
| Report shows revenue but no cost columns   | The cost measures need `time.viewCost`.                                                     |

## Related guides

<CardGroup cols={2}>
  <Card title="Profitability and margin" icon="chart-pie" href="/budgets/profitability-and-margin">
    The concept, explained from first principles.
  </Card>

  <Card title="How budgets work" icon="gears" href="/budgets/how-budgets-work">
    Utilisation, forecast and health.
  </Card>

  <Card title="Cost rates" icon="dollar-sign" href="/rates/cost-rates">
    The input most often missing.
  </Card>

  <Card title="Rate snapshots" icon="camera" href="/rates/rate-snapshots">
    Why old entries keep their old rates.
  </Card>

  <Card title="Build a report" icon="chart-column" href="/reports/build-a-report">
    Comparing profitability across projects.
  </Card>

  <Card title="Project profitability" icon="folder-open" href="/projects/project-profitability">
    The same figures from the project's point of view.
  </Card>
</CardGroup>
