You quoted a job at “20% markup.” You think you made 20%. You made 16.7%.
On a job with $18,000 in costs, that gap is $900. Run $240,000 of job costs through your business in a year and the same mistake costs you about $12,000 — roughly the profit on a full bathroom, gone, and you never saw it leave.
This is not a theory problem. It’s a two-formula problem, and most contractors only know one of them.
The two formulas
Markup is a percentage of your cost.
Price = Cost × (1 + markup)
Margin is a percentage of your price.
Margin = (Price − Cost) ÷ Price
Same dollars of profit. Different denominator. That’s the whole trick.
A job costs you $18,000 and you sell it for $21,600. You added $3,600.
- As markup: $3,600 ÷ $18,000 = 20% markup
- As margin: $3,600 ÷ $21,600 = 16.7% margin
Both statements are true about the same job. If your business plan says “I need 20% margin” and your estimating sheet says “add 20%,” you are quietly running 3.3 points light on every single job.
Markup is always a bigger number than margin for the same dollars. If someone tells you a number without saying which one it is, assume they don’t know either.
Why the denominators differ
Think about where the profit dollars sit.
Markup looks backward at what you spent. Margin looks forward at what the customer pays. The customer’s check includes your profit, so the price is always bigger than the cost, so dividing by price always gives a smaller percentage.
The extreme case makes it obvious: double your cost. $10,000 of cost sold for $20,000 is a 100% markup and a 50% margin. Nobody thinks those are the same number when the spread is that wide. The problem is that at 15–30%, the two numbers look close enough that you stop checking.
The conversion table
Tape this inside your estimating folder.
| Markup you add | Margin you actually earn |
|---|---|
| 10% | 9.1% |
| 15% | 13.0% |
| 20% | 16.7% |
| 25% | 20.0% |
| 30% | 23.1% |
| 35% | 25.9% |
| 40% | 28.6% |
| 50% | 33.3% |
| 100% | 50.0% |
And the direction you actually need — you know the margin you want, you need the markup that gets you there:
| Margin you want | Markup required | Or just divide cost by |
|---|---|---|
| 10% | 11.1% | 0.90 |
| 15% | 17.6% | 0.85 |
| 20% | 25.0% | 0.80 |
| 25% | 33.3% | 0.75 |
| 30% | 42.9% | 0.70 |
| 35% | 53.8% | 0.65 |
| 40% | 66.7% | 0.60 |
The divide-by column is the fast way. To hit a target margin, divide your cost by (1 − margin). Never multiply.
Formula if you want it: markup = margin ÷ (1 − margin).
One job, priced both ways
Full bathroom remodel. Here’s the cost side, built the way we build it in the pricing walkthrough:
| Line | Cost |
|---|---|
| Your labor, 110 hrs × $44 fully loaded | $4,840 |
| Helper, 90 hrs × $31 fully loaded | $2,790 |
| Tile, fixtures, vanity, drywall, paint | $5,900 |
| Plumbing sub | $2,400 |
| Electrical sub | $1,150 |
| Permit, dumpster, misc | $920 |
| Total job cost | $18,000 |
Now price it two ways.
| 20% markup | 20% margin | |
|---|---|---|
| Math | $18,000 × 1.20 | $18,000 ÷ 0.80 |
| Quote | $21,600 | $22,500 |
| Gross profit | $3,600 | $4,500 |
| Actual margin | 16.7% | 20.0% |
$900 difference on one bathroom. The customer is not going to walk over $900 on a $22,000 job. You left it on the table because of a multiplication sign.
Now scale it. A two-truck remodeler pushing $240,000 of job costs through the year:
| 20% markup | 20% margin | |
|---|---|---|
| Annual job costs | $240,000 | $240,000 |
| Revenue | $288,000 | $300,000 |
| Gross profit | $48,000 | $60,000 |
That $12,000 is not more work. It’s the same jobs, the same crew, the same hours — with the correct divisor.
Where the leak actually hides
The headline error is the obvious one. These are the four places it hides where you won’t notice.
1. Material markup
You buy $4,200 of tile and fixtures and “mark it up 20%.” You bill $5,040. Your margin on those materials is 16.7%.
If handling, hauling, returns, and warranty exposure on materials are worth 20% to you, bill $4,200 ÷ 0.80 = $5,250. On a year of material purchases that difference compounds fast.
2. Subcontractor pass-throughs
Same problem, bigger numbers. You carry the sub’s liability, schedule them, inspect their work, and eat the callback if they blow it. If you add 15% to a $2,400 plumbing sub, you’re earning 13% on the money you’re risking.
3. Change orders
Change orders are where discipline dies. A customer asks for a heated floor mid-job, you do quick math in the truck, you add 15% to the cost and send a text. Change orders should carry your highest margin, not your lowest — they’re unscheduled, they disrupt sequence, and the customer has already chosen you. Price them with the divisor, not the multiplier.
4. Your software’s “markup” field
This one is sneaky. Most estimating and invoicing tools have a field labeled “Markup %.” Some have a field labeled “Margin %.” A few let you pick. They do not all behave the same way.
Before you trust any of them, run a test: enter a $100 cost item, set the field to 25%, and look at the line total. If it reads $125, that field is markup and you’re earning 20% margin. If it reads $133.33, that field is margin. Do this in whatever you use — the tools covered in our small-contractor software comparison handle this differently from each other, and the label on the screen is not always a reliable guide to the math underneath.
The discount trap
Once you understand margin, discounting stops looking harmless.
Take the bathroom priced correctly at $22,500, cost $18,000, gross profit $4,500.
| Discount given | New price | Gross profit | Margin | Profit lost |
|---|---|---|---|---|
| 0% | $22,500 | $4,500 | 20.0% | — |
| 5% | $21,375 | $3,375 | 15.8% | 25% |
| 10% | $20,250 | $2,250 | 11.1% | 50% |
| 15% | $19,125 | $1,125 | 5.9% | 75% |
| 20% | $18,000 | $0 | 0% | 100% |
A 10% discount at a 20% margin gives away half your profit. Not 10% of it. Half.
That’s because the discount comes out of the profit dollars, not out of the cost dollars. Your tile still costs what it costs. The only flexible number in the stack is the one you were going to keep.
The practical consequence: if you feel pressure to knock money off, reduce scope instead. Pull the tile niche. Switch the vanity to a stock model. Let the customer paint. You cut cost and price together and your margin survives. Writing scope that’s easy to subtract from is half of an estimate that wins the job.
Gross margin is not net margin
One more distinction, because mixing these up produces the same kind of invisible loss.
- Gross margin = (Price − direct job costs) ÷ Price. Direct costs are labor, materials, subs, rentals, permits, dump fees.
- Net margin = what’s left after overhead too — truck, insurance, phone, software, your office hours, marketing.
A 20% gross margin is not 20% in your pocket. If your overhead runs $28,000 a year and you did $300,000, overhead eats about 9 points. Your 20% gross becomes roughly 11% net.
Which one you aim for depends on how you build your estimates. If your job cost already includes an overhead allocation per billable hour — the method in the hourly rate and overhead math article — then the margin you add on top is net, and 10–15% is a reasonable floor. If your job cost is direct costs only, the margin you add has to cover overhead and profit, and you need a much bigger number. Gross margins in the 30–50% range are common for trades that estimate that way.
Pick one method. Write down which one you use. The failure mode is switching between them without noticing and assuming a 20% number means the same thing in both.
The habit that catches it
After every quote goes out, do one line of arithmetic before you hit send:
(Quote − Cost) ÷ Quote = ?
If that number isn’t the margin you intended, fix the quote. It takes eleven seconds and it catches markup-vs-margin errors, forgotten line items, and material prices you pulled from last year’s job.
Then do it again after the job closes, using actual costs instead of estimated. The gap between your intended margin and your realized margin is the number that tells you whether your estimating is honest.
Do this today
Open your last five quotes. For each one, calculate (price − cost) ÷ price.
If those numbers come out lower than the percentage you thought you were adding, you’ve been using markup where you meant margin. Change your estimating template to divide by (1 − target margin), test your software’s percentage field with the $100 check described above, and reprice anything still outstanding.
Five minutes of arithmetic. Likely four figures a year.