Below is a complete job costing template you can set up in a spreadsheet in about 20 minutes. It tracks quoted vs actual cost and profit per job using the categories that actually drive overruns in UK trades and service businesses: materials, labour, fuel, subcontractors, supplier runs, and the unexpected.
Build it exactly as laid out here and you'll know which jobs make money by Friday. And because we'd rather be useful than salesy, we'll also show you exactly where this template stops working — so you know when to move beyond it.
The Template: Three Sheets
Sheet 1: Jobs
One row per job. This is your master list.
| Job # | Customer | Title | Status | Quoted Revenue (£) | Quoted Cost (£) | Actual Cost (£) | Profit (£) | Margin (%) |
|---|---|---|---|---|---|---|---|---|
| JOB-2026-001 | Hargreaves Ltd | Kitchen refit, LS17 | In progress | 8,400 | 4,560 | formula | formula | formula |
| JOB-2026-002 | Patel | Bathroom, HG1 | Completed | 3,950 | 2,100 | formula | formula | formula |
The formulas (assuming row 2, columns A–I):
Actual Cost (G2): =SUMIF(Costs!B:B, A2, Costs!D:D) Profit (H2): =F2 - G2 Margin (I2): =IF(F2>0, H2/F2, "")
Format margin as a percentage. Conditional-format the margin column: green above 30%, amber 15–30%, red below 15% — adjust the thresholds to your trade.
Sheet 2: Costs
One row per cost, logged the day it happens. This discipline is the whole system.
| Date | Job # | Category | Description | Amount (£) | Receipt? |
|---|---|---|---|---|---|
| 02/09/2026 | JOB-2026-001 | Materials | Worktop + fittings, merchant | 742.50 | Yes |
| 03/09/2026 | JOB-2026-001 | Labour | 2nd fix, 7 hrs | 280.00 | — |
| 04/09/2026 | JOB-2026-001 | Supplier run | Extra collection | 18.40 | — |
Keep categories to six: Materials, Labour, Fuel, Subcontractor, Supplier runs, Unexpected. A seventh "Other" is fine. Sixty categories is how tracking dies.
Add a data-validation dropdown on Category so entries stay consistent — your summary depends on it.
Sheet 3: Summary
Your Friday-five-minutes view:
Jobs in progress: =COUNTIF(Jobs!D:D,"In progress") Avg margin (all jobs): =AVERAGE(Jobs!I:I) Over-budget jobs: =COUNTIF(Jobs!G:G,">"&...) — or filter Jobs where G > F Cost by category: =SUMIF(Costs!C:C,"Materials",Costs!D:D) (repeat per category)
That last row is the one that changes behaviour. Most owners are surprised which category eats the margin — it's rarely the one they'd guess.
How to Use It (The Part Everyone Skips)
- Fill in Quoted Cost when you quote, not after. The estimate you made at pricing time is the baseline. Reconstructing it later is guesswork.
- Log costs same-day. A receipt logged at the merchant takes 10 seconds. The same receipt in a glovebox takes three weeks and usually never happens.
- Log labour in hours, even roughly. Van time and "quick fixes" count. If labour isn't logged, your next quote's labour estimate is fiction — this is the leak that compounds fastest (see why margins erode silently).
- Review every Friday. Five minutes: over-budget jobs, cost-by-category, anything red.
Where This Template Stops Working
We built this template before we built the product, so we know exactly where it breaks. You'll hit these in roughly this order:
- ~50 jobs in. SUMIFs across thousands of cost rows get slow, and one mistyped Job # silently corrupts a job's numbers.
- The day a second person logs costs. Shared spreadsheets plus concurrent edits plus phones equals conflicts and lost rows.
- When you want the quote and the job connected. The template can't convert an accepted quote into a job — you re-type quoted figures, and re-typing means errors.
- When you want it on site. Photographing a receipt into a spreadsheet folder works until it doesn't; there's no clean place for receipts to live against a cost line.
- When you want reports without formulas. Cost-by-category and over-budget lists are built in above — but maintaining them is your job now.
None of these are reasons not to start. The template will teach you more about your numbers in a month than a year of gut feel. But if you recognise yourself at breakage point #2 or #3, that's the moment to see the automated version.
The Automated Version
SME System does exactly what this template does — quote with estimated costs per line, convert accepted quotes to jobs with figures copied across, log costs by category with receipt storage, and time logs that roll up automatically — without the formulas, and it works for your whole team. The reports page gives you the summary sheet live, including the over-budget list.
Use the template. Learn your numbers. And when the spreadsheet starts costing you evenings, start a free trial and bring your categories with you — they're already the same ones. For the full method behind the numbers, read Quoted vs Actual: How to Know If a Job Is Making Money.
