How to calculate markup on a contractor quote
Markup and margin aren't the same number. Here's how to calculate markup on a contractor quote so every job lands on the gross margin you actually planned for.

Most trade contractors know they need to charge more than their costs. Fewer get the math right, which is why learning how to calculate markup on a contractor quote is worth your time before you price another job. Apply a 30 percent markup when you actually need a 30 percent gross margin and you'll come out 7 percentage points short — on a $400,000 revenue year, that gap quietly erases $28,000 in gross profit. This guide walks through the formula, builds a worked example from published wage data, and explains when to mark up materials at a higher rate than labor.
Why markup and margin aren't the same number
Markup adds a percentage on top of your cost. Gross margin is a percentage of your selling price. Same job, same numbers — two different percentages.
Here's the clearest version of the difference. You spend $200 on a job — parts and labor combined. You apply a 40 percent markup:
- Selling price: $200 × 1.40 = $280
- Profit: $280 − $200 = $80
- Gross margin: $80 ÷ $280 = 28.6% — not 40%
That gap widens as targets get higher. A 50 percent markup yields a 33 percent gross margin. A 100 percent markup — doubling your cost — gets you exactly a 50 percent gross margin.
If you've been telling yourself "I mark up 30 percent so I make 30 percent on every job," the actual margin is 23 percent. That's the most common silent profit leak in solo trade work, and it compounds across every job you run in a year.
How to calculate markup from your target margin
Once you have a target gross margin in mind, the formula to find the markup you actually need is:
Required markup = target margin ÷ (1 − target margin)
Examples:
- Target 30% margin: 0.30 ÷ 0.70 = 0.43, or 43% markup
- Target 35% margin: 0.35 ÷ 0.65 = 0.54, or 54% markup
- Target 40% margin: 0.40 ÷ 0.60 = 0.67, or 67% markup
The table below shows the markup you need for common gross margin targets. Keep it accessible while you're building quotes — it's the fastest way to price-check a job on the fly.
| Target gross margin | Required markup on cost |
|---|---|
| 20% | 25% |
| 25% | 33% |
| 30% | 43% |
| 35% | 54% |
| 40% | 67% |
| 45% | 82% |
To check yourself going the other direction — if you know your markup and want to verify your actual margin:
Gross margin = markup ÷ (1 + markup)
Example: you apply a 43% markup → 0.43 ÷ 1.43 = 30.1% gross margin. Run this check on your current pricing now. The result is often a few points lower than expected.
A worked example using real trade numbers
Let's price a shutoff valve and supply line replacement from scratch using published data.
The Bureau of Labor Statistics' May 2025 Occupational Employment and Wage Statistics release puts the median hourly wage for plumbers, pipefitters, and steamfitters at $34.70 per hour. As a solo operator, your actual cost per hour is higher — not because you pay yourself more, but because of what comes with self-employment:
- Self-employment tax: The IRS sets the SE tax rate at 15.3 percent — 12.4% for Social Security and 2.9% for Medicare — on 92.35% of your net self-employment income. The IRS does allow you to deduct one-half of the SE tax from your adjusted gross income, which partially offsets the burden, but the cash still leaves your account each quarter.
- Vehicle, insurance, and tools: A service truck or van, general liability coverage, license renewals, and consumable tools add real dollars per hour. The exact number depends on your market and coverage choices.
Once you add those layers in, solo plumber floor rates realistically land between $65 and $85 per hour. If you haven't worked through your specific number yet, the minimum hourly rate calculator for solo contractors walks you through every component.
For HVAC technicians, the same May 2025 BLS release reports a median hourly wage of $32.75 — close enough that the math works identically with your own loaded rate as the input.
Sample job: shutoff valve + supply line replacement
| Line item | Your cost |
|---|---|
| Shutoff valve + braided supply lines (wholesale) | $38 |
| Labor: 1.5 hours × $72/hr loaded rate | $108 |
| Total direct cost | $146 |
You're targeting a 35% gross margin. The table above shows that requires a 54% markup:
$146 × 1.54 = $224.84 → round to $225
Gross profit check: $225 − $146 = $79, and $79 ÷ $225 = 35.1%. Margin target met.
The markup calculator handles this arithmetic in under five seconds on your phone. Enter your cost and your target margin; it returns the selling price and confirms the gross margin you'll actually earn.
Should you mark up labor and materials at different rates?
Many solo contractors apply one markup to the whole job. That's simple and works, but running a split approach — a separate rate for materials — can give you better protection.
Labor is easier to price correctly through your loaded rate. If you've already baked in overhead, SE tax, and vehicle costs, the markup on top is mostly profit. Your loaded rate does the heavy lifting.
Materials carry extra cost that doesn't show up in the invoice price:
- Sourcing time. Calling suppliers, checking availability, making supply-house runs — that's unbillable time that has to come from somewhere.
- Price-change risk. Between the day you quote and the day you buy, parts prices can shift. A materials buffer absorbs the difference on jobs that stretch past a week.
- Cash flow. You often pay for materials before the customer pays you. The markup covers that float.
Most experienced plumbers and HVAC techs apply a higher markup to parts than they apply to their own labor, often meaningfully above the baseline rate they use for the job as a whole. Use the markup calculator to see what rate you'd need on materials alone to hit your target margin when labor is priced at your loaded rate.
For context on how this interacts with your overall pricing approach, flat rate vs. time and materials for solo plumbers explains both models in detail — the markup formula is the same under either approach, but flat rate locks the number in upfront while T&M exposes it line by line.
When to revisit your markup
Setting a markup once and not touching it for two or three years is a quiet way to erode profit. A few situations signal that your current rate no longer reflects your real costs:
- Your material costs have risen. If wholesale prices on common parts are up 10–15 percent since you last set your price list, you're absorbing the gap.
- Your vehicle situation changed. A new van, a jump in insurance at renewal, or fuel averaging higher than last year all shift your overhead per hour.
- You added a helper. Employer-side payroll taxes, workers' comp, and the unbillable time you spend managing another person change your cost structure substantially.
- Your end-of-year numbers are off. If you ran the right revenue and still came in below your profit target, markup is usually the first place to look.
A practical cadence: recalculate your loaded rate at the start of each busy season and after any significant cost change. Cross-reference what the market will bear using the 2026 plumbing service call pricing benchmarks before you finalize your updated rates.
Takeaways
- A 30% markup produces a 23% gross margin — they are not the same thing.
- To find your required markup: divide your target margin by (1 − target margin).
- A 35% gross margin requires a 54% markup; 40% gross margin requires 67%.
- Mark up materials separately from labor. Parts carry sourcing time and price risk that warrant a higher rate than your base job markup.
- Revisit your markup whenever your overhead costs change — at minimum, at the start of each season.
Put the right number on every quote
The formula is only useful if you use it consistently. In practice, that means having the markup calculation ready when you're standing at a job site adding an unplanned shutoff valve to a quote or repricing a job that grew in scope mid-afternoon. A calculator that returns the correct selling price in seconds is worth more than a formula you remember in theory but round down on by habit.
JobEstimator stores your loaded labor rate, your materials markup target, and your common job items so you can produce an accurate quote without doing arithmetic on the spot. For solo trade contractors who want consistent margins without subscribing to a platform built for ten-person teams, pricing starts at $39/mo.


