Skip to content

Inventory and stock movements reports

Two reports cover stock. The Inventory report is a snapshot of what you hold right now. The Stock movements report shows how stock moved over a period. Both are under Analytics. For the date presets, Apply and CSV basics, see Reports overview. For the stock itself, see Inventory overview.

Open Analytics, then Inventory report.

The report is live, so it has no date range. The header says “As of” and the time. The filters are Outlets, Categories and Brands. Select Apply after changing them. They apply to all three tabs and to the cards.

Card What it means
Stock value “On-hand units at average cost, or supply price when there is no average cost. Stock below zero counts as 0.” If some items have no cost, a line says how many, for example “3 items have no cost”.
Retail value “On-hand units at retail price, excluding tax.”
Out of stock “Active items at zero or below, counted once per outlet.”
Dead stock value “Cost value of stock with no sale in 90 or more days, including items never sold.” This card always uses 90 days, whatever the Dead stock tab is set to.

The default tab. Use the Group by list above the table: Product (the default), Variant, Category, Brand or Outlet.

Column What it means
Product (or the group name) The name, with SKU and an Inactive tag where it applies. Select it to open the product in a new tab.
Category Shown when you group by product or variant.
On hand Units in stock now. A red Below zero tag marks stock that went negative.
Cost value On-hand units at average cost, or supply price if there’s no average cost.
Retail value On-hand units at retail price, before tax.
Margin The gap between retail and cost value, as a share of retail value.
Share of stock value The row’s cost value as a share of the total.

The table opens with the highest Cost value first, and ends with a Total row. Stock below zero comes from overselling or from items you don’t track. It counts as zero in the values, and a “Some stock is below zero” notice says how many records are affected.

Lists products that are out of stock or low at one or more outlets. The Status column reads like “Out at 2 outlets”, “Low at 1 outlet” or “Out at 1, low at 2”. The table opens with the most outlets out first.

  • Out means on hand is zero or below.
  • Low means the product has a reorder point, and on hand plus stock already on order is at or below it.

Columns: Product, Category, Status, On hand, On order (open purchase orders) and Reorder point. Select the chevron to see each outlet on its own line, with an Out of stock or Low stock tag, its own on-hand (negative numbers show as they are), on order and reorder point. The reorder point shows a dash for an outlet with no rule.

If you can manage purchase orders and your plan includes reorder points, an Open reorder list button takes you to the reorder list. See Reorder list. When nothing qualifies, the tab says “Nothing is out of stock or below its reorder point.”

Lists stock that has sat unsold. Use the No sales in list: 30+ days, 60+ days, 90+ days (the default) or 180+ days.

Columns: Product (with an Inactive tag if it applies), Category, On hand, Cost value, Retail value, Last sold and Days since sale. Items that have never sold show “Never”, and sort as the oldest. Only items with stock on hand are listed. When there are none, the tab says “No stock without sales in 90 or more days.” (with the number you chose).

Each tab holds up to 20,000 rows. Beyond that, a “Showing partial results” notice says “Showing the first 20,000 of” the total items, and suggests narrowing the outlets, categories or brands.

Export CSV saves the tab you’re on, in the same columns, with the “as of” time at the top and a Total row on Stock on hand and Dead stock. The Running low file has one line for each outlet and product, with Outlet, Status, On hand, On order and Reorder point.

Open Analytics, then Stock movements report. It answers “where did this stock go?” by listing every change to stock and letting you drill from a category down to one movement.

  • Date range: opens on yesterday.
  • Group by: Category (the default), Day, Week, Month or Movement type.
  • Categories, Brands, Product (type at least two letters, then pick one), Outlets, Staff, Movement type and Reason.

Select Apply after changing a filter.

Each row is a group. Select its chevron to open what’s inside it.

  • Grouped by Category: category, then product, then SKU, then the single movements.
  • Grouped by Day, Week or Month: the period, then the products, then SKUs and movements.
  • Grouped by Movement type: the type, then products, then SKUs and movements. For adjustments and stock counts, the reasons come between the type and the products.

The first column is named for the level you’re looking at, such as Category, Product, Period, Movement type or Reason. Rows load 100 at a time. A “Load 100 more” button shows how many are left.

The columns count units, and every figure shows what came in as +, over what went out as −:

Column Moves counted
Received Stock received from purchase orders
Sold Register sales
Returns Customer returns (in) and supplier returns (out)
Online sold and Online returned Sales and returns on your online store
Transfers Transfers between outlets, in and out
Adjusted Manual adjustments
Counted Corrections from stock counts
In / Out Everything in, over everything out
Net In minus out

A Total row sits at the bottom. A dash means nothing moved in that column.

At the SKU level, expand a row to see the individual movements: when, the movement type, the quantity, and under it the outlet, reason, staff member, source and note. These add up to the row above them.

Sorting works on the headings. Day, week and month views read in date order by default. The other views start with the most units moved.

When nothing matches, the report says “No stock moved for these filters.”

The Export menu has two files:

  • Summary (CSV): one line for each SKU for your current filters, with Category, Product, SKU, a column for each kind of movement (Received, Sold, Customer returns, Supplier returns, Online sold, Online returned, Transfers in, Transfers out, Adjusted in, Adjusted out, Counted in and Counted out), then Units in, Units out and Net. Up to 20,000 SKUs. A line at the top says if there were more. The filters you used are listed at the top of the file.
  • Movements (CSV): every single movement of one product, all of its SKUs, newest first. It’s off until you pick a Product and select Apply. Until then the menu item reads “Movements (CSV): pick a product”. Up to 20,000 movements. Columns: Date, Time, Outlet, Product, SKU, Movement type, Direction, Quantity, Reason, Staff, Source and Note. Times are in your store’s time zone.

If an export fails, a message says “Failed to export stock movements”.

  • Stock value looks low. Items with no cost count as zero. The Stock value card tells you how many.
  • Stock on hand differs from a product page. The Inventory report floors negative stock at zero in its values. The product page shows the real number.
  • An item is missing from Running low. It needs a reorder rule to count as low. It can still be out of stock without one.
  • Net on the movements report isn’t your on-hand. It only covers the dates and filters you set.
  • A movement is on the wrong day. Movements count on the day they happened.