Stock manager: one ledger for everything on a shelf
Inventory systems fail the same way every time: quantities get edited directly until the number means nothing. The stock manager is built to make that impossible — and it's worth understanding why, because it explains everything else about the module.
The ledger is the truth
Stock on hand is never typed into a field. It is the sum of a ledger: every receive, sale, adjustment, transfer and count is a signed movement row with a quantity, a location, a reference and a cost snapshot. The number on the item is derived from its history, always. Edit a mistake and the correction is another movement — the audit trail can't be undone by anyone, including me, and that's the feature.
Costs work the same honest way. Receives carry what you actually paid; sales carry the weighted average cost at that moment, which is your cost of goods sold. Re-cost a receipt after the fact — landed costs like freight spread across items — and the corrections post as their own entries without touching the on-hand counts.
The daily moves
Transfers move stock between locations — stockroom, store, truck — going out at creation and arriving on receipt, with cancellation returning everything. Counts are physical checks: print the sheet, count the shelf, enter what's there, and closing the count posts the variance as adjustments. Barcodes are built in: the encoder prints label sheets as SVG, and scan-aware inputs find an item by barcode, SKU or code in one keystroke.
The two pipes in and out
Stock connects to both sides of your business. In: receiving a purchase order line posts the goods into the receiving location you've configured, at the PO's cost — purchasing feeds inventory without a second entry. Out: fulfilling a catalog order posts the sale, takes the cost of goods, and updates the product's availability; trying to order what you don't have gets refused with the real numbers. Backorders close the loop — a short item can spin up a purchase request that rides the normal buying pipeline.
Low-stock alerts sweep daily against your reorder points and notify the people who can act, deduplicated so nobody gets the same warning twice a day. And if you sell elsewhere, connectors pull Shopify, Square or Zoho Inventory data in — provider quantities land as sync movements, never silently overwriting your costs.
Reporting rounds the module out: inventory value, the low-stock list and the orders waiting to fulfill, plus a CSV export for the times your accountant wants numbers raw. And the availability your catalog shows customers is the same number this ledger produces — two systems reading one source cannot disagree, which is the entire trick.
Counts deserve one more sentence, because they're where inventory systems earn trust. The count sheet prints with what the system expects per location; you write down what is physically there; closing the count posts only the variance — the system's guess is never overwritten wholesale, so a miscount on one shelf can't rewrite the ledger everywhere. After the close, the item's history shows the correction with the count as its reference, auditable forever.
Related: receiving comes from acquisition purchase orders and selling from the catalog — the two pipes this ledger sits between.
How this compares
Inventory software clusters at two extremes: Shopify's built-in stock counts, which are fine for a pure webshop, and dedicated systems like inFlow or Zoho Inventory, which are serious tools for serious warehouses. Between them sits the reality of a lot of small operations — a spreadsheet, updated sometimes, that quietly drifts away from the shelf.
The core of this module is the thing spreadsheets can't do: a signed movement ledger. Every change — receiving, sale, adjustment, transfer, count — is a row, quantities are signed, and on-hand is the sum of the ledger rather than a number someone last edited on Tuesday. Weighted-average cost is recomputed on every receive, so cost of goods sold comes from arithmetic, not guesses. Purchases arrive automatically from the acquisition module's purchase orders — one PO system, not two — and sales draw down when catalog orders are fulfilled. Transfers move stock between locations with the out and the in recorded; counts post their variances honestly. Connectors sync on-hand from providers like Shopify without ever silently rewriting your cost basis. If the ledger says zero, the ledger is right — that's the whole design.
Try it
Stock lives under Stock manager in your sidebar. Receive one purchase order, fulfill one order, and run one count sheet — then open the item's movement ledger and read your own story top to bottom. That ledger view is the module.
