# What Is Days Sales Outstanding (DSO)?

Days sales outstanding (DSO) is the average number of days it takes a business to collect payment after making a sale on credit. Calculate it by dividing accounts receivable by credit sales for a period, then multiplying by the days in that period. A contractor with a 45-day DSO waits about six weeks, on average, to get paid.

## Key takeaways

- DSO = (Accounts receivable ÷ Credit sales) × Days in period.
- Lower is better: every day you cut from DSO frees up one day of sales in cash.
- Compare DSO to your payment terms. Net 30 terms with a 50-day DSO means customers pay about three weeks late on average.
- Retainage inflates DSO on commercial work, so calculate it with and without retainage.
- Track DSO monthly. A rising DSO shows a collections problem before the bank balance does.

## How do you calculate days sales outstanding?

**Days sales outstanding**

```
DSO = (Accounts receivable ÷ Credit sales) × Days in period
```

Where:
- Accounts receivable = open customer invoices at the end of the period (from your A/R aging report)
- Credit sales = sales you invoiced during the period. Leave out jobs paid on the spot by cash or card.
- Days in period = 30 for a month, 90 for a quarter, 365 for a year. Use the same period as the sales figure.

> **Worked example: a roofing company's quarter**
>
> Illustrative numbers. A roofing company invoices $540,000 in a 90-day quarter. At quarter-end, $180,000 of that is still unpaid.
>
> DSO = ($180,000 ÷ $540,000) × 90 = **30 days**.
>
> Its contract says payment is due on completion, so a 30-day DSO means the average customer pays about a month after the roof is done. Most of that is insurance-check timing, which is where the owner should focus.

