← Blog

COMMERCIAL CLEANING BUSINESS

Commercial Cleaning Job Costing: How to Track Cost, Profit & Margin by Contract

Commercial Cleaning Job Costing

Winning a commercial cleaning contract does not automatically mean the account is profitable.

A bid can look healthy on paper, but once the work begins, additional labor hours, payroll burden, supplies, travel time, access delays, rework, and other recurring costs can gradually reduce the margin you expected.

That is where commercial cleaning job costing becomes useful.

Job costing compares what you expected a cleaning contract to cost with what it actually costs to operate. Instead of looking only at monthly revenue, you track the labor and other expenses tied to each account so you can see how much profit the contract is really producing.

For a recurring commercial cleaning contract, that means comparing estimated and actual labor hours, loaded labor cost, recurring account expenses, total monthly cost, profit, and profit margin.

A contract generating more revenue is not necessarily the more profitable account. Revenue tells you how large the contract is. Job costing tells you what the contract is actually worth to the business.

In this guide, we will walk through a practical commercial cleaning job costing process, including the costs to track, the formulas to use, an estimated-versus-actual example, and how the results can improve future bids.

What Is Commercial Cleaning Job Costing?

Commercial cleaning job costing is the process of assigning revenue and costs to an individual cleaning contract so you can measure the account’s actual profitability.


Instead of combining all company expenses and asking whether the business made money overall, job costing asks a more useful question:


Did this specific cleaning contract produce the profit we expected?


For example, a cleaning company may service ten commercial accounts and still have one or two contracts quietly eroding profit. One account may consistently finish within its estimated labor hours, while another requires extra time on nearly every visit.


Without contract-level job costing, the stronger accounts can hide the weaker ones.


A basic commercial cleaning job cost can be expressed as:


Total Job Cost = Labor Cost + Supplies + Equipment + Travel + Other Contract Costs


Once you know the total cost:


Contract Profit = Contract Revenue − Total Job Cost


And:


Profit Margin = Contract Profit ÷ Contract Revenue × 100


The key is to eventually calculate these numbers using actual operating data, not only the assumptions used when the contract was originally priced.

Job Costing vs. Estimating: What’s the Difference?

Estimating and job costing are closely related, but they happen at different stages of a commercial cleaning contract.

Estimating happens before you win the contract

Estimating is the process of predicting what the job should cost before work begins.

You estimate labor hours, loaded labor cost, supplies, equipment, travel, overhead, and other expected expenses. Those assumptions help you decide what price to quote and what profit margin the bid may produce.

At this stage, you are working with expected numbers.

Job costing happens after the work starts

Job costing uses actual operating data from the contract.

Instead of asking how many hours the job should take, you look at how many hours the team actually worked. Instead of relying only on expected costs, you compare those estimates with the real costs tied to the account.

That makes job costing a performance check on the original bid.

Why you need both

Estimating helps you build the price.

Job costing tells you whether the assumptions behind that price were accurate.

A contract can be priced correctly based on the information available at the time and still perform differently once the work begins. Labor hours may increase, access may take longer than expected, supply usage may change, or the scope may gradually expand.

The goal is not to make every estimate perfect. The goal is to create a feedback loop:

Estimate → Win the Contract → Track Actuals → Compare → Improve the Next Bid

What Costs Should You Track for Each Cleaning Contract?

Loaded labor cost

Labor is usually one of the most important costs to track in a commercial cleaning contract, but hourly wage alone does not show the full cost of labor.

A more useful number is loaded labor cost — the hourly wage plus the payroll-related costs you assign to that employee or crew.

Depending on the business, that may include payroll taxes, workers’ compensation, benefits, insurance-related labor costs, or other payroll burden assumptions.

For example, if an employee earns $18 per hour but the business calculates a loaded labor cost of $23 per paid hour, job costing should use the $23 figure rather than the wage alone.

If you need to calculate this number first, use the Commercial Cleaning Labor Cost Calculator.

Supplies and consumables

Include the supplies that are regularly consumed while servicing the account.

