Skip to main content
BidPilot

Financials

Markup vs. margin: a 20% markup is not proof of profit

A 20% markup and a 20% margin are different numbers, and the gap between them is exactly what a catalog-priced estimate misses. Here is the arithmetic, and what it cost on a real bid.

The BidPilot Team, Product

The math nobody does in their head

Markup is measured against cost. Margin is measured against price. They use the same two numbers and answer different questions, which is exactly why they get swapped for each other so often.

A 20% markup on a $100 cost prices the job at $120. Profit is $20 out of $120 charged — 16.7% margin, not 20%. To land on a 20% margin, the markup has to be 25%, not 20%. Every point of markup below that is a point of margin a contractor thinks they have and does not.

Where the missing 3.3 points went on a real bid

We ran an already-won job through Handoff, an AI estimator that prices from a supplier catalog and applies a flat 20% to labor, materials and everything else. A generic estimator priced that renovation at $35,896. The contractor's own won bid, for the same scope, was $25,114 — 43% lower.

Handoff's own number called that a 16.7% profit margin, which is correct arithmetic on the wrong question. Twenty over a hundred and twenty is 16.7%, and there is no van, owner salary, payroll burden or break-even day rate anywhere in that 20%. It is a catalog's markup, not this contractor's margin.

A 43% overbid does not lose money on the job. It loses the job before the job exists, to a bid nobody sees because it never gets accepted.

Overhead recovery isn't a round number either

The other half of this is where the "right" markup comes from in the first place, and it is not an industry rule of thumb. The standard formula is overhead recovery rate = annual overhead ÷ annual direct cost, and it runs 15–25% of direct cost for a mid-size general contractor and 25–40% for a small one — before any profit is added on top.

That is a business-specific number, not a market one. Two contractors running the same trade in the same city can have genuinely different overhead rates depending on fleet size, admin payroll and how much work they actually bill in a month versus how much they could. A catalog cannot know either one.

What checking this actually looks like

On the Financials page, the overhead card shows both numbers next to each other on purpose: the required markup on cost, and the margin that markup actually produces. Break-even is shown per crew-day or per unit, not as a single blended rate, so a target that looks fine as a percentage can still be checked against the dollar figure it has to clear.

Owner pay belongs in that overhead figure, not in what is left over afterward. A break-even that leaves the owner's own labor unpriced is not a break-even — it is profit that only shows up because someone is working for free.

None of this requires a catalog. It requires a contractor's own overhead, their own direct cost, and the willingness to do the division before quoting a round number.

Sources

Build the next estimate in your numbers.

Start free and teach BidPilot the rest as you work.