Know What You've Earned Before the Bank Tells You
On the list of fires: “earned vs. billed”
Module 6 · The Money System · Play 10 of 22
In a hurry? ↓ Do this this week
The problem in one breath
You look at the bank account and think it's telling you how the business is doing. It isn't. A job that's half-built has already eaten half your money — labor, material, dumpsters — whether or not you've sent a bill for it. If you've billed less than you've done, that gap is coming out of your pocket, and you won't feel it until the account runs dry in the middle of a busy July.
Why it happens
Money moves through a roofing job in three separate steps, and they never line up. First you book the work — the contract's signed. Then you earn it — crews put roofs on, day by day. Then you bill it, and later still you get paid. Most owners only watch the last one: cash in the door. But the roof gets built long before the invoice goes out, and the invoice goes out long before the check clears. When the earning runs ahead of the billing — you've done sixty percent of a job but only billed thirty — you are quietly loaning the customer the difference. That's called under-billing, and it's the single cleanest way to be busy, profitable on paper, and dead broke all at once.
The play
Once a job starts, you track four numbers on it every week: what it's worth, how much of it is built, how much you've billed, and how much you've been paid. The tool does the math; you just feed it the truth.
- List every active job. One row each, from the day a crew first sets foot on it until the final check clears. A job in progress is a job on this sheet.
- Enter the percent that's actually built. Walk it or ask the foreman: is this roof a quarter done, half, three-quarters? Rough is fine — honest and rough beats precise and wishful. This is the one number that drives everything else.
- Read what you've earned. The sheet multiplies the contract by the percent built and shows the dollars you've genuinely earned to date. That roof is your money the day the shingles are nailed, not the day someone remembers to invoice.
- Compare earned against billed. This is the whole point. If billed is less than earned, the sheet flags it red — you've built more than you've charged for, and you're floating the job on your own cash. Fix it by sending the next progress bill this week, not next month.
- Feed it into the money meeting. These red flags are exactly what belongs in front of you at the money meeting (Play 01) — under-billed jobs first, because that's your money sitting on somebody else's roof.
Under-billed today is empty-bank tomorrow. Catch it while the crew's still on the roof and you fix it with one invoice. Catch it in July and you're borrowing to cover payroll.
Do this this week
Pick your three biggest active jobs. For each, write down the contract price, your honest guess at percent built, and the total you've actually billed so far. Two minutes of math tells you whether any of the three is quietly funding a customer. If one is, send that progress bill before Friday.
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-earned-money-tracker.xlsx — the earned-money tracker. One row per active job. You enter the contract amount, the percent complete (your honest read), the billed to date, and the paid to date. The sheet computes the rest: earned to date (contract × percent), over/under billed (billed minus earned — it turns red the moment you've billed less than you've earned, meaning you're funding the job), and still owed (billed minus paid). The TOTAL row adds the over/under column up too, but read that one as a net: a job you've over-billed cancels out a job you've under-billed, so a tidy-looking bottom line can still be hiding one you're funding. Work the red rows, not the total. One row is filled in as an example — the numbers there are made up to show the math, not a real job or a target. This pairs with the job-cost sheet (Play 06), which tells you the margin on a job; this one tells you the timing of the cash. See the sheet notes below.
If your crew is 1099
Nothing to adjust — this is the owner's and office manager's cash tracking. Whether your roofers are W2 or subs doesn't change what a job has earned or whether you've billed for it.
M6-10 · Know What You've Earned Before the Bank Tells You — Roofer MBA, https://roofermba.com/plays/money-system/know-what-youve-earned
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've got going. You type four things — the contract amount, how far along it is (% complete), what you've billed so far, and what you've been paid. The sheet works out what you've genuinely earned (contract × percent built), whether you're over or under billed, and what's still owed. The over/under column turns red the moment you've billed less than you've earned — the warning that you're funding the job out of your own pocket. A TOTAL row at the bottom sums it up, including the over/under column — that one is a net, so a job you've over-billed covers up one you've under-billed. The "still owed" total is what you carry into the money meeting. Row 6 (tinted) is a made-up example to show the math; delete it before you enter a real job.
How to use it
- Add a row for each active job — from the day a crew first sets foot on it until the final check clears.
- Fill the plain cells: Contract amount, % complete (your honest read — walk it or ask the foreman), Billed to date, Paid to date.
- Read the auto columns: Earned to date, Over/under billed, Still owed.
- Any row where Over/under billed is red means you've built more than you've charged for — send that progress bill this week. Work the red rows, not the bottom line: the total at the foot of that column is a net, and one job you've over-billed can hide one you've under-billed. Carry Still owed into your weekly money meeting.
Columns
| Column | What it is |
|---|---|
| A Job | Which job this row is. |
| B Contract amount | The full price of the job. You type it. |
| C % complete | How much of the roof is actually built. You type it (an honest guess is fine). |
| D Earned to date | Auto: Contract × % complete — the money you've genuinely earned so far. |
| E Billed to date | What you've invoiced so far. You type it. |
| F Over / under billed | Auto: Billed − Earned. Red when negative = under-billed, you're funding the job. |
| G Paid to date | What's actually landed in the bank on this job. You type it. |
| H Still owed | Auto: Billed − Paid — invoiced money not yet collected. |
Bottom TOTAL row sums Contract, Earned, Billed, Over/under billed, Paid, and Still owed across all jobs. Read the over/under total honestly: it's a net, not a pile. A job you've over-billed adds a plus that cancels the minus on a job you've under-billed, so a bottom line sitting near zero can still have an under-billed job buried in it. It turns red the same way the column above it does, but the rows are what you act on.
Formulas (so you can rebuild it by hand)
- Earned to date (D6, fill down):
=B6*C6 - Over/under billed (F6, fill down):
=E6-D6 - Still owed (H6, fill down):
=E6-G6 - Working rows below the example guard against blanks, e.g.:
=IF(OR(B7="",C7=""),"",B7*C7) - TOTAL row (e.g. still owed):
=SUM(H6:H14); the over/under total is=SUM(F6:F14)at F15 - The red highlight on Over/under billed is a conditional-format rule: cell is a number and less than zero → red fill. The same rule covers the F15 total.
Only IF, OR, SUM, 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 — earned/over-under/still-owed and the totals all compute, the under-billed red flag fires.)
Notes / judgment calls
- % complete is the number that drives everything. Rough and honest beats precise and wishful. Half-done is half-earned whether or not you've invoiced — that's the whole insight.
- Under-billed is the quiet killer. Being under-billed means you're profitable on paper and out of cash in the bank. The red flag is there to catch it while the crew's still on the roof, when one invoice fixes it.
- The example numbers are illustrative, not a target. Row 6 is made up to show the math — a $30k job, half done, under-billed by $5k. Delete it and put your own jobs in.
- It pairs with two other plays. The job-cost sheet (Play 06) tells you the margin on a job; this tracker tells you the timing of the cash. And Still owed feeds the money-owed list at your weekly money meeting (Play 01).
- Count from the range. The formulas, the red flag and the TOTAL row cover rows 6 through 14. To add jobs, insert rows INSIDE that block — a row typed below the TOTAL row is not counted. If you go past row 14, widen the
SUM(...6:...14)ranges in the TOTAL row 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
Pick your three biggest active jobs. For each, write down the contract price, your honest guess at percent built, and the total you've actually billed so far. Two minutes of math tells you whether any of the three is quietly funding a customer. If one is, send that progress bill before Friday.
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.