# Stock on hand

Source: https://docs.tightly.io/help/product/stock-on-hand
Reviewed: 2026-09-07

## The question this page answers

This is the classic table behind Inventory.

What stock is physically held, by variant and warehouse, how many days of cover does it give, what money rides it, and is the data ready to replenish? The page is open on every plan, and a stock figure opens its position.

## What you see

The head offers Transfer recommendations for one warehouse and Explore in Ask. Figures show Stock at cost, Incoming at cost and Expected revenue. Not ready to replenish opens missing-field details. Cover groups rows into 0, 1 to 14, 15 to 30 and 31+ days.

Now, Period end and Movements are Inventory rows. Controls stand in one row: Product, Category or Collection; a warehouse select; a search; Filters as pills (Missing fields, Lifecycle, Managed, Suppliers, Default supplier, Categories, Stock on hand, warehouses, Tags, Health, Unit cost, Sell price, Weeks of cover, Lead time, Date published, Stocked out and more); View (Variants or Products, By warehouse or Combined, Compare warehouses); Columns; Export.

The table is one row per variant and warehouse, or one per product. The standing columns are Product, Variant, SKU (No SKU), Warehouse (All warehouses when combined), Health (Covered, Overstocked, Needs ordering, or Not measured), Available to sell (stock on hand less what is reserved; Stock not read), Stock at cost (Not valued), Cover (days, the tightest warehouse when combined; Cover not read), Last stockout date, Velocity 30d, On order, Next arrival (Nothing on the way), Supplier and Lead time. Columns adds Unit cost, Sell price, Completeness, Incoming at cost, Expected revenue, Replenishment frequency, Weeks of cover, Stock on hand, MOQ, Batch size, Lifecycle, Managed, Class, Size pack and more. Incoming at cost is on order at unit cost; Expected revenue is Velocity 30d over 90 days at the sell price. The foot totals every money column on the grid for the rows in front of you.

At period end the page reads the stock archive instead: per retail week or month, the opening and closing units, the change, and stock at cost, split by category.

## What to do

Edit a cell in place: Supplier, Lead time, Unit cost, Sell price, MOQ, Batch size, Reserved quantity and your custom fields. Changed cells collect into a save bar with Save changes and Discard; the result reads Saved, or the served refusal, else Not saved; no cell changed. Select rows for the bulk bar. Add to Bench stages the selected lines at one quantity for all; it is disabled while any selected row has no supplier, naming them on hover, and its receipt says how many lines were added to the Bench and that this places no order. Edit columns opens a drawer for Unit cost, Sell price, Supplier, MOQ, Lead time, Managed, Batch size and Replenishment frequency; the columns that need a supplier refuse until every selected row has one. Export downloads the view and the button then reads Exported.

The readiness drawer counts variants missing required fields. Choose a field to filter the grid, or **Edit data** for source controls. An unavailable report offers **Retry** and disables field-dependent actions. A known report with no missing fields shows the clear state.

Available to sell and On order open the variant's position at that warehouse. Pressing a row opens its drawer, with Open the variant and Open the product.

## Compare the same variants across warehouses

In the current stock view, **Compare warehouses** places variants in rows and the selected warehouses in columns. The cells show **Source available** units: availability reported by the stock source; it is not the position drawer's available-to-promise calculation. A missing reading stays unmeasured, while a measured zero stays zero.

This makes it possible to see, for example, Small and Medium missing in one warehouse even when Large or another warehouse holds stock. Press a measured cell to open that exact variant and warehouse's position. **Open ledger** continues with the same pair selected. Switch Compare warehouses off to return to the usual stock table.

## When it is empty or failed

A first run reads:

> No inventory received

A view that matches nothing keeps the toolbar, with Clear filters and search:

> No rows match this view.

A failed table read is stated, with Try again:

> The stock read didn’t answer.

The figure row waits behind a skeleton while its read is out; a pending count is never a zero.

## Floor and stockroom

Open **Floor & stockroom** from Inventory and choose a store. Store total stays separate from its floor and stockroom breakdown. A breakdown that is missing or needs a recount says so rather than reading zero. Counts managed by a connected source stay owned by that source.

Users with write access can record a count or move units between the floor and stockroom when the store's counts allow it. A move keeps the store total unchanged. History shows counts and moves; Reverse move records a move that names the one it reverses. This is separate from transfers between locations. **Explore in Ask** carries the selected store, the rows on screen and the current action.

## Physical stock and dated supply

Incoming supply is separate from stock physically received. Recording a supplier date or a customer promise does not increase on-hand stock. Damaged units held for inspection do not become sellable until a reviewed release records their disposition. Receiving and inspection history remain available from the linked supply order.
