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

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 a common default operating mode for contractors. And it's a significant problem, because the bank balance alone is a poor indicator of job profitability.
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 fictional $5.2M HVAC contractor's P&L, line by line, with illustrative numbers chosen to show how each line works. I'll flag three accounting mistakes that can make a P&L misleading, 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 misclassification changes both job margin and period overhead.
Line-by-Line: The $5M HVAC Contractor
Let me use a fictional example, not a client: Summit HVAC, $5.2M in revenue, HVAC service and install mix, 12 field techs, 4 office staff, owner-operated. Summit is deliberately lean on overhead, which we'll test in the Net Profit section.
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 is a classification I check explicitly.
| Revenue Category | Summit HVAC | % of Revenue |
|---|---|---|
| Service & Repair | $1,820,000 | 35% |
| Maintenance Agreements | $520,000 | 10% |
| Install / Replacement | $2,340,000 | 45% |
| New Construction | $520,000 | 10% |
| Total Revenue | $5,200,000 | 100% |
Why this breakdown matters: Service and maintenance revenue runs at different margins than install work. As I've written elsewhere, labor quote lines carry about 48% gross margin while materials carry about 32% on quoted work (Level Index: 47.7% labor and 31.5% materials quote-line gross margin across 2.2M+ quote line items, cross-trade, not an HVAC subset and not a P&L division margin). 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 Category | Summit HVAC | % of Revenue | Notes |
|---|---|---|---|
| Labor, Field Techs | $936,000 | 18% | Loaded: wages + payroll taxes + benefits |
| Materials | $1,144,000 | 22% | Parts and materials sold to customers |
| Equipment | $520,000 | 10% | Major equipment (HVAC units, etc.) |
| Subcontractors | $156,000 | 3% | Electrical or sheet metal subs |
| Vehicle Operating Costs | $156,000 | 3% | Gas, maintenance, repairs for field fleet |
| Other Direct Costs | $52,000 | 1% | Permits, inspections, job-specific items |
| Total COGS | $2,964,000 | 57% |
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. As an illustrative planning assumption, an HVAC tech making $60,000 in wages might cost $75,000-$85,000 loaded, depending on your workers' comp rate, benefits and state taxes. Summit's $936,000 across 12 techs works out to $78,000 each, inside that range.
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. This is a common classification error, and it's worth checking before you trust any margin comparison.
Vehicle costs: Under a consistent delivery-cost policy, allocate field-fleet operating costs to COGS and corporate-use vehicle costs to overhead. Shared vehicles and field-supervision costs need a documented allocation driver, such as actual use or crew hours. A cost can belong in delivery COGS without being traceable to one job; compare margins only when those policies match.
Gross Profit: $2,236,000 (43% of Revenue)
This is the number that tells you whether your pricing and job execution are working.
Summit's 43% gross margin is a fictional figure. For outside context, the Level Index median job-level gross margin is 44.3% (per completed job, across 1,747,089 jobs from 1,791 companies, cross-trade). That is a per-job measure, not a company P&L gross margin and not an HVAC subset, so treat it as a rough comparison only. As an illustrative planning range for a service-heavy mixed shop, 40-50% is a workable band. 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 Range (illustrative) | What It Signals |
|---|---|
| Below 30% | Pricing problem or untracked direct costs. Gross profit may barely cover overhead. |
| 30-40% | Tight. Manageable with lean overhead, but no room for error. |
| 40-50% | Illustrative healthy range for service-heavy mixed contractors; commercial project work often runs lower |
| 50-55% | Strong margins, either excellent pricing, labor efficiency, or service-heavy mix |
| Above 55% | Verify costs are classified correctly before celebrating |
Gross margin reflects pricing, execution, direct-cost capture and allocation. If your gross margin is below 40%, 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 to reflect actual labor cost usually moves it more: on Summit, a 10% price increase on all work with the same costs takes gross margin from 43% to about 48% ($2,964,000 of COGS on $5,720,000 of revenue), assuming no lost volume. 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 Category | Summit HVAC | % of Revenue | Illustrative Range |
|---|---|---|---|
| Owner Compensation | $180,000 | 3.5% | 3-8% (varies by revenue) |
| Office Staff Salaries | $220,000 | 4.2% | 3-6% |
| Rent / Facilities | $78,000 | 1.5% | 1-3% |
| Marketing & Advertising | $104,000 | 2.0% | 1-4% |
| Insurance (General Liability, etc.) | $52,000 | 1.0% | 0.5-2% |
| Accounting & Legal | $26,000 | 0.5% | 0.3-1% |
| Software & Technology | $26,000 | 0.5% | 0.3-0.8% |
| Fleet (Non-Field Vehicles) | $26,000 | 0.5% | 0.3-0.8% |
| Depreciation | $78,000 | 1.5% | 1-3% |
| Miscellaneous | $120,000 | 2.3% | 1-3% |
| Total Overhead | $910,000 | 17.5% | Line ranges sum to about 11-32%; read against gross margin (see Net Profit) |
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 or lending purposes, buyers and banks typically normalize owner compensation to market rate, meaning what it would cost to hire someone to do the owner's job. Get a local compensation estimate for the roles you actually fill; in this fictional example we assume Summit's market rate is $180,000 because the owner runs both operations and sales. 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. Section 179 (an election) and bonus depreciation (which applies unless you elect out) are tax rules: your tax return may expense equipment in year one while your book P&L depreciates it over its useful life, while tax-basis books may follow the tax return. A GAAP book P&L requires its own depreciation policy, but you need to know which version you're looking at before comparing years. Book depreciation is a noncash charge in the period. Equipment purchases, debt principal and any tax-depreciation benefit still affect cash. EBITDA (earnings before interest, taxes, depreciation, and amortization) helps compare operating earnings on a consistent basis, but it cannot replace a cash-flow forecast for an equipment-heavy business.
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 planning range is after paying the owner a full market-rate salary. Summit already pays the owner an assumed market rate of $180,000 (included in overhead above), so owner pay does not explain the gap. The arithmetic does: net is gross margin minus overhead, and 43% minus 17.5% is 25.5%. A 25.5% normalized net is in this page's own 'verify the numbers' band, so treat it as a test case, not a target. Before trusting a number like this on your own P&L, check that overhead is complete (service managers, dispatchers, CSRs, warehouse, training, utilities, bad debt) and that no direct costs are missing from COGS. If Summit's overhead were 33% instead of 17.5%, net would be 10%, inside the planning range.
If the owner is paid $60,000 through payroll and takes the rest as distributions, the distributions do not appear on the P&L. With an illustrative $180,000 replacement salary, normalized profit is $120,000 below reported profit. The distribution itself is not an additional expense.
Normalized Net Profit Scenarios for Summit HVAC ($5.2M):
| Scenario | Reported Net | Normalization | Adjusted Net | Adjusted % |
|---|---|---|---|---|
| Owner paid $180K (market rate) | $1,326,000 | None needed | $1,326,000 | 25.5% |
| Owner paid $60K (underpaid) | $1,446,000 | Add $120K comp | $1,326,000 | 25.5% |
| Owner paid $0 (draws only) | $1,506,000 | Add $180K comp | $1,326,000 | 25.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%.
Illustrative net profit planning ranges after full owner comp (not measured Level data):
| 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-20% | Strong under this illustrative planning classification; confirm cost completeness and normalize owner compensation. |
| 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. Start with overhead, then check pricing if gross margin is also below the planning band. At a 40% gross margin, overhead above 32% pushes normalized net below 8%; at 45%, the line is 37%.
Free benchmark review
See whether your books are benchmark-ready.
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.
The Three Things Contractors Get Wrong on Their P&L
1. Mixing Direct Costs with Overhead
This is a common structural error and the first thing to check.
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: does the cost rise and fall with delivering field work, either traceable to a specific job or reasonably allocable to field labor and jobs? If yes, it's COGS, and allocating it (for example workers' comp by field payroll, fuel by truck) is acceptable. If it would exist with no field work happening, 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 how much of the job is done. If a $100,000 contract has an estimated total cost of $60,000 and you've incurred $30,000, the job is 50% complete on a cost-to-cost basis ($30,000 / $60,000), so your P&L should reflect $50,000 in revenue and $30,000 in costs, even if you haven't billed $50,000 yet. Under current GAAP (ASC 606), revenue on contracts that meet the over-time criteria, which most construction contracts do, is recognized as the work progresses, and contractors commonly measure progress with this cost-to-cost input method. Many people still call it percentage-of-completion, the label from the older ASC 605-35 guidance. Tax is a separate question: smaller contractors that meet the IRS small-contractor exception (for 2026, average annual gross receipts at or under $32M under Rev. Proc. 2025-32, with three-year averaging and aggregation rules, for contracts expected to finish within two years) may be able to use the completed-contract method for tax. Confirm both your book and tax methods with your CPA, and keep the cost-to-cost view for managing the business either way.
Many small contractors effectively use the completed contract method on their books, recognizing 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 the applicable WIP adjustment can reflect completion and billing timing rather than the margin on work performed that month. It is not itself a cash-flow statement.
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 are illustrative planning ranges for a mixed-service contractor, not measured Level benchmarks; no sample size stands behind them, and they are not HVAC-specific measured data. Read gross margin, overhead and net together, because net is gross margin minus overhead.
| P&L Line | As % of Revenue | What to Do If You're Outside This |
|---|---|---|
| Gross Margin | 40-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 COGS | 50-60% | Reverse of the 40-50% gross margin range |
| Owner Compensation | 3-8% | Below: normalize before benchmarking. Above 10%: may be over-staffed at top |
| Office Staff | 3-6% | Above 8%: admin is too large relative to revenue |
| Rent/Facilities | 1-3% | Above 4%: shop may be oversized |
| Marketing | 1-4% | Below 1% with growth ambitions: underinvesting |
| Total Overhead | Gross margin minus 8-12% (28-32% at a 40% gross margin, 38-42% at 50%) | Above that band: overhead is the profit killer. Well below it (for example 12-20% with a 40-50% gross margin, which implies 20-38% net): verify overhead is complete |
| Net Profit (normalized) | 8-12% | Below 5%: thin; one bad quarter can create a loss. Above 12%: strong under this planning classification |
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. As an illustration, if overhead grows 50-70% while revenue doubles, the ratio falls from 20% to 15-17%, because the fixed 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 completion and billing timing.
The illustrative planning ranges to remember: 40-50% gross margin for a mixed-service contractor, overhead sized so that gross margin minus overhead lands at 8-12% normalized net (for example 28-32% overhead at a 40% gross margin), and 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?"
Before diagnosing a profitability problem, check whether the accounting has matched revenue and all costs to the correct job and period. 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. Level can help with this cleanup; the time it takes depends on transaction volume and how many accounts need remapping. 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. Around $5M+ in revenue, a fractional CFO can be useful depending on reporting complexity 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: payments before billing or collection (costs paid during a job before invoice receipts fund them; WIP recognition itself does not create a cash outflow), 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 often a working capital issue (WIP timing, retainage, AR), though debt principal, distributions, capex and taxes can also absorb cash. The P&L shows you earned the profit. The balance sheet shows you where it went.
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
Construction Accounting
Contractor Accounting Software: Prove WIP and Payroll
Compare contractor accounting software with a WIP and certified payroll demonstration. Verify editions, source records, partner handoffs and report scope.
Construction Accounting
BuildOps + Sage Intacct Month-End Close: Why the Numbers Still Do Not Tie Out
Why BuildOps + Sage Intacct month-end close still breaks when master records, dimensions, budgets, WIP, and invoice lifecycle data drift across systems.
Construction Accounting
When Your Contracting Business Outgrows QuickBooks
The 7 signs your contracting business has outgrown QuickBooks. Revenue-stage guide for contractors from $1M to $10M+. What to do before switching software.

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