Set When You Get Paid So You Never Fund the Job Yourself
On the list of fires: “the payment schedule”
Module 6 · The Money System · Play 7 of 22
In a hurry? ↓ Do this this week
The problem in one breath
You buy the material, you make payroll, you eat the dumpster fee — and the homeowner's money doesn't show up until the roof is done, if it shows up on time at all. For weeks you're the bank. Your cash funded their job, and if they stall at the end you're chasing money you already spent.
Why it happens
Nobody set the payment schedule on purpose. The contract says "due on completion" and that's it, so every dollar the job costs comes out of your pocket first and crawls back last. On a small tear-off you can float it. On a big job, or three big jobs at once, floating it is how a busy company with full crews still can't make Friday. The fix isn't collecting harder. It's deciding when the money lands before you ever swing a hammer.
The play
Get real money before you start. A common way to do it: take a deposit at signing, then the rest the day the job is finished — a straight 50/50, no draws, change orders added to that final half. That's only an example, not a rule: pick a split that covers your material and mobilization before you're out of pocket. Heads up — how big a deposit you're allowed to take, and whether you must hold it in a separate account, is set by your state, so check your state's rule before you set your split.
Write it into the contract, in dollars and triggers. Not "progress payments as agreed." Spell out the exact amount and the exact event that makes it due: "$X due at signing. $Y due upon completion." A payment term you can't point to on paper is a payment term you'll argue about.
On long jobs, bill by milestone — and size each one to stay ahead. For a job that runs weeks, don't wait until the end. Break it into checkpoints the customer can see — material delivered, tear-off done, dry-in complete, final. Before you sign, walk the job on paper and mark where your cash goes out: the big material drop, the heavy labor weeks. Then set each milestone payment to land before that spend, and collect enough at each one that you're never funding the next phase out of your own account. The rule of thumb: money in should stay a step ahead of money out, start to finish.
Know the commercial catch: retainage. On some commercial jobs the customer holds back a slice of every payment until the whole job's signed off — you did the work, but a piece of your money sits parked to the end. It's normal on that kind of work; just know it's coming, price it in, and read the contract for exactly how much and when you get it.
Never get surprised by it.
Only count what's actually due today. A deposit you haven't invoiced, an un-hit milestone, a held-back retainage slice — none of that is billable yet, so it does not go on the money-owed list (Module 6, "Fifteen Minutes a Week on the Money You're Owed"). That list is what's chaseable today. Keep the not-yet-due money in your contract and your job plan, not in your collections.
One shape this doesn't cover: the storm job. There the carrier's first check is effectively your deposit, and the rest moves on the carrier's clock, not the schedule you wrote. The carrier money path (M6-13) and the three plays after it walk that money.
Do this this week
Pull your current contract and add two lines: the exact dollar amount due at signing, and the exact amount due at completion. That's your deposit-and-final schedule, in writing, for every job you sign from here on. Twenty minutes with the contract you already use.
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 payment schedule worksheet (the-payment-schedule-worksheet.xlsx). One row per job stage — signing, material drop, tear-off, dry-in, final. You set the job price up top, then type what you spend and what you collect at each stage. The sheet keeps a running tally of the job's cash and flags YOU'RE FUNDING THE JOB in red at any stage where your money-out has pulled ahead of your money-in. A totals row checks your payments add up to the job price before the contract ever goes out. Walk your next job down it on paper first — if a stage turns red, move the deposit up or add a milestone until it doesn't.
If your crew is 1099
Nothing to adjust — this is customer-payment work, run by you and the office. Whether your roofers are W2 or subs changes nothing about when the homeowner or the GC pays you. Set the schedule the same either way.
One more thing: this play is how we run a shop — it's not legal advice. Rules change by state and by contract, so before you act on the legal-sounding parts, run them past your own attorney or accountant. It's your business, and what you do with any of this is your call and your responsibility.
M6-07 · Set When You Get Paid So You Never Fund the Job Yourself — Roofer MBA, https://roofermba.com/plays/money-system/get-paid-on-a-schedule
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 stage. You type what you spend at each stage and what you collect at each stage; the sheet keeps a running tally of the job's cash — every dollar in minus every dollar out, stage by stage. The moment that running number drops below zero, the sheet flags the stage YOU'RE FUNDING THE JOB in red: that's the stretch where your own money is paying for their roof. A totals row checks that your payments add up to the job price, so a split that doesn't cover the work shows up before you sign. Rows 5–9 (yellow) are a filled-in example; delete them before you plan a real job.
How to use it
- Set the job price once, top-right (cell I4, yellow) — what the customer pays you for the whole job.
- Down the left column, list the job's stages in order — contract signed, material drop, tear-off done, dry-in, final walk. Use your real stages; the example ones are just a starting point.
- For each stage, fill two plain cells: Money OUT this stage (materials, labor, dumpster — what leaves your account that stretch) and Payment due IN this stage (what you'll collect at that trigger, in dollars).
- Read the Running cash position column. Positive = the job's money is carrying itself. Red / negative with YOU'RE FUNDING THE JOB = you're out of pocket at that stage. Fix it: take a bigger deposit, or bill a milestone earlier, so money in stays a step ahead of money out.
- Check the TOTALS row: Payments check must read "OK — adds to job price." If it says CHECK: PAYMENTS DON'T ADD TO PRICE, your milestones don't sum to what the customer owes — fix the numbers before the contract goes out.
Columns
| Column | What it is |
|---|---|
| A Job stage | The checkpoint the customer can see — signing, material delivered, tear-off, dry-in, final. You name these. |
| B Money OUT this stage $ | What you spend at that stage. You type it — the sheet never prices anything. |
| C Payment due IN this stage $ | What you collect at that stage, in dollars (a deposit, a milestone, the final). You type it. |
| D % of price | Auto: this stage's payment as a share of the job price — a quick gut-check on your split. |
| E Running cash position | Auto: every payment in so far minus every dollar out so far. Negative (red) = you're funding the job. |
| F Flag | Auto: shows YOU'RE FUNDING THE JOB (red) at any stage where the running position is under water. |
Box on the right — THIS JOB: Job price (the one number you set); Total you'll bill in; Payments check (do the payments add to the price?); Total you'll spend out; On paper, left after costs (price minus your spend); Ever funding the job? (does any stage go red?).
Formulas (so you can rebuild it by hand)
Stage rows run 5–16; the example fills 5–9. Job price lives in I4.
- % of price (D5, fill down):
=IF(AND($A5<>"",$C5<>"",$I$4>0),$C5/$I$4,"") - Running cash position (E5, fill down):
=IF($A5<>"",SUM($C$5:$C5)-SUM($B$5:$B5),"")— cumulative in minus cumulative out. The start of each range is locked ($C$5,$B$5); the end slides down the rows, so each row totals everything through it. - Flag (F5, fill down):
=IF(AND($A5<>"",$E5<0),"YOU'RE FUNDING THE JOB","") - Totals — spend / collect (B17, C17):
=SUM($B$5:$B$16)and=SUM($C$5:$C$16) - Totals — payments check (F17):
=IF(SUM($C$5:$C$16)=$I$4,"OK — adds to job price","CHECK: PAYMENTS DON'T ADD TO PRICE") - Side box — left after costs (I8):
=$I$4-SUM($B$5:$B$16) - Side box — ever funding the job? (I9):
=IF(COUNTIF($F$5:$F$16,"YOU'RE FUNDING THE JOB")>0,"YES — see red rows","No — money in stays ahead")
Only IF, AND, SUM, and COUNTIF are used — no new-Excel-only functions — so it opens and computes in old Excel, Numbers, and LibreOffice.
Notes / judgment calls
- The example is a lesson, not a template to copy. In it, a $6,000 deposit and no milestone at the $13,000 material drop leave the job $7,000 in the hole that week — the flag fires. It recovers by the final, but the point stands: that red stage is exactly what the play warns about. Your real split should keep every stage out of the red.
- Dollars, not "as agreed." Column C wants the exact amount you collect at each trigger, the same way the play says to write it into the contract. The % of price column is just a mirror to sanity- check the split; you still type dollars.
- Deposit caps are not ours to state. How big a deposit you're allowed to take, and whether it must sit in a separate account, is set by your state — the sheet doesn't decide it and doesn't assume one. Set your own split within your state's rules.
- Retainage (commercial): on some commercial jobs the customer parks a slice out of each payment until final signoff. Model it with the data, not a rule: enter each milestone as what actually lands in your account, then add a "Retainage released" stage row for the parked money at the end. The amount and the release date come from your contract — don't guess them.
- Not-yet-due money stays off your collections list. A deposit you haven't invoiced, an un-hit milestone, a held-back retainage slice — none of that is chaseable today, so it belongs in this job plan, not on the money-owed list (Module 6, "Fifteen Minutes a Week on the Money You're Owed").
- Count from the range. Stages run rows 5 through 16, with TOTALS on row 17. To add stages, insert rows INSIDE that block so the running cash, the flags and the THIS JOB box stretch with them, then drag the D, E and F formulas onto the new row. A stage typed below the TOTALS row is invisible to all of it. If you do go past row 16, widen the
$5:$16ranges in the TOTALS row and the box to match. - 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
Pull your current contract and add two lines: the exact dollar amount due at signing, and the exact amount due at completion. That's your deposit-and-final schedule, in writing, for every job you sign from here on. Twenty minutes with the contract you already use.
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
- M6-06price to a profit
- M6-04the pre-bid challenge
- M6-07the payment schedule — you’re here
- M6-10earned vs. billed
- M6-17the change order nobody signed
- M6-19grade the job after the last check
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.