What is DSO (Days Sales Outstanding)?

You’ve seen it happen before. Revenue looks good on paper, but the cash doesn’t hit the bank for weeks.

If you’re running a startup with tight reserves, you already track this instinctively, even if you didn’t know it had a name. It’s called days sales outstanding, or DSO.

Days sales outstanding tells you how long it takes to turn sales on credit into actual cash. When DSO rises, your working capital tightens and your runway shortens. Keep it low, and you unlock cash for growth, payroll, or just breathing room when things get unpredictable.

This guide breaks down everything finance and startup teams should know about days sales outstanding: how to calculate it, what it means, and how to keep it under control without losing hours to spreadsheets.

Understanding the basics of days sales outstanding (DSO)

Days sales outstanding measures the average number of days it takes to collect cash from customers after a sale. Think of it as a timer: it starts when you send an invoice, and it stops when you get paid.

Here’s the formula:

DSO = (Accounts receivable ÷ Net credit sales) × Number of days in period

Each part means:

  • Accounts receivable: What customers owe at the end of the period.
  • Net credit sales: Sales made on credit (exclude cash sales).
  • Number of days: The length of your measurement period — typically 30, 90, or 365 days.

Don’t include cash sales. Those get paid instantly, so they don’t affect DSO.

A DSO of 45 means you wait about a month and a half to collect payment.

Lower DSO means faster cash conversion. Higher DSO means credit terms or collections may need tightening.

For startups, days sales outstanding is a quiet pulse on survival. Every day delayed affects payroll, growth, and control over your own destiny.

Ways to calculate days sales outstanding

The standard method works well, but tweaking the formula gives better insight when sales fluctuate.

Standard monthly DSO

Use your accounts receivable at month-end and monthly credit sales:

DSO = (Ending AR ÷ Monthly credit sales) × Days in month

This method works well if your sales are fairly steady each month.

Average accounts receivable method

Smooth out spikes with this formula:

DSO = ((Beginning AR + Ending AR) ÷ 2) ÷ Total credit sales × Number of days

This helps if your receivables bounce around month to month.

Trailing period calculation

If sales change with the seasons or aren’t even, look at a trailing 3-month or 12-month period:

DSO = Current AR ÷ (Credit sales for last N months ÷ Days in last N months)

Here's how this smooths out seasonal highs and lows: when you average sales over several months, you blend peak periods with slower periods. Let's say you're a retail business that does 40% of annual revenue in Q4. If you calculate DSO in January using only December's sales, your DSO looks artificially low—you're dividing current AR by a huge sales number. But if you use a trailing 12-month average, you're dividing by a number that represents your typical sales pattern across the entire year.

The same works in reverse during slow months. A trailing period keeps your DSO metric stable and meaningful, so you're measuring actual collection performance instead of seasonal sales swings.

Countback method

Analyze your accounts receivable and sales month-by-month to adjust for seasonality. If your sales aren’t linear, this approach gives accuracy and clarity.

Income statement method

Some teams use average daily sales to smooth out day-to-day fluctuations. If your sales spike on certain days or vary throughout the month, averaging them gives you a more stable baseline. This makes your DSO calculation more accurate and easier to track over time:

DSO = Accounts receivable ÷ (Total credit sales ÷ Period length in days)

Picking the right time period and AR components

Accurate DSO needs careful choices about the time period, and what sales and AR you include.

Time period selection

Monthly DSO fits most startups. It matches up with monthly reporting and gives fast feedback.

Go quarterly or annual if:

  • Sales swing a lot by month
  • You’ve got long sales cycles or irregular invoices
  • You want to track the bigger trends

Line up your AR and sales periods. For October’s DSO, use AR from October 31 and October credit sales.

Credit sales, not total sales

Stick with credit sales. Cash sales already put money in the bank and drag DSO down artificially. If your system doesn’t track credit and cash sales separately, estimate or track them manually.

Accounts receivable components

Use gross AR before any allowance for doubtful accounts. You want to know collection timing for all invoices, not just the trustworthy ones. But, keep an eye on aging reports too. A 120-day AR is different from one that’s just 15 days old.

Handling seasonality

Businesses with seasonal swings should use trailing 3- or 12-month DSO to avoid misleading jumps. You’ll get a clearer view of collection trends.

Why DSO is more than just a finance metric

DSO sits at the intersection of cash flow, working capital, and growth.

Cash flow and working capital

Cut a day off DSO and you release that day's worth of sales into working capital. If you generate $10,000 in daily credit sales and lower DSO by 10 days, you just opened up $100,000 of cash.

Put that cash to work:

  • Pay vendors sooner and earn discounts
  • Invest in product development
  • Build a solid cash buffer for surprises

As we covered in our guide on cash flow metrics, speed of collection defines agility.

Extend your runway

If you have $500K in cash and burn $100K each month, every dollar locked in receivables shortens your runway. Drop DSO by 30 days and you get $50K of breathing room, enough to keep your options open before the next fundraise.