This may include chemicals, liners, paper products supplied by your company, microfiber products, gloves, or other recurring consumables.

The goal is not to estimate every cent perfectly. The goal is to avoid treating recurring supply costs as if they do not exist.

Equipment and recurring job costs

Some contracts require equipment or other recurring costs that are specific to the account.

Examples may include equipment rental, battery replacement, specialty tools, maintenance allocation, parking, keys, access fees, or other costs that exist because you service that location.

If the cost belongs to a particular contract, it should be visible in that contract’s job cost.

Travel and non-cleaning labor

Not every paid hour is spent cleaning.

Travel between accounts, loading supplies, waiting for access, security check-in, key pickup, or other non-cleaning tasks can still create real labor cost.

If that time is consistently required to service the contract, ignoring it can make an account appear more profitable than it actually is.

Account-specific overhead

Some businesses also assign a portion of supervision, management, administrative, or other overhead costs to individual contracts.

There is no single percentage that is correct for every cleaning company.

What matters is consistency: define what your business includes in job cost, apply the same method across contracts, and avoid comparing accounts that were calculated using different rules.

For additional industry guidance on job costing and bid budgeting, see BSCAI’s guide to job costing for profitable contract cleaning bids.

Commercial Cleaning Job Costing Formulas

Once the contract costs are defined, the next step is to calculate the numbers consistently.

You do not need a complicated accounting model to understand whether a cleaning contract is performing well. A few core formulas can give you a clear view of cost, profit, and variance.

Estimated Labor Cost

Estimated Labor Cost = Estimated Labor Hours × Loaded Labor Cost per Hour

This is the labor cost you expected when the contract was priced.

For example, if a contract was estimated at 100 labor hours per month and your loaded labor cost is $23 per hour:

100 × $23 = $2,300 estimated labor cost

Actual Labor Cost

Actual Labor Cost = Actual Labor Hours × Loaded Labor Cost per Hour

This shows what labor actually cost based on the hours worked.

If the same contract required 112 hours instead of 100:

112 × $23 = $2,576 actual labor cost

Total Job Cost

Total Job Cost = Labor Cost + Supplies + Equipment + Travel + Other Contract Costs

This gives you the total monthly cost required to operate the account.

Contract Profit

Contract Profit = Contract Revenue − Total Job Cost

If monthly revenue is $4,500 and total job cost is $3,400:

$4,500 − $3,400 = $1,100 profit

Profit Margin

Profit Margin = Contract Profit ÷ Contract Revenue × 100

Using the same example:

$1,100 ÷ $4,500 × 100 = 24.4% profit margin

Labor Hour Variance

Labor Hour Variance = Actual Labor Hours − Estimated Labor Hours

A positive result means the contract used more labor than estimated.

A negative result means the contract used fewer labor hours than expected.

Cost Variance

Cost Variance = Actual Job Cost − Estimated Job Cost

This helps you see whether the contract is costing more or less to operate than originally planned.

The most useful part is not the formula itself. It is the comparison between the estimate and what actually happened.

Commercial Cleaning Job Costing Example

A simple example makes the difference between estimated and actual job costing easier to see.

Assume a recurring commercial cleaning contract has the following monthly numbers:

  • Monthly revenue: $4,850
  • Estimated labor hours: 119 hours
  • Actual labor hours: 132 hours
  • Loaded labor cost: $23 per hour
  • Other monthly contract costs: $928

Estimated Job Cost

Estimated labor cost:

119 × $23 = $2,737

Add the other monthly contract costs:

$2,737 + $928 = $3,665 estimated total cost

Estimated profit:

$4,850 − $3,665 = $1,185

Estimated profit margin:

$1,185 ÷ $4,850 × 100 = 24.4%

Actual Job Cost

Actual labor cost:

132 × $23 = $3,036

Add the same other monthly contract costs:

$3,036 + $928 = $3,964 actual total cost

Actual profit:

$4,850 − $3,964 = $886

Actual profit margin:

