Customer Analysis
Aging & DSO
Where does your accounts receivable stand today? Track every open invoice by age, identify slow payers early, and measure collection performance by customer.
Customer Analysis
Where does your accounts receivable stand today? Track every open invoice by age, identify slow payers early, and measure collection performance by customer.
Total AR
$5K
All open invoices
Avg DSO
3.8d
Across all customers
90+ Days AR
$0
0.0% of total AR
Customers
16
With open balances
How Aging Works
P21 ages invoices by invoice date and places each open balance into a time bucket based on how many days have passed. The buckets are: Current (0–29 days), 30–59, 60–89, 90–119, 120–149, and 150+ days.
Current Due is the amount not yet past due — invoices where fewer than 30 days have elapsed since the invoice date. The Total column sums all buckets, giving you the complete open balance for each customer regardless of age.
Buckets can be reconfigured in P21 under AR Options to use due date instead of invoice date, which shifts balances based on the customer's payment terms rather than when the invoice was issued.
Days Sales Outstanding (DSO) Per Customer
DSO measures the average number of days a customer takes to pay after being invoiced. It is calculated using the P21 built-in function p21_fn_days_sales_outstanding, which compares each customer's open AR balance against their average daily sales over the configured AR window (default: 30 days).
Formula: DSO = Open AR ÷ Average Daily Sales
A customer with a DSO higher than their stated payment terms is a collection risk. For example, a customer on Net 30 terms with a DSO of 55 is consistently paying 25 days late. Track DSO trends over time — a rising DSO is an early warning sign before balances move into older aging buckets.
Reading the Aging Table
Each row represents one customer with an open AR balance. Click any column header to sort. The color coding on the aging columns indicates escalating collection urgency:
The totals row at the bottom of the table sums each aging bucket across all customers, giving you a portfolio-level view of your AR risk distribution.
| Customer | Terms | DSO | Current | 30 Days | 60 Days | 90+ Days | 120+ Days | 150+ Days | Total Due↓ |
|---|---|---|---|---|---|---|---|---|---|
| John Doe(10032) | 30.0d | $4,780 | $0 | $0 | $0 | $0 | $0 | $4,780 | |
| Shirt Emporium(10010) | Net 15 Days | 30.0d | $11 | $0 | $0 | $0 | $0 | $0 | $11 |
| Pants Galore(10011) | Net 15 Days | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 |
| Partridge Place(10012) | Net 15 Days | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 |
| Cottage Grove Store(10013) | Net 15 Days | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 |
| Lithia Fun(10014) | NET 10 Days | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 |
| Joe Smith(10023) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| John Smith(10024) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| John Doe(10035) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium(10142) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium(10143) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium(10144) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium(10145) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium 3(10147) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Shirt Emporium 2(10148) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| test customer(10150) | 0.0d | $0 | $0 | $0 | $0 | $0 | $0 | $0 | |
| Totals | $4,791 | $0 | $0 | $0 | $0 | $0 | $4,791 | ||