Part of your cash conversion cycle

DSO is just one piece. The full cash conversion cycle includes:

  • Days inventory outstanding (how long you store inventory)
  • Days sales outstanding (how long you wait to collect)
  • Days payable outstanding (how long you take to pay suppliers)

Shorten DSO and you shorten the cycle, freeing up working capital. Startups with a lean cycle have more flexibility and less need for outside cash.

DSO as an early warning

If DSO starts rising, it’s time to dig in. Spot signs early, like:

  • Customers struggling to pay
  • Disputes over product or service
  • Slow invoicing or collection hiccups
  • Sales teams stretching payment terms

Keep an eye on DSO, and you'll have time to act before problems balloon.

Common DSO mistakes to avoid

Even small missteps can throw your days sales outstanding off.

Including cash sales

Cash sales pay right away. Skip them in DSO. If your system won’t split credit and cash sales, track this manually or use Runway to monitor this.

Ignoring seasonality

A holiday sales bump can drop DSO the next month. Don’t assume faster collections—check the broader trend with trailing-period calculations.

Comparing different payment terms

Payment terms matter. A net-30 business should have lower DSO than a net-60 one. Instead of raw DSO, look at "days beyond terms" for apples-to-apples comparison.

Overlooking bad debt and aging

DSO treats all receivables the same, but an old invoice matters more. Regularly review aging reports with DSO for a true picture.

Using total sales instead of credit sales

Total sales lower your DSO unrealistically. Stick to credit sales to keep your calculation clean.

Mixing up time periods

Use AR and sales from the same period. For October DSO, use October numbers. Stay consistent every month.

Focusing only on the number

DSO is a tool, not a final goal. Sometimes, granting credit to reliable customers boosts growth even if your DSO goes up slightly. Track context, not just the score.

Key DSO benchmarks and rules of thumb

DSO norms vary by industry and how you sell. A 2016 study shows median DSO from 30 to over 70 days, depending on sector.

Here's the typical range:

  • SaaS companies: 30-40 days
  • Manufacturing: 45-65 days
  • Healthcare: 50-70 days

Benchmarks reflect payment practices and terms. Healthcare DSO runs higher because of insurance cycles. Saas companies often bill monthly or upfront, so DSO stays lower.

Aim for DSO that’s no more than 10-15 days over your standard payment terms. Net-30 terms? Shoot for 40-45 DSO to allow for some expected delays.

Track your own trendline before chasing benchmarks — your DSO is a reflection of your relationships, not just your math.

How to calculate days sales outstanding in Runway

Manual DSO tracking means jumping between tabs, fixing formulas, and repeating each month. Runway automates the process completely.

Step 1: Connect your accounting data

Connect your accounting system to Runway. The platform integrates with 750+ tools, including QuickBooks Online, Xero, and NetSuite. Your income statement and balance sheet data sync automatically.

Add the prebuilt templates to create Income Statement and Balance Sheet databases with the right drivers and dimensions:

If you're creating databases manually or enriching them, configure the data source, drivers, and dimensions so your Balance Sheet includes AR account(s) and your Income Statement includes revenue accounts.

Step 2: Identify AR and revenue fields

In your Balance Sheet, find the driver that holds period-end balances (like "Ending Balance" for QuickBooks or "BS Amount" for NetSuite). Make sure you can filter by account-level dimensions like Account Name, Account Type, or Account Category.

In your Income Statement, find the driver that holds monthly revenue (like "Income Statement Amount" or "Net IS Amount"). Confirm you can filter by account-level dimensions to isolate revenue — Account Type, Account Category, GL category, or similar.

Check the supported data fields in the integration pages linked above to see exactly what you'll get.

Step 3: Choose where to calculate DSO

You can calculate DSO in a few places:

  • As a new number driver in a model or drivers table block (unsegmented or segmented)
  • As a number driver column in a metrics database

Runway lets you reference entire database columns in formulas and filter them right in the formula editor. See where to write formulas and adding a column to a database for more detail.

Step 4: Build your AR reference

In your DSO formula, insert the Balance Sheet column reference. Runway wraps it in sum() automatically. Then filter to Accounts Receivable:

  • Example: sum(BS Data.Ending Balance)
  • Click the pill in the formula editor, then "Add rule" to filter:
  • Account Type/Category/Name: is "Accounts Receivable" (or your specific AR account(s))
  • Date: This month

This gives you the AR balance at month-end.

Step 5: Build your revenue reference

Insert the Income Statement column reference and filter to revenue accounts or categories:

  • Example: sum(IS Data.Income Statement Amount)
  • Add rules like:
  • Account Category/Type: is "Revenue" or "Income" (or whatever defines revenue for you)
  • Date: This month

If you have multiple revenue accounts across different GL codes, you can standardize them with a lookup table — map many GL accounts to a single "Revenue" category, then filter on that.

Step 6: Calculate days in month