$886 ÷ $4,850 × 100 = 18.3%

What Changed?

The contract used 13 more labor hours than estimated.

At a loaded labor cost of $23 per hour, those extra hours added:

13 × $23 = $299

That reduced monthly profit from $1,185 to $886 and lowered the profit margin from 24.4% to 18.3%.

The revenue did not change. The pricing did not change. The difference came from actual operating performance.

That is the value of job costing: it shows where the margin moved after the contract started.

Estimated vs. Actual Job Costing

Estimated job costing shows what you expected the contract to cost.

Actual job costing shows what happened after the work started.

The difference between the two is where the most useful information appears.

A contract may have been priced using reasonable assumptions, but actual performance can still move away from the estimate over time. The goal is not only to know that the numbers changed. The goal is to understand why they changed.

Why Labor Hours Often Create the Biggest Variance

In commercial cleaning, labor can move quickly because it repeats every visit.

A small difference per service can become significant over a month.

For example, if a crew takes 20 minutes longer than estimated on a location serviced five times per week, that extra time accumulates across the month and increases labor cost even though the contract price stays the same.

That is why estimated and actual labor hours should be compared at the contract level.

What a Negative Variance Is Telling You

If actual cost is higher than estimated cost, the variance is unfavorable.

That does not automatically mean the bid was wrong.

The cause may be:

more labor hours than expected;
additional tasks;
access delays;
rework;
overtime;
higher supply usage;
staffing changes;
or costs that were not included in the original estimate.

The variance tells you where to investigate. It does not tell you the cause by itself.

When the Problem Is Operational, Not Pricing

It is easy to assume that a low-margin contract simply needs a higher price.

Sometimes that is true.

But if the original labor estimate was reasonable and the account is consistently taking longer because of scheduling, access, training, workflow, or quality issues, increasing the price may not address the real problem.

Job costing helps separate a pricing problem from an operational problem.

Before changing the contract price, compare the estimate with actual labor hours and recurring costs.

You can use the Commercial Cleaning Margin Drift Calculator to compare estimated and actual contract performance and see how changes in labor and costs affect profit margin.

Where Commercial Cleaning Contract Margins Drift

Profit margin does not usually disappear all at once.

In many commercial cleaning contracts, margin drifts gradually as small operating differences repeat week after week.

The most useful job costing review is not just asking whether profit went down. It is identifying where the difference came from.

More Labor Hours Than Estimated

This is one of the clearest sources of margin drift.

If a contract was priced around 100 monthly labor hours but consistently requires 112, those additional 12 hours create real cost every month.

The difference may look small on a single visit, but recurring labor overruns compound quickly.

Scope Creep

Scope creep happens when the work being performed gradually becomes broader than the work originally priced.

Examples may include additional rooms, extra touchpoints, more frequent detail cleaning, new client requests, or tasks that were never part of the original scope.

If the contract price stays the same while the workload grows, margin can shrink without any obvious pricing change.

Rework and Quality Issues

Callbacks, missed tasks, retraining, inspections, and repeat visits all consume labor.

If a crew regularly has to return to fix quality issues, the account may be using more labor than the schedule shows at first glance.

Job costing should capture that extra time if it is part of servicing the contract.

Travel and Access Delays

Travel between accounts, waiting for keys, security check-in, elevators, locked areas, loading docks, or restricted access windows can add paid time that is easy to overlook.

If those delays happen consistently, they should be treated as part of the real cost of the account.

Supply Cost Changes

Supply usage and pricing can change after a contract begins.

A location may consume more liners, chemicals, paper products, or specialty supplies than expected. Vendor pricing may also increase over time.

If those recurring costs change materially, the job cost should be updated instead of relying on the original estimate indefinitely.

Overtime or Staffing Changes

A contract may be profitable with one staffing structure and less profitable with another.

Overtime, higher-cost replacement staff, schedule changes, turnover, or inefficient crew assignments can all increase labor cost even if the total scope stays the same.

The important point is that margin drift is measurable.

