Inventory how-to
How to calculate average daily sales
Average daily sales is the number of units sold in a period divided by the number of days in that period.
Short answer: Average daily sales is the number of units sold in a period divided by the number of days in that period. Most small stores get the clearest signal from a trailing 28-day window, since it smooths out weekly patterns without reacting too slowly to real changes.
Pick a time window
Use a window long enough to cover normal weekly ups and downs but short enough to catch real shifts in demand. A 28-day window works well for most SKUs because it covers exactly four full weeks, so weekday and weekend patterns balance out evenly.
Decide what counts as a sale
Decide if you count gross units sold, or units sold minus returns and cancellations. For reorder planning, net units (sold minus returned) gives a more honest picture of real demand. Exclude test orders and staff orders if you can identify them.
Handle stockouts and gaps
If a SKU was out of stock for part of the window, the simple average will understate true demand. Either calculate average daily sales only over the days it was actually in stock, or note the stockout and treat the number as a floor, not a true demand rate.
Watch for seasonality and promotions
A plain 28-day average works fine most of the year, but it can mislead you right after a promotion or during a seasonal spike. Once you have at least a year of sales history, compare the same period last year to sanity check the number, rather than relying on the recent window alone.
Step by step
- List total units sold for the SKU over your chosen window, for example the last 28 days.
- Subtract any returns or cancellations from that total to get net units sold.
- Divide net units sold by the number of days in the window to get average daily sales.
- If the SKU was out of stock for some days, divide by the number of days it was actually available instead of the full window.
- Repeat this per variant, not per product, since sell-through rates differ by size or color.
- Recalculate on a rolling basis, for example every week, so the number stays current.
- Cross-check against the same period last year once you have enough history, to catch seasonal effects.
Worked example
A store sold 84 units of a blue medium t-shirt over the last 28 days, with 4 units returned, giving 80 net units. Average daily sales = 80 / 28 = 2.86 units per day. If the shirt was out of stock for 3 of those 28 days, a better estimate is 80 / 25 = 3.2 units per day for the days it was actually sellable.
How SteadyShelf helps
SteadyShelf calculates this automatically per variant using a 28-day sales window by default, and layers in seasonality once it has about 13 months of history. It does not do per-location forecasts, so if you sell from multiple locations you will need to estimate location splits manually.
$29/month flat, unlimited products and suppliers, 30-day free trial. Run the numbers now with the free reorder point calculator.
SteadyShelf is launching on the Shopify App Store. Join early access to get the install link first.
Related guides
- How to calculate carrying cost
- How to calculate cost of goods sold for a small store
- How to calculate days of inventory on hand
- How to calculate a reorder point for a new product with no sales history
All inventory how-to guides ยท Inventory glossary
FAQ
Should I use a 7-day or 28-day window for average daily sales
A 7-day window reacts fast but is noisy, since one big order can double your average. A 28-day window covers four full weeks so weekday and weekend patterns even out, which is why it is the standard default for reorder calculations.
Does average daily sales account for seasonality
A simple average over a recent window does not account for seasonality on its own. You need at least a year of history to compare the same period across years and adjust for seasonal patterns like holiday spikes.
Let SteadyShelf do this math for every SKU
Order-by dates per supplier, seasonal forecasts and draft POs for your Shopify store. $29/month after a 30-day free trial.
Get early access