Inventory and transactions
Stock by SKU and location, what is reserved and what is free, how to move and correct it, and the audit trail every change leaves behind.
How stock is counted
| Number | Meaning |
|---|---|
| On Hand | Physical units at active locations. |
| Unavail | Units sitting in inactive locations. Real stock you cannot sell until the location is reactivated or the stock is moved. |
| Allocated | Reserved for waves that are Active or Printed. |
| Available | On Hand − Allocated. What a new wave can use. |
| Demand | Units on open orders (Downloaded, In Wave, Printed). |
| Backordered | How many units open orders need beyond what is available. |
| On Order | Units on open purchase orders not yet received. Click to see the POs and expected dates. |
| 1-Yr | Units ordered in the last 365 days, excluding canceled orders. A velocity hint. |
The count Lodsted sends to Shopify is On Hand minus Demand, never below zero, for products whose stock Shopify tracks. Nothing is sent until Lodsted holds some stock, from the opening count at install or from an import, so a fresh install cannot zero the storefront.
Cost layers (FIFO)
Every receipt creates its own inventory row with its own cost and received date. A SKU in one bin can have several rows. When stock leaves (shipped, adjusted out, moved), the oldest row at that bin is consumed first and its cost is written on the transaction. That is why the Received column can show several dates for one SKU and why moving stock keeps its original date and cost. Empty rows are removed automatically.
The Inventory page
Header statistics: Total SKUs, Active SKUs, Total Qty, Total Value (at layer cost), and when relevant Total Backordered and SKUs Backordered.
Search and filters
Press / to jump to the search box. It matches SKU, description, group and location; dashes and case are
ignored. Type #1042 to list the SKUs on that order. Filter chips narrow by product group and other flags;
the items-per-page selector goes up to 500.
Columns
SKU, Group, Location, On Hand, Unavail, Allocated, Demand, 1-Yr, Available, Backordered, On Order, Received. One row per SKU and location. Badges next to the SKU: NOSHIP for a non-shippable product, a struck-through SKU for an inactive product, HAZMAT, and a hint icon when Shopify is not tracking the product's stock. Small icons at the right open the SKU's open POs and the orders that contain it.
Buttons
| Button | Who | Does |
|---|---|---|
| Bulk Adjust | Admin | Enter many adjustments on one screen (SKU, adjustment, location), one reason code for the batch. |
| Sync Inventory | Admin | Pushes current counts to the store now instead of waiting for the next sync. |
| Import | Admin | Puts stock away from a spreadsheet: each row moves the product's stock out of 90REC to its bin and receives any extra as a dated lot. See Importing locations and stock. |
| Refresh | Everyone | Reloads the table. |
The inventory details modal
Click a row (or a location on the Locations page) to open the details for that SKU or that bin. Each row is one cost layer: Avail/InWave (available plus unavailable, over allocated), received date, location, the location's Min/Max, then three working columns.
Moving stock
- In the Move To column of the row you are moving from, type the destination location code (dashes optional). Only existing locations are accepted.
- Enter the quantity. It is capped at the row's available (unallocated) units; stock reserved for a wave never moves this way.
- Repeat for other rows, then click Complete Move (or press Enter) and confirm.
The moved units keep their received date and cost at the destination. A Moved transaction is written per layer.
Adjusting stock
Adjustments need an Admin.
- In the Adjust column type the change:
-2for two missing,5for five found. Adj OH previews the result. - Check Sub All to fill every row with an adjustment that zeroes it, for a bin that is empty in reality.
- To add stock to a location that has none, use the blank row at the bottom: location code and a positive quantity.
- Choose a reason (cycle count, damaged, found, and so on) and click Apply.
Adjusting out takes from the oldest layer first and may refuse if the quantity exceeds what is available. Adjusting in creates a new layer at the highest cost currently seen for the SKU. Every adjustment writes an Adjusted transaction with your name and the reason.
An adjustment is the only stock change with no paperwork behind it. Write the reason in a way the next person understands; the Transactions page will show it forever.
Min and Max
The Min/Max column in the modal is editable, so a replenishment target can be set while looking at the bin.
SKU details
Clicking the SKU itself (rather than the row) opens the product: description, group, weight, cost, dimensions, group and master carton quantities, hazmat, active and shippable flags, plus a summary of its locations. Weight and the active and shippable flags are owned by Shopify and re-set at each product sync. What each field does is on Products and kits.
Transactions
Every stock change, newest first. Use it to answer "who moved this", "when did this arrive" and "why is this short".
| Type | Written when |
|---|---|
| Received | A PO line is received, or stock is received directly. From holds the PO number; To is the location. |
| Moved | A manual move. From and To locations, quantity per cost layer. |
| AutoMoved | An auto-move was created (with a wave or from Replenishment). |
| Adjusted | A manual adjustment (positive or negative), with the reason in Notes. |
| Sale | A shipment was processed: negative, one per cost layer consumed, with the cost. To holds the shipment id. |
| Shortfall | A sale found less in the bin than it needed. Records the gap only; changes nothing. |
Reference shows what caused it: po, order, wave, manual, move, kit
(a kit parent's computed quantity changed), shortfall. Every row carries SKU, From, To, quantity, cost, date,
user and notes.
Filters sit in the column headers (SKU contains, location contains, type, reference, quantity range, user, notes), the period selector goes from last month to last year, and Copy to Clipboard copies the visible rows in a spreadsheet-ready format. Click a SKU to jump to its inventory.
Allocation to a wave is not a transaction; stock only "moves" in the ledger when it physically does. Reservations are visible as the Allocated column.