2,200+ contractors benchmarked. How do your margins stack up? See where you stand →
Level
Construction Accounting

How to Read Your P&L as a Contractor — A Line-by-Line Guide

Sam Young·2026-05-06·12 minute read
How to Read Your P&L as a Contractor — Level CFO

Most Contractors Manage the Wrong Number

Tell me if this sounds familiar: you look at your bank balance to decide if business is good. When the balance is high, things feel fine. When it's low, you push to close more jobs. You look at your P&L once a year when the CPA prepares it — and mostly to find out if you owe taxes.

This is the default operating mode for the majority of contractors I've worked with. And it's a significant problem, because the bank balance is the worst possible indicator of business health.

The bank balance reflects cash timing — deposits from last month's completions, payments for this month's materials, the payroll you ran last Friday. It doesn't tell you whether the jobs you completed were profitable. It doesn't tell you whether you're covering overhead. It doesn't tell you whether you made money last quarter.

The P&L tells you all of those things. But only if you know how to read it.

I'm going to walk you through a realistic $5M HVAC contractor's P&L, line by line, with the numbers I actually see in well-run operations. I'll flag the three things most contractors get wrong that cause the P&L to lie to them — and what healthy ranges look like at each line.

The Structure of a Contractor P&L

A contractor's income statement follows a simple cascade: Revenue minus direct costs gives you Gross Profit. Gross Profit minus Overhead gives you Net Profit (before taxes). Everything hangs on understanding what belongs where and how to interpret the resulting percentages.

Revenue
  - Cost of Goods Sold (Direct Costs)
= Gross Profit
  - Overhead (Operating Expenses)
= Net Profit (EBIT)
  - Interest, Taxes
= Net Income

Simple in structure. Complicated in practice, because how you categorize costs determines every percentage — and most contractors categorize them wrong.

Line-by-Line: The $5M HVAC Contractor

Let me use a realistic composite: Summit HVAC, $5.2M in revenue, HVAC service and install mix, 12 field techs, 4 office staff, owner-operated.

Revenue: $5,200,000 (100%)

Revenue should be broken down by division. This is the first thing I look for when reviewing a contractor P&L, and it's missing on most of them.

Revenue CategorySummit HVAC% of Revenue
Service & Repair$1,820,00035%
Maintenance Agreements$520,00010%
Install / Replacement$2,340,00045%
New Construction$520,00010%
Total Revenue$5,200,000100%

Why this breakdown matters: Service and maintenance revenue runs at different margins than install work. As I've written elsewhere, labor generates about 48% gross margins while materials run closer to 30%. A contractor who can only see total revenue has no idea which part of their business is carrying the other.

Summit's 45% service/maintenance mix is healthy. A shop that's 90% install and 10% service runs fundamentally different economics — not necessarily worse, but different enough that the overall gross margin percentage means something different.

Red flag: If your P&L shows a single "Revenue" line with no breakdown by service type, your accounting setup needs work before anything else.

Cost of Goods Sold: $2,964,000 (57% of Revenue)

COGS is everything that goes directly into delivering the job. Also called "direct costs" or "job costs." This is where most contractor P&Ls go wrong.

COGS CategorySummit HVAC% of RevenueNotes
Labor — Field Techs$936,00018%Loaded: wages + payroll taxes + benefits
Materials$1,144,00022%Parts and materials sold to customers
Equipment$520,00010%Major equipment (HVAC units, etc.)
Subcontractors$156,0003%Electrical or sheet metal subs
Vehicle Operating Costs$156,0003%Gas, maintenance, repairs for field fleet
Other Direct Costs$52,0001%Permits, inspections, job-specific items
Total COGS$2,964,00057%

What "loaded" means for labor: Many contractors enter only wages in labor COGS. The correct approach includes the full loaded cost: gross wages + employer payroll taxes (7.65% FICA) + workers' comp insurance + health benefits allocated to field staff + any employer retirement match. An HVAC tech making $60,000 in wages typically costs $75,000-$85,000 loaded.

If you're only expensing wages in COGS and running benefits and workers' comp through overhead, your gross margin looks better than it is — and your overhead looks inflated. I see this on at least a third of the P&Ls I review.

