Job Costing for Cleaning Contracts: Costing a Building So the Margin Survives
How to cost a cleaning contract honestly by area and task, build the rate from labour, supplies and overhead, and track the margin before year one erodes it.
A cleaning contract rarely fails on the first night. It fails eighteen months later, when the supervisor is spending four extra hours a week on a building that was priced for two, the supply budget is being quietly topped up from another contract, and nobody can say whether the site is making money.
Job costing prevents that. It means costing each contract as its own unit — its own labour hours, supplies and share of overhead — then comparing what you planned against what actually happened, every month.
Key takeaways
- Cost the contract by area and task, not by a single square-foot rate. The rate is an output, not an input.
- Build the price from five components: direct labour, supplies, equipment and transport, supervision, and allocated overhead.
- Use fully loaded labour cost. Wage plus payroll burden plus paid non-productive time is the real number.
- Add a stated allowance for travel, relief cover, holidays and periodic work.
- Track actual hours against estimated hours per site every month. Variance is the only early warning that matters.
- Re-price or re-scope when a contract has been under-margin for two consecutive quarters.
What job costing is, and what it is not
Job costing assigns costs to a specific contract so you can see its true margin. It is not the same as pricing, although it feeds pricing, and it is not a spreadsheet that lives with the estimator and never gets opened again.
| Question | Estimating answers it | Job costing answers it |
|---|---|---|
| What should we charge? | Yes | Partly, by supplying the cost floor |
| Did this contract make money last month? | No | Yes |
| Which building is dragging down the portfolio? | No | Yes |
| Is the specification deliverable in the hours sold? | Partly | Yes, with variance data |
| Should we renew, reprice or exit? | No | Yes |
Estimating is a forecast. Job costing is the feedback loop that tells you whether the forecast was any good.
The five cost components of a cleaning contract
Every contract price is built from the same five buckets. Miss one and the margin disappears.
| Component | What goes in it | How it is usually missed |
|---|---|---|
| Direct labour | Productive hours by area and frequency | Counting only cleaning time, not setup and pack-down |
| Supplies | Chemicals, liners, paper, cloths, pads | Ignoring consumption differences between buildings |
| Equipment and transport | Machines, depreciation, fuel, parking, travel time | Charging travel to overhead instead of the contract |
| Supervision | Inspection, training, client contact, cover | Assuming supervision is free because it is salaried |
| Overhead | Office, insurance, software, admin, bad debt | Using a percentage that has not been reviewed in years |
For indirect and administrative costs that sit behind these buckets, the federal labour standards guidance published by ESDC is a useful reminder of what an employer is actually obliged to pay for, which belongs in the loaded labour rate rather than in a surprise later.
Costing labour honestly
Labour is 60 to 75 per cent of most cleaning contracts, so errors here hurt most. Build the number in this order.
- Productive hours per visit. Walk the building, list the areas, estimate the time for each task at the frequency specified, then add setup, chemical mixing, equipment assembly and pack-down. Those are real minutes.
- Visits per year. Multiply by the specified frequency. A five-night-per-week contract is not 260 visits once you remove statutory holidays.
- Non-productive hours. Holiday cover, sick cover, training, team meetings and travel between sites. If you have no relief pool, this is where the contract silently breaks.
- Loaded hourly rate. Wage, plus payroll burden, plus paid time off, plus the cost of the relief hour used to cover it. Use this figure everywhere.
- Supervision hours. Inspection time per visit, plus monthly report time, plus client meetings. Cost it against the contract.
The common failure is estimating productive hours accurately and everything else by feel. The non-productive and supervision lines are where contracts quietly go under.
Costing supplies, equipment and transport
Supplies look small until you multiply them by a portfolio.
- Count consumption per building, not per portfolio. A site with four high-traffic washrooms can consume several times the liners and paper of a comparable office floor.
- Price chemicals at diluted cost, not container cost. Dilution control changes the arithmetic.
- Include cloths, pads and mop heads as consumables with a replacement cycle.
- Amortise equipment over its real life. A scrubber costed over eight years looks cheaper than one costed over five, and only one is honest.
- Charge transport to the contract that causes it. A 40-minute drive belongs in that site's cost, not spread across the portfolio.
Allocating overhead without inventing it
Overhead is where contractors argue with themselves. The allocation method matters less than having one and applying it consistently.
| Method | How it works | Best suited to |
|---|---|---|
| Percentage of revenue | Overhead ÷ total revenue, applied to each contract | Portfolios of similar contracts |
| Per labour hour | Overhead ÷ total productive hours × contract hours | Labour-heavy portfolios |
| Per site | Overhead ÷ number of contracts | Portfolios of similar-sized buildings |
| Activity-based | Overhead assigned by driver (inspections, payroll runs, vehicles) | Portfolios with wide site variation |
Pick one and apply it to every contract. Change the method only at a financial year boundary and restate the comparison, so you are never comparing two accounting bases.
A worked structure for one contract, with illustrative numbers
The figures below are invented to show the method. Replace them with your own site data.
Assumptions: one office building, five nights per week, 3.5 productive hours per visit, loaded labour $28 per hour, 245 visits per year after holidays, supplies $310 per month, annual equipment and transport $4,200, supervision 4 hours per month at $42 loaded, overhead allocation 12 per cent of revenue, target margin 20 per cent.
| Line | Calculation | Annual |
|---|---|---|
| Productive labour | 3.5 × 245 × $28 | $24,010 |
| Non-productive allowance | 8 per cent of productive hours | $1,921 |
| Supervision | 4 × 12 × $42 | $2,016 |
| Supplies | $310 × 12 | $3,720 |
| Equipment and transport | Given | $4,200 |
| Total direct cost | Sum of the above | $35,867 |
| Overhead at 12 per cent | $35,867 ÷ 0.88 × 0.12 | $4,891 |
| Cost floor | $35,867 + $4,891 | $40,758 |
| Price at 20 per cent margin | $40,758 ÷ 0.80 | $50,948 |
The important line is the last one. A 20 per cent margin is not a 20 per cent markup on cost. Dividing by 0.80 gives the price; multiplying cost by 1.20 gives a price that produces a 16.7 per cent margin and will disappoint you at year end.
The margin traps that only appear after signing
| Trap | What happens | Prevention |
|---|---|---|
| Scope creep by politeness | Extra rooms and requests absorbed without a variation | Written scope, and a variation process with a price |
| Travel time uncosted | Supervisor and crew hours disappear into driving | Cost travel to the site, not to overhead |
| Relief cover underpriced | Holidays and sickness covered by overtime | Build a relief allowance into the rate |
| Periodic work underpriced | Floor care and deep cleans quoted from memory | Price periodic work from task time and product |
| Client-driven frequency increases | Daily tasks become twice daily without re-pricing | Review specification changes quarterly, in writing |
| Supplies drifting upward | Consumption creeps as staffing changes | Meter or count consumption per site monthly |
Every one of these shows up as an explained variance in month nine and an unexplained loss in month eighteen.
Tracking margin per site, month by month
A costed contract is only useful if you compare it to reality. Run a monthly variance report per site with four lines.
- Estimated hours vs actual hours. The single most predictive number. A small consistent overrun compounds.
- Supplies vs allowance. Look for step changes, not noise. A step change usually means a scope or staffing change.
- Supervision hours vs allowance. Rising supervision hours on a stable site signals a quality or training problem, not a costing one.
- Invoiced value vs cost floor. Gross margin per site, before overhead, expressed in dollars and percentage.
When a site is under plan for two consecutive months, act. When it is under plan for two consecutive quarters, re-price, re-scope or plan an exit. And when the variance is caused by the work itself rather than the pricing, the inspection record is what lets you have that conversation with evidence: deficiency tracking shows what was found and when it closed, and cleaning client reporting shows the client the record.
Where job costing meets pricing and cash
Job costing gives you the cost floor. Pricing decides what to charge above it, and the two should be reviewed together. Cleaning contract pricing methods covers the structures, and cost per square foot covers the sanity check on your finished price.
Cash is the other half of the equation. A contract with a healthy margin but 60-day payment terms still needs funding, which is why cleaning business cash flow belongs in the same conversation as the rate.
Where this fits in the quality system
This sits under our janitorial contract growth, which sets out the standard these checks are measured against.
Frequently asked questions
What is the difference between job costing and estimating?
Estimating forecasts what a contract should cost and what to charge. Job costing records what it actually cost and compares the two.
Should I cost a cleaning contract per square foot or per task?
Cost it per task and area, then convert to a square-foot figure for comparison. Task-based costing captures the real drivers — fixture counts, frequencies, floor types, access — while square-foot rates hide them.
How much overhead should each contract carry?
Allocate your total annual overhead across contracts using one documented method, such as per labour hour or as a percentage of revenue, and apply it consistently. The percentage should come from your accounts, not an industry average.
What margin should a cleaning contract carry?
That depends on your overhead, your risk and your market. What matters more than the target is knowing your cost floor exactly, so any discount is a conscious decision against a known number.
How often should I review contract profitability?
Monthly for hours, supplies and supervision against plan, and quarterly for a full margin review per site. Monthly reviews catch drift while it is still fixable; quarterly reviews catch the structural problems.
Cost it properly, then prove it
Job costing tells you what the contract should cost. The inspection record tells you what the work actually required. Keeping both in one place is what turns an annual surprise into a monthly number.
NeatScore records scored inspections with photos, critical items, weighted items and deficiency tracking per site, with dashboards and branded PDF reports, offline inspections that sync, and multi-site support with unlimited users, so the hours and findings behind each contract are visible rather than reconstructed. Try it free for 14 days, or see pricing.


