EnableYourData.com

KPI · Inventory, purchasing and production

Dead stock percentage: formula and example.

Dead stock is inventory that has not sold for a long time, for example twelve months or more. As a KPI you express it as a share of total inventory value. It shows how much capital and warehouse space is tied up in products that will probably sell only at a discount, if at all.

Dead stock percentage formula

Inventory value of products with no sales in the last X months ÷ total inventory value × 100%

Worked example

On 30 June 2026 Acme Groothandel held inventory worth €1,250,000. Products with no sales in the previous twelve months account for €100,000 of that. The dead stock percentage is €100,000 ÷ €1,250,000 × 100% = 8.0%.

Fictitious figures for Acme Groothandel, a sample wholesaler.

How to read this KPI

A lower share means less cash is locked in unsellable stock and less risk of write-downs. Track the trend by quarter and product group, and look at which buying decisions create new dead stock. Agree the X-month threshold with finance, because it is often also used for the inventory provision in the annual accounts.

Pitfalls with dead stock percentage

  • Counting new products that have never sold as dead stock straight away.
  • Treating items that sell the odd unit as healthy when you hold years of supply.
  • Including spare parts or service stock that you deliberately keep for a long time.

SQL & DAX

Calculating dead stock percentage in SQL and DAX

Two examples on a fictitious data warehouse for Acme Groothandel: a PostgreSQL query and a measure for a Power BI model. Adjust table and column names to your own model.

SQL · PostgreSQL
WITH last_sale AS (
  SELECT product_id, MAX(movement_date) AS last_sale_date
  FROM stock_movements
  WHERE movement_type = 'sale'
  GROUP BY product_id
),
current_stock AS (
  SELECT product_id, SUM(value) AS value
  FROM stock_levels
  WHERE snapshot_date = (SELECT MAX(snapshot_date) FROM stock_levels)
  GROUP BY product_id
)
SELECT SUM(cs.value) AS total_stock_value,
       ROUND(100.0 * SUM(cs.value) FILTER (
               WHERE ls.last_sale_date IS NULL
                  OR ls.last_sale_date < current_date - interval '12 months')
             / NULLIF(SUM(cs.value), 0), 1) AS dead_stock_pct
FROM current_stock cs
LEFT JOIN last_sale ls ON ls.product_id = cs.product_id;
DAX · Power BI
Current Stock Value = CALCULATE(SUM(Stock[Value]), LASTNONBLANK('Date'[Date], CALCULATE(SUM(Stock[Value]))))
Dead Stock Share = DIVIDE(CALCULATE([Current Stock Value], FILTER(Products, ISBLANK(Products[LastSaleDate]) || Products[LastSaleDate] < TODAY() - 365)), [Current Stock Value])

In ENABLE

Tracking this KPI in ENABLE

Plain-language questions

Ask for dead stock percentage per month, customer or product in the SQL Explorer with AI. The AI writes the SQL, you see the query and run it yourself; the AI only receives metadata.

Read more →

In your Power BI dashboard

Define the KPI as a measure in your Power BI model and show it in the portal, with "Last refreshed" next to it. Access profiles and optional row-level security decide who sees which figures.

Read more →

Custom dashboards (pilot)

Add the KPI as a tile to a custom dashboard, compared with last year. The Dashboard Builder is a pilot and can be switched on per client.

Read more →

Monthly targets

With the built-in Targets app you set a target for the KPI per month, so you see actuals and target side by side.

Read more →

FAQ

Frequently asked questions

When is stock considered dead stock?

Stock is usually called dead when it has had no sales for a set period, often six or twelve months. The cut-off varies by industry and product type, so set your own. Use the same threshold for the KPI and for write-downs in the accounts.

How do you calculate the dead stock percentage?

Find the last sale date for each product and select those where it falls before the cut-off or is missing. Add up their inventory value and divide by total inventory value. Exclude new products that have not had a chance to sell yet.

What can you do with dead stock?

The usual options are clearance at a discount, returning it to the supplier, selling to a stock liquidator or writing it off and disposing of it. Choose based on what each option recovers compared with the storage cost. Then adjust purchasing so the same items do not pile up again.

Use AI on your own data. Securely, and without the headache.

In an online demo we show how ENABLE makes your data securely available and how you build on it: describing an app in the AI Builder, plain-language questions, dashboards and APIs. And how we set it up and manage it for you.