By the Opora Editorial Team
Most building service contractors know their total company revenue and their approximate net margin. Very few know which specific accounts are generating that margin and which ones are consuming it. A BSC running 40 accounts at a reported 18% gross margin is not necessarily running 40 profitable accounts — it is more likely running 28 profitable accounts and 12 accounts that range from marginally breakeven to actively cash-negative, with the profitable group subsidizing the rest.
The reason this is common is structural. Most BSC accounting tracks revenue by account but allocates labor cost by payroll period, supply cost by purchase order, and overhead by a global percentage applied uniformly at month-end. No single data point in that system identifies which account consumed which labor hours and which supplies in which week. The account profitability audit closes that gap. It is not an accounting exercise — it is a site-level income statement built from clocked hours, loaded wage rates, documented supply usage, and allocated overhead, run account by account.
This article lays out the methodology: the components, the calculation sequence, the distinctions that matter between Account Profitability and blended company margin, and the signals that indicate an account needs renegotiation, restructuring, or exit.
Why blended margin is a misleading management metric
A blended gross margin is revenue minus direct costs, expressed as a percentage of revenue, summed across the entire portfolio. It is useful for understanding the business at the firm level. It is not useful for making decisions about individual accounts because it averages across accounts with radically different cost structures.
Consider two accounts with identical monthly revenue of $4,000. Account A is a 20,000-square-foot open office serviced five nights per week by a consistent crew that has worked the building for 14 months. Account B is a 15,000-square-foot medical office serviced five nights per week by a crew that turns over every few months, requires PPE on every visit, and runs 20% over the budgeted labor hours because of scope creep from added restroom fixtures the original bid did not count. At $4,000 monthly revenue, Account A might produce a 34% gross margin. Account B might produce a 6% gross margin or a negative one. A blended margin across both accounts reports roughly 20% — a number that makes the portfolio look healthy while masking a loss account that will not improve without intervention.
The BLS Employer Cost for Employee Compensation report, which tracks total compensation per hour worked for private sector workers across industries, per the BLS ECEC program, documents that benefit and insurance costs have risen 3.6% over the year ended March 2026. That rise flows into labor burden regardless of account margin, meaning that an account priced at 8% gross margin a year ago may be at 5% or lower today if no price adjustment was made. Blended reporting conceals this deterioration until the loss is large enough to show up in cash flow.
The six-component account P&L
A defensible account profitability calculation requires six inputs, sourced from actual account data rather than company averages. Each is described below.
Component 1 — Contract revenue
This is the amount the client is invoiced for the account per billing period. Use the actual invoice total — not the bid amount, not the original contract value, and not any figure that excludes credits, adjustments, or unpaid visits. If the account has been re-bid or repriced, use the current contract value.
Revenue is the only input in the account P&L that should require no calculation. If your invoicing system cannot produce a clean per-account revenue figure by month, that is the first process problem the audit will reveal.
Component 2 — Direct labor: fully loaded
Direct labor is the total cost to field the crew on the account. It is not the gross wages paid to the workers. It is the fully loaded cost, built from base wage plus statutory burden plus discretionary burden, as the fully-loaded labor cost calculation for cleaning operators structures it.
The BLS median hourly wage for janitors and building cleaners was $17.27 as of May 2024, per the BLS Occupational Outlook Handbook. Employer FICA at 7.65%, per IRS Publication 15 (Circular E), plus net FUTA at 0.6% on the first $7,000 of wages per employee per year, per IRS Form 940 instructions, plus SUTA at your state rate, plus workers' compensation premium for NCCI Class 9014 janitorial contractors adjusted by your experience modifier, per NCCI's ABCs of Experience Rating, plus PTO accrual. A 22% to 33% burden range above base wage is defensible across the range of state and modifier scenarios. Use your actual figures.
The critical discipline is using clocked hours from that account — not scheduled hours, not budgeted hours, and not a company-average hours-per-visit assumption. Clocked hours reveal the variance between what was bid and what is actually being delivered. An account where clocked hours consistently exceed budgeted hours is losing margin on every visit. The ISSA 447 production rates and where operators see variance explains how to identify the source of that variance — equipment, building condition, crew configuration, or scope expansion — so it can be addressed rather than simply absorbed.
Overtime is a separate line item within direct labor. The FLSA requires pay at 1.5 times the regular rate of pay for hours worked in excess of 40 in a workweek, per DOL FLSA guidance. A crew that runs 42 hours in a week on a single account generates 2 hours of overtime — an effective rate 50% above the loaded wage for those hours. Overtime is a common profitability leak in accounts with large square footage or scope expansions that push crews past the 40-hour threshold without corresponding invoice adjustments.
Component 3 — Direct supplies
Direct supplies are the chemicals, paper products, and disposables consumed on the account. Unlike labor, supply cost is often tracked at the purchase order level rather than the account level, which means it gets allocated by formula rather than by actual consumption.
The audit requires shifting to documented actual usage where possible: supply pull logs by account, or at minimum, account-specific supply kits tracked to the site. Without actual usage data, the default is to allocate supply cost proportionally to labor hours: if Account B represents 8% of total company labor hours, it receives 8% of total company supply cost for the period. This is imprecise. Healthcare accounts consume more supply per labor hour than office accounts because of PPE, disinfectant volumes, and regulated waste handling. Applying a blended percentage masks the supply intensity of specialty accounts.
Supply cost as a percentage of direct labor varies by facility type and service level. No government source publishes this figure for the janitorial industry specifically. As a planning reference, supply cost commonly runs in the range of 5% to 12% of direct labor cost for standard commercial cleaning, rising toward the high end in healthcare and food-service environments — but verify against your own purchasing data before using any percentage as a planning baseline.
Component 4 — Equipment depreciation
Equipment assigned to an account — dedicated vacuum, mop cart, auto-scrubber where applicable — carries a per-period depreciation cost. This is distinct from shared equipment rotated across accounts, which belongs in overhead. Dedicated equipment should be depreciated over its useful life and charged to the account it serves.
A commercial vacuum with a useful life of three years and a replacement cost of $900 generates $25 per month in depreciation. An auto-scrubber with a useful life of five years and a $15,000 purchase price generates $250 per month. These are not large numbers individually. In the aggregate, and particularly on accounts with significant dedicated equipment investment, they represent real cost that a pure labor-and-supplies P&L misses.
Component 5 — Overhead allocation
Overhead Allocation is the methodologically contested component of account-level profitability. Fixed costs — management salaries, insurance (general liability, commercial auto, umbrella), software subscriptions, office space, vehicles — do not vary with account count in the short run. Allocating them to accounts requires a denominator: typically total revenue, total labor hours, or account count.
Each allocation basis produces different results. A revenue-based allocation penalizes your highest-revenue accounts, which may not be your most overhead-intensive ones. A labor-hour-based allocation is more accurate because overhead consumption correlates with labor deployment rather than invoice size. A simple account-count basis ignores scale entirely.
For a practical account-level audit, the labor-hour basis is most defensible: (Account labor hours for the period) ÷ (Total company labor hours for the period) × (Total fixed overhead for the period) = Account overhead allocation. If Account B accounts for 8% of company labor hours and total monthly fixed overhead is $12,000, Account B carries $960 in allocated overhead. Run this across all accounts and the total equals 100% of overhead — no overhead is unallocated and no account is exempt.
The allocation method should be documented and applied consistently. Changing the basis between audit periods makes trend comparison impossible.
Component 6 — Account-specific risks
Some accounts carry cost liabilities beyond the standard six-component model. These include:
- Drive time and mileage. For accounts with significant one-way travel, the drive time and fuel cost of getting the crew on site is a real cost not captured in clocked on-site hours. Accounts more than 20 minutes from the nearest cluster should be evaluated with drive time factored in.
- Account-specific insurance riders. Some clients require additional insured endorsements or umbrella policy extensions that have account-specific premium impact. These belong on the account P&L, not in the general overhead pool.
- Supervisor time. Accounts that require supervisor visits at a frequency above the company norm consume management capacity with a quantifiable cost.
- Churn risk. An account whose Churn Rate history or client relationship signals a non-renewal risk within six months is carrying a contingent acquisition cost — the cost of filling the revenue gap — that should inform the decision to invest or not invest in retaining it. The BSC churn benchmarks and measurement methodology provides a framework for quantifying this risk.
Building the account-level P&L: a worked example
The following example applies the six components to a hypothetical recurring commercial account. All figures use stated assumptions; substitute your own.
| Line item | Assumption | Monthly amount |
|---|---|---|
| Contract revenue | Monthly invoice | $4,200 |
| Direct labor — base wages | 48 hours/month × $17.27 | $829 |
| Direct labor — burden (22%) | $829 × 22% | $182 |
| Direct labor total | $1,011 | |
| Direct supplies | 8% of direct labor | $81 |
| Equipment depreciation | Dedicated vacuum, 3-yr life, $900 replacement | $25 |
| Overhead allocation | Account = 4.2% of company hours; $12,000 total overhead | $504 |
| Drive time / mileage | 30-min round trip, 22 visits/month, $0.67/mi per IRS standard mileage | $74 |
| Total costs | $1,695 | |
| Gross profit | Revenue minus total costs | $2,505 |
| Gross margin | $2,505 ÷ $4,200 | 59.6% |
This is a high-margin account — a well-defined scope, a stable crew, a reasonable drive, and overhead that is being absorbed across a portfolio with sufficient volume. Now change one variable: the crew runs 62 hours per month instead of 48, because scope has expanded without a contract amendment.
| Line item | Revised assumption | Monthly amount |
|---|---|---|
| Direct labor — base wages | 62 hours/month × $17.27 | $1,071 |
| Direct labor — burden (22%) | $1,071 × 22% | $236 |
| Direct labor total | $1,307 | |
| Total costs | Same non-labor items | $1,991 |
| Gross profit | $4,200 − $1,991 | $2,209 |
| Gross margin | $2,209 ÷ $4,200 | 52.6% |
Still profitable — but the margin has dropped seven points because the crew is running 29% more hours than the model assumed. Run this for 12 months and the operator has left roughly $3,500 on the table on a $50,400-per-year account. Scale that pattern to five or ten accounts and the company is running materially below its modeled margin without a single account formally losing money.
Per-account versus blended margin: the management implications
The practical output of the account-level audit is a margin stack rank: every account sorted by its actual gross margin percentage, using the six-component methodology above.
Three thresholds structure the decisions:
Below 10% gross margin: The account is absorbing more overhead and labor than it is covering. At this margin level, the account likely requires renegotiation (price increase, scope reduction, or both), a formal operational intervention to recover hours, or exit if neither is achievable. An account at negative gross margin is unambiguously destroying capital — every month it runs, it is funded by the profitable accounts.
10% to 20% gross margin: The account is covering direct costs and contributing to overhead, but the margin is thin enough that any labor variance, scope expansion, or supply cost increase will push it below breakeven. These accounts warrant quarterly review and a documented plan for price adjustment at the next renewal.
Above 20% gross margin: The account is contributing meaningfully to overhead and profit. These are the accounts to protect through relationship investment, service quality, and proactive renewal. The BSC churn benchmarks and measurement methodology is relevant here: a profitable account lost to a competitor is worth more to recover through retention investment than almost any new account acquisition at standard CAC.
The account profitability audit is most useful when run on a defined cycle — quarterly is practical for most BSCs — and when the results feed directly into bid pricing decisions. If the audit consistently shows that medical office accounts run 15 percentage points below office accounts, the pricing model for medical facilities needs adjustment before the next medical office bid goes out.
Use the account profitability auditor tool to run the six-component calculation for individual accounts. Pressure-test your bid prices before signing with the commercial cleaning bid generator and compare your labor inputs against the dollar-per-square-foot benchmarks by facility type to verify that the account's revenue is in the right range for its facility type and service scope.
What to verify yourself
The methodology above uses stated assumptions at several points. Before applying any figure from this article to a specific account:
- Clocked hours, not scheduled hours. Confirm your time-tracking system records actual on-site hours by account. Scheduled hours produce a model; clocked hours produce an audit.
- Your actual fully loaded wage. Use your metro-level base wage from BLS OEWS SOC 37-2011 metro data, your actual SUTA rate from your state workforce agency, your actual workers' compensation rate for NCCI Class 9014 from your insurer or NCCI, and your actual experience modifier.
- Your actual supply usage by account. If you are using a percentage allocation, document the basis and note that it is an allocation, not actual usage. Shift to account-level pull logs where operationally feasible.
- Your overhead basis. Document the allocation basis (revenue, labor hours, or account count), apply it consistently across all periods, and verify that the total of all account allocations equals 100% of fixed overhead — no remainder unallocated.
- FLSA overtime compliance. Confirm that clocked hours data is being used to correctly calculate overtime liability per the DOL FLSA standard. Overtime miscalculation on recurring accounts can create wage liability independent of the profitability question.
- A qualified financial advisor. The account profitability methodology here is a management accounting framework, not a GAAP reporting requirement or tax position. For business-level financial reporting, tax treatment of depreciation, or decisions above your organization's risk threshold, consult a qualified CPA or business advisor.
Disclaimer — Bidding & pricing content
Benchmark figures, price ranges, labor rates, and markup assumptions in this article reflect industry data and stated methodological assumptions as of the data vintage disclosed in the article. They are reference benchmarks, not quotes, not market guarantees, and not professional bid recommendations.
Actual costs, margins, and competitive pricing in your market depend on local labor rates, your specific overhead structure, chemical costs at the time of bid, account-specific scope, and competitive conditions that this content cannot anticipate.
Before submitting a bid based on figures from this Site: Verify current local wage rates against BLS Occupational Employment and Wage Statistics for your metro area and NAICS code. Verify chemical and supply costs with your current distributor pricing. Apply your actual overhead and margin requirements. Have a qualified business advisor review the bid structure for contracts above your organization's risk threshold.
Opora Supply does not guarantee contract profitability and is not liable for financial outcomes resulting from pricing decisions informed by Site content. Information current as of publication date; verify current regulations and rates with the issuing authority before relying on this information. If you spot an error in this article, contact us.
Disclaimer — Calculator & tool outputs
Outputs from Opora Supply calculators and tools are estimates based on stated assumptions. They are provided for planning and reference purposes only and do not constitute professional advice, a binding bid, a regulatory determination, or a guarantee of any outcome.
Tool accuracy depends on the accuracy of your inputs and the relevance of the tool's underlying assumptions to your specific situation. Production rate figures, dilution ratios, bid estimates, and compliance lookups reflect the data sources and assumptions disclosed on each tool's methodology page. Your actual results will vary based on facility conditions, labor performance, chemical selection, local regulations, and other factors specific to your operation.
Before using any tool output for a binding business decision — including contract pricing, compliance filings, or equipment specifications — verify the output with a qualified professional (licensed contractor, attorney, engineer, or certified safety officer, as applicable).
See the Methodology page for full disclosure of data sources and assumption sets for each tool.
This article links up to its hub pillar, the Bidding & Operations hub. Hub pillar slug: [INTERNAL: bidding-operations-hub-pillar].
Primary sources
- BLS Occupational Employment and Wage Statistics, Janitors and Building Cleaners (SOC 37-2011), May 2024
- BLS Employer Cost for Employee Compensation (ECEC), Private Sector
- IRS Publication 15 (Circular E), Employer's Tax Guide — FICA rates
- IRS Instructions for Form 940 (FUTA)
- NCCI ABCs of Experience Rating (EMR formula)
- NCCI Class Code 9014 — Janitorial Services by Contractor
- DOL Wage and Hour Division — FLSA Overtime
- ISSA — How to Calculate Cleaning Times