Contractor Cash Flow: Why You Did $500K in Revenue and Still Feel Broke
You looked at your numbers last year. $500K in revenue. That should feel good. Instead, you're shuffling money between accounts to make payroll, putting materials on a credit card, and wondering where it all went.
You're not bad at business. You're dealing with the thing nobody warns you about when you start a contracting company: revenue is not profit, and profit is not cash in the bank.
These are three different numbers, and the gap between them is where contractors go broke.
Revenue vs Profit vs Cash
Let's make this concrete.
Say your shop did $500K in revenue last year. Here's where it probably went:
| Amount | |
|---|---|
| Revenue | $500,000 |
| Materials and parts | -$125,000 (25%) |
| Labor (techs + yourself) | -$175,000 (35%) |
| Overhead (trucks, insurance, tools, software, office) | -$100,000 (20%) |
| Profit (on paper) | $100,000 (20%) |
Looks good on paper. $100K profit. But that's not what's in your bank account. Because:
- $35,000 of your receivables are outstanding (customers haven't paid yet)
- You bought a $45,000 truck this year (cash out the door, shows up as depreciation over time — not in the simple math above)
- You owe $12,000 in quarterly taxes
- You took $60,000 in owner's draws throughout the year
That $100K profit? In reality, you might have $8,000 in the bank. And next month's payroll is $14,000.
That's the cash flow gap. It hits every contractor eventually.
The 5 Cash Flow Killers
1. Slow-Paying Customers
Residential customers who pay on completion are great. The problem is commercial work, property managers, and insurance jobs. Net-30 becomes net-45 becomes net-60 becomes you chasing invoices while your supplier wants payment now.
Every dollar sitting in "accounts receivable" is a dollar you can't use. If you have $40K in outstanding invoices at any given time, that's $40K of your money that someone else is holding.
2. Material Costs Paid Upfront
You buy the water heater before you install it. You stock the van with fittings and pipe before the call comes in. You put $2,500 in copper on a credit card Monday for a repipe that won't get paid until Friday — or next month.
The cash goes out before the cash comes in. Every single time.
3. Seasonal Dips
Every trade has a slow season. Plumbing slows in spring. HVAC dies between heating and cooling. Roofing stops in winter (cold climates). Landscaping hibernates November through March.
Your revenue drops 30-50%, but your fixed costs don't drop at all. Truck payments, insurance, phone bills, software — they all hit the same day every month regardless of how many jobs you ran.
We wrote a full guide on surviving slow season if you're in that spot right now.
4. Truck and Equipment Payments
A work van: $800-1,200/month. Equipment loans: $200-500/month. Insurance on the fleet: $300-600/month per vehicle. These are fixed costs that don't care if you're busy or slow.
When you go from 1 truck to 3, your fixed costs nearly triple but your revenue doesn't triple overnight. There's a painful lag where you're paying for capacity you haven't filled yet.
5. Not Separating Personal and Business Finances
Running everything through one bank account is the fastest way to lose track of where you stand. You see $20,000 in the account and think you're fine. But $8,000 of that is for quarterly taxes, $5,000 is next week's payroll, and $3,000 is the insurance payment that autodrafts on the 15th.
You actually have $4,000 of usable cash. But you didn't know that until it was gone.
7 Fixes That Actually Work
1. Require Deposits on Jobs Over $500
This is the single biggest thing you can do for cash flow. A 50% deposit on installs, replacements, and larger repairs means you're not floating the full material cost.
Customers expect it. Seriously. When someone's getting a $2,000 water heater install, they're not surprised when you ask for $1,000 upfront. If they balk, that's a red flag about whether they'll pay at all.
For service calls under $500, collect payment on completion. No exceptions.
2. Invoice the Same Day You Finish
Not the next day. Not Friday afternoon. The same day.
Every day between finishing the work and sending the invoice is a day you're not getting paid. If you do 4 jobs on Tuesday and don't invoice until Friday, you've given away 3 days of cash flow — on every single job.
This is where software helps. Build the invoice on your phone while you're still in the driveway. Send it before you start the truck. The customer gets it while the work is fresh and pays faster.
3. Offer Online Payments
Customers who can tap a link and pay with a card on their phone pay 2-5 days faster than customers who have to write a check and mail it. That's not a guess — it's what every payment processor reports.
Accept cards, ACH, and Apple/Google Pay. Yes, you'll pay 2.5-3% in processing fees. But getting paid in 1 day instead of 14 days is worth that fee every single time.
4. Set Up a Cash Reserve
Target: 2-3 months of fixed expenses in a separate savings account. If your monthly nut is $15,000 (payroll, trucks, insurance, rent, software), you want $30,000-45,000 sitting untouched.
"I can't afford to save that much." You can't afford not to. Start with $500/month. In two years, you'll have $12,000. That's the difference between surviving a slow February and taking out a high-interest loan.
5. Track Job Profitability
You need to know — per job — whether you made money. Not "we were busy this month." Not "revenue was good." Did that specific $1,800 water heater install actually produce profit after parts, labor, drive time, and overhead?
If you're not tracking this, you might be running jobs at a loss and not knowing it. The busiest month of your year could also be the least profitable.
How to price service jobs so you actually make money
6. Get Ruthless About Receivables
Set up a system:
- Day 1: Invoice goes out (same day as job completion)
- Day 7: Friendly reminder if unpaid
- Day 14: Second reminder, slightly firmer
- Day 30: Phone call
- Day 45: Final notice before collections
Most contractors skip the follow-ups because it feels awkward. But $40K in outstanding invoices at 30+ days is $40K you can't use for payroll, materials, or growth.
Automate the reminders. Your FSM software should do this without you thinking about it.
7. Separate Your Accounts
At minimum, set up three bank accounts:
- Operating account. Revenue comes in, bills go out.
- Tax savings. Transfer 25-30% of profit to this account every month. Don't touch it.
- Owner's pay. Pay yourself a consistent amount, not "whatever's left."
Some contractors add a fourth: a profit account (Profit First method). Every dollar that comes in gets split across accounts by percentage before you pay a single bill. It forces discipline.
The Real Math
Let's say you implement three changes:
- Require 50% deposits on install jobs (average: 8 installs/month at $2,000 each)
- Invoice same-day and offer online payments (cuts average collection from 14 days to 3 days)
- Follow up on overdue invoices at 7 and 14 days
Before: You're floating $35,000-45,000 in receivables and material costs at any given time.
After: You're floating $10,000-15,000.
That's $20,000-30,000 freed up — sitting in your bank account instead of in someone else's. Enough to cover payroll during a slow month, stock a new van, or stop putting materials on a credit card at 22% interest.
Stop Chasing Invoices Manually
This is the kind of thing FieldKit handles automatically. Send invoices from your phone on the job site, accept online payments, and set up automatic payment reminders so you never have to manually chase a check again.
Try it free for 14 days → — no credit card required.