Two contractors, two basement finishes, almost the same size.
The first posted his numbers on r/Contractor: roughly 1,100 square feet, a bathroom, laundry area and kitchenette, delivered for about $50,000. His profit was just over $10,000, before paying his helper.
The second replied with his own job in progress: about 1,200 square feet. His gross profit was $80,000.
Eight times the profit on a job of nearly identical scope. The difference is not skill, market or luck. It is a formula, and the first contractor was using it backwards.
The short answer
Price from burdened cost, apply a markup that reaches your target margin, and check your win rate to see whether the market agrees. Almost every underpricing problem in the trades traces to one of three things: confusing markup with margin, using unburdened labour, or treating overhead as something you add rather than something you pay out of what you keep.
The error that costs the most
Markup and margin sound interchangeable. They are not, and the gap between them widens as the numbers rise.
Markup is what you add to cost. Margin is what you keep out of the price.
Take $100 of cost and add 30% markup. Your price is $130. Your profit is $30. But $30 out of $130 is 23%, not 30%.
You intended a 30% margin. You got 23. And your overhead still has to come out of that.
Here is the conversion, and it is worth committing to memory or taping inside a van door:
| Markup on cost | Gross margin |
|---|---|
| 20% | 16.7% |
| 25% | 20% |
| 30% | 23% |
| 35% | 26% |
| 43% | 30% |
| 50% | 33% |
| 67% | 40% |
| 82% | 45% |
| 100% | 50% |
The three bolded rows are the ones that matter. A contractor who wants a 30% margin and applies a 30% markup is short by roughly a third of the profit they thought they had priced in, on every single job, forever.
Watch out
This is not a rounding error. On a $50,000 job, the difference between a 30% markup and a 43% markup is about $4,500 of gross profit. Across thirty jobs a year that is $135,000 of margin that was never in the price, and no amount of working harder recovers it.
The formula
Stated plainly, because most pricing advice never gets this specific.
Price = Cost of Goods Sold × (1 + markup)
Where markup is chosen to hit your target margin from the table above, and where cost of goods sold means everything that disappears if the job disappears.
That last clause is the test. Ask of every expense: if this job vanished tomorrow, would this cost vanish with it? If yes, it is job cost. If no, it is overhead.
Job cost includes:
- Materials, including waste and delivery
- Subcontractors
- Permits and inspections
- Disposal and dumpster fees
- Equipment rental
- Burdened labour, covered next
Overhead includes:
- Your truck, insurance, phone, software
- Office or yard costs
- Administrative time, including estimating
- Marketing
- Your own salary as an owner, if you are not on the tools
Overhead is paid out of gross margin. So a 43% markup producing a 30% margin does not mean 30% profit. It means 30% to cover overhead first, and whatever survives is net.
If your overhead runs 20% of revenue, a 30% gross margin leaves you 10% net. That is thin, and it is why the trades commonly treat 30% as a floor rather than a target.
Burdened labour, which almost nobody calculates
The second largest source of underpricing, and it is invisible because the number you use feels correct.
If you pay a technician $30 an hour, your labour cost is not $30 an hour.
Add to it: payroll taxes, workers compensation, general liability attributable to that person, health contributions if you make them, paid time off amortised across worked hours, uniforms, training, and phone. Depending on jurisdiction and trade, the burden commonly adds 25% to 45% on top of the wage.
So $30 an hour becomes $38 to $44 an hour of actual cost, and if you priced at $30 you have been donating the difference on every hour billed.
Then there is unbillable time. Drive time between jobs, warehouse and supply-house runs, loading, cleanup, and the hours nobody assigns to a job. A technician on the clock forty hours a week may only produce thirty billable hours. If your rate is built on forty, you are short by a quarter before anything else goes wrong.
Both of these compound with the markup error. A contractor using an unburdened $30 rate and a 30% markup believes they are earning a 30% margin on $30 labour. They are earning roughly 23% on a number that is 30% too low, which is how a business ends up busy, exhausted and unable to explain where the money went.
The two basements, costed
Return to the opening comparison, because the arithmetic makes the abstract concrete.
Contractor A: ~1,100 sq ft basement with bathroom, laundry and kitchenette. Sold for roughly $50,000. Gross profit just over $10,000, before paying a helper at $20 an hour, which was not deducted. He also drew the plans himself for free, did not mark up subcontractors, took no upcharge on materials because the helper collected them, and charged nothing for bid preparation or administrative time.
That is roughly a 20% gross margin on paper and materially less once the helper and the free plan drafting are counted honestly. After overhead, plausibly nothing.
Contractor B: ~1,200 sq ft basement finish. Gross profit $80,000.
Contractor B is not charging eight times as much for the same work. He is charging a price that includes his plan drafting, his subcontractor coordination, his material handling, his estimating time, and a markup that reaches a real margin. Contractor A gave all of that away, item by item, each concession feeling small and reasonable at the time.
The pattern is worth naming because it is how underpricing actually happens. Nobody decides to work for nothing. They decide, eleven separate times, not to charge for one small thing.
The things contractors give away without noticing
Each of these is a real cost and each is routinely omitted:
Estimating and bid preparation. One contractor described spending 10 to 20 hours a week driving to jobs, walking through with homeowners, and building detailed scopes at night, unpaid. That is a part-time job funded by nobody.
Drawing plans. Hours of skilled work, given free to win a bid.
Material runs. Gas, vehicle wear and hours. This is what a material markup is for, and the newly licensed contractor who felt his 30% material markup might be "unfair" was covering costs, not profiteering. Note that lumber yards commonly charge a 25% restocking fee on returns without having to drive anywhere.
Subcontractor coordination. Scheduling, chasing, checking and being responsible for their work. Not marking up subs means managing them for free.
Change orders agreed verbally. The classic while-you-are-here request. One contractor described being burned repeatedly by "yeah, I'll add it to the invoice" and moving to a rule of zero extra work without a signature, capturing a signed change order on a phone in about thirty seconds before picking up a tool.
Warranty callbacks and punch-list returns. Real hours, rarely priced.
Add these to a job that was already priced at a 23% margin and the reason for the missing money stops being mysterious.
Pricing correctly only matters if enough of the right enquiries reach you. Our free check looks at whether your site actually lets someone request a quote, what it tells them before they do, and where that request lands. Twenty checks, about fifteen seconds, no account.
Pricing methods, and when each fits
Four approaches, each right in different situations.
Time and materials. You bill hours plus materials plus markup. Suits work with genuinely unknown scope: diagnostics, repairs in old buildings, insurance work. The customer carries the risk, which means you must be transparent about rates upfront or you will fight about the invoice.
Fixed price. One number for a defined scope. Suits well-defined work and it is what most homeowners want. You carry the risk, which is precisely why the margin must be real: a fixed-price job at a 23% margin has almost no room to absorb a surprise.
Cost plus. Documented cost plus an agreed percentage. Common on larger residential projects. The trap is that your margin is a percentage of cost, so efficiency reduces your own pay. Fee-plus arrangements, with a fixed fee rather than a percentage, avoid that perverse incentive.
Unit pricing. A rate per square foot, per fixture, per opening. Fast, consistent and it only works once you have measured enough real jobs to know your true unit cost. Building unit prices from guesses simply industrialises your estimating errors.
Most established contractors use fixed price for defined scopes and time and materials for diagnosis, and the transition point between them is worth stating in writing to customers before work begins.
Whether the market agrees with your price
Pricing is not only arithmetic. There is a feedback signal and it is unusually clear.
If you are winning nearly every job you bid, your prices are too low. That is a widely repeated view in the trades and it is straightforwardly true: a price that everyone accepts has not been tested against anyone's alternative.
The commonly cited healthy figure is an estimate-to-booking ratio around 50%. Above that, raise prices. Well below it, and if you know your prices are competitive, the problem is more likely to be your sales process than your number.
That distinction matters because the two have opposite fixes. A pricing problem is solved by charging more. A sales problem is solved by responding faster, explaining better and following up, and cutting prices to fix it makes the business worse while appearing to work.
There is a useful corroborating story. One contractor lost a basement and remodel bid by close to $15,000 and could not understand how he could be that far above a competitor. He posted asking whether to warn the client. The outcome, added as an edit: the client came back and chose him at his original price after discovering the other company lacked transparency and proper insurance.
Losing a bid on price is not evidence that your price is wrong. Sometimes it is evidence that the other quote was not for the same job.
Charging more for difficult clients
Uncomfortable and correct.
A client who requires everything covered in tarps, objects to a coffee cup on a vanity, and generates repeat visits for an uncaulked seam eight feet up genuinely costs more to serve. Slower work, more visits, more communication, more risk of a dispute at the end.
Pricing that is not a penalty. It is an accurate estimate of the actual scope, which includes the client.
Contractors commonly add 10% to 20% to bids they expect to be high-maintenance. A twenty-year general contractor described exactly this: tacking 10 to 20% onto the entire bid when the people seemed like they would be a hassle, on top of an already high estimate.
The alternative to pricing difficulty in is either absorbing it or declining the work, and pricing it is the only one of the three that leaves the decision with the customer.
The one that is genuinely dangerous
Worth flagging separately, because it appeared in the thread that opened this article and it is the kind of shortcut that ends a business rather than merely limiting it.
The newly licensed contractor mentioned paying his helper under the table while saving up to afford workers compensation. Another contractor responded directly: if that person is injured or damages a client's property, you are exposed to legal trouble that dwarfs the premium you were avoiding.
The connection to pricing is direct. Under-pricing creates the cash pressure that makes cutting corners on insurance feel necessary. Correct pricing funds the things that keep the business legitimate, and a price that cannot cover workers compensation is not a low price, it is an incomplete one.
Allowances, and why you lose bids you did not lose
A specific pricing problem worth its own section, because it causes contractors to lose work while being correctly priced.
A remodelling contractor described bidding turnkey bathrooms and kitchens where homeowners want one all-inclusive number before choosing any finishes. On a recent bathroom he carried over $18,000 in finish allowances for tile, quartz, vanity, fixtures, lighting and accessories, based on solid mid-grade products. He lost to a cheaper contractor and had no way to know whether that contractor was actually cheaper or had simply carried lower allowances.
His summary of the problem is exact: a vanity could be $800 or $6,000. Tile could be $2 a square foot or $25. The homeowner compares two bottom-line numbers and assumes both include equivalent products.
This is not a pricing failure. It is a presentation failure, and there are three workable responses.
Show the allowances line by line, with what they buy. Not "tile allowance $2,400" but "tile allowance $2,400, which covers approximately $6 per square foot at this area, roughly equivalent to [named product tier]." Now a homeowner comparing quotes can see what is different.
Offer good, better and best. Three tiers with the same labour and different finish allowances. This converts an unwinnable price comparison into a scope conversation and, usefully, tells you what the customer's real budget is.
Separate labour from finishes entirely. Quote your labour firm and let finishes be an open budget the homeowner controls. You stop competing on materials you make little on, and you stop being blamed for a total driven by choices they have not made yet.
The underlying principle applies well beyond allowances: when two quotes cannot be compared, the lower number wins by default. Making yours comparable is worth more than shaving it.
Pricing when you have no history
A genuine problem for anyone newly out on their own, and the honest answer is not a formula.
One contractor with years of residential experience in Ontario put it plainly: he had done kitchens, bathrooms, nearly anything interior, and had never learned to price a job. He had a rough sense of how long some work took and no method, because the work was different often enough that instinct never accumulated.
What works:
Break the job into tasks you have personally done. Not "bathroom remodel" but demolition, rough plumbing, rough electrical, board, tile, fixtures, finishing. You have times for most of these even if you have never assembled them.
Estimate hours per task, then add them. Write the number down before the job. This is the step that makes you better; a guess you never recorded teaches nothing.
Price contingency explicitly rather than hoping. For unfamiliar work, an honest line for the unknown is more defensible than a padded task estimate, and it is easier to remove if the scope firms up.
Track actual hours against estimated hours. Per task, on every job, for a year. This is tedious and it is the single thing that separates contractors who price confidently from those who guess forever.
Expect to be wrong early, and price for that. A wider margin on unfamiliar work is not opportunism; it is the correct price for carrying more risk.
After roughly a year of tracked jobs you will have unit costs that are yours rather than borrowed, and unit pricing becomes available to you. Until then, task-based estimating with recorded actuals is the fastest route to getting there, and it is considerably better than the alternative most people use, which is pricing from what they think the market will accept and discovering the shortfall at year end.
What to do this week
- Write down your true burdened labour rate. Wage plus taxes, workers comp, insurance and per-employee costs, divided across genuinely billable hours rather than clocked hours.
- Calculate your overhead as a percentage of revenue. Last twelve months of non-job costs divided by revenue.
- Set a target gross margin that covers overhead plus a real net. If overhead is 20%, a 30% gross margin leaves 10% net.
- Convert that margin to a markup using the table above. This is the step nearly everyone skips.
- Re-price your next three quotes with the correct markup and burdened labour, and quote them without apologising.
- Record your win rate on those three and the next dozen.
- Cost one completed job properly, afterwards, including every hour of estimating, drawing, material running and coordination. Compare it against what you thought the margin was.
Step seven is the one that changes behaviour. Most contractors have never costed a finished job honestly, which means the gap between believed margin and real margin has never been visible, and you cannot fix a number you have never seen.
None of this requires charging unfair prices. It requires charging complete ones. The contractor clearing $80,000 on a basement is not exploiting anyone; he is including work the other contractor performed and did not bill for.
If your quotes are correct and still going quiet, that is a different problem with a different fix, and it is covered in why customers ghost after a quote and how to follow up on a quote without being pushy.
