> For the complete documentation index, see [llms.txt](https://learn.withessential.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.withessential.com/customers-and-work/jobs/job-costing-on-a-job.md).

# Job Costing on a job: revenue, costs, and margin

The Job Costing card on a job page shows revenue against cost so you can see the margin on that job at a glance. It has two columns: Revenue on the left, Costs on the right.

Revenue totals any invoices linked to the job (draft and void invoices don't count) plus revenue from job items and any revenue you've added manually for work billed outside Essential. Costs totals labor — clocked time valued at each technician's cost rate on the day the work happened, plus any manual labor entries — and materials, the items used on the job.

A margin pill above the columns shows the percentage, colored red below 0%, amber under 15%, and green at 15% or higher. A cost bar breaks the total down visually between labor, parts, and margin.

If a technician who worked the job has no cost rate set, a warning banner calls it out — their time is currently costing $0, which inflates the margin — with a link to set one in Settings > Job Costing.

Expand **Revenue** to see linked invoices and manually added revenue, plus actions to link an invoice or add/edit revenue. **Costs** shows separate labor and item subtotals. The **Labor** section is always visible below the totals, with each technician’s hours, cost rate, and total, plus manual labor entries. Click **Add Labor** in that section to enter hours or a flat amount. The separate **Items** section follows, showing each item’s source, quantity, unit cost, total cost, and revenue.

With Job Costing on, pricebook items recorded in a technician's Job Summary automatically populate **Items** and contribute their pricebook costs to the job. This includes items brought into the summary from an inspection report or work acknowledgment. Later quantity changes in the summary adjust the job's used quantities, so the office does not need to enter those items again. This works with Inventory on or off. When Inventory is on, stock-tracked items also update stock; non-inventory pricebook items contribute to job costs without moving stock. Earlier job costs remain included when Inventory is turned on; later technician entries do not retroactively move stock for Inventory-off usage.

Viewing cost-only items requires Job Costing view access; editing them requires Job Costing manage access, including when Inventory is enabled.

Linked invoice items with saved costs populate **Items** automatically once the invoice leaves Draft. Void invoices are excluded. These costs use the value saved on the invoice. When the same catalog item also has recorded usage, only usage beyond the invoiced quantity adds another cost.

Click **Add Item** to select a catalog item or add a custom item. The form uses the familiar name, quantity, unit price, unit cost, and description fields from quotes and invoices. Unit Price and Unit Cost are optional here, so you can record a cost alone or include revenue. Saving updates job totals without creating an invoice or moving inventory. Use this for items not already included in a linked invoice. Edit or remove items added directly to the job from their row; edit invoice items on the source invoice.

Click **Manage used & reserved items** to open the catalog items used on this job or reserved for upcoming work. Used quantities contribute to costs and are labeled **Used on this job**; reserved quantities do not count as costs. When Inventory is off, or an item is not inventory-tracked, these edits do not change the technician’s invoice items. Recorded usage uses whole quantities, so fractional summary quantities are rounded to the nearest whole job total.

If your business tracks travel time, a note under the labor rows shows how much drive time the job's labor includes — and, when your travel policy keeps some of it out of job costs, how many hours were left unallocated. See [Turn on Job Costing and set cost rates](/administration/settings/turn-on-job-costing-and-set-cost-rates.md) for the travel modes.

If a job has no revenue or cost yet, the totals show $0.00 and the Labor and Items sections explain that no entries have been recorded. Use **Add Labor** or **Add Item**, or expand **Revenue** to link an invoice or add revenue. The margin pill and cost bar appear once there is something to calculate.

Job Costing must be turned on for your business, and your role needs the job-costing view permission, before this card appears; editing cost rates, settings, or (for non-inventory businesses) job items needs the manage permission.

> **Where to find it:** Open a job from Scheduling > Jobs; the Job Costing card appears on the job page.

## Related guides

* [Add manual revenue or a manual labor entry to a job](/customers-and-work/jobs/add-manual-revenue-or-labor-to-a-job.md)
* [Turn on Job Costing and set cost rates](/administration/settings/turn-on-job-costing-and-set-cost-rates.md)
* [Job inventory: reserved vs used parts, transfers, and shortages](/customers-and-work/jobs/job-inventory-reserved-vs-used-parts-transfers-and-shortages.md)
* [Job costing reports: profitability, cost breakdown, and more](/reporting-and-integrations/reporting/job-costing-reports.md)
* [The job detail page: what it shows](/customers-and-work/jobs/the-job-detail-page-what-it-shows.md)

An item with a Unit Price of **0** still appears under **Revenue → Job items** as **$0**. Leave Unit Price blank when the item has no recorded revenue.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://learn.withessential.com/customers-and-work/jobs/job-costing-on-a-job.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