Once you compare estimated and actual labor, costs, profit, and margin by contract, you can see whether the issue is pricing, scope, staffing, workflow, or something else.

How Often Should You Job Cost a Cleaning Contract?

There is no single review schedule that fits every commercial cleaning company.

The right frequency depends on how stable the contract is, how predictable the workload is, and how quickly costs can change.

What matters most is that job costing happens consistently enough to catch problems before they become normal.

Review New Contracts More Closely

New contracts usually deserve more attention because the original estimate has not yet been tested against real operating conditions.

During the first weeks or months, compare estimated labor hours with actual labor hours and watch for unexpected recurring costs.

This helps you identify whether the original assumptions were realistic.

Review After Scope or Staffing Changes

A contract should also be reviewed after meaningful changes such as:

  • additional cleaning tasks;
  • changes in service frequency;
  • new areas added to the scope;
  • staffing changes;
  • wage or payroll burden changes;
  • new access requirements;
  • or material changes in supply costs.

When the operating conditions change, the old job cost may no longer describe the current account accurately.

Use a Consistent Review Cycle for Stable Accounts

Once a contract becomes predictable, it can move to a regular review cycle.

The exact schedule may vary by business, but the important part is to compare the same core numbers each time:

Revenue → Labor Hours → Labor Cost → Other Costs → Total Cost → Profit → Margin

This makes changes easier to spot over time.

The goal is not to constantly recalculate every contract. It is to create a repeatable system that shows you when actual performance begins moving away from the assumptions behind the bid.

How Job Costing Improves Your Next Cleaning Bid

Job costing is not only useful for measuring past performance.

The real value appears when actual contract data is used to improve future estimates.

Every completed or ongoing account gives you information about how your company actually performs — not how a generic production rate says you should perform.

Replace Assumptions With Your Own Operating Data

When you prepare a new bid, estimated labor hours often begin with assumptions.

After you have real contracts running, those assumptions can become more accurate.

For example, if similar office accounts consistently require more labor than you originally estimated, that pattern should influence future bids.

The same applies to travel time, supervision, supply usage, access delays, and other recurring costs.

Identify Which Estimates Were Accurate

Job costing also shows which parts of the original bid were correct.

You may discover that supply costs were close to estimate while labor hours were consistently higher.

Or labor may be accurate while travel time was underestimated.

That distinction matters because it tells you what needs to change instead of forcing you to increase every part of the bid.

Build a Feedback Loop

A useful bidding process should not stop when the contract is won.

It should continue:

Estimate → Win → Track → Compare → Learn → Improve the Next Bid

Over time, this creates a pricing process based increasingly on your own company’s actual performance.

That is more useful than relying only on generic assumptions or industry averages.

When you are ready to price another account, you can use the Commercial Cleaning Bid Calculator to build a new bid using updated labor and cost assumptions.

Common Commercial Cleaning Job Costing Mistakes

Job costing becomes less useful when the numbers are incomplete or calculated inconsistently.

The goal is not to build a perfect accounting system. The goal is to avoid the common mistakes that can make an account look more profitable than it really is.

Tracking Hourly Wage Instead of Loaded Labor Cost

Using wage alone understates the real cost of labor.

If an employee earns $18 per hour but the business carries additional payroll-related costs, job costing should reflect the loaded labor cost rather than only the base wage.

Otherwise, contract profit can look stronger than it actually is.

Ignoring Travel and Non-Cleaning Time

Paid time does not stop being a cost just because the employee is not actively cleaning.

Travel between accounts, waiting for access, loading supplies, security procedures, or other recurring non-cleaning tasks can all affect contract profitability.

If the time is required to service the account, it should not disappear from the cost calculation.

Combining All Contracts Together

Company-wide profitability can hide weak individual accounts.

A strong contract may offset a poor-performing one, making the overall business look healthy while one account continues to lose margin.

Job costing works best when revenue and costs are reviewed by contract.

Continuing to Use Estimated Hours After Work Begins

Estimated labor hours are useful when building the bid.

