Job costing spreadsheet for a plumber: the deposit that misses the boiler
The most expensive thing on a boiler swap is a box you never open. It arrives on a pallet, goes on the wall, and by the time you write the invoice it has quietly decided whether the job was worth doing. On the sample job below it is 67% of the cost. Everything else — your two days, the flue, the inhibitor — is the small half.
I ran two plumbing jobs through the same workbook I built for the electrician samples. A like-for-like combi swap, and a bathroom first and second fix. Both use the model in the free job costing template, and every figure here can be re-derived from the 113-line run log in the repo.
Download the workbook (16,345 bytes, five sheets, no sign-up) if you want to follow along with your own numbers. It ships with an electrician’s two jobs. The plumbing ones below are the same model with different lines in it.
The boiler is two thirds of the cost
TS-003 is a 30kW combi replacement: twelve material lines, four labour tasks, a quarter day of an electrician for the spur. At a £300 day rate, £40 of overhead per working day, 8% contingency and 8% waste, the cost comes to £2,919.72.
| Line | Boiler swap (TS-003) | Bathroom (TS-004) |
|---|---|---|
| Materials at cost | £1,818.00 | £1,382.00 |
| Waste at 8% | £145.44 | £110.56 |
| Own labour (2.0 / 3.5 days) | £600.00 | £1,050.00 |
| Subcontract (0.25 day) | £60.00 | — |
| Overheads recovered | £80.00 | £140.00 |
| Contingency at 8% | £216.28 | £214.60 |
| Total cost | £2,919.72 | £2,897.16 |
| Price ex VAT at 35% margin | £4,491.87 | £4,457.18 |
Two jobs, near-identical prices, completely different shapes. The boiler job has 67.2% of its cost in bought-in materials; the bathroom has 51.5%. Compare that to the rewire in the workbook, where materials are 29% of cost and eleven days of labour are the job. A plumber’s sheet is a materials tracker with a labour column. Most templates are built the other way round, because they were built for trades who buy less.
That has a consequence nobody puts in the marketing copy. On the boiler job your buying decisions matter more than your labour rate. Ten per cent off the boiler is £118. Ten per cent off your day rate is £60. The merchant negotiation is worth twice the self-flagellation about what you charge.
A 25% deposit does not cover the boiler
Here is the line that made me rebuild the deposit cell. At the defaults the invoice is £5,390.24, so a 25% deposit is £1,347.56. The bought-in cost before you lift a tool is £2,023.44: the boiler, flue kit, filter, controls and the electrician’s quarter day, all with waste on the materials.
Short by £675.88. You are funding the customer’s boiler out of your own account until the job finishes, and on a two-day job you might not notice because the money comes back quickly. Do four of those in a fortnight and you have £2,700 of your own money on other people’s walls.
The bathroom job is short too, by £155.40, because its 25% deposit is £1,337.16 against £1,492.56 of bought-in cost.
The fix is one division, done per job rather than once in a settings cell: deposit percentage must be at least bought-in cost divided by the invoice total. On TS-003 that is 37.54%, so 38% gives £2,048.29 against £2,023.44 committed, leaving £24.85 of headroom. On TS-004 it is 27.91%, so 28% gives £1,497.61.
Note what the VAT does to this. If you are not VAT registered, the invoice on the boiler job drops to £4,491.87 and the same 25% is £1,122.97. The bought-in cost has not moved, so the shortfall grows to £900.47. The VAT you collect on a deposit is not yours, but it does sit in your account for a while, and that is part of why the 25% habit survives among VAT-registered firms and hurts sole traders under the threshold.
A deposit is not a stage payment and it is not a retention. It is the number that decides whether you are financing the job. Set it from the materials list, then check it still looks normal to the customer. On a boiler swap it usually does; 38% of a quote for a £1,180 boiler is not an unreasonable thing to ask.
What the day rate is actually buying
The workbook treats your day rate as a cost, then divides by (1 - margin) to add profit on top. That is a choice, and it is worth being explicit about it because it changes what the word “profit” means on your sheet.
Say you charge £300 a day and put 10% on materials. On TS-003 that is £600 of labour, £60 for the electrician, £80 of overhead, and £196.34 on top of £1,963.44 of materials with waste. That prices the job at £2,899.78. The sheet’s cost for the same job is £2,919.72, so the quote is £19.94 short before anything goes wrong. Even if you argue your day rate already contains your wage, the only profit in the job is the £196.34 of materials markup: £87.26 a day. The contingency line it has to cover is £216.28, meant to absorb the day that runs long or the flue that does not fit.
That is the whole trap in one job. The markup is smaller than the risk. Not because 10% is a stingy number, but because 10% of a materials bill is a thin slice of a materials-heavy job, and the labour that carries the risk was priced at a rate that no longer contains any margin.
If your day rate is genuinely your price and not your cost, then the margin has to come from somewhere else, and the honest place is a separate percentage on the labour. Otherwise you are running a business on the difference between two supplier invoices and hoping the boiler never arrives damaged.
The lines a plumbing sheet needs
Generic templates give you materials, labour, total. A plumbing job needs a few more, and each one exists because leaving it out costs a second visit.
Flue and condensate. The kit, any extension, the trap, three metres of run with fall. This is the line that turns a one-day swap into two days when it is missing, and it is the line most often absorbed “because it is only a bit of pipe”.
The gas run. Twenty-two millimetre, three metres and fittings, sized to the boiler. If the existing run is 15mm and the new boiler needs more, that is a variation, and a variation needs a price on the sheet before the customer hears it as an excuse.
Filter and inhibitor. £95 and £28 in the model. Cheap lines that customers query and engineers skip. Put them on the quote with a name and a reason.
Controls. £120 for a programmable thermostat. If the customer supplies their own smart thermostat, that is a material line removed and a compatibility question added, not a discount.
The electrician’s quarter day. £60 as a subcontract line, at their rate. Absorb it into your labour and you have given away an hour and a half of someone else’s time at your own rate.
Commissioning and handover. A quarter day, in the model. It is real time: gas rate, flue analysis, the record, the five minutes explaining the controls that stops the call-back.
Sundries as a lot, not a guess. PTFE, solder, clips, screws, £30. Small, and the one line everybody rounds to nothing.
A sheet with “materials” as a single cell cannot be checked by anyone, including you three weeks later when the job made less than you thought. The point of the lines is not bookkeeping. It is that each one is a decision you can point at.
Waste is not a rounding error
At 0% waste the boiler job prices at £4,250.22. At 8% it is £4,491.87. That is £241.65 on one job, from a percentage most templates leave at zero because the cell was empty.
On the bathroom the same change is £183.70. Copper offcuts, a trap that arrives cracked, a waste that does not match the trap. The material is consumed whether or not your sheet has an opinion about it.
One honest limitation: the workbook has a single waste cell for everything. Plumbing wants at least two, because a boxed boiler has almost no waste and a bag of copper fittings has plenty. Until I split it, the workaround is a second copy of the file with its own waste setting, or the extra written into the materials lines. Neither is elegant. The alternative, quoting a materials-heavy job at zero waste, is worse.
What to change first
If you only fix three cells this week, fix these, in this order.
Set the deposit from the bought-in cost, per job. The division above takes ten seconds and it is the difference between a deposit and a loan.
Divide by (1 - margin) instead of multiplying by a markup. On the boiler job a 35% markup on cost gives £3,941.62, which is a 25.9% margin, and the gap to the margin-correct £4,491.87 is £550.25. On the rewire it was £1,080.11, because the job was bigger. The percentage gap is fixed; the money is not.
Add profit per day on site and sort by it. The boiler job clears £698.74 a day across two and a quarter days; the bathroom clears £445.72 across three and a half. The bathroom is the bigger-sounding job and the worse day rate. A sheet that sorts by price tells you to chase bathrooms; a sheet that sorts by profit per day tells you the truth, which is that boiler swaps pay better and break more often.
The margin ladder, if you want to see what the same two days are worth at different targets: 15% gives £3,434.96 and £229.00 a day, 25% gives £3,892.95 and £432.55, 35% gives £4,491.87 and £698.74, 45% gives £5,308.57 and £1,061.71. Pick the row you can defend to a customer’s face, not the row that wins the quote.
Where the numbers come from
Same model as the workbook: materials plus waste, own days at the day rate, subcontract days at their rate, overheads on own days only, contingency on the subtotal, then divide by (1 - target margin). VAT and the deposit are added afterwards, because neither is profit.
The file is job-costing-v1.1.xlsx, 16,345 bytes, five sheets, free. The two jobs in this article are not in it. It ships with the rewire and the bathroom refit. The plumbing job list lives in tools/plumber_jobs.py, and running it writes the log the figures above came from, so you can change a unit cost and see the price move rather than taking my word for a number.
Verification is the same as the workbook’s: formulas parsed out of the shipped file, arithmetic recomputed from the raw lines, 270 comparisons across five setting sets, no mismatches. This article’s figures were re-derived by the second script and cross-checked against the table in the text.
Limits, stated plainly
The unit costs are 2026 placeholders, not supplier quotes. The boiler price is plausible rather than researched; replace it with your merchant’s number and the arithmetic still holds.
There is no CIS deduction, no retention, no quote-versus-actual on completion. VAT is charged on the whole price; if part of a boiler installation is relieved, the quote has to be split and this sheet will not do it for you.
And nobody has opened the file in Excel yet. I verified it by parsing the formulas and recomputing the cells, which is a strong check on the arithmetic and no check at all on how it prints. If something looks wrong when you open it, tell me and I will fix it.