The One Number Every Home Service Owner Should Check Every Monday Morning

Most business owners check their bank balance every Monday. It's the natural instinct—you want to know where you stand before the week gets moving. But almost nobody checks the number that actually predicts what that bank balance is going to look like a month from now.

That number is Days Sales Outstanding, or DSO—the average number of days it takes you to collect payment after you've invoiced a job. If you've never calculated yours, this is worth five minutes, because it might explain a lot about why some months feel tight even when business seems good.

What DSO actually is

Strip away the finance jargon and DSO is simple: it's the average gap between "I did the work and sent the invoice" and "the money is actually in my account."

The formula:

DSO = (Accounts Receivable ÷ Total Credit Sales) × Number of Days

A quick worked example: say you have $30,000 in outstanding invoices (your accounts receivable) at the end of the month, and you billed $60,000 in total that month. Using a 30-day period:

DSO = ($30,000 ÷ $60,000) × 30 = 15 days

That means, on average, it's taking you 15 days after invoicing to get paid. Simple enough—but the implications are bigger than the math suggests.

Why this number matters more than revenue on paper

Revenue is what you've billed. Cash is what you can actually spend. A business can have a fantastic month of booked jobs and invoiced revenue, and still struggle to make payroll—because "revenue" and "money in the bank" are two very different things when DSO is high.

This is the gap that quietly sinks otherwise healthy businesses: the P&L looks great, but the checking account doesn't reflect it, because a big chunk of that "revenue" is sitting in unpaid invoices.

What a healthy DSO looks like

There's no single magic number—residential work tends to collect faster than commercial contracts, which often come with longer negotiated payment terms. But the specific number matters less than the trend. A DSO that's slowly creeping up month over month—even by a few days at a time—is the real warning sign. It usually means something in your invoicing or collections process is quietly breaking down, well before it shows up as a cash crunch.

What causes DSO to creep up without anyone noticing

How to actually check it—and make it a habit

You don't need a monthly close process or a bookkeeper's spreadsheet to keep an eye on this. A five-minute Monday habit works:

  1. Look at total outstanding AR
  2. Check how much of that AR is aging—specifically, how much has drifted into the 61+ and 90+ day buckets
  3. Glance at whether DSO is trending up or holding steady over the last few months

The goal isn't a perfect audit every week. It's catching the drift before it becomes a crisis.

Turning the number into action

If DSO is climbing, there are really only a few levers: invoice faster after job completion, add a consistent reminder sequence for unpaid invoices, and revisit payment terms if commercial clients are stretching them. If DSO is low and stable, that's a sign of a collections process worth protecting as you grow—it's easy to let discipline slip once you're busier.

How SnappyInq handles this

SnappyInq's Accounts Receivable Aging report breaks your outstanding invoices into 0-30, 31-60, 61-90, and 90+ day buckets, so you can see exactly where your DSO problem is hiding—instead of just knowing "AR is too high" without knowing why. The main dashboard flags which invoices need attention right now, so nothing overdue slips out of sight.

One SnappyInq customer used this visibility to bring their average outstanding AR down from $100,000 to $20,000—with most of the improvement coming from invoices that had drifted into the 61+ day bucket. That's not a rounding error; that's the kind of cash flow difference that changes whether payroll feels stressful or routine.

Checking your bank balance tells you where you are. Checking your DSO tells you where you're headed.

See your AR aging and overdue invoices laid out clearly.

Get Started with SnappyInq →