Contractor Finance · Last Updated November 13, 2026

Contractor Profit Margins: Gross vs. Net and Markup vs. Margin

Contractor profit margins hinge on gross vs. net and markup vs. margin math. Learn how job-level margins leak and how to protect the bottom line.

Roofing crew installing shingles on a house
Back to contractor finance →

Quick Summary

Contractor profit margins are measured at two levels: gross margin on each job after direct costs, and net margin for the whole company after overhead and interest. How taxes show up depends on your entity. Confusing markup with margin costs you money, since a 20% markup yields only a 16.7% margin. Bid on margin, not markup.

  • Gross margin covers job revenue minus direct costs, before overhead.
  • Net margin is what remains after overhead and other company-level costs.
  • Markup equals margin divided by (1 minus margin). A 20% margin needs a 25% markup.
  • Unbilled change orders and misposted labor are common margin leaks.
  • Forecast cash separately from profit. Retainage and slow payers can leave a profitable job short on cash.

Table of Contents

Why Contractor Profit Margins Look Fine on Jobs but Not in the Bank

Contractor profit margins are the difference between what a job brings in and what it truly costs, measured at two levels: the single job and the whole company. Most owners track only the first, which is why a full schedule can still produce an empty bank account.

A bid sheet can show a healthy spread between price and cost. Then overhead, taxes, and slow-paying invoices arrive, and the bank balance can tell a different story.

Below, we break down the numbers that decide whether you actually make money, with a labeled hypothetical, the markup versus margin math, and where margins leak in the books.

Gross Profit Margin for Contractors: The Job-Level Number

Gross profit margin for contractors is the percentage left from a job after direct costs, before overhead. It answers one question: did this specific job make money before fixed expenses?

The formula is simple:

  • Gross profit = Job revenue minus direct job costs
  • Gross margin % = Gross profit divided by job revenue, times 100

That job-level figure only works if your job costing is accurate. If labor hours, materials, and subcontractor invoices land in the wrong bucket, the margin you calculate is fiction. For a practical walkthrough, see our guide on why contractors need job costing.

What Goes Into Cost of Goods Sold on a Construction Job

Cost of goods sold on a construction job is every cost tied directly to delivering that job, not your total expenses.

Direct costs typically include:

  • Field labor and payroll burden for that job
  • Materials and equipment purchased for the work
  • Subcontractor invoices

Overhead does not belong here. Office rent and owner salary are company costs, not job costs. Some items, such as vehicle costs, job-specific insurance, and bonding, can be charged to jobs depending on your allocation method. Pick a method, apply it consistently, and confirm it with your CPA.

Net Profit Margin for Contractors: The Company-Level Number

Net profit margin for contractors is what remains after every company cost, including overhead and interest. Gross margin tells you if jobs are priced well. Net margin tells you if the business works.

The formula:

  • Net profit = Total revenue minus all costs, including overhead and interest
  • Net margin % = Net profit divided by total revenue, times 100

Two contractors can run identical gross margins and end up with very different net margins. The difference is overhead and how well they control it.

How income taxes appear depends on your entity. For many LLCs and S corporations, the owner pays income tax personally, so it does not show on the company P&L. Ask your CPA how to treat it in your reports.

Overhead Costs That Quietly Eat Gross Margin

Overhead costs are the fixed and variable expenses that keep the doors open but do not attach to any single job.

Watch these line items:

  • Office and shop rent
  • Owner and admin salaries
  • Insurance and bonding not charged to specific jobs

The problem is not that overhead exists. It is that overhead grows quietly while bids stay priced as if it were still last year. If your gross margin covers job costs but not a growing overhead load, your net margin shrinks even as revenue climbs.

Contractor Markup vs. Margin: The Math That Costs You Money

Contractor markup versus margin is the most expensive math mistake in the trades. Markup is applied to cost. Margin is measured against price.

Here is a labeled hypothetical to show the gap. These are illustrative numbers, not benchmarks.

Hypothetical: A job costs $10,000 in direct costs. You want a 20% profit.

  • Markup method: $10,000 cost × 1.20 = $12,000 price. Profit is $2,000. But $2,000 ÷ $12,000 price = 16.7% margin, not 20%.
  • Margin method: To hit a true 20% margin, price = $10,000 ÷ (1 - 0.20) = $12,500. Profit is $2,500, which is 20% of price.

In this hypothetical, the markup approach gives away $500 on a single job.

Pallets of roofing materials staged beside a job site truck

Using a Construction Profit Margin Calculator Without Fooling Yourself

A construction profit margin calculator is only as honest as the numbers you feed it. The tool does the arithmetic.

Here is a labeled hypothetical that shows how the same job produces two very different margins depending on the inputs. These are illustrative numbers, not benchmarks.

Hypothetical: A roofing job is bid at $28,000.

  • Bid-time inputs: Materials $9,800 (40 squares at $245), labor $6,600 (120 hours at a $55 loaded rate), subcontractor $2,600. Direct cost $19,000. Gross profit $9,000. Gross margin 32.1%.
  • Actual inputs: Materials came in at $268 per square after a mid-job price increase ($10,720). Labor ran 134 hours because of a tear-off delay ($7,370). The subcontractor stayed at $2,600. The crew also spent $1,800 on decking repair that was never billed as a change order. Direct cost $22,490. Gross profit $5,510. Gross margin 19.7%.

