> For the complete documentation index, see [llms.txt](https://docs.shortcutco.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shortcutco.com/readme/costs-and-profitability.md).

# Costs & Profitability

Costs turns Shortcut from "what did I bill?" into "what did I actually make?". Log what you spend, tell Shortcut what labor really costs, and margins show up across the app. [Open Costs →](https://shortcutco.com/costs)

{% hint style="info" %}
**Everything here is internal-only.** Wages, costs, and margins are never shown to workers or customers.
{% endhint %}

## The three sections

* **Services** — per-service cost assumptions, with live margin recalculation.
* **Costs & expenses** — log real spend and set budgets.
* **Chemicals & materials** — material costs for chemical work.

<figure><img src="/files/V8fwLPGSMfs2Psaylhms" alt="Costs workspace with revenue split and margin cards"><figcaption><p>Costs shows where the money goes — and what's left.</p></figcaption></figure>

## Log an expense

1. Open **Costs** → **Costs & expenses**.
2. Click **Log expense**.
3. Pick a category — **Fuel, Vehicle, Equipment, Supplies, Insurance & comp, Software & phone, Other** — enter the amount and date, and optionally attach a note or photo of the receipt.

You'll see budgets vs. actuals per category and a six-month spend trend.

## Set your loaded labor rate

Your **loaded hourly rate** is what an hour of crew time *really* costs you — not just the wage, but the taxes, workers' comp, and overhead that ride on top of it, plus the drive time between stops. Set each employee's wage in [Workforce](/readme/configuration/workforce-users-+-roles-+-teams.md), then answer two questions in Costs: how much rides on top of wages, and how much of the day is windshield time. Owner-operators who don't take a wage can use owner mode, which puts a value on your own time instead.

## Where your labor numbers come from

Shortcut has always had to answer one awkward question: how many hours did that job really take? Until now it worked it out from how long the visits ran, divided across the day.

If your crews use the [Time Clock](/readme/configuration/time-clock-and-timesheets.md), it doesn't have to guess any more. On any day where **every person on the crew has a complete shift**, Shortcut prices that day's jobs using the hours they actually punched.

You'll know when it's happening. A small **Clock data** badge appears on the Revenue-per-hour tile in Costs and on the Dashboard, and hovering it tells you exactly how far it goes: *"Hours use recorded clock time on 14 of 20 crew-days; the rest use visit spans."* The route efficiency card switches from **Default** to **Auto** for the same reason, and prints the arithmetic it used.

### Why it's all-or-nothing per day

A crew day only switches over when **everyone rostered that day** has a complete shift. One person missing means the whole day keeps the old estimate.

That sounds strict, and it is — deliberately. Half a crew's punches would make the day look like it took half the labor it did, and every margin built on top of that would be wrong in the same direction. Better to leave the day estimated and say so.

{% hint style="warning" %}
**The most common reason a crew never switches over:** somebody on the crew never clocks in. An office manager or an owner listed on a crew who doesn't punch will hold that crew on estimates indefinitely. The **"N of M crew-days"** figure in the tooltip is how you spot it — if it's stuck near zero for one crew, check who's on the roster.
{% endhint %}

### What doesn't change

* **A combined visit is still one visit's worth of labor.** If a crew does mowing and hedge trimming in one stop, the crew's time on site is counted once — not once per service — whether the hours came from the clock or from an estimate.
* **Days with no punches keep today's numbers.** Nothing goes to zero and no margin goes blank because a crew forgot to clock in.
* **The twelve-month service margins** in the margin drawer still come from visit spans. Repricing those from clock data is a separate change.
* **Nothing here is visible to workers or customers.** Same as the rest of Costs.

## Service margins are measured, never guessed

Shortcut shows a margin for a service only when it can actually **measure** it — from visits where that service was done on its own (or where a clean comparison exists). When it does, the margin comes with its receipts: **"Based on 5 of 8 visits · last 12 mo"**.

If there isn't enough real data yet, you'll see a dash and *"Needs more single-service or comparable visits."* That's honest, not broken — as more visits complete, the margin fills in.

A few things this gets right:

* **Combined visits count labor once.** If a crew does mowing and hedge trimming in one stop, the hour on site is one hour of labor — not one hour per service.
* **Add-ons count toward their own service.** A hedge add-on's revenue shows under hedge trimming, not under mowing.
* **Measured and estimated numbers never blend.** A margin is either measured from real visits or not shown.

<figure><img src="/files/O6QzyF65R10rAqo5LG2V" alt="The Net margin drawer showing BY SERVICE · MEASURED MARGIN with dashes and the note that each service needs more single-service or comparable visits, plus top customers by margin"><figcaption><p>The margin drawer — services without enough measured visits show a dash instead of a guess. As real visits complete, the margins fill in.</p></figcaption></figure>

{% hint style="info" %}
Numbers moved after an update? Labor on multi-service days used to be counted once per service; it's now counted once per visit. Margins on combined visits went **up** and labor totals came **down** — the new numbers are the accurate ones.
{% endhint %}

{% hint style="warning" %}
**Costs' month vs the Dashboard's month.** The Dashboard now measures a period on your company's local calendar days; the Costs month summary is still measured on UTC days. For most companies the two land within a few hours of each other at the month boundary, so a total can differ slightly between the two pages. We're aligning them in an upcoming release — until then, the Dashboard is the one to trust for period comparisons.
{% endhint %}

## Where margins show up

* **Dashboard** — loaded hourly rate, per-stop overhead, route efficiency, and overall margin tiles (with a **Clock data** badge when real punches are behind the hours), plus revenue by service with measured margins ("Based on X of Y visits").
* **Jobs page** — a small margin dot per job (green/yellow/red) so you can spot money-losers while scheduling. (Turn it off in Costs if you don't want it.)
* **Customer profile → Profitability tab** — revenue, costs, and margin for the last 12 months, month by month and visit by visit.

## Weekly digest

Shortcut emails you a **weekly cost & profit digest**. Change the day or turn it off in Costs (there's also a one-click "Turn off" link in the email).

<details>

<summary>Still stuck?</summary>

Email <hello@shortcutco.com> with a screenshot of the Costs section you're setting up.

</details>