Want the number for your own business? Use the [DSO calculator](https://www.brix.so/tools/dso-calculator). Pull A/R from your aging report and credit sales from your [profit and loss statement](https://www.brix.so/learn/profit-and-loss-statement) for the same period.

## How much cash does a lower DSO free up?

Each day you cut from DSO turns one day of average sales into cash in the bank. Daily sales = credit sales ÷ days in period. Multiply that by the days you cut.

**Cash freed by lowering DSO**

```
Cash freed = (Credit sales ÷ Days in period) × Days of DSO cut
```

> **Worked example: what 10 days is worth**
>
> Illustrative numbers. An electrical subcontractor bills $600,000 a quarter, or $6,667 a day ($600,000 ÷ 90).
>
> If it cuts DSO by 10 days, it frees $6,667 × 10 = **about $66,700** in cash, money it no longer has to borrow on a line of credit or float out of the owner's pocket.

## How does retainage affect DSO?

[Retainage](https://www.brix.so/learn/retainage) is part of your A/R but isn't due until the job (or your scope) is complete, so it pushes DSO up even when customers pay every progress bill on time. Calculate DSO both ways: with retainage, to see total cash tied up, and without, to see how well you're collecting what's actually due.

> **Worked example: DSO with and without retainage**
>
> The electrical sub above ends the quarter with $310,000 in A/R. Of that, $95,000 is retainage held by general contractors.
>
> DSO with retainage = ($310,000 ÷ $600,000) × 90 = **46.5 days**.
>
> DSO without retainage = ($215,000 ÷ $600,000) × 90 = **32.3 days**.
>
> Collections on current bills are fine. The real cash drag is the $95,000 of retainage, so the fix is closing out jobs faster: punch lists, closeout documents and retainage invoices.

## What is a good DSO for a contractor?

A good DSO is one close to your payment terms. There's no single industry benchmark that fits every shop, because the number depends on whether you collect on site, bill on net 30 or wait on general contractors and insurance companies. The table shows how DSO tends to behave by type of work.

**How DSO tends to behave by type of work**

| Trade / type of work | How customers usually pay | What drives DSO up |
| --- | --- | --- |
| Residential HVAC and plumbing service | Card or financing at the time of service | Jobs invoiced later instead of collected on site |
| Commercial HVAC and plumbing service | Net 30 invoices, sometimes with PO numbers | Missing PO numbers, invoices sent to the wrong approver |
| Residential roofing | Deposit, then balance at completion; insurance checks | Insurance depreciation and supplement timing; mortgage-company endorsements |
| Electrical and mechanical subcontractors | Monthly progress billing to GCs | Pay-when-paid clauses, retainage, lien waiver paperwork |
| General contractors | Monthly draws from owners or lenders | Draw inspections and incomplete [AIA billing](https://www.brix.so/learn/aia-billing) packages |
| Landscaping and cleaning contracts | Monthly invoices or card on file | Small invoices that nobody follows up on |

_Patterns, not measured benchmarks. Use your own DSO trend as the benchmark._

## DSO vs. DPO and the cash conversion cycle

DSO measures how fast customers pay you. Days payable outstanding (DPO) measures how fast you pay suppliers; see [accounts payable](https://www.brix.so/learn/accounts-payable). If your DSO is 45 days and your DPO is 30, you're carrying 15 days of job costs yourself. Businesses that hold inventory add days inventory outstanding to get the full cash conversion cycle: DIO + DSO − DPO. For most service contractors with small [truck stock](https://www.brix.so/learn/truck-stock), DSO minus DPO is the number that matters.

## How do you lower DSO?

1. **Invoice the same day.** Every day between job completion and invoice adds a day to DSO.
2. **Collect on site.** For residential work, take card, ACH or financing before the truck leaves.
3. **Take deposits and bill progress payments** on larger jobs so less is outstanding at the end. See [progress billing](https://www.brix.so/learn/progress-billing).
4. **Send reminders automatically** before the due date, on the due date and every week after.
5. **Make paying easy.** Put a pay-online link on every invoice and text it, not just email it.
6. **Work the aging report weekly.** Call anything 30 days past due. The full playbook is in [how to collect unpaid invoices](https://www.brix.so/learn/how-to-collect-unpaid-invoices).

## Common DSO mistakes

- **Including cash sales.** Jobs paid on the spot never enter A/R, so counting them in sales makes DSO look better than it is.
- **Mixing periods.** Year-end A/R divided by one month's sales gives a meaningless number. Match the A/R date to the sales period.
- **Ignoring seasonality.** A landscaper's DSO in March looks terrible because winter sales were tiny. Compare to the same month last year.
- **Letting payments sit unapplied.** Payments not matched to invoices keep A/R (and DSO) artificially high.
- **Looking at the average only.** A 35-day DSO can hide one customer at 120 days. Check the aging report too.

BRIX turns finished jobs into invoices the same day and politely chases unpaid ones until the money is in your account, then syncs payments to QuickBooks so your A/R and DSO reflect reality.

- [Invoicing and payments](https://www.brix.so/features/invoicing-payments): Turns finished jobs into invoices and politely chases unpaid ones until the money is in your account.
- [QuickBooks sync](https://www.brix.so/integrations/quickbooks): Syncs customers, invoices and payments with QuickBooks so the books match the jobs.

## Frequently asked questions

### What is a good DSO?

A DSO close to your payment terms is good. If you bill net 30 and your DSO is around 30, customers are paying on time. A DSO well above your terms means customers are paying late or invoices are going out late.

### How do I calculate DSO in QuickBooks?

Run the A/R aging summary as of the last day of the period and a profit and loss report for the same period. Divide total A/R by invoiced sales, then multiply by the number of days. If you take a lot of payments on site, subtract those from sales first.

### Is a lower DSO always better?

Almost always. A lower DSO means cash arrives sooner. The exception is when you get it by offering steep discounts or turning away good customers with longer terms, so weigh the cost of the change against the cash it frees.

### Should retainage be included in DSO?

Calculate it both ways. DSO with retainage shows all the cash tied up in receivables. DSO without retainage shows how well you collect bills that are actually due. Commercial subcontractors often see a big gap between the two.

### What's the difference between DSO and average days to pay?

DSO is a company-wide average based on A/R and sales. Average days to pay is measured invoice by invoice or customer by customer. Use DSO for the overall trend and per-customer days to pay to decide who to call.

### How often should I calculate DSO?

Monthly is enough for most contractors. Track it on a rolling basis and compare it to the same month last year, since seasonal swings in sales move the number.

## Related

- [Days Sales Outstanding (DSO) Calculator for Contractors](https://www.brix.so/tools/dso-calculator)
- [What Is Accounts Receivable?](https://www.brix.so/learn/accounts-receivable)
- [What Is Accounts Payable?](https://www.brix.so/learn/accounts-payable)
- [How to Get Paid Faster as a Contractor](https://www.brix.so/learn/how-to-get-paid-faster-as-a-contractor)
- [How to Collect Unpaid Invoices (A Contractor's Escalation Plan)](https://www.brix.so/learn/how-to-collect-unpaid-invoices)
- [What Is Retainage in Construction?](https://www.brix.so/learn/retainage)
- [Cash Flow for Contractors: Why Profitable Shops Run Out of Money](https://www.brix.so/learn/cash-flow-for-contractors)
- [Contractor invoicing software that sends the invoice and chases the money](https://www.brix.so/features/invoicing-payments)
- [Bookkeeping for contractors that keeps your books tax-ready all year](https://www.brix.so/features/bookkeeping-taxes)
- [QuickBooks for contractors: the right version, real job costing and a sync that keeps the books matched to the jobs](https://www.brix.so/integrations/quickbooks)

---
Written by BRIX Editorial Team. Last updated 2026-10-12.
Canonical: https://www.brix.so/learn/days-sales-outstanding
