opsapp

Inventory basics

← All articles

Inventory is optional: you can run pure order-to-dispatch without it. But if you switch it on, the system becomes the single record of your stock counts.

The model, in plain words

Each product/colour is a stock line with three buckets:

  • On hand: physically on the shelf, free to sell.
  • Processing: reserved. A courier has been assigned to an order using these units, but the parcel hasn't been packed yet. Still in the warehouse, but reserved.
  • Damaged: written-off units (e.g. an RTO that came back unsellable).

Units move between buckets automatically as orders move:

EventWhat happens
AWB assignedon hand → processing (reserved)
Order packedprocessing → removed (shipped out)
Order cancelled before packingprocessing → back to on hand
Return/RTO received in good conditionback to on hand (if you enable auto-restock)
Return received damagedinto damaged

The ledger: why your counts are explainable

Every movement is a line in a permanent ledger: date, order, quantity, direction, who. The current count is just the running total. So "why does it say 43?" always has an answer you can read, movement by movement. Manual corrections (counts, receipts, adjustments) are ledger lines too.

SKU mapping: teaching it your catalogue

Orders arrive with your store's SKU codes. The system matches them to stock lines automatically where it can; anything it can't match lands on the mapping queue (Tools → SKU mapping). You map each SKU once (including bundles: "GIFTSET-1 = 1 mug + 2 coasters") and the mapping is remembered. Until a SKU is mapped, its stock movements are held back rather than guessed, so a wrong count is never written.

One number on that form matters: units per sale — how many units leave stock each time one of that SKU sells. A 3-piece bundle is 3; almost everything else is 1. It is not your stock count. If a mapping is saved with the wrong number, fixing the mapping also fixes the orders already reserved under it — the reservations re-align on the spot.

The packing gate

With inventory on, packing checks stock at the last safe moment:

  • Unmapped SKU on the order → packing blocked until mapped (or a manager overrides with a reason).
  • Not enough available units → blocked the same way.

You can soften this to "warn but allow" in settings; then stock can go negative, but the negative count shows on the needs-attention queue.

Getting your stock in

  • CSV import on day one (Tools → Stock import): product, colour, SKU, count, reorder level, unit cost. You can use the sheet you already keep. One upload takes up to 10 MB or 50,000 rows — a longer list is fine, just split it and upload the parts, since importing the same rows twice changes nothing.
  • Or start at zero and let receiving/counting build it up.
  • Reorder levels per line give you low-stock warnings, and optionally a daily low-stock email to the founder.

Products you don't count

Some order lines aren't stock: a printed letter, a card, a free add-on the floor makes per order. Because inventory self-populates from real orders, one of these can show up as a stock line and start collecting reservations. Open the line and press Archive line: orders stop reserving and deducting it, any units it holds in processing are released on the spot, and future orders won't re-create it. It still appears on pick lists and packing checklists — the floor keeps including it; only the counting stops. Adding the product again by hand (or in a CSV import) turns tracking back on.

What your stock is worth

Admins get a valuation page (under Operators) that prices every line: on-hand value, units in transit, damaged write-offs. Each line uses its own unit cost if you've set one; otherwise it falls back to your sheet on Settings → Default unit costs — one row per product (every colour and variant included), cost per single unit in rupees. Cost prices are private: they show on admin pages only, never on the Inventory tab the floor uses.

What inventory does NOT do

No purchase orders, no supplier management, no multi-warehouse, no forecasting. It tracks one warehouse's counts.

Sounds like your floor? Invite-only pilot. A short email is all it takes.

Request an invite →