---
id: "stock-reports"
lang: "en"
title: "Stock reports: what sells, what sits and where it went"
summary: "The reports behind stock decisions: what each product sold, what isn't selling and what it's worth, every stock movement, and what your counts found missing."
area: "Reports & dashboards"
kind: "task"
url: "https://zeropos.shop/help/stock-reports"
alternate: "https://zeropos.shop/help/stock-reports?lang=es"
markdown: "https://zeropos.shop/help/md/en/stock-reports.md"
screens: ["/reports/data/dead-stock","/reports/data/products","/reports/data/movements","/reports/data/stocktake-variance","/reports/data"]
where_to_find: ["INSIGHTS › Reports"]
related: ["stock-take","adjust-stock","purchase-orders","reports-overview","products-and-stock"]
updated: "2026-10-13"
---

# Stock reports: what sells, what sits and where it went

The reports behind stock decisions: what each product sold, what isn't selling and what it's worth, every stock movement, and what your counts found missing.

The **Stock** band of the Reports hub holds the reports behind most stock decisions. Each has the same bar: dates, filters, **Group by** and **Export CSV**.

To decide what to reorder, discount or stop selling. To count stock: [Blind stock-take: count your shop's stock](https://zeropos.shop/help/stock-take); to order it: [Order from a supplier and receive it](https://zeropos.shop/help/purchase-orders).

Where to find it: INSIGHTS › Reports.

## Before you start

- By default the owner, administrators and managers can open Reports. Columns at cost show only to people allowed to see cost prices, managers included by default.

## Steps

### Find what isn't selling

1. Open [INSIGHTS › Reports](https://app.zeropos.shop/reports/data) and tap **Stock Ageing**, under **Stock**.
2. Read from the top: products that never sold come first, then those unsold longest (**Days since sold**).
3. Check **On hand** and what it is worth: **Value at retail**, and **Value at cost**.
4. Compare **Sold in period** with **Sell-through**: how much of what you had sold in the dates you picked.
5. Set **Status** to **Inactive** to see the products you deactivated: the stock they still hold, and what it is worth.

### See what sold

6. Back on the hub, tap **Products**: the units **Sold** and **Refunded** of each product, with its **Net revenue** and **Margin**.
7. Set **Group by** to **Category** for what each category sold, or to **Location** to compare shops.
8. Read **Testers**, **Defective**, **Purchased** and **Stock adjustments** to see what else moved each product.

### Find where stock went

9. Tap **Stock Movements**: every change of stock, grouped by **Movement type** to start with.
10. Read **Units in**, **Units out** and **Net units** for each type, from **Sale** to **Manual adjustment**.
11. Tap **Stock-take Variance** for what your counts changed in stock: **Shortage units** and **Surplus units**, and their value at cost.
12. Set **Group by** to **By product** to spot the same product going missing count after count.
13. Read **Δ waiting** and **Δ left out**, the last two columns: what counts found that never reached stock, on a count not validated yet or a line its validation left out ([Blind stock-take: count your shop's stock](https://zeropos.shop/help/stock-take)).

## What happens next

- Nothing changes: these reports only read your stock and sales.
- To act on what you find, count with [Blind stock-take: count your shop's stock](https://zeropos.shop/help/stock-take), correct one product with [Correct stock by hand (Stock adjust)](https://zeropos.shop/help/adjust-stock), write stock off with [Mark tester or damaged](https://zeropos.shop/help/tester-or-damaged) or order more with [Order from a supplier and receive it](https://zeropos.shop/help/purchase-orders).
- **Export CSV** downloads any of them, for example the stock value for your accountant ([Export your figures for your accountant](https://zeropos.shop/help/export-for-your-accountant)).

## Today's stock, whatever the dates

**On hand** and its value are what each shop holds now; the dates only decide **Sold in period**. Export it on the day you need the figure, such as the last day of the year.

**Value at cost** uses each product's cost price today, and **Value at retail** its price.

Treatments and gift cards hold no stock, so **Stock Ageing** leaves them out.

## Common questions

### Why can't I see the cost columns?

They show only to people allowed to see cost prices. The owner decides that in [What each role can do](https://zeropos.shop/help/roles-and-permissions).

### What counts as never sold?

No sale of it, ever, at any shop you can see, whatever dates you pick.

## Good to know

- Tap a column heading to sort by it: **Value at cost** shows where the most money is sitting still.

## Related guides

- [Blind stock-take: count your shop's stock](https://zeropos.shop/help/md/en/stock-take.md)
- [Correct stock by hand (Stock adjust)](https://zeropos.shop/help/md/en/adjust-stock.md)
- [Order from a supplier and receive it](https://zeropos.shop/help/md/en/purchase-orders.md)
- [What each report answers](https://zeropos.shop/help/md/en/reports-overview.md)
- [Products and stock](https://zeropos.shop/help/md/en/products-and-stock.md)