Use Runway's built-in daysInMonth() function in your DSO formula. It automatically pulls the number of days for each month, so you don't need to update anything manually.

Step 7: Write your DSO formula

The standard monthly DSO formula divides AR at month-end by average daily sales for that month:

DSO = AR at month-end / (Revenue for month / Days in month)

In Runway, write it like this:

DSO = ifError(AR_reference / (Revenue_reference / daysInMonth()), 0)

Use ifError to avoid divide-by-zero errors when revenue is missing.

Here's what the full formula looks like with pills for AR and Revenue:

DSO = ifError(sum(BS Data.Ending Balance) / (sum(IS Data.Income Statement Amount) / daysInMonth()), 0)

Replace the sample names with your actual columns and add your filters as described in steps 4 and 5.

Step 8: Build trailing-period DSO (optional)

For seasonal businesses or smoother trends, calculate trailing-period DSO (like 3-month or 12-month):

  • Create a helper number driver called "Days This Month" with the formula: daysInMonth()
  • Compute:
    • Revenue_T3 = sum(IS Revenue, Date = Last 3 months)
    • Days_T3 = sum(Days This Month, Date = Last 3 months)
    • Average daily sales_T3 = Revenue_T3 / Days_T3
    • DSO_T3 = ifError(AR_EOM / Average daily sales_T3, 0)

Step 9: Use average AR method (optional)

Some teams prefer to calculate DSO with average AR over a period instead of just the ending balance:

DSO_T3 = (Average AR over 3 months / Average daily sales over 3 months)

Build it like this:

  • Average AR_T3 = avg(AR_EOM, Date = Last 3 months)
  • Average daily sales_T3 = sum(Revenue, Date = Last 3 months) / sum(Days This Month, Date = Last 3 months)
  • DSO_T3 = ifError(Average AR_T3 / Average daily sales_T3, 0)

This approach smooths out monthly swings.

Step 10: Segment DSO by customer or region (optional)

Want to see DSO by customer, region, or subsidiary? Make sure your Balance Sheet and Income Statement databases are segmented by the same dimension (like Customer), or link them with a lookup table.

In your database driver default formula, use "This Segment" so AR and Revenue filters match the current segment automatically. This gives you DSO per customer, per region, or however you've segmented your data. Learn more about dimensions and dynamic formulas using This Segment.

Step 11: Separate actuals and forecast

In Runway, each driver can have an Actuals formula (through your last close) and a Forecast formula (after your last close). You can keep the same logic if both AR and Revenue are forecasted, or use different logic in your Forecast formula if you want to model future scenarios differently.

If you leave the Actuals formula blank, Runway falls back to the Forecast formula for all periods. Learn more about forecast vs. actuals formulas.

Step 12: Validate your results

Drill into your AR and Revenue references to verify your filters are working correctly. Check that your database column filters are pulling the right accounts.

If you built DSO inside a database, show the column as a time series to review month-by-month output and catch any anomalies.

Use database filters and grouping to spot-check AR-only and Revenue-only subsets. Make sure you're not accidentally including cash sales or other accounts that shouldn't be in your DSO calculation.

Tips for DSO in Runway

Runway automatically wraps database references in sum() and lets you filter and set date ranges for each piece of data.

Protect against zero or missing revenue months by using ifError or IF logic.

If you're working with messy GL mappings, such as multiple revenue accounts that need to combine, build a lookup table and populate a "Revenue Category" dimension. Then you can filter on that dimension in your formulas instead of hunting down individual account names.

Build your DSO formula once, and Runway updates it automatically every month. You're done with manual formula tweaks.

Frequently Asked Questions

What's a good DSO target for most startups?

Keep DSO within 10–15 days of your standard payment terms. If you invoice on net-30 terms, aim for a DSO around 40–45 days. But benchmarks vary by industry, sales model, and customer mix—so track your trend over time rather than chasing a generic target.

Why does rising DSO matter so much for cash flow?

Every extra day you wait to collect payment ties up cash you could use for hiring, product development, or extending runway. Even reducing DSO by a few days unlocks meaningful working capital.

How do I reduce my DSO without hurting customer relationships?

Start with simple operational improvements: invoice promptly, confirm payment terms before closing deals, and follow up consistently. You can also offer small discounts for early payment or provide clearer billing documentation to reduce disputes.

What tools can help monitor and automate DSO tracking?

Runway automatically calculates, monitors, and analyzes DSO in real time—no more updating spreadsheets every month. It connects to your accounting system, keeps your data up to date, and shows you how changes in collections or terms affect cash flow and runway.

Make days sales outstanding work for you

Days sales outstanding isn’t just about collecting faster. It’s about creating control. When you automate it, you turn scattered data into real insight — freeing up cash, time, and focus.

With Runway, you connect once, calculate instantly, and never touch a spreadsheet again.

Automate DSO in Runway. See how small changes in payment behavior ripple through your cash flow and runway — and take back hours every month.

Get started with Runway.