> 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/reporting-and-integrations/reporting/job-costing-reports.md).

# Job costing reports: profitability, cost breakdown, and more

Job costing reports break down revenue, labor, and material cost by job and by technician, using the same numbers as the Job Costing card. All five reports share a date-range picker with Last 30 days, This quarter, Year to date, Last 12 months, and Custom range for exact start and end dates. They also export to CSV. The four job-level reports — Job profitability, Cost breakdown, Estimated vs. actual, and Labor cost by job — let you click a row to open that job; Technician profitability rows aren't clickable, since a technician isn't a single job.

> **Where to find it:** Reports, under the Job costing section.

**Before you start:** Job Costing must be turned on for your business, and your role needs the job-costing view permission — see [Turn on Job Costing and set cost rates](/administration/settings/turn-on-job-costing-and-set-cost-rates.md). Job costing reports can't be shared with individual colleagues the way some other reports can: they expose cost rates and margins, so access always requires the permission.

Revenue in every report excludes draft and void invoices, the same rule the Job Costing card uses. If a technician has no cost rate set for a job in the period, their labor shows an asterisk — their time cost $0 for that stretch, so margin reads high until you set a rate in [Settings > Job Costing](/administration/settings/turn-on-job-costing-and-set-cost-rates.md).

## Job profitability

Revenue, total cost, and gross margin for every job in the range. Columns: Job, Customer, Property, Visits, Labor, Parts, Total cost, Revenue, Margin, Margin %.

## Cost breakdown

Where the money goes on each job — labor against parts. Columns: Job, Customer, Property, Labor hrs, Labor, Labor %, Parts, Parts %, Total cost.

## Estimated vs. actual

Quoted amount against actual cost, to spot jobs that ran over budget. Columns: Job, Customer, Property, Quoted, Actual cost, Variance, Variance %, Status (Over budget / Under budget). Only quotes the customer could act on count toward the estimate — draft, error, and void quotes are excluded. If a job links more than one active quote, their quoted amounts sum, so a superseded revision counted alongside its replacement will overstate the estimate.

## Labor cost by job

Clocked hours valued at cost rates, rolled up to each job. Columns: Job, Customer, Property, Techs, Labor hrs, Labor cost, Revenue, Labor % of rev.

## Technician profitability

Each technician's labor cost against the revenue of the jobs they worked. Columns: Technician, Jobs, Labor hrs, Labor cost, Jobs revenue, Labor % of rev. A job's revenue is attributed to every technician who worked it, so the Jobs revenue column isn't additive across rows — don't sum it to reconstruct total revenue.

## Related guides

* [Job Costing on a job: revenue, costs, and margin](/customers-and-work/jobs/job-costing-on-a-job.md)
* [Turn on Job Costing and set cost rates](/administration/settings/turn-on-job-costing-and-set-cost-rates.md)
* [Payroll and timecard reports](/reporting-and-integrations/reporting/payroll-and-timecard-reports.md)
* [Export, filter, and drill into a report](/reporting-and-integrations/reporting/export-filter-and-drill-into-a-report.md)


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://learn.withessential.com/reporting-and-integrations/reporting/job-costing-reports.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
