Short answer
A job costing spreadsheet puts each job's estimated cost next to its actual cost, line by line: labour (crew-hours × loaded rate), materials and an overhead share. Variance % = (actual − estimate) ÷ estimate. In the worked example a job quoted at $3,320.28 kept $746.87 instead of $1,162.10 because crew-hours ran 21.9% over.
- Track three cost lines per job: labour at the loaded rate, materials, and an overhead share per crew-hour.
- Variance % = (actual − estimate) ÷ estimate; flag any line more than 10% over (the 10% trigger is my assumption).
- In the example, 7 extra crew-hours and $140 of extra materials cut real margin from 35% to 22.5%.
- Feed actual crew-hours back into the next quote: the same job re-priced on actuals is $3,959.09.
On this page
- What is a job costing spreadsheet (and a job cost report)?
- What does a job cost sheet look like?
- Worked example: estimate vs actual on one job
- How to make a job cost sheet in Excel or Google Sheets
- The mistake that hides overruns: costing labour at the wage
- How to track budget vs actual in Excel
- Feed the actuals back into the next quote
- Free job costing template vs a paid or custom build
- What to put in your job costing template
- Step-by-step
- FAQ
What is a job costing spreadsheet (and a job cost report)?
A job costing spreadsheet records what one job was supposed to cost and what it did cost, in the same rows, so the gap is visible. A job cost report is the same sheet summarised after the job closes: estimate, actual, variance and the margin you really kept.
Most free templates in the search results are built for construction project budgets or manufacturing standard costs. A small service business needs something narrower: the quote you sent, the hours your crew clocked, the receipts, and one number at the bottom — profit left at the price you already agreed. That is what this page builds. I'm not a contractor; I build the pricing math, and every number below shows its working so you can check it.
If you have not priced the job yet, start with how to price a job; job costing is the loop that checks whether that price held up.
What does a job cost sheet look like?
A job cost sheet has one row per cost code and four money columns: estimated, actual, variance in dollars, variance in percent. Labour is costed at the loaded rate, not the wage, and overhead is charged per crew-hour.
| Cost code | Line | Estimated | Actual | Variance $ |
|---|---|---|---|---|
| 100 | Labour (crew-hours × loaded rate) | $1,040 | $1,267.50 | $227.50 |
| 200 | Primary materials | $700 | $790 | $90 |
| 210 | Fasteners, sundries, consumables | $120 | $150 | $30 |
| 220 | Equipment rental | $80 | $100 | $20 |
| 900 | Overhead share (crew-hours × overhead per hour) | $218.18 | $265.91 | $47.73 |
The labour and overhead lines move together because both are driven by crew-hours. That is the single most useful thing a job cost sheet tells you: when hours slip, you lose twice. Try your own estimate below — the calculator returns the break-even and the price, which become the Estimated column.
Worked example: estimate vs actual on one job
Here is the estimate. Two workers, 16 hours each, a $25 wage with 30% burden, $900 of materials, and $24,000 of yearly overhead spread over 2 people × 220 billable days × 8 hours. Every input is an assumption — replace it with your own.
Worked example: The estimate: 2 workers × 16 hours, $900 materials (all inputs are assumptions — use yours)
| Item | Value |
|---|---|
| Workers (input) | 2 |
| Hourly wage paid (input) | $25.00 |
| Labour burden % (input) | 30% |
| Materials (input) | $900.00 |
| Overhead for the year (input) | $24,000.00 |
| People in the field (input) | 2 |
| Billable days a year (input) | 220 |
| Target margin % (input) | 35% |
| Jobs a week (input) | 2 |
| Hours on the job (input) | 16 |
| Loaded labour rate (per hour) | $32.50 |
| Crew-hours | 32 |
| Labour cost | $1,040.00 |
| Overhead per sellable hour | $6.82 |
| Overhead share | $218.18 |
| Break-even cost | $2,158.18 |
| Price to quote | $3,320.28 |
| Profit on the job | $1,162.10 |
| Price if you MARK UP instead | $2,913.55 |
| Margin you actually keep with markup | 25.93% |
| Lost per job by marking up | $406.73 |
| Lost per year by marking up | $42,300.36 |
Computed with the same formulas as the free calculators on this site. Change any input in the calculator above to see your own numbers.
The job was sold at $3,320.28. Then the job ran long: 19.5 hours each instead of 16, and materials came to $1,040. Here is the same math on the actuals:
Worked example: The actual: same job, 2 workers × 19.5 hours, $1,040 materials
| Item | Value |
|---|---|
| Workers (input) | 2 |
| Hourly wage paid (input) | $25.00 |
| Labour burden % (input) | 30% |
| Materials (input) | $1,040.00 |
| Overhead for the year (input) | $24,000.00 |
| People in the field (input) | 2 |
| Billable days a year (input) | 220 |
| Target margin % (input) | 35% |
| Jobs a week (input) | 2 |
| Hours on the job (input) | 19.5 |
| Loaded labour rate (per hour) | $32.50 |
| Crew-hours | 39 |
| Labour cost | $1,267.50 |
| Overhead per sellable hour | $6.82 |
| Overhead share | $265.91 |
| Break-even cost | $2,573.41 |
| Price to quote | $3,959.09 |
| Profit on the job | $1,385.68 |
| Price if you MARK UP instead | $3,474.10 |
| Margin you actually keep with markup | 25.93% |
| Lost per job by marking up | $484.99 |
| Lost per year by marking up | $50,438.82 |
Computed with the same formulas as the free calculators on this site. Change any input in the calculator above to see your own numbers.
The price was already agreed, so the profit is what is left after the actual cost: $3,320.28 − $2,573.41 = $746.87. The quote planned $1,162.10 of profit; $415.23 of it went to the overrun. Real margin: $746.87 ÷ $3,320.28 = 22.5%, not 35%.
| Cost line | Estimated | Actual | Variance $ | Variance % |
|---|---|---|---|---|
| Labour | $1,040 | $1,267.50 | $227.50 | +21.9% |
| Materials | $900 | $1,040 | $140 | +15.6% |
| Overhead share | $218.18 | $265.91 | $47.73 | +21.9% |
| Total cost (break-even) | $2,158.18 | $2,573.41 | $415.23 | +19.2% |
| Driver | Estimated | Actual | Change | Change % |
|---|---|---|---|---|
| Crew-hours | 32 | 39 | +7 | +21.9% |
How to make a job cost sheet in Excel or Google Sheets
Build it in seven steps: set your rates once, list cost codes, enter the estimate, log actuals as the job runs, compute variance, compute real margin, then carry the actual production rate into the next quote.
- Rates tab. Wage, burden %, yearly overhead, people in the field, billable days, target margin. Every job reads from here.
- Cost codes. Labour, material groups, rentals, subs, disposal, overhead. Keep the same codes on every job so you can compare jobs.
- Estimate column. Paste the numbers from your quote. Freeze them — never edit the estimate after the job starts.
- Actual column. Timesheet crew-hours and receipt totals, entered daily or at close.
- Variance. Dollar and percent per line, with a flag above your trigger.
- Real margin. (Quoted price − actual cost) ÷ quoted price.
- Feedback. Actual crew-hours ÷ units of work = your measured production rate for the next bid.
That sequence also answers the common question “what are the 7 steps of job costing?” — different textbooks group them differently, but every version ends at the same place: compare, then correct the next estimate.
Loaded labour cost (actual)
=B2*B3*(1+B4)B2 = actual crew-hours, B3 = wage, B4 = burden as a decimal (0.30).
Overhead per crew-hour
=B5/(B6*B7*8)B5 = overhead a year, B6 = people in the field, B7 = billable days a year.
Variance % per line
=IF(C10=0,"",(D10-C10)/C10)C10 = estimated, D10 = actual; format as %. Blank if no estimate.
Real margin at the quoted price
=(B1-SUM(D10:D16))/B1B1 = quoted price (locked), D10:D16 = actual cost lines.
Flag an overrun
=IF(E10>0.1,"OVER","ok")E10 = variance %; 0.1 is a 10% trigger — pick your own.
The mistake that hides overruns: costing labour at the wage
If your sheet costs labour at the wage, every job looks more profitable than it was. The loaded rate adds the costs of employing someone: the employer share of Social Security (6.2%) and Medicare (1.45%) per the IRS, plus workers' comp, liability insurance and paid time off.
The example uses 30% burden as an assumption, so a $25 wage becomes $32.50. On 39 actual crew-hours that is the difference between $975 at the wage and $1,267.50 loaded — $292.50 of real cost a wage-based sheet never shows. Work out your own burden with the labor burden calculator.
The second hidden mistake is overhead as a percentage of cost. Overhead is a yearly bill divided by the hours you can actually sell — here $6.82 per crew-hour. Charge it per hour and a long-running job correctly carries more overhead, which is exactly what happened in the example ($218.18 planned, $265.91 actual). The overhead and profit calculator walks through the division.
How to track budget vs actual in Excel
Put estimate and actual in adjacent columns, subtract, divide by the estimate, and add conditional formatting so a line over your trigger turns red. That is the whole budget-vs-actual method; everything else is layout.
Two rules keep the comparison honest. First, lock the estimate column once the job is sold (Excel: Review → Protect Sheet leaving only the Actual column editable; Google Sheets: Data → Protect sheets and ranges). Second, compare against the quoted price, not a re-calculated price — the customer is paying what you quoted, so the overrun comes out of profit.
For a job cost report across many jobs, add one summary row per job to a log tab: job name, quoted price, estimated cost, actual cost, real margin. Sort by real margin and the job types that lose money float to the top.
Try it with your numbers — free
The free calculator does this whole method in about a minute: loaded labour, overhead share, break-even and the price to quote at your margin. No signup, nothing to download, and your numbers stay in your browser.
Open the free calculator →Get the free spreadsheetWant it built around your own rates, services and branding? Done-for-you custom calculator ($497).
Feed the actuals back into the next quote
The point of job costing is the next estimate. Divide actual crew-hours by the units of work (rooms, square feet, linear feet, fixtures) to get your measured production rate, and quote the next similar job on that rate instead of the one you guessed.
Re-pricing the example job on its actual 39 crew-hours and $1,040 of materials gives $3,959.09, against the $3,320.28 that was sent. If the next job of this type is quoted at the old price, the same overrun repeats. If you win fewer jobs at the corrected price, that is information too: either the work is priced right and those customers were buying a loss, or your crew's production needs attention.
Pricing trade-specific work? The contractor estimate template guide covers the quoting side that produces the Estimated column.
Free job costing template vs a paid or custom build
A free template is enough if you will maintain the formulas yourself; pay for a build when you want the rates, cost codes and quote sheet wired together and tested.
| Option | Cost | Suits | Watch for |
|---|---|---|---|
| Build it from this page | Free | Owners comfortable with formulas | Labour at wage, overhead as a % |
| Free Job Pricing Starter | Free | Loaded rate, overhead, break-even and price on one sheet | It prices a job; add your own actuals columns |
| Trade template (painting, landscaping and others) | $14.99 each, or $49 for all 7 | One trade, ready-made | Built for quoting; add actuals columns if you need them |
| Custom job-pricing calculator | $497 one-time | Your line items, rates and branding | Tell the intake form you want estimate-vs-actual columns |
| Job-management apps | Subscription | Crews that clock in on phones | Monthly cost; export for your own analysis |
The done-for-you custom job-pricing calculator is built around your real materials, labour tasks, equipment and subs, shows total cost → price → profit in dollars and margin %, and includes a job log and dashboard for win-rate, revenue and average margin. It is built from scratch around how you price, so ask for actual-cost columns when you fill in the form.
What to put in your job costing template
Keep it to the fields you will actually fill in after a tired day on site. A short sheet that gets used beats a detailed one that does not.
- Header: job name, customer, quote date, quoted price (locked).
- Rates block: wage, burden %, overhead a year, people in the field, billable days, target margin.
- Cost lines: cost code, description, estimated, actual, variance $, variance %.
- Hours: estimated vs actual crew-hours — the line that drives two others.
- Result: actual cost, profit at the quoted price, real margin %.
- Feedback: units of work and measured production rate.
Want to run the numbers before building anything? The free job pricing calculator gives the estimate side in your browser.
Step-by-step: Job Costing Spreadsheet Template: Track Estimate vs Actual on Every Job
- Set your rates once. Enter wage, burden %, yearly overhead, people in the field, billable days and target margin on a rates tab every job reads from.
- Lock the estimate. Copy the quoted cost lines and price into the Estimated column and protect it once the job is sold.
- Log actuals. Enter timesheet crew-hours and receipt totals per cost code as the job runs or at close.
- Compute variance. Variance $ = actual − estimate; variance % = variance ÷ estimate. Flag lines above your trigger.
- Compute real margin. Real margin = (quoted price − actual total cost) ÷ quoted price.
- Update your production rate. Divide actual crew-hours by units of work and use that rate on the next similar quote.
Run your own numbers — free
The free calculator does this whole method in about a minute: loaded labour, overhead share, break-even and the price to quote at your margin. No signup, nothing to download, and your numbers stay in your browser.
Open the free calculator →Get the free spreadsheetWant it built around your own rates, services and branding? Done-for-you custom calculator ($497).
Frequently asked questions
Is there a free Excel template for job costing?
Yes. You can build one from the layout and formulas on this page in any version of Excel or Google Sheets, and the free Job Pricing Starter covers loaded labour, overhead, break-even and price. Add estimated and actual columns beside each cost line and a real-margin cell at the bottom.
How do you make a job cost sheet?
List cost codes (labour, materials, rentals, subs, overhead), add Estimated and Actual columns, then Variance $ and Variance %. Cost labour at the loaded rate, charge overhead per crew-hour, and finish with real margin: quoted price minus actual cost, divided by the quoted price.
What is a job cost report?
A job cost report is the closed-out summary of one job: estimated cost, actual cost, variance by line and the margin actually kept at the quoted price. Kept as one row per job in a log, it shows which job types make money and which quietly lose it.
How do I track estimated vs actual job cost in a spreadsheet?
Put the locked estimate and the actual side by side for every cost code, subtract to get variance in dollars, divide by the estimate for variance %, and use conditional formatting to highlight lines over a trigger such as 10%. Compare against the quoted price, not a recalculated one.
What are the 7 steps involved in job costing?
A workable sequence: set your rates, define cost codes, lock the estimate, log actual hours and receipts, calculate variance per line, calculate real margin at the quoted price, and feed the measured production rate into the next quote. Textbooks group the steps differently, but all end with correcting the next estimate.
Why does labour overrun cost more than it looks?
Because both labour and overhead are driven by crew-hours. In the example, 7 extra crew-hours added loaded labour and a larger overhead share at the same time, which is why real margin fell from 35% to 22.5% on a job whose materials were only modestly over.
Can I do job costing in Google Sheets?
Yes. Every formula on this page works in Google Sheets unchanged. Use Data → Protect sheets and ranges to lock the Estimated column once a job is sold, and keep a separate log tab with one summary row per job for the report.
Sources
- IRS Topic no. 751, Social Security and Medicare withholding rates — Employer share of Social Security (6.2%) and Medicare (1.45%)
