Profitable on the P&L, out of cash
Your P&L says you made money and your bank account says you didn't. Both are telling the truth.
The P&L records revenue on the day you bill it. Cash reaches your account 60 to 120 days later, minus retainage. As the job list grows, the distance between those two dates widens every month you win more work. Profit is an opinion about timing, and cash is the thing you can spend.
Three moves, in order
Step 07: Monthly cadence
Weekly bookkeeping, cost to complete, and one CEO report, on the same days every month.
Other problems step 07 solves
Other things that go wrong
What owners ask
Why is my construction company profitable but has no cash?
Your P&L says you made money and your bank account says you didn't. Both are telling the truth. The P&L records revenue on the day you bill it. Cash reaches your account 60 to 120 days later, minus retainage. As the job list grows, the distance between those two dates widens every month you win more work. Profit is an opinion about timing, and cash is the thing you can spend.
Which part of the system fixes this?
The step is number 07, monthly cadence. Weekly bookkeeping, cost to complete, and one CEO report, on the same days every month. It's drawn from chapter 7 of CONTROL: The Construction Financial Operating System.
Is this normal for my trade?
Across the 48 trades in the benchmark reference, net profit at $1M–$5M averages 7% before taxes. If you're well under that and this page describes your month, the two are usually the same story. The published average tells you where the pack sits, and your own job costing tells you where you sit, which is the number that pays payroll.
Where do I start?
Pull a cost to complete on every open job this month, not just the ones that worry you.
Can I fix this without touching anything else?
You can try, and it doesn't hold. Step 07 depends on step 03, overhead calculation and step 04, estimating system and step 05, software and bookkeeping alignment and step 06, project management. Install it ahead of those and it produces numbers nobody trusts, which is worse than the problem you started with.
