> ## Documentation Index
> Fetch the complete documentation index at: https://usepike.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Profitability

> How Pike calculates earnings, cost, and profit on finance cards and charts.

Profitability compares **earnings** to **cost** and reports **profit** as the difference. On workspace and project Finance Overview, earnings are **recognized revenue**.

Available to **admins, managers, and finance** users.

## Where to find it

| Location | Scope |
| - | - |
| **Finance → Overview** | Whole workspace |
| **Project → Finance** | Single project |

Both surfaces show the same six cards and a cumulative chart. See [Finance overview](/docs/finance/overview) and [Project finance](/docs/project/project-finance) for the cards themselves.

## The core formula

On those cards and charts:

```
earnings = recognized revenue
profit   = recognized − cost
```

Totals at the top of the profitability card are the sum of monthly data points in the selected range.

| Field | Meaning |
| - | - |
| **Earnings** | Recognized revenue attributed to that month |
| **Cost** | Internal cost attributed to that month |
| **Profit** | Earnings minus cost |

Recognized is resolved per project (method, then any monthly override) and rolled up. Changing a project's recognition method moves earnings and profit. See [Revenue recognition](/docs/finance/revenue-recognition).

> [!NOTE]
>
> **Worked revenue** (hours × assignment rate) is a dashboard metric and the
> input to average billing rate. It is not the earnings number on the Finance
> Overview cards.

## Planned comparison

The cumulative chart also plots **planned** profitability from [resource allocations](/docs/allocation/allocation-properties):

```
planned earnings = allocated hours × task assignment rate
planned cost     = allocated hours × (employment hourly cost + hourly overhead)
```

* Allocations are clipped to calendar month boundaries.
* Hours per day come from the allocation's weekday schedule (Monday–Sunday minutes).
* Only allocations whose date range overlaps the filter are included.

Planned answers: *"If we deliver what is currently on the schedule, what profitability should we expect?"* It is a comparison line, not a second mode for the six cards.

## Customer finance

On a **customer** finance page you can switch the profitability card between **recognized** earnings and **invoiced** earnings. That answers a different question (what we billed versus what it cost). Workspace and project Finance Overview cards always use recognized.

## How cost is built

Total **cost** per month is:

```
cost = labor cost + overhead + qualifying expenses
```

That is the same **cost of delivery** used on the Cost card.

### Labor cost (employment contract)

For each hour of work (logged or planned), Pike looks up the member's **employment contract** and derives an hourly employment cost from:

| Contract frequency | Hourly employment cost |
| - | - |
| Hour | Cost amount directly |
| Week | Cost amount ÷ hours per week |
| Biweek | Cost amount ÷ (hours per week × 2) |
| Month | Cost amount ÷ monthly working hours from contract |
| Year | Cost amount ÷ yearly working hours from contract |

**Monthly / yearly working hours** use business days (weekends excluded) and the contract's **hours per week**:

```
working hours = (business days ÷ 5) × hours per week
```

If a member has **no contract**, employment hourly cost is **0** for that member in profitability. Overhead may still apply if they are assigned overhead items.

For how contracts feed hourly cost on member profiles, see [Cost profile](/docs/members/cost-profile).

### Overhead

**Hourly overhead** from assigned [overhead cost](/docs/finance/overhead-costs) line items is added to the employment hourly cost:

```
loaded hourly cost = employment hourly cost + hourly overhead
```

See [Overhead costs](/docs/finance/overhead-costs) for allocation rules and the contract-based hours conversion.

### Expenses

Project **expenses** add to cost when **either**:

* the expense has **no project**, or
* the expense is **not billable**

Billable expenses linked to a project are **excluded** from profitability cost (they are treated as pass-through to the client, not internal cost).

Expense cost uses `amount × exchange rate` and is grouped by **date incurred** month.

## Filters

Profitability respects filters passed to the calculation. What you select determines which recognition rows, time entries, allocations, and expenses are included.

### Supported filters

| Filter | Effect |
| - | - |
| **Date range** | Limits records to the period. If omitted on the API, the range is inferred from the data |
| **Customer** | Only work / invoices / expenses linked to those customers |
| **Project** | Only work / invoices / expenses on those projects |
| **Team** | Only work on tasks belonging to those teams. For invoices and expenses, the project must be linked to the team |

Filters combine with **AND** logic: a record must match every filter you set.

### Where filters appear in the product

| Surface | Default filters | Notes |
| - | - | - |
| **Finance → Overview** | Date range (current year), optional customer / project / team | Also Proposed / Confirmed project stage |
| **Project → Finance** | Fixed to the **current project** | No customer/team picker; scoped automatically |

## Date grouping and chart behaviour

* Results are aggregated into **monthly** data points.
* The cumulative chart stacks profit over time within the filtered range.
* **Planned** profitability is always fetched alongside actuals for comparison on the chart.

When you set a date range explicitly, that range is used. When you do not, Pike infers the range from recognition months, time entries, expenses, and (for planned) allocation dates.

## Revenue vs cost timing

Recognized and cost can land in different months:

| Number | Dated by |
| - | - |
| **Earnings** | The recognition month (method or override) |
| **Cost** | Time entry **start** month, plus expense **incurred** month |

An override or Time % restatement in March for January work will show earnings in March and labour cost in January.

> [!TIP]
>
> When month-to-month profit looks off, check the project's recognition method
> and any manual overrides on [Revenue
> recognition](/docs/finance/revenue-recognition) before assuming cost is wrong.

## Access and permissions

| Feature | Roles |
| - | - |
| View profitability endpoints | Admin, Manager, Finance |
| Manage overhead (affects cost) | Admin |
| Manage employment contracts (affects cost) | Admin, HR (contract management) |

## Prerequisites for accurate numbers

Profitability is only as good as the underlying data.

| Data | Affects | If missing |
| - | - | - |
| **Recognition method** | Earnings on finance cards | Earnings follow the wrong formula |
| **Task assignment rate** | Worked method and planned | Earnings = 0 for that work |
| **Employment contract** | Labor cost | Labor cost = 0 for that member |
| **Overhead assignment** | Loaded cost | Only base contract cost used |
| **Completed time entries** | Actual cost and Time % / Worked | Open timers excluded |

## Example walkthrough

**Setup**

* Project recognizes by **Worked**. Developer logs **10 h** in March on a billable task at **£150 / h**.
* Contract: **£6,000 / month**, 37.5 h/week → \~£36 / h employment cost.
* Overhead share: **£2 / h**.
* Loaded cost: **£38 / h**.
* No manual override.

**March**

```
earnings = 10 × £150 = £1,500   (recognized via Worked)
cost     = 10 × £38   = £380
profit   = £1,120
```

If the same project used **Time %**, March earnings would be that month's share of the revenue budget, not £1,500, while cost would stay £380.

## Related documentation

> **[Finance overview](/docs/finance/overview)**
>
> Workspace cards, filters, and charts.

> **[Revenue recognition](/docs/finance/revenue-recognition)**
>
> How recognized is calculated and overridden.

> **[Overhead costs](/docs/finance/overhead-costs)**
>
> Shared expenses and how hourly overhead loads onto labor cost.

> **[Cost profile](/docs/members/cost-profile)**
>
> Set member contracts, capacity, and hourly employment cost.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.