CostKit
Educational7 min readMay 17, 2026

Underbidding: Why New Contractors Lose Money (and How to Stop)

Downward-trending bar chart over construction tool silhouettes

A $5,000 bathroom job at 5% margin pays you $250. The job takes 60 hours including travel, supply pickups, demo, install, punch list, and the final client walkthrough. That's $4.16 per hour. Federal minimum wage is $7.25.

If you're a new contractor, this math is the trap that closes the most one-person operations within their first two years. You took the job because the homeowner said your competitor quoted $4,800 and you wanted to win. You won. And now you're renting your truck, your tools, and your time to a stranger for less than what fast food pays.

This is what professional estimators call underbidding. It's not a moral failing — it's the consequence of a few specific blind spots that almost every new contractor has. This guide is the corrective.

Why underbidding feels safe (and isn't)

When you're new and you send a bid, three thoughts compete in your head at the same time:

  • Fear: "If I quote too high they'll go with someone else and I'll have no work this month."
  • Imposter: "I'm new. I haven't earned the right to charge what the established guys charge."
  • Hope: "Even at this price I'm making $X. That's better than nothing."

The first two are normal and they fade as you get more wins. The third is the dangerous one — because the math you're doing in your head almost never includes the costs that actually take the money back.

The five costs new contractors forget

Sit down with any contractor who's been in business 10+ years and ask what bankrupted the people they came up with. You'll hear the same five things every time.

1. Vehicle wear and operating cost

Your truck costs you somewhere between $0.55 and $0.85 per mile when you include fuel, insurance, maintenance, tires, and depreciation. A job 20 miles away with two trips a day for two weeks is 800 miles, which is $440-$680 of cost you didn't see on the invoice. New contractors price their work as if their truck is free.

2. Insurance and licensing, allocated to the job

General liability, workers' comp (even if it's just you), license renewals, and bonding are real costs that have to be split across all the work you do in a year. If your annual insurance bill is $4,800 and you work 1,500 billable hours, that's $3.20 per billable hour just for insurance. On a 60-hour bath remodel, that's $192 of cost you didn't add.

3. Downtime between jobs

You don't work 40 hours a week 50 weeks a year billing every hour. You estimate, you wait for materials, you fix punch lists, you do paperwork, you wait for inspections, you take calls. A realistic billable-hour ratio for a solo contractor is 50-65% of your actual working hours. Every billable hour has to cover the non-billable hour it took to set up.

4. Rework and warranty callbacks

Industry data: about 5-10% of residential job hours go to rework — the door that doesn't latch right, the leak you find at handover, the paint touch-ups the homeowner notices a week later. If you don't price a rework allowance into the bid, those hours come out of your margin.

5. Owner pay

The big one. If you're a one-person operation, your own labor is the largest cost on every job — and the one you're most likely to under-value because it doesn't show up on an invoice or a W-2. A real loaded labor rate for a skilled tradesperson in most US markets is $55-$95 per hour all-in (wage + tax + benefits + workers' comp + a normal contractor margin). If you bid a job assuming your own time is "free," you've already lost.

Quick math

For that 60-hour bath job: $440 truck + $192 insurance + 12 hours of unbilled setup at $55 = $660. Plus rework allowance: $300 (10% of labor). You needed $1,400 more than you bid just to break even on real overhead, before any profit. The "$250 profit" was actually a $1,150 loss in disguise.

The minimum viable price formula

Most pricing guides give you something like "cost × markup = price." That works for established contractors who've done the cost work. For new contractors, the version that actually prevents underbidding is:

Materials + (Labor Hours × Loaded Rate) + (Overhead per Hour × Total Hours) + Contingency
= Floor
Floor × (1 + Minimum Margin) = Minimum Price You Can Quote

Where:

  • Loaded Rate = your wage × 1.3 to 1.5 (covers payroll tax, workers' comp, insurance, benefits)
  • Overhead per Hour = (annual overhead) ÷ (annual billable hours). Typically $15-$40/hour for a solo contractor.
  • Contingency = 5-10% of materials + labor (covers scope creep and surprises)
  • Minimum Margin = at least 15%. Below that you have no buffer for anything that goes wrong, and stuff goes wrong on every job.

Markup vs margin trips up a lot of new contractors — they aren't the same number. Quick rule: 20% markup is only 16.7% margin. 33% markup is 25% margin. If your minimum margin is 20%, your minimum markup is 25%.

What to do when the client says "that's too expensive"

This is the moment underbidding is born. You sent a bid based on real math, and the client comes back with "your competitor quoted $X less." Three honest responses, in order of preference:

Option A: Ask what the comparison includes

Most of the time the cheaper bid skipped something you priced — permits, demo, disposal, primer coat, sub-floor repair allowance, post-job cleanup. Walk through your line items together. Sometimes the client realizes they were comparing two different jobs and your price is actually competitive on a like-for-like basis.

Option B: Sharpen the scope

If the comparison is apples to apples and the client genuinely wants a lower number, offer a smaller package. Vinyl instead of tile. Painted cabinets instead of new ones. Two-coat finish instead of three. Your job is to give them options at different price points — not to do the same work for less money.

Option C: Decline the job

If the client expects your competitor's price for your scope, you have to be willing to walk away. Yes, you might not have work that week. Yes, that's hard. But taking a 5%-margin job costs you more than the empty week. You'll spend 60 hours making $250, can't take the next call because you're tied up, and finish exhausted and bitter. The empty week at least leaves you fresh for the next bid.

How CostKit prevents this from happening to you

CostKit was built specifically to fix the math problem behind underbidding. When you describe a project — type of work, location, square footage, finish level — the AI generates a phase-by-phase estimate using current regional labor rates and material prices, with overhead and contingency lines included by default. The number you see already accounts for the costs new contractors typically forget.

You can adjust everything — your own overhead percentage, your contingency, individual line items — but the starting point is honest. No more sending a $5,000 bid for a job that should be $7,500. Try it free on your next bid.

Related reading

If you're just starting out, the natural next steps:

Stop Estimating by Hand

CostKit generates professional, line-item estimates in under 60 seconds. Try it free — no credit card required.

Try CostKit Free