JOB COSTINGCASH FLOWWIP REPORTINGFRACTIONAL CFOSUBCONTRACTOR FINANCEOVERHEAD RATEPAY APP BILLINGAR RECOVERYCONTROLQOREJOB COSTINGCASH FLOWWIP REPORTINGFRACTIONAL CFOSUBCONTRACTOR FINANCEOVERHEAD RATEPAY APP BILLINGAR RECOVERYCONTROLQOREJOB COSTINGCASH FLOWWIP REPORTINGFRACTIONAL CFOSUBCONTRACTOR FINANCEOVERHEAD RATEPAY APP BILLINGAR RECOVERYCONTROLQOREJOB COSTINGCASH FLOWWIP REPORTINGFRACTIONAL CFOSUBCONTRACTOR FINANCEOVERHEAD RATEPAY APP BILLINGAR RECOVERYCONTROLQORE
TL;DR: A construction business that's busy but not making money almost always has one or more of four problems: markup below what overhead requires, overhead rate set years ago and never updated, billing timing gaps that fund the GC's cash with the contractor's working capital, or AR sitting uncollected at 45+ days. The P&L may show profit on all of them — the bank account shows the truth. SPM fixes all four in the first 60 days.
Core Problem
Why Am I Busy But
Not Making Money?
You're working full crews. You're winning jobs. The P&L says you're profitable. The bank account says something different. Here's exactly why — and what to do about each cause.
Published: May 2026 · Updated: May 2026
The Four Root Causes
What's Actually Eating Your Margin
The P&L says you're making money. The bank account says you're not. Those two things can both be true at the same time — and they can stay that way indefinitely if you don't find the gap between them. Here are the four places the money disappears.
01
Your Markup Is Below What Overhead Requires
If you bid at 20% markup thinking that means 20% gross margin — it doesn't. A 20% markup is a 16.7% gross margin. If your overhead rate is 16%, you're keeping 0.7 cents on every dollar of revenue as net profit. At $4M in revenue, that's $28,000. That's not a cash flow problem. That's a markup math problem. See the markup vs margin guide →
02
Your Overhead Rate Was Set Before Your Last Hire
You hired a PM 18 months ago. That hire added $90,000 to SG&A. The overhead rate in your bids hasn't changed. Every bid since that hire is underfunded by $90,000 worth of overhead spread across your annual revenue. At $4M, that's 2.25 points of margin gone on every job — silently, every bid. If you're winning too many bids, read this →
03
Billing Timing Is Funding Your GC's Cash Position
Payroll goes out every two weeks. The first pay app isn't approved until week six or seven. The payment arrives week ten or eleven. That's a 60–90 day gap between when cash leaves and when it comes back. On a $400,000 job, you've funded $80,000–$120,000 of that gap from your own working capital. Three simultaneous new job starts stack three simultaneous gaps. The P&L shows revenue. The bank shows the gap.
The Fourth Cause — AR Sitting Uncollected
At $4M in annual billings you generate $330,000+ in invoices per month. A 10% collection lag is $33,000 per month sitting at 45+ days with no follow-up. Over a year, that accumulates into $100,000–$200,000 in an AR backlog that appears as a receivable on the balance sheet but functions as a permanent interest-free loan to every GC who's slow-paying. SPM collects this in the first 30 days of every engagement. Most clients call it the first week's result.
FAQ
Frequently Asked Questions
Why is my construction business busy but not making money?
Four causes account for the vast majority of cases: the markup in bids is lower than the overhead rate requires, the overhead rate hasn't been updated after recent hires or cost increases, billing timing gaps are funding the GC's cash position with the contractor's working capital, or AR is sitting uncollected at 45+ days. Most contractors have multiple problems simultaneously. The first step is separating which problem is which — because each has a different fix.
How do I know if my construction markup is too low?
Calculate your real overhead rate — SG&A divided by revenue from the last 12 months. Your gross margin on every job must exceed that overhead rate before you make a single dollar of net profit. If your markup produces a gross margin of 18% and your overhead rate is 16%, you're making 2% net margin. If your overhead rate is 20%, you're losing 2% on every dollar of revenue. Compare your typical markup to the overhead rate calculator result.
Why does a busy construction company have no cash?
Usually one of three reasons: the jobs are profitable on paper but billing timing means cash goes out 60–90 days before it comes back in (the pay app timing gap), the overhead rate in bids is lower than actual overhead so jobs are profitable on the estimate but lose money at the real cost structure, or AR is sitting uncollected and what looks like cash on the balance sheet is stuck in invoices nobody is following up on. Most cases involve all three.
What is the fastest way to find out why my construction company isn't making money?
Three things: Pull the last 12 months of P&L. Calculate gross margin (revenue minus direct job costs, divided by revenue). Calculate overhead rate (SG&A divided by revenue). If gross margin minus overhead rate is less than 5%, you either have a markup problem or an overhead problem — or both. Then look at AR aging — if you have more than 45 days of revenue sitting uncollected, a significant portion of your 'profit' is in invoices, not in the bank.
Can a construction company be profitable on paper and still fail?
Yes — and it happens more often than most people realize. A subcontractor can show net income on the P&L every year and still run out of cash because the cash timing doesn't match the profit timing. Revenue is recognized when billed. Cash arrives 30–60 days later. Retainage arrives months after that. If the business is growing — more jobs, more working capital required — the cash gap between when expenses go out and when billings come back in can exceed available cash even when the P&L shows profit.