In this hypothetical, the 12-point margin gap comes from three changed inputs: a materials price increase, extra labor hours, and unbilled extra work. The calculator only shows the gap if you feed it actuals.

The Inputs That Decide Whether the Output Is Real

Feed the calculator actuals, not hopes. The inputs that move the result most:

  • Labor: Use loaded hourly cost (wage plus payroll taxes, workers' comp, and benefits), not the wage rate. Using the bare wage understates direct cost and inflates margin.
  • Materials: Use invoiced cost, not the supplier quote from bid week. On volatile commodities like lumber, asphalt, and copper, the quote and the invoice can diverge over a multi-week job.
  • Subcontractors: Include every invoice, including change orders and back-charges. A sub invoice that arrives after the job closes still belongs to that job.

Watch out: running the calculator on bid-time estimates confirms the story you already told yourself. Run it on actuals and it tells you the truth.

Reading the Output at Two Levels

A single margin number is not enough. Read the calculator output at both levels the business actually runs on:

Level What the calculator should show What a bad input hides
Job (gross) Revenue minus direct costs for that job Unbilled change orders, misposted labor, late sub invoices
Company (net) Total revenue minus all costs including overhead and taxes Overhead growth that outpaces pricing

A job can show a healthy gross margin and still drag the company down if overhead is not covered. Pair the calculator with a job cost report that ties every invoice and timecard back to its job.

Where the Calculator Fits in Your Routine

Use it at three points, not one:

  1. At bid: to confirm the price hits your target margin, not your target markup.
  2. At mid-job: to catch a cost overrun while there is still time to issue a change order or adjust crew allocation.
  3. At closeout: to compare actual margin to bid margin and see which assumptions were wrong.

The closeout comparison is one many owners skip, and it can help improve future bids. If recent jobs consistently close below bid margin, the estimating assumptions feeding the calculator are worth reviewing.

Where Contractor Profit Margins Leak in the Books

Profit leaks in contractor books rarely show up as one big loss. They show up as small, repeated gaps between what a job should have made and what it did make.

Common leak points:

  • Unbilled change orders that never reach the invoice
  • Labor hours coded to the wrong job or to overhead
  • Materials bought for one job and expensed to another

When these gaps pile up, the job-level gross margin looks fine while cash disappears. Owners often ask whether to chase the leaks or reprice the work. Our breakdown of profit leaks versus job pricing covers that question.

Cash Timing, Cost Swings, and Taxes: Pressures That Do Not Show on the Bid

Margin on paper and cash in the bank are different things. Three pressures sit outside the bid sheet.

Cash timing. Retainage and slow payers delay the cash behind your profit. In a hypothetical $120,000 job with 10% retainage, $12,000 stays with the customer until release, so cash trails the profit you booked. For the full picture, see our guides on profit and cash flow and the construction cash-flow forecast.

Cost swings. On fixed-price work, your price is locked while material costs keep moving. Three contract tools help: an escalation clause tied to named commodities, allowances with a stated basis for what happens when selections exceed them, and deposits timed to material orders. Have an attorney review contract language before you rely on it.

Taxes. Depending on your accounting method, profit can be taxable before the cash arrives. Set aside a tax reserve as profit accrues, and confirm the treatment with a CPA, since it depends on your entity and method.

Book a Profit Review to See Where Your Margins Stand

The numbers above only help if you apply them to your own books. Start with a quick self-check:

  • Do you track gross margin job by job using actual costs?
  • Is overhead reviewed against revenue at least quarterly?
  • Do you price on margin, not markup?

If any box is unchecked, your margins need a closer look. At Golden Bookkeeping, a Profit Review is a practical look at your profit, cash flow, and job pricing, using the reports you already have.

Frequently Asked Questions

What is the difference between gross profit margin and net profit margin for a contractor?

Gross profit margin is job-level: revenue minus direct costs like labor, materials, and subcontractors, divided by revenue. Net profit margin is company-level: it subtracts overhead such as office rent, trucks, insurance, and owner salary. A roofing job can show a healthy gross margin and still drag the company into a loss once overhead is allocated. Track both, because gross margin tells you if the work is priced right and net margin tells you if the business is viable.

How do I calculate contractor profit margins on a construction project?

Start with the contract price, then subtract direct labor, material expenses, subcontractor invoices, and change order costs to get gross profit. Divide gross profit by contract price for gross margin. For net margin, subtract a share of overhead costs (office, vehicles, insurance, admin payroll) from gross profit, then divide by revenue. Use a construction profit margin calculator to run the math quickly, but feed it accurate job costing data, not estimates.

Why can a contractor show a profit on a job but lose money overall?

Because job-level gross profit does not account for overhead. If you win three jobs at a 25% gross margin but your fixed costs (rent, trucks, insurance, admin staff) exceed the gross profit dollars those jobs generate, the company runs at a net loss. Other culprits include unbilled change orders, retainage tied up for months, and bookkeeping errors that misclassify job costs as overhead. Review net profit margin monthly, not just at year-end.

Is a 20% profit margin high for a contractor?

It depends on whether you mean gross or net, and on the trade. Gross margin is measured before overhead, so a number that looks strong can still leave little after overhead is paid. No single benchmark fits every trade, region, or company size, so compare your own margins over time and your actual job margins against what you bid. If your net margin stays thin, review pricing, overhead, and profit leaks with a bookkeeper who understands construction accounting.

Related insights