Seasonal Cash Flow: When Contractors Make and Lose Money
From Level's proprietary contractor research
Contractors doing 40% of revenue in their busy 3 months have to fund 12 months of overhead from a 3-month cash window. Plan for the slowest quarter as if it has zero revenue. If you can't survive that, you don't have a slow-quarter problem — you have a structural cash flow problem.
— Pattern across 2,200+ contractors, $13.25B in job revenue analyzed
The 47% Quarter
Most contractors know their business is seasonal. What they don't know is how extreme the concentration actually is.
The median contractor generates 47% of annual revenue in just 3 months. Not roughly half. Not "it gets busy in the fall." Nearly half of the entire year's cash comes through the door in a single quarter.
At the 75th percentile, it's worse: 66% of revenue in one quarter. Two thirds of the year's work, compressed into 90 days. At the 90th percentile, the top 3 months account for 91% of total annual revenue. That's not seasonality. That's a business that functionally operates for one quarter and survives the other three.
I saw this pattern repeatedly — first in private equity evaluating contractor roll-ups, then working alongside hundreds of HVAC, plumbing, electrical, and mechanical teams. Everyone knew they were "busy in Q4" or "slow in spring." Almost nobody had quantified how concentrated the revenue actually was. And that gap between feeling and knowing is where the cash flow crises happen.
The Revenue Concentration Problem
Here's what the percentile distribution actually looks like:
| Performance Tier | Revenue in Top 3 Months | What It Means |
|---|---|---|
| P50 (Median) | 47% | Nearly half of annual revenue in one quarter |
| P75 | 66% | Two thirds of the year in 90 days |
| P90 | 91% | Effectively a single-quarter business |
Now here's the monthly breakdown, averaged across the contractors I've reviewed:
| Month | % of Annual Revenue | Notes |
|---|---|---|
| December | 14.1% | Peak month for 20% of contractors |
| January | 13.4% | Year-end carryover, emergency work |
| November | 11.6% | Pre-holiday push |
| October | 11.5% | Peak month for 15% of contractors |
| September | 8.2% | Ramp into fall busy season |
| August | 7.6% | |
| July | 7.4% | |
| June | 8.2% | |
| March | 6.3% | Dead zone |
| April | 6.2% | Dead zone |
| February | 5.5% | Lowest month for most contractors |
| May | — | Only 11% of contractors peak Feb through May combined |
The pattern is stark. October through January accounts for over 50% of annual revenue. February through May is the dead zone. Only 11% of contractors see their peak month fall in that four-month stretch. For most of the industry, spring isn't a slow season. It's a cash flow desert.
December is the single most common peak month in our data (20% of contractors peak there), followed by October (15%) and January (14%). A note on methodology: our dataset skews toward commercial and service contractors (HVAC, mechanical, electrical). Residential HVAC shops often see their peak in summer when AC demand spikes. If your business is primarily residential cooling, your curve will look different. But for commercial and mixed-service contractors, Q4 and early Q1 is consistently the busiest period — driven by year-end capital expenditure budgets, tenant buildouts, and planned maintenance before the holidays.
What Happens During the Dead Months
Here's the part that kills contractors: revenue is seasonal. Costs are not.
Your techs need to get paid every two weeks whether you're running 40 jobs or 4. Your rent, insurance, truck payments, and lease obligations don't adjust to your revenue curve. Your material suppliers expect payment on their terms, not yours.
Let me walk through what this looks like for a real contractor profile:
$6M annual revenue, HVAC contractor:
- Peak quarter (Oct, Nov, Dec) revenue: $2.23M (37% of annual)
- Dead quarter (Feb, Mar, Apr) revenue: $1.08M (18% of annual)
- Monthly fixed overhead (payroll, rent, insurance, trucks): ~$280K
- Monthly variable cost at peak: ~$180K
- Monthly variable cost in dead months: ~$90K
In peak months: Revenue ~$740K, costs ~$460K. Cash flows in. You feel great. You buy a new truck. You give bonuses.
In dead months: Revenue ~$360K, costs ~$370K. You're cash flow negative. Every single month. For four months. That's $40K of cash burn before a single surprise expense, repair callback, or delayed payment.
Most contractors cover this gap with one of three approaches, and only one of them is healthy:
- A line of credit. This works if used deliberately. Draw in February, repay in November. Cost: 8-10% interest on the draw. Manageable if planned.
- Cash reserves built during peak. This is the right answer. Set aside 25-30% of peak-month profit to fund the dead months. Almost nobody does it.
- Survival mode. Cut hours, delay vendor payments, defer maintenance, pray. This is what most contractors actually do. It works until it doesn't.
Forecasting the Seasonal Cycle
The fix isn't complicated. It's just uncomfortable because it forces you to plan 6 months ahead instead of 6 weeks.
Step 1: Map your own seasonal curve. Pull 24 months of revenue data from QuickBooks. Plot monthly revenue as a percentage of annual. You'll see your pattern immediately. It probably looks similar to the industry data above, but every trade and geography has its own wrinkle.
Step 2: Map your cost floor. This is the amount you spend every month regardless of revenue. Payroll (including yourself), rent, insurance, truck payments, software, minimum material orders. For most $3-10M contractors, this number is $150-350K/month. It doesn't move.
Step 3: Plot the gap. Overlay your revenue curve on your cost floor. The months where revenue exceeds cost are your surplus months. The months where cost exceeds revenue are your deficit months. Add up the deficit. That's how much cash you need in reserve (or available on a line) to survive without stress.
Step 4: Build the reserve during peak. If your dead-season deficit is $120K (three months at $40K), you need to set aside $30K per month during your four peak months. That means your peak-month profit isn't as high as you think it is. You're not making $280K in October. You're making $250K in October and banking $30K for February.
This is the single most important reframe in contractor financial management: peak-month profit is not discretionary income. A portion of it is pre-payment for the dead months. The contractors who understand this don't panic in March. The ones who don't are the ones drawing emergency lines of credit to cover payroll.
Free cash flow audit
Stop letting cash sit in someone else's bank account.
We benchmark your books against 2,200+ service businesses and tell you exactly where the money is going.
Strategies for Smoothing the Curve
You can't eliminate seasonality, but you can reduce the concentration.
Service Agreements as Revenue Smoothing
This is the most underused lever. A well-structured service agreement book generates monthly recurring revenue that flows year-round. If your SA book represents 15-20% of total revenue and it's properly priced, it functions as a floor under your dead months.
The catch: most contractors' SAs are mispriced and potentially unprofitable. Running a SA book at negative margins doesn't smooth your cash flow. It accelerates the burn. Audit the SA margins first, then grow the book.
Accelerate Billing During Peak
The fastest way to convert seasonal revenue into cash is to invoice the same day the work closes. During your peak months, every day of billing delay is compounded by volume. If you're running 3x the job volume in November and your billing is 5 days slow, you've effectively delayed 15 days of cash versus peak-season same-day invoicing.
Progress billing on commercial jobs is even more critical during the busy season. Don't wait for job completion. Bill on percentage of completion monthly, or more frequently if the contract allows it.
Collect Before the Slowdown
Your dead-season cash position is determined by your peak-season collection rate. If you're carrying $400K in AR into February, some of that is peak-season revenue you haven't collected yet. It's December's cash, sitting in your customer's account while you're burning through reserves.
The collection rate problem hits hardest in seasonal businesses because the timing matters more. Collecting 85% of $740K in October hurts. Collecting 96% puts an extra $81K in the bank before the dead months start.
Shift Work Into the Dead Season
Some contractors actively pursue different work during the slow months. Retrofit projects, energy audits, indoor remodels, planned maintenance. The revenue won't match peak months, but even $200K of off-season work against $370K in fixed costs is dramatically better than $100K.
The trade-off: off-season work is often lower-margin, and you risk overextending your team if peak season starts early. Price accordingly and build break clauses into the contracts.
When Seasonality Doesn't Apply
The contrarian take: not every contractor is equally seasonal.
Pure service and maintenance companies (no construction or project work) tend to have flatter revenue curves. Emergency HVAC in January is just as busy as emergency HVAC in July. If your business is predominantly reactive service, your seasonal concentration might be 30-35% in the top quarter, not 47%.
Contractors with diversified trade coverage (HVAC + plumbing + electrical under one roof) can offset seasonality because different trades peak at different times. Plumbing emergencies spike in winter. HVAC install peaks in spring and fall. Electrical is relatively flat. The portfolio effect smooths the curve.
Government and institutional contractors often operate on fiscal year cycles that don't track calendar seasonality. School districts spend in summer. Municipalities spend before fiscal year-end. If your book is 60%+ government, your seasonal pattern follows budgets, not weather.
If you're in one of these categories and your cash flow is still volatile, the problem probably isn't seasonality. It's likely slow collections, retainage drag, or overhead that's sized for peak revenue running year-round. Those are fixable problems, but they require different solutions than seasonal forecasting.
The Bottom Line
The median contractor generates 47% of annual revenue in a single quarter. At the 75th percentile, it's 66%. The revenue curve is steep, predictable, and almost universally ignored in financial planning.
Revenue is seasonal. Payroll is not. Rent is not. Insurance is not. The contractors who survive the dead months are the ones who planned for them during the peak months — and when the median contractor holds just 21.4 days of cash, even one bad month without reserves can become a crisis. That means quantifying the gap, building reserves, accelerating collections before the slowdown, and treating October's profit as partially spoken for by February's payroll.
This isn't complex financial engineering. It's a 13-row spreadsheet with monthly revenue, monthly cost, and the running cash balance. But most contractors have never built it, and most bookkeepers don't think to ask. That's where a fractional CFO changes the conversation.
Q: How does Level help with seasonal cash flow planning? A: We build a 12-month rolling cash flow model connected to your QuickBooks, overlaying your actual seasonal revenue pattern against your fixed cost base. Every month, we update the forecast and flag upcoming deficit months before they arrive. The first audit is free, and for most seasonal contractors, the cash flow forecast alone justifies the engagement.
Q: How far in advance should I start planning for the dead season? A: Start reserving cash 4-5 months before your dead season begins. If February is your trough, start setting aside surplus in October. The reserve target is simple: total your expected monthly deficit (cost minus revenue) for each dead month. That's your number. If you don't know your monthly cost floor, that's the first thing we calculate.
Q: Can faster invoicing really help with seasonal cash flow? A: Significantly. During peak months, you're running 2-3x normal job volume. If billing is delayed even a few days, the cash impact is amplified by that volume. We've seen contractors free up $100K+ in cash just by moving from 5-day invoicing to same-day invoicing during the busy season. Read our full billing speed benchmarks for the data.
Get the next one
Want next week's benchmark in your inbox?
One email a week. Real numbers from 2,200+ service businesses. No fluff. Unsubscribe anytime.
Related reads
Cash Flow
You Have $180K in Retainage Scattered Across 14 Projects. You Forgot to Chase It.
Retainage isn't past-due AR — it's structural cash drag that goes invisible because it's not on the AR aging report. Most contractors don't have a release process and just hope it shows up. Here's the tracking system + escalation playbook.
Cash Flow
From $7K Jobs to $1.9M Jobs: The Cash Math Nobody Warns You About
Specialty subs going commercial for the first time face a cash math nobody warns them about. Weekly payroll vs. 60-day AR on the GC, retainage held for months, prevailing-wage labor priced 30-50% above residential rates. The peak cash gap on a $1.9M project for a $500K residential shop is roughly $300K. Here's the model.
Cash Flow
December Revenue Looks Great. January Cash Will Destroy You.
October-November are your best months. Cash is flowing. You feel wealthy. Then January hits and revenue dries up while payroll, insurance, and equipment payments don't. The 8-week reserve framework that prevents the seasonal cash trap.

About the author
Sam Young
Founder & Fractional CFO
Founder of Level — fractional finance and operations for service businesses, startups, and SMBs. Ex-CFO across trades, SaaS, and service businesses. 4 years as Director of Growth Product at BuildOps, building financial tooling used by 1,000+ commercial contractors. Four years in PE and investment banking rolling up and acquiring service businesses — $2.5B in total transactions including M&A and IPOs. Stanford MBA, Brown undergrad. Level operates its own proprietary benchmark research (2,200+ companies, $13.25B in revenue analyzed) which informs every client engagement.
LinkedIn