Price Every Job to Keep the Profit You Meant To
On the list of fires: “price to a profit”
Module 6 · The Money System · Play 6 of 22
In a hurry? ↓ Do this this week
The problem in one breath
You win the job, you build it clean, the check clears — and somehow there's barely anything left. The price felt right when you wrote it, but the profit you pictured never showed up in the bank.
Why it happens
Two things bleed a job dry, and most owners do both. First, they price off a gut number — "that's about a twelve-thousand-dollar roof" — instead of adding up what the job costs. The dump fee, the drive time, the office phone, the truck payment: none of that is in the gut number, so you cover materials and labor and quietly eat the rest.
Second — and this one costs on every job — owners confuse markup with margin. They want to keep 20 cents on the dollar, so they mark cost up 20%. That doesn't leave 20 cents. It leaves about 16.7, and the gap walks out the door on every roof you sell.
The play
- Build your true cost from the ground up. For one job, add four things: materials, labor, dump fee, and overhead. Materials, labor and the dump fee come off the takeoff sheet (M10-01) — measure the roof and it hands you all three (pay subs by the square? use their price for labor). And overhead is the slice of your monthly business cost — trucks, insurance, the office manager, your phone — that this one job has to carry. Never skip it: take your monthly nut — the winter reserve calculator (M6-11) is where you add it up — divide it by the jobs you run in an average month, and carry that share on every bid. Or use a flat share of the price instead. Pick one and use the same one on every job. That number, all four added, is your true cost. Not the gut number. The real one.
- Pick the margin YOU want to keep. Margin is what's left after all cost — the fully loaded cost from step 1, overhead and all — as a share of the price. It's not the leftover you get from counting material and labor only. Say you want to keep 20 cents on every dollar you bill: that's a 20% margin. The 20% here is only an example, so the math has something to chew on — not a rule and not an industry figure. Yours comes off your market and your costs.
- Learn the one piece of math that stops the leak. To actually KEEP a 20% margin, you do NOT mark your cost up 20%. You divide your cost by (1 − your margin) — for 20%, that's dividing by 0.8. Say a job costs you $10,000: $10,000 ÷ 0.8 = $12,500. Charge $12,500 and you keep $2,500 — a true 20%. Mark the same job up 20% instead and you'd charge $12,000, keep $2,000, and that's only 16.7%. Same job, $500 gone, just from the wrong math.
- Say it in markup terms so your crew can price fast. Dividing by 0.8 is the same as a 25% markup. A 20% margin = a 25% markup — not the same number, and that's the whole point. Whenever someone hands you a "markup," ask what margin it leaves.
- Run every bid through it before it goes out. True cost, your margin, then the price the math gives you. Drop the price to win if you want — but now you SEE the margin you're dropping to.
Do this this week
Take one job you're bidding right now. Add up materials, labor, dump fee and overhead to get its true cost. Pick the margin you want to keep, then divide the cost by (1 minus that margin) for the price you should charge. Compare that to the number your gut was going to write. That gap is the lesson.
The tool
Or fill it in here — no download →
Opens in Excel, Google Sheets, Numbers or LibreOffice. Grab it on the phone now — it’ll be waiting on the computer at the shop.
the-job-cost-sheet.xlsx — the job-cost sheet. One row per job: Materials, Labor, Dump fee and Overhead add up to your true cost. Up top you set one cell, your target margin. The sheet shows the price you must charge to hit it (cost ÷ (1 − margin)), the profit you keep at that price, and the equivalent markup % — so margin and markup sit side by side and you stop confusing them. Type in the price you actually plan to bid and it shows the real margin that bid earns, red when it drops under your target. One sample row is filled in as an example; see the sheet notes below.
The pre-bid challenge (M6-04) hunts the hidden costs that wreck a job; this play turns your real costs into the right price.
If your crew is 1099
Nothing to adjust — pricing is the owner's own math. W2 or subs, their pay is just part of the labor line in your true cost, and the margin you keep is yours to set either way.
M6-06 · Price Every Job to Keep the Profit You Meant To — Roofer MBA, https://roofermba.com/plays/money-system/price-to-a-profit
The sheet notesHow the sheet works — the columns and the formulas
The columns, the formulas behind them, and the judgment calls — so you can rebuild it by hand if you ever need to.
What it does
One row per job. You type what the job costs you — materials, labor, dump fee, overhead — and the sheet adds them into your true cost. Set one number up top: the target margin you want to keep. The sheet then shows the price you must charge to actually keep that margin, the profit in dollars at that price, and the markup % that margin works out to — so you stop confusing markup with margin. Type in the price you were actually going to bid and it shows the real margin that bid earns, flagged red when it drops under your target. Row 6 (cream) is filled in as an example; delete it before you enter your first real job.
How to use it
- Set your line once, top-right: Target margin you want to keep (cell E2). The example is 20% — that's one owner's number, not a rule. Put in yours.
- The cell under it (E3) shows the markup that margin requires — the sheet does that math so you see, in black and white, that a 20% margin is a 25% markup, not a 20% one.
- For each job, fill the plain cells: Materials, Labor, Dump fee, Overhead. The sheet adds them into True cost and gives you the Price to charge and the Profit.
- Optional: type the price you were about to bid into Your bid price. The sheet shows the margin that bid actually earns and turns the last column red if it's under your target.
Columns
| Column | What it is |
|---|---|
| A Job | Which job this row is. |
| B Materials | Material cost for the job. You type it. |
| C Labor | Labor cost — crew pay for this job (W2 or sub, it's the same line). You type it. |
| D Dump fee | The disposal / dumpster cost. You type it. |
| E Overhead | This job's share of your monthly business cost (trucks, insurance, office). You type it. |
| F True cost | Auto: Materials + Labor + Dump + Overhead. |
| G Price to charge | Auto: the price that keeps your target margin. |
| H Profit at that price | Auto: what you keep at that price (Price − True cost). |
| I Your bid price | Optional: the price you were actually going to bid. You type it. |
| J Margin your bid earns | Auto: the real margin your bid leaves; blank until you enter a bid. |
| K Over / under your target | Auto: OK at/above target, UNDER (red) below it. |
Top of sheet: Target margin (E2, the one number you set) and required markup (E3, computed).
Formulas (so you can rebuild it by hand)
- Required markup (E3):
=E2/(1-E2) - True cost (F6, fill down):
=B6+C6+D6+E6 - Price to charge (G6, fill down):
=F6/(1-$E$2) - Profit (H6, fill down):
=G6-F6 - Margin your bid earns (J6, fill down):
=IF(I6="","",(I6-F6)/I6) - Over/under target (K6, fill down):
=IF(I6="","",IF(J6>=$E$2,"OK — at/above target","UNDER — below target")) - Working rows below the example guard against blanks, e.g. True cost:
=IF(COUNT(B7:E7)=0,"",B7+C7+D7+E7)so an empty row shows nothing instead of a divide error. - The red flag is conditional formatting, not a formula in a cell. Rule on
K6:K13, red fill:=ISNUMBER(SEARCH("UNDER",K6))— it turns the cell red whenever the Over/under column reads UNDER.
Only IF, OR, COUNT, ISNUMBER, SEARCH, and plain arithmetic are used — no new-Excel-only functions — so it opens and computes in old Excel, Numbers, and LibreOffice. (Verified: opened and recalculated in LibreOffice — every formula computes, blank rows stay blank, the UNDER flag fires red.)
Notes / judgment calls
- The margin is yours, not an industry fact. 20% is one owner's working number, set as the example so the sheet does something out of the box. Change it to whatever keeps you profitable and competitive in your market.
- Margin vs markup is the whole point. The sheet always prices off your margin (÷ (1 − margin)), and shows the markup only so you can see they're different numbers. Never mark cost up by your margin % — it leaves less than you think.
- Overhead is the line most owners skip. If you leave column E blank you're pricing to cover materials and labor only, and eating trucks, insurance, and the office out of your "profit." Put a real overhead number in, even a rough one — the play shows one way to get it: your monthly nut divided by the jobs you run in an average month.
- Eight job rows, and the sheet tells you when you're out. Rows 6 through 13 carry the formulas; the "How to use it" text sits right under them. A ninth job typed on row 14 lands on top of that text and gets no math — which is your signal to start a fresh copy of the sheet (one per season, or one per crew) rather than typing past the block.
- The sheet ships with the numbers already saved in it, so a phone preview shows real figures; they recalculate as soon as you type in it.
The one thing
Do this this week
Take one job you're bidding right now. Add up materials, labor, dump fee and overhead to get its true cost. Pick the margin you want to keep, then divide the cost by (1 minus that margin) for the price you should charge. Compare that to the number your gut was going to write. That gap is the lesson.
Take it with you
One email unlocks this and every other sheet and card on the site. The plays stay free.
Same fire
Jobs sell but the profit isn't there
Fixed this?
Half of “no profit” is profit you earned and never collected.
The fire right behind it is usually Owed money you can't collect.