Vehicle costs: Service vehicles used exclusively by field techs belong in COGS, not overhead. A van that's on the road delivering service is a direct cost of doing that service. A shop manager's pickup is overhead. The allocation isn't always clean, but the principle is clear: if it touches the job, it's direct.

Gross Profit: $2,236,000 (43% of Revenue)

This is the number that tells you whether your pricing and job execution are working.

Summit at 43% gross margin is right at the median for well-run contractors in our dataset. The range for healthy operations is 40-50%. Below 35% is warning territory. Above 55% is either genuinely excellent margins or an accounting problem (costs being misclassified as overhead rather than COGS).

Gross Margin RangeWhat It Signals
Below 30%Pricing problem or untracked direct costs. Barely covering direct labor.
30-38%Tight. Manageable with lean overhead, but no room for error.
38-48%Healthy range for most commercial/service contractors
48-58%Strong margins — either excellent pricing, labor efficiency, or service-heavy mix
Above 58%Verify costs are classified correctly before celebrating

The gross margin is a pricing signal, not a cost signal. If your gross margin is below 38%, the first question isn't "how do I cut costs?" — it's "are my prices right?" Cutting direct costs by 5% might move the needle 2-3 percentage points. Repricing your service work to reflect actual labor cost might move it 10. Read the post on phantom margins if your gross margin looks healthy but net profit doesn't — that's usually a job-costing classification problem.

Overhead (Operating Expenses): $910,000 (17.5% of Revenue)

Overhead is everything that keeps the business running but isn't tied to a specific job. Getting this right is the second most common error on contractor P&Ls.

Overhead CategorySummit HVAC% of RevenueHealthy Range
Owner Compensation$180,0003.5%3-8% (varies by revenue)
Office Staff Salaries$220,0004.2%3-6%
Rent / Facilities$78,0001.5%1-3%
Marketing & Advertising$104,0002.0%1-4%
Insurance (General Liability, etc.)$52,0001.0%0.5-2%
Accounting & Legal$26,0000.5%0.3-1%
Software & Technology$26,0000.5%0.3-0.8%
Fleet (Non-Field Vehicles)$26,0000.5%0.3-0.8%
Depreciation$78,0001.5%1-3%
Miscellaneous$120,0002.3%1-3%
Total Overhead$910,00017.5%12-22%

The owner compensation issue: On many contractor P&Ls, the owner pays themselves very little — or nothing — through payroll, instead taking distributions. This makes the P&L look profitable in a way that obscures what a buyer or banker sees. When reviewing financials for valuation purposes, the first thing any PE firm or bank does is normalize owner compensation to market rate (typically $80,000-$150,000 for a $5M operator). Get ahead of this: pay yourself a reasonable market salary through payroll and track distributions separately. Your P&L will look more honest, and your financial profile for bonding or financing will be cleaner.

The most common overhead bloat: Depreciation is often misunderstood or inconsistently applied. If you use Section 179 to expense equipment immediately, depreciation hits income in year one. If you depreciate over time, it shows as a smaller expense spread across multiple years. Neither is wrong, but you need to understand what you're looking at. Non-cash depreciation doesn't affect cash flow — which is why EBITDA (earnings before interest, taxes, depreciation, and amortization) is often a more useful operating metric than net profit for growing businesses with heavy equipment.

Net Profit: $1,326,000 (25.5% of Revenue)

Wait — 25.5% net margin? That's way above the 8-12% target.

Here's where I need to flag something. The 8-12% net profit target is after paying the owner a full market-rate salary. If the owner at Summit HVAC is paying himself $180,000 (included in overhead above), the 25.5% net margin is real and appropriate.

But if the owner is paying himself $60,000 and taking $300,000+ in distributions not reflected in the P&L — which is common — the "real" net margin after normalizing owner comp is considerably lower.

Normalized Net Profit Scenarios for Summit HVAC ($5.2M):

ScenarioReported NetNormalizationAdjusted NetAdjusted %
Owner paid $180K (market rate)$1,326,000None needed$1,326,00025.5%
Owner paid $60K (underpaid)$1,446,000Add $120K comp$1,326,00025.5%
Owner paid $0 (draws only)$1,506,000Add $180K comp$1,326,00025.5%

The normalized number is the same. That's the point. But if you're looking at your P&L and seeing 30% net margin while paying yourself $40,000, you're not reading it right — you're not actually netting 30%.

Healthy net profit ranges after full owner comp:

Net Profit %Interpretation
Below 5%Thin. One bad quarter creates a loss.
5-8%Acceptable but fragile. Limited capacity to invest in growth.
8-12%Target range for a well-run $3-10M contractor
12-18%Strong. Either excellent operations or a favorable market.
Above 20%Exceptional — either a niche with pricing power or verify the numbers

If you're netting below 8% on normalized income, the first question to ask is overhead structure. Not pricing, not costs — overhead. At $5M, overhead above 22% is the most common culprit.

The Three Things Contractors Get Wrong on Their P&L

1. Mixing Direct Costs with Overhead

This is the most common structural error. I see it on the majority of contractor P&Ls.

Examples of costs that belong in COGS but end up in overhead:

  • Workers' comp insurance for field techs (it's a direct cost of employing those techs)
  • Service vehicle gas and maintenance (direct cost of field operations)
  • Tools and small equipment used on jobs (direct job cost)
  • Health benefits for field staff (should be allocated by headcount between COGS and overhead)

When these costs live in overhead, gross margin looks inflated. Overhead looks bloated. The gross margin percentage becomes useless as a pricing benchmark because it doesn't reflect the actual cost of delivering work.

The test: could you trace this cost to a specific job? If yes, it's COGS. If no, it's overhead.

2. Lumping Service and Install Revenue Together

A $5M contractor doing $3.5M in service/maintenance and $1.5M in install work has fundamentally different economics than a $5M contractor doing the reverse. The gross margins are different, the labor intensity is different, the cash flow timing is different.

If your P&L shows one revenue line and one COGS line, you have no visibility into which part of your business is profitable. Job costing by division is the fix — set up revenue and COGS subcategories that match your service lines, not just "Revenue" and "Labor/Materials."

3. Ignoring WIP Adjustments

This is the accounting concept that trips up contractors more than any other.

Work In Progress (WIP) accounting matches revenue to percentage of completion. If you're halfway through a $100,000 job and have spent $30,000 in costs, your P&L should reflect $50,000 in revenue and $30,000 in costs — even if you haven't billed $50,000 yet. This is the percentage-of-completion method, required under GAAP for contractors and common sense for cash flow management.

Most small contractors use the completed contract method — they recognize revenue only when the job is complete (or billed). The problem: if you finish five $200,000 jobs in December and zero in January, your December P&L looks like a banner month and January looks dismal. The volatility isn't real. It's an accounting artifact.

Why this matters for reading your P&L: If your P&L swings dramatically month to month, WIP timing is often the culprit. Revenue recognized on completed contracts in month X might represent work performed across months X-2 through X. A monthly P&L without WIP adjustment is showing you cash flow patterns, not business performance.

For contractors doing over $3M in project work, a monthly WIP schedule is not optional — it's the only way to know whether you're actually ahead of schedule and budget or running behind. This is separate from invoice timing; it's about when you earned the revenue versus when you recognized it.

The Healthy Ranges Table

Use this as a quick sanity check against your own P&L. These percentages are based on our benchmarking data from 2,200+ contractor financial reviews.

P&L LineAs % of RevenueWhat to Do If You're Outside This
Gross Margin40-50%Below: reprice or re-classify costs. Above 55%: verify COGS is complete
Field Labor (COGS)15-25%High: utilization problem or rate issue. Low: verify loaded cost is complete
Materials (COGS)18-35%Varies by install-heavy vs service-heavy mix
Total COGS50-62%Reverse of gross margin target
Owner Compensation3-8%Below: normalize before benchmarking. Above 10%: may be over-staffed at top
Office Staff3-6%Above 8%: admin is too large relative to revenue
Rent/Facilities1-3%Above 4%: shop may be oversized
Marketing1-4%Below 1% with growth ambitions: underinvesting
Total Overhead12-20%Above 22%: overhead is the profit killer
Net Profit (normalized)8-12%Below 5%: business in distress. Above 15%: strong