Once the contract is running, actual labor hours should become part of the analysis.

If a job was estimated at 100 hours but consistently takes 115, continuing to calculate profitability using 100 hours gives you an outdated picture of the account.

Confusing Margin With Markup

Margin and markup are related, but they are not the same calculation.

Profit Margin = Profit ÷ Revenue × 100

Markup is calculated against cost instead.

Using the wrong formula can create confusion when evaluating whether a contract is meeting the profitability target used during bidding.

Failing to Update Costs

Job costing should reflect the current operating reality.

If wages, payroll burden, supplies, staffing, service frequency, or other recurring costs change, the cost model should be updated.

Otherwise, you may be comparing today’s revenue against yesterday’s cost assumptions.

Treating Revenue as Profitability

A large account is not automatically a good account.

Two contracts can generate similar revenue while producing very different profit because of labor requirements, travel, scope, or recurring costs.

Revenue measures sales.

Job costing measures what remains after the work is delivered.

Commercial Cleaning Job Costing FAQ

What is job costing in commercial cleaning?

Job costing in commercial cleaning is the process of tracking the revenue, labor, supplies, equipment, travel, and other costs connected to an individual cleaning contract.
The goal is to determine how much the account actually costs to operate and how much profit it produces after the work is delivered.

What costs should be included in a commercial cleaning job cost?

The exact cost structure varies by company, but common categories include loaded labor cost, supplies, equipment, travel, non-cleaning paid time, and other recurring costs tied to the account.
Some companies also allocate supervision or overhead to individual contracts.
The most important thing is to use a consistent method across accounts.

How do you calculate profit on a commercial cleaning contract?

Start by calculating the total cost of servicing the contract:
Total Job Cost = Labor + Supplies + Equipment + Travel + Other Contract Costs
Then calculate profit:
Contract Profit = Revenue − Total Job Cost
To calculate profit margin:
Profit Margin = Profit ÷ Revenue × 100

What is the difference between job costing and estimating?

Estimating happens before the work begins and predicts what the contract should cost.
Job costing happens after the contract starts and uses actual operating data to measure what the work really costs.
Estimating helps you build the bid. Job costing helps you test whether the assumptions behind that bid were accurate.

How do you compare estimated vs. actual cleaning labor?

Compare the labor hours used in the original estimate with the hours actually worked:
Labor Hour Variance = Actual Labor Hours − Estimated Labor Hours
You can also compare estimated and actual labor cost using the same loaded hourly labor cost.
Repeated differences can help identify problems with the estimate, workflow, staffing, scope, or account conditions.

How often should a janitorial company review job costs?

There is no universal schedule.
New contracts and accounts that have recently changed usually deserve closer review. Stable contracts can be reviewed on a consistent schedule that fits the company’s operating process.
The important part is to review them frequently enough to identify meaningful changes in labor, cost, or margin before those changes become normal.

Can you job cost commercial cleaning contracts in a spreadsheet?

Yes.
A spreadsheet can be enough if it consistently tracks the numbers needed to evaluate each account, such as revenue, estimated and actual labor hours, loaded labor cost, recurring expenses, profit, and margin.
The usefulness of the system depends less on the format and more on whether the data is accurate, updated, and reviewed by contract

Turn Job Costing Into Better Contract Decisions

Commercial cleaning job costing is not about creating more paperwork. It is about knowing which contracts are actually producing the profit you expected.

A strong job costing process connects the numbers used in the original bid with the real operating performance of the account.

Track the labor hours. Use loaded labor cost. Include the recurring expenses tied to the contract. Compare estimate with actual performance. Then use what you learn to improve the next bid.

The process can stay simple:

Estimate → Track → Compare → Understand → Improve

The more consistently you review contracts at the account level, the easier it becomes to identify margin drift early, separate pricing problems from operational problems, and make future bids using better assumptions.

If you need to calculate the numbers behind the process, ContractGauge also provides free tools for loaded labor cost, commercial cleaning bids, and estimated-vs-actual margin drift.