Roofing Cash Flow Management: Why Your $2M Revenue Business Has No Cash
High revenue but empty bank accounts? Learn roofing cash flow management tactics to stop the bleeding and keep more money in your account.
You did $2 million in revenue last year. Your trucks are rolling. Your crews are booked. And yet, when you open your bank account on a Tuesday morning, you're wondering how you're going to make payroll on Friday. You're broke despite being booked solid. If your roofing cash flow management feels broken, something doesn't add up.
It adds up perfectly, actually. You just don't like the math.
The Real Cost of the Revenue Illusion
Here's the thing nobody tells you when you're chasing that million-dollar milestone. Revenue isn't cash. Revenue is a number on a piece of paper. Cash is what pays your suppliers, your crews, and your mortgage.
Let's run the numbers on a $2 million roofing operation.
Industry benchmarks put gross profit margins for roofing companies between 25% and 40%. Let's be generous and say you're at 35%. That's $700,000 in gross profit. Sounds great, right?
Now subtract overhead. Office rent, truck payments, insurance premiums, your office manager's salary, marketing, software, fuel, the guy you're paying year-round because if you let him go you'll never find another good foreman. Depending on your business model and labor structure, a typical overhead ratio runs 20-30% of revenue. At 25%, that's $500,000.
Your net profit? $200,000. That's a 10% net margin, which is actually decent for the industry. Many well-run roofing companies report net margins in the 6-12% range.
But here's where it gets ugly. That $200,000 in profit doesn't mean $200,000 is sitting in your bank account. Not even close.
Why Your Roofing Business Cash Flow Doesn't Match Your P&L
Three forces are conspiring to drain your cash before you ever see it. And they're baked into the structure of the roofing business itself.
Insurance Depreciation Holdbacks
If you do any insurance restoration work, you already know this pain. Insurance carriers often hold back 15-40% of the claim payout as "recoverable depreciation" until you prove the work is complete, with the exact amount depending on roof age, policy terms, and carrier estimating. (Note that some policies are ACV-only with no recoverable depreciation at all.) On a $15,000 insurance job, that could mean several thousand dollars sitting in limbo until you submit completion photos, get the carrier to process the release, and then wait for the check.
If you typically have 8 to 12 insurance jobs awaiting depreciation release at any given time, that's tens of thousands of dollars locked up. That's money you've earned. Work you've completed. Materials you've already paid for. And it's just... gone. Temporarily. If you follow up. Which brings us to the second problem.
If you're not already maximizing your insurance supplement process, you're leaving even more money on the table.
Commercial Retainage
If you do commercial work, retainage is another cash killer. General contractors routinely withhold 5-10% of the contract value until final sign-off. On a $200,000 commercial roof, that's $10,000 to $20,000 held for 30, 60, sometimes 90 days after you've finished the work.
The Float
This is the most basic problem, and it hits every single job. You order materials. You pay your crews. You cover fuel, permits, and dumpster fees. All of this happens before the customer's check clears. On residential work, you might front $8,000 to $12,000 per job for one to three weeks before you collect the final payment.
Now stack all three of these together across your entire operation. A $2 million company - especially one heavy on insurance restoration work with 60-90 day collection cycles - can have $500,000 or more trapped in uncollected invoices at any given time. Consider a business with $6 million in revenue that had $1.5 million tied up in uncollected invoices. The ratio (25% of annual revenue in A/R) is not unusual in slow-collection environments.
You're profitable on paper and broke in reality. This isn't a revenue problem. It's a cash flow gap that kills growing businesses, and it's the most common killer of growing roofing businesses.
The Overhead Trap That Makes It Worse
The gap between your gross margin and your net margin is where your business quietly bleeds out. And it gets worse as you grow.
When you were a two-man crew, your overhead was almost nothing. A truck payment and a cell phone. But at $2 million, you've added layers. You've got an office. You've got a bookkeeper. You've got multiple vehicles with insurance, maintenance, and fuel costs. You've got software subscriptions. You've got a marketing budget.
All of that overhead is fixed. It doesn't go down when you lose a week to rain. It doesn't go down when you're chasing depreciation checks instead of doing new installs. And it absolutely doesn't go down in winter, when revenue in northern states drops to almost zero but your truck payments, insurance premiums, and key staff salaries keep coming.
This is what the SBA highlights in its cash flow management guidance - and it's the reason many small businesses fail despite being profitable on paper.
Many owners also make it worse by "living out of the business." Personal expenses running through the company account. No clear separation between an owner's salary and profit distributions. Successful roofing business owners often take a W-2 salary between $70,000 and $150,000 for their role as general manager or sales leader, depending on geography and company size. Profit distributions are separate. When those lines blur, you can't see the real picture until it's too late.
The Manual Fix: What You Can Do This Week
You don't need software or automation to start fixing this. You need discipline and a system. Here's a manual approach to roofing cash flow management you can start today.
Run a Receivables Audit Right Now
Pull up every open invoice. Every insurance claim waiting on depreciation release. Every retainage holdback. Add it all up.
I'm serious. Do it today. Most owners I talk to are shocked by the number. That total is your trapped cash. It's money you've earned that someone else is holding.
Now sort that list by age. Anything over 30 days old should make you angry. Anything over 60 days should make you scared.
This is basically a revenue leakage audit - finding the money that's already yours but hasn't made it to your bank account yet.
Create a Weekly Collections Schedule
Assign someone - you, your office manager, or whoever is least afraid of awkward phone calls - to work the A/R list every single week. Not monthly. Weekly.
Here's a simple framework:
At job completion: Submit all documentation for depreciation release the same day. Photos, invoices, certificate of completion. Don't wait.
Day 1 after invoice: Send invoice via email and text.
Day 7: Follow-up call. Friendly. "Just making sure you received the invoice."
Day 14: Second call. More direct. "We need to get this resolved."
Day 30: Written notice. Reference your contract terms. Mention your right to file a lien if applicable. Check your state and local regulations on lien filing deadlines, because they vary by jurisdiction and missing them can cost you your rights.
Day 45+: Decision time. Small claims, collections agency, or write-off.
Fix Your Payment Terms Before the Next Job
Stop collecting small deposits. On residential work, a structure like this protects your cash:
Deposit at signing: 30-50% (check your state and local regulations, as some jurisdictions limit deposit amounts, impose home improvement contract requirements, or have progress payment and trust/escrow rules)
At material delivery: 25-35%
At completion: Remaining balance, due on completion, not net-30
For insurance jobs, when possible, arrange for the initial claim payment (actual cash value) to be deposited into your account before you order materials. Keep in mind that mortgage company co-payees can delay this process, and state or contract rules may apply. The depreciation release comes later, but at least you're not floating the entire job.
Build a Cash Reserve During Peak Season
This is the hardest one because it requires saying no to something during your busiest months so you can survive in February.
The goal is a 3-month cash reserve. Take your total monthly fixed expenses - rent, insurance, truck payments, key salaries, software, everything that hits whether you work or not. Multiply by three. That's your target.
During your peak season - which may be August through October in many markets, or storm-driven in others - set aside a fixed percentage of every collected dollar into a separate savings account. Don't touch it. This is your winter cash reserve fund. Some contractors informally call this the "squirrel strategy" - building your nut during harvest season.
Negotiate Supplier Terms to Align Cash Inflows and Outflows
If you're paying for materials on delivery, you're making the cash flow problem worse. Talk to your suppliers about net-30 terms. Many distributors will offer this once you have an established relationship and consistent volume.
The goal is to align your outflows with your inflows. If it takes you 20-25 days to collect on a residential job, paying your supplier at net-30 means you get the customer's money before you owe the supplier. That alignment is everything.
A Better Way to Manage Roofing Cash Flow
Everything above works. It's proven. But it's also a grind. You're asking a human being to remember to follow up on 80 open invoices every week, track insurance claim statuses across three different carriers, and flag when retainage is due for release on a commercial job from four months ago.
People forget. People get busy. People get tired of making collections calls and "skip one week," which turns into one month, which turns into $40,000 in aged receivables that are now nearly impossible to collect.
This is where automation earns its keep. Not as a fancy thing to talk about. As a practical tool that does the boring, repetitive work that makes you money.
An automated system can send invoice reminders on a set schedule without anyone remembering to do it. It can flag insurance claims that haven't had their depreciation released after 30 days and create a task for someone to follow up. It can notify you the moment a retainage release date hits on a commercial contract. It can send you a weekly cash position report that compares what's in the bank against what's owed and what's coming due.
None of this replaces good financial discipline. You still need to structure your deposits correctly, negotiate supplier terms, and build that reserve. But automation makes sure the follow-through actually happens, every single time, without you or your office manager having to hold it all in your head.
The contractors I see doing well aren't necessarily doing more revenue than you. They just collect faster, track tighter, and don't let money sit in someone else's account for months.
The Bottom Line
Your $2 million business isn't broken. It's structured in a way that naturally creates cash flow gaps, and you haven't built the systems to close them yet. Insurance holdbacks, retainage, the float, seasonal overhead - these aren't your fault. They're the reality of roofing. But letting them drain your bank account without a fight? That's on you.
Start with the receivables audit. Fix your deposit structure on the next contract you sign. Build the reserve this peak season. And if you want help setting up automated collections tracking, cash flow alerts, or any of the systems that keep money from falling through the cracks, let's talk.

Founder of Fail Coach. 16-time entrepreneur helping trades owners work smarter with AI.
Curious if this could work for your business?
Book a free 15-Minute Leak Finder. I'll show you exactly where you're losing money - and what to do about it.
Book a Free Call