Reading the P&L in Context: Three Questions to Ask Every Month

Once your P&L structure is right — COGS separated from overhead, revenue split by division, WIP adjustments done — you should be able to answer three questions from a monthly read:

1. Are my job margins holding? Compare this month's gross margin to last month and to the same month last year. If it's declining, you have a pricing, labor cost, or material cost issue. Track it before it becomes a cash flow crisis.

2. Is overhead growing faster than revenue? Overhead should grow slower than revenue as you scale. If you're at 20% overhead at $3M and still at 20% overhead at $6M, you're not getting leverage. You should be at 15-17% — the fixed overhead base doesn't double just because revenue doubles.

3. Is normalized net profit tracking toward target? Not just whether the bank account is comfortable — whether the business, on a normalized basis, is generating 8-12% net profit. If it's consistently below 8%, you have a structural problem that won't self-correct.

These questions take 20 minutes per month if the P&L is structured correctly. They're impossible to answer if the P&L is one revenue line and a list of undifferentiated expenses.


The Bottom Line

A contractor's P&L is a simple document made complicated by inconsistent accounting practices. The structure is straightforward: Revenue minus direct costs equals Gross Profit, minus Overhead equals Net Profit. The complexity is in correctly classifying costs, separating revenue by service line, and applying WIP adjustments that make the numbers reflect business performance rather than cash timing.

The benchmarks to remember: 40-45% gross margin for a well-run mixed-service contractor, 12-20% total overhead as a percentage of revenue, 8-12% normalized net profit. If your numbers look dramatically different from these, the first question isn't "how do I fix it?" — it's "is my P&L structured correctly?"

Most contractors who think they have a profitability problem actually have an accounting problem. Fix the P&L structure first. Then you'll know what the real problem is.

Q: My QuickBooks P&L doesn't have all these categories. How do I restructure it? A: You need to rebuild your chart of accounts. This isn't technically complex, but it requires planning before you start — changing account structure mid-year scrambles year-over-year comparisons. The approach: define your revenue categories (service, maintenance, install, new construction), define your COGS categories (field labor loaded, materials, equipment, subs, vehicles, permits), define overhead by function. Then map every existing transaction to the new categories. We do this cleanup as part of our onboarding at Level — it's typically a 4-6 hour project that transforms what clients can see in their financials. Also read our guide on when you've outgrown QuickBooks — sometimes the chart of accounts problem is a symptom of needing a different system.

Q: How often should I be looking at my P&L? A: Monthly, at minimum. Ideally, a management dashboard pulls weekly. The monthly close should happen within 10 business days of month end — if you're getting your P&L in week 3 of the following month, you're making decisions on 6-week-old data. At $5M+ in revenue, you've crossed the threshold where a fractional CFO makes sense partly because someone needs to be accountable for producing and reviewing this monthly — not just at tax time.

Q: My gross margin looks fine but I never seem to have cash. What's going on? A: This is usually one of three things: WIP timing (revenue recognized on completed jobs but costs were incurred earlier, creating cash gaps), retainage (completed work where 5-10% is withheld and hasn't been collected), or AR lag (you're billing fast but not collecting fast — your collection rate may be the issue). A healthy gross margin with a cash flow problem is almost always a working capital management issue, not a profitability issue. The P&L shows you earned the profit. The balance sheet shows you where it went.

About the author

Sam Young

Founder of Level. Former PE investor and investment banker. Built AI-powered accounting products at BuildOps — the largest field management software for commercial contractors — benchmarking financial data across 2,200+ contractors in HVAC, plumbing, electrical, and mechanical trades. Operations analytics work with Astra Service Partners, CIVC Partners (American Refrigeration), and other PE-backed portfolios in the trades. Co-founded Overline, where his team has analyzed over $1B in real estate assets. Stanford MBA.

LinkedIn

Ready to see where your money is going?

Get a free job profitability audit.

Get Your Free Audit