What I Learned Reviewing 1,000+ Contractor P&Ls

The short answer
The Level Index measures a median job-level gross margin of 44.3% across 1,747,089 completed jobs from 1,791 companies, higher than the commonly repeated 35% target, although a job margin is not the same as a company P&L gross margin. One cash-management metric I prioritize is collection rate, cash collected divided by billed revenue, where the median is 85.1% across 464 contractors. Most contractors do not lack revenue; they lack visibility into where the money goes after it comes in.
Key takeaways
- On completed jobs in the Level Index, median job gross margin is 44.3%; 6.2% of jobs run negative and 16% land under 20%.
- Collection rate is a priority to investigate: the median contractor collects 85.1% of billed revenue (464 contractors), but an open AR balance is not lost revenue, because it includes current invoices and retainage not yet due.
- On 2.2M+ quote line items, labor carries 47.7% margin vs. 31.5% on materials, 25.5% on equipment, and 23.6% on subcontractor work, but reported quote-line margin figures do not establish which business mix earns the highest realized company margin.
- Five habits worth checking in your own books: job-level profit tracking, collection rate, invoice speed, labor pricing, and service agreement pull-through. This is an operator checklist, not a measured profile of the top 10%.
The Numbers Nobody Publishes
Before I started Level, I spent four years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors and working directly with their teams on job costing, invoicing, and financial workflows. Before that, I spent four years in private equity and investment banking, evaluating service-business financials for roll-up acquisitions.
Across that private-equity, product and operating work, I reviewed the books of well over 1,000 contractors across HVAC, plumbing, electrical, mechanical and refrigeration, and started seeing recurring patterns. This personal review count is separate from the populations behind the Level Index tables. These are the metrics I kept returning to in my reviews, alongside the owner's cash pressures and workload. That is professional experience, not a measured separation of wealth outcomes.
Most of what gets published about contractor benchmarks is either survey-based (self-reported) or generic ("aim for 35-50% gross margins"). Here's what the Level Index records show, plus what I look for when reviewing a P&L.
A note on the data: the percentile tables below come from Level Index contractor benchmark research, not from a count of P&Ls. Each table states its own population, whether jobs, quote lines, or companies. The samples are cross-trade, not separate HVAC, plumbing, or electrical subsets.
Profit Margins: The Conventional Wisdom Is Wrong
Every blog on the internet says contractor gross margins should be 35-50%. That's directionally correct but hides the real story.
How to read your own job margins against the Level Index job distribution (1,747,089 completed jobs from 1,791 companies):
| Where your job falls | Job Gross Margin Range | What to check |
|---|---|---|
| Below P10 | Below 10.8% | Likely losing money after overhead. Check the price, the estimate, and whether change orders were billed. |
| P10 to P25 | 10.8-28.4% | Thin. Check labor hours against budget and material pricing on the job. |
| P25 to median | 28.4-44.3% | Common range. Compare by job type before changing prices. |
| Median to P75 | 44.3-60.2% | Strong, if every labor hour, material, and subcontractor bill is tagged to the job. |
| P75 to P90 | 60.2-75.1% | Confirm cost completeness before using these jobs as a pricing model. |
| Above P90 | Above 75.1% | Either very efficient or missing costs (more on this below). |
The key insight: the median job margin is higher than most people think, 44.3%, not 35%. Two cautions apply. First, a job margin excludes overhead and unallocated costs, so it is not your company P&L gross margin. Second, the distribution is weighted by job count, not by company or revenue.
Service agreement margins need the same care. Across 259 companies with at least $10K of agreement revenue, the Level Index median service agreement gross margin is 37.9%, with P25 at 20.5% and P10 at -30.4%. A meaningful share of companies lose money delivering maintenance, and they may not know it until agreement revenue and its delivery cost are separated.
I have reviewed agreement programs losing money before overhead, where the delivery cost was not being reviewed alongside agreement revenue. Keep the customer figures qualitative and separate that observation from this fictional illustration: a company has $1,000,000 of annual agreement revenue and spends $1,200,000 on the technician time, travel, and parts to deliver those visits. That is a -20% agreement gross margin, a $200,000 gross loss before overhead. At the other end, the Level Index P90 is 70.3%. Check that delivery costs are fully tagged before treating a margin that high as a model.
The Precise Percentile Breakdown
Across 1,747,089 completed jobs from 1,791 companies in the Level Index, measured per job as revenue minus actual cost, here's the full distribution:
| Percentile | Job Gross Margin |
|---|---|
| Bottom 10% (P10) | 10.8% |
| 25th percentile | 28.4% |
| Median | 44.3% |
| 75th percentile | 60.2% |
| Top 10% (P90) | 75.1% |
6.2% of jobs had negative margins. 16% were under 20% margin. But the median job, at 44.3%, sits above the "aim for 35%" advice, as long as the actual cost is visible. Because this is a job-weighted distribution, it does not say what share of companies clear 35%.
The Phantom Margin Problem
Here's something that should worry every contractor: when labor, materials, or subcontractor bills are not tagged to a job, that job shows a margin that looks great on paper and means nothing. How common this is varies by company, so measure it in your own system.
Operator check: export last quarter's completed jobs and count three things: (1) jobs with zero recorded cost, (2) jobs with revenue but no labor hours, and (3) jobs above 75% margin. Fictional example: if 120 of 400 completed jobs have no labor hours, 30% of your job margins are unreliable before you look at a single price.
If your average job margin looks too good to be true, it probably is. Read our guide on setting up job costing in QuickBooks before you trust those numbers.
The Collection Rate Gap
This is one cash-management metric I prioritize in a review.
Collection rate = total cash collected / total revenue billed. It sounds simple. It's devastating when you see the variance.
Level Index distribution, 464 contractors analyzed:
| Percentile | Collection Rate | What to check |
|---|---|---|
| P90 | 96.0% | Review contract-permitted progress billing, invoicing and follow-up, not presumed causes of the percentile |
| P75 | 92.7% | Retainage release requests and closeout documents |
| Median | 85.1% | Aging buckets, disputed invoices, and billing lag |
| P25 | 70.7% | Unbilled change orders, credits, and accounts over 90 days |
| P10 | 38.8% | Billing records, write-offs, and whether invoices match what customers agreed to |
Collection rate is a cash measure, not accrued revenue, and the gap is not all recoverable cash. Fictional illustration: a contractor bills $10,000,000 in a year and collects $8,510,000 in the same year, an 85.1% rate. The $1,490,000 gap includes December invoices that are not yet due, retainage the contract lets the customer hold until completion, credits and disputed amounts, and some true bad debt. Moving to 92.7% would mean $9,270,000 collected, or $760,000 more. Much of that is a one-time timing shift, not recurring profit.
An open AR balance needs the same care. In an individual commercial-contractor review, a substantial receivable balance made that timing problem visible; an open balance alone did not establish bad debt. The company figures are kept qualitative. Separate fictional arithmetic: a contractor billing $12,000,000 a year carries $4,000,000 in open receivables. That is about 122 days of billings ($4,000,000 / $12,000,000 x 365).
That balance is not "billed but never collected." Split it before acting: current invoices not yet due, retainage held under contract terms, 31-90 days, over 90 days, and disputed. Only the overdue and disputed buckets are a collection problem, and even those are rarely all recoverable. A collection rate target applies to that firm's billed and collected totals, not to the open balance. That's not a sales problem or a marketing problem. It's a cash flow management problem that takes more than transaction entry to solve.
Operator checks for the collection process:
- Run AR aging monthly by customer.
- List every retainage balance with its release condition.
- Read each contract for notice, lien, and prompt-payment deadlines. A contract or statutory deadline overrides any internal aging playbook, so calendar those dates first.
If you're not actively managing your collection process, you're leaving real money, money you already earned, in someone else's account.
Retainage is a big part of this problem, but it's not the only part. Slow invoicing and weak AR follow-up compound the damage.
Free benchmark review
See how your margins benchmark.
Start with a free conversation about your priorities. With agreed access to the relevant records, we compare your numbers with applicable benchmarks and identify what to review first.
Billing Speed: The Metric Nobody Tracks
Here's one that genuinely surprised me. Most contractors don't measure how many days pass between completing a job and sending the first invoice.
What I found:
- Some contractors invoice before the job is complete when contracts permit. They progress-bill on percentage of completion, so cash is flowing in while work is still happening. Negative billing days.
- The 1-day median mixes billing models, it includes the ~25% of companies who progress-bill (Level Index, 733 companies). Among contractors who invoice after completion, the median delay is 7 days. The slowest 10% of companies take 30 days or more.
- If you are above the 7-day post-completion median, you have room to tighten. Every day you wait is a day your cash is stuck.
One boiler-contractor review showed that useful combination: contract-permitted progress billing during the job, with an explicit closeout process afterward. That is one qualitative observation rather than proof that the process alone caused its cash result. The combination to test is progress billing (invoicing during the job) AND fast closeout. For reference, the Level Index median job closeout lag is 1.7 days, with P75 at 9.6 days and P90 at 35.8 days (n=555). This is the recorded financial-closeout status interval, not days to invoice or cash.
Fictional comparison: a contractor invoices 10 days after completion on 60-day payment terms with 10% retainage. If the customer pays on time, the 90% non-retainage portion arrives about 70 days after the work is done. If retainage is released 90 days after that, the 10% portion waits about 160 days, roughly half a year. Check your contract for the actual retainage release trigger, which may be substantial completion or final acceptance rather than a fixed number of days.
The fix is simple: invoice the same day the job closes. If you're on commercial projects, progress-bill monthly where the contract's billing schedule permits. If your field service software supports it, automate the invoice trigger on job completion.
Labor vs. Materials: Where Quoted Margin Sits
Across 2.2M+ quote line items in the Level Index, the benchmark file reports the following margin figures by quoted line type (described there as line-item medians, not dollar-weighted margins):
- Labor: 47.7% margin, the highest quoted margin of these four cost types
- Materials/parts: 31.5% margin, lower margin
- Equipment: 25.5% margin, lower margin, higher ticket
- Subcontractor: 23.6% margin, thinnest margin of all
These are margins on quoted price, not markups on cost. Fictional check: a part that costs $100 and sells for $146 carries a 46% markup and a margin of about 31.5% ($46 / $146).
The implication: labor lines have the highest reported quoted line-type margin in this analysis. That does not isolate a causal improvement from shifting company revenue mix, or certify realized service, maintenance or T&M margins.
This doesn't mean avoid equipment or subcontractor work. It means price it differently. And if your service work is labor-heavy while your installs are equipment-heavy, your service division may be subsidizing your install division. Check it with a division-level P&L before you chase that next big project.
Quote Conversion: 73.9% Is the Number to Beat
Most contractors don't track their quote-to-job conversion rate. The ones who do show massive variance.
In the Level Index (794 companies with at least 20 decided quotes), conversion is measured as won / (won + lost), excluding quotes still pending:
- P90: 90% conversion
- Median: 73.9%
- P25: 61%
Counted against all quotes issued, including quotes that never reach a decision, the median drops to 38.1%. Know which version you are tracking.
The gap between 60% and 90% conversion at the same volume is enormous. Fictional illustration: assume every quote is equal-sized, so both count-based and value-weighted win rates are 60% on $5M of decided quote value. Then just below the P25, you're winning $3M in work. At 90%, that's $4.5M, a $1.5M swing from the same quote volume. That is signed work, not recognized revenue or profit. Revenue depends on performance and accounting treatment, and winning more often has costs, such as faster follow-up, more estimator time, or lower prices.
The counterintuitive insight: a very high close rate might mean you're underpricing. If you're closing 95%+ and your margins are thin, test raising prices. A high close rate alone does not prove underpricing, since repeat customers and negotiated work also convert at high rates. You might close 80% at higher margins and make more money on less work.
Fictional check, assuming every won job is performed and recognized at the quoted price and cost: on $1,000,000 of decided quotes at a 30% margin, a 95% close rate yields $950,000 of revenue and $285,000 of gross profit. If prices go up 10% and the close rate falls to 80%, revenue is $880,000 and the cost of that work is $560,000, leaving $320,000 of gross profit.
The Service Agreement Upsell Gap
This is the most overlooked revenue lever I've seen.
Pull-through revenue = additional repair, replacement, and project revenue from service-agreement customers, divided by annual service-agreement revenue. It's a revenue ratio, not the share of visits or customers that buy more work.
Level Index distribution, 386 eligible companies:
| Percentile | Pull-Through % of SA Revenue | Implication |
|---|---|---|
| P90 | 93.4% | Agreement customers buy nearly as much follow-on work as the agreements themselves |
| P75 | 29.6% | Linked follow-on revenue equals 29.6% of agreement revenue; visit conversion is not measured |
| Median | 8.7% | Review linked follow-on revenue and agreement delivery cost separately |
| P25 | 1.5% | Linked follow-on revenue equals 1.5% of agreement revenue; verify customer/job linkage |
| P10 | 0.3% | Almost no follow-on revenue is traced to agreement customers |
I have seen agreement programs with material follow-on work and others with very little linked follow-on revenue. The contrast suggests a linkage and follow-up review; it does not identify technician behavior by itself. Separate fictional illustration: two companies each sell $500,000 of agreements. One records $150,000 of follow-on work from those customers, a 30% pull-through near the P75. The other records $10,000, or 2%. Same agreement revenue, very different financial outcome. First check that follow-on jobs are linked to the agreement customer in your system, because unlinked jobs make pull-through look lower than it is.
If your techs are doing maintenance visits and not generating pull-through revenue, you may be leaving a large amount on the table. Possible explanations include training, incentives, follow-up, equipment age, customer mix and job linkage. Check which apply before acting. Our deep dive on the add-on sales gap looks at pull-through in more detail and shows how SA book size affects your add-on conversion.
Five Controls I Check in Every Review
After reviewing these numbers, here is the pattern I look for. Treat it as an operator checklist, not a measured profile of the top 10%: the Level Index measures each metric separately, not how many companies do all five at once. In my reviews, these five controls are the operating design I look for:
-
Track job-level profitability consistently. Every direct job cost and relevant hour tagged consistently; corporate costs and nonjob time retain explicit separate categories. (Here's how to set it up)
-
Reconcile collection gaps and work toward a defensible target. A 92-96% range is an approximate reference span around the Level P75 of 92.7% and P90 of 96.0%, not a universal target. Check AR processes, invoicing speed, retainage tracking and the applicable state prompt-payment laws.
-
Invoice eligible work promptly. Use same-day or progress billing when contract terms and completion review permit; investigate completed work without a linked invoice.
-
Price for labor, not just materials. Compare the business's actual agreed labor rate with its loaded labor cost. For context, the Level Index median company average billed labor rate is $79/hr (1,770 companies). Some companies enter wages or loaded cost in that field, so it is not a comparable selling price or market-positioning benchmark. Use actual comparable local selling prices for that decision. Labor carries 47.7% margin on quoted line items.
-
Review linked follow-on revenue from maintenance. Compare the business's defined pull-through ratio with the reported 8.7% median and P75 of 29.6% of agreement revenue, then check job linkage and customer mix.
I use these five checks to locate the next operating decision, not to classify owners into measured wealth or survival tiers. A contractor missing one can still perform well; the question is whether the missing control hides a material exposure in that business.
When These Metrics Don't Apply
A few honest caveats:
Residential-only contractors operate differently from commercial. Payment cycles are faster (no retainage, usually), job sizes are smaller, and the collection problem looks different. The Level Index samples are not split by residential and commercial work, so check whether your mix matches before leaning on any single percentile.
Under $3M in revenue, the overhead math changes. A solo operator or 3-person crew may not need a formal overhead-allocation system or a formal monthly review meeting, though a monthly P&L and cash review still helps. Complexity, cash exposure and the decisions the owner cannot answer determine whether a fractional CFO over a bookkeeper is useful. Revenue around $3-5M is a screening range, not a rule.
Regional variation matters. Bill rates differ by market, and the Level Index rate data is not split by region, so compare against local competitors' rates. The margins may be similar, but the absolute dollars aren't. Always benchmark against your market, not national averages.
New companies without 12+ months of data should be cautious about seasonality and small samples. Interim job and cash controls can still be meaningful. Focus on building clean financial infrastructure first, then benchmark once you have enough data to be useful.
The Bottom Line
Most contractors don't lack revenue. They lack visibility into where the money goes after it comes in. Missing financial infrastructure is a recurring problem I look for because an owner can act on it. The benchmarks above do not measure wealth or payroll-stress outcomes, or establish a single cause of either. We've since gone deeper on several of these findings: jobs with hours logged that were never invoiced, quotes created but never sent to a customer, customer concentration risk, where the median contractor gets 31% of revenue from its largest customer (959 companies with over $100K revenue), and the bill rate vs. wage gap by skill level which shows descriptive rate-card values and the matched revenue/cost checks needed before ranking role profitability.
If any of these benchmarks made you uncomfortable, if your collection rate is below 85%, if you don't know your billing speed, if your margins look suspiciously high because costs aren't tracked, that's the signal. The data is in your system. You just need someone to structure it.
Q: Can Level help me benchmark my business against these numbers? A: Yes. We review authorized QuickBooks and field-service data (such as ServiceTitan, Jobber or Housecall Pro) through the available connector, API or customer-provided export. The audit checks job margins, collection rate, billing speed and overhead allocation where the records support them; missing fields are identified rather than assumed. The first audit is free. We'll show you exactly where you stand before you pay anything.
Q: Where does this data come from? A: Two sources, kept separate. The percentile tables come from Level Index contractor benchmark research, and each states its own population:
- Job margin: 1,747,089 completed jobs from 1,791 companies
- Collection rate: 464 contractors
- Billing speed: 733 companies
- Quote conversion: 794 companies
- Pull-through: 386 companies
- Margin by cost type: 2.2M+ quote line items
The interpretation comes from my own experience: private equity and investment banking work evaluating service-business acquisitions, four years at BuildOps building financial tooling used by 1,000+ commercial contractors, and now Level. The samples are cross-trade, not separate HVAC, plumbing, electrical, or mechanical subsets.
Q: How do I know if I need a CFO or just a better bookkeeper? A: If your cash flow surprises you or you can't answer "which jobs make money?" with specific data, you may need controller or CFO support beyond a bookkeeper-only setup. Revenue above about $3M is a rough screening marker, not a hiring trigger. Read our full breakdown: When Does a Contractor Need a CFO vs. a Bookkeeper?
Get the next one
Want next week's benchmark in your inbox?
One email a week. Real numbers from 2,200+ contractors in the research universe. No fluff. Unsubscribe anytime.
Related reads
Benchmarks
Older Building-Age Comparison: Office Replacement Work Nearly Doubles, Routine Revenue Stays Flat
An older research comparison (original version and sample not confirmed): older office stock bills similar routine mechanical service; it bills more replacement. The split shows a 1.85x office comparison (2.31x in healthcare), despite a flat pooled first pass across mixed building types. Age earns a multiplier in only 3 of 12 segments and inverts in retail. The cut lists 25,912 buildings; the current office comparison is 1.74x.
Benchmarks
National Review Benchmarks Misrank A Third Of Contractors
The median HVAC shop has 26 reviews in California and 4 in Arkansas. Ranked nationally, 36.7% of HVAC contractors land more than 10 percentile points from where they actually sit in their own market.
Benchmarks
Square Footage Explains 9% Of What A Building Spends On Mechanical Service
Commonly quoted per-square-foot figures span a 14x range. We measured it: the published floor-area fit has r-squared 0.093. Learn when a building-type and size-band comparison is more useful than a per-foot rate.

About the author
Sam Yang
Founder & CEO
Founder of Level, the always-on finance team for contractors, service businesses, and ecommerce brands. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses, $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. The Level founding team's analysis of 2,200+ contractors ($13.25B in job revenue) across operating, private-equity, and CFO roles anchors the Level Index benchmark research.
LinkedIn