Job costing
Revenue is what you charged. Cost is what it took. The gap between them is the only number that tells you whether a job - or a whole type of work - is worth doing again.
Professional and up. Reading it takes the budgets permission; the Profitability report takes the reports permission.
What counts as a cost
Job costing is its own ledger of what each job cost, computed from the documents you already keep. It’s only as good as what’s tied to the job:
- Labor - from time tracking. Settled time clocked against the job (including admin-corrected entries), at each person’s rate. Crew still on the clock show as a separate “on the clock” line on the job, never inside the total, so a job’s number doesn’t tick.
- Materials and other spend - expenses tied to the job (pinned, split across jobs, or split by line), bill lines, vendor credits (which give a cost back), categorized bank transactions split to the job, and the job’s own materials list.
Revenue is what you billed to the job - invoice lines less credit memos, net of tax. A job that was never invoiced falls back to its completion total, then its estimate, and the job says which one it’s showing.
Two things are deliberately not in the number: equipment usage (no per-job machine cost is computed) and payroll burden (labor is time × rate; wages posted through payroll are the same money and never count twice). Overhead is not allocated.
If a cost was never attached to a job, it isn’t in that job’s number. That’s the whole discipline: attach as you go. Attaching a cost to a job - or moving it to another one - is a job-costing change, not a bookkeeping entry: it never touches your books, so it works in a closed period too.
In Reports, the three job reports - Job Summary, Estimated vs. Actual and Profitability - sit in their own Job costing group and carry the Job costing claim, so a job’s margin is never read as a books figure. All three read this page’s engine, so a job’s number here and there is the same number, whether your books are native or in QuickBooks. So do the dashboard’s job-profitability card and the actuals on the Budgets page. See which reports follow the basis.
Estimated vs. Actual prices what a job was supposed to cost from the estimate itself: each line’s quantity times the cost breakdown (labor, materials, equipment, dump) on the service it names, straight from your catalog. A custom line carries a price and no cost, so a job whose estimate has one shows n/a for its estimated cost rather than a partial figure - and so does the report’s total row unless every job’s estimate can be costed.
Reading it
Open Books → Job Costing. For each job you get revenue, cost by type, and the margin left over.
What to look for:
- A job with negative margin. Either it was underpriced or it went badly. Both are worth knowing before you quote the same work again.
- Labor much higher than estimated. The estimate was optimistic, or the crew hit something unexpected. Ask which.
- Jobs with no cost at all. Almost always missing attachment, not free work.
Making it accurate
The number is downstream of habits, not settings:
- Crews clock in against the job, not just for the day.
- Material purchases get the job attached when categorized.
- Cost rates on your team are set to something real - wage plus payroll burden, not just the hourly wage.
Tips
- Compare like to like. Cleanups and mowing have different margins by nature; the useful comparison is one cleanup against another.
- Look at it monthly, not per job. One bad job is noise. A pattern across a service type is a pricing decision.