QodPOS QodPOS Docs

Stock: levels, losses, batches and "exact stock"

Follow quantities per product and per branch, declare a loss, watch use-by dates, and understand why a quantity is never typed by hand.

Before you start

  • For 🧭 Manager
  • Module Stock management
  • Setting SettingsModules
Video tutorial — Following your stock ▶ 3:30

The Stock management module (on by default; not for salons) is open to the owner, managers and the storeman.

The principle: a quantity is never typed#

So that every unit has an explanation, stock is not typed on the product record. It only moves through documents:

When…Do…
Starting stocka stock count
Goods receivedan order reception or an entry note
Sale, cancellation, returnautomatic
Between branchesa transfer
Product thrown awayDeclare a loss

Levels & movements#

The Stock page lists products with Track stock ticked (ingredients included):

  • three cards: Stock value (cost), Stock value (sale), Items below threshold;
  • an alert "n product(s) low in stock" (quantity ≤ Alert threshold);
  • a banner if batches are expired or with use-by within 7 days;
  • the Stock levels tab (product, category, quantity, threshold; with several branches, a filter "All (total)" or one branch) and the Movement history tab (date, product, type — Sale, Purchase, Adjustment, Loss, Transfer, Production —, quantity, new stock; the last 50).

Declaring a loss#

A row's bin ("Declare a loss") opens a window: Reason (Expired / use-by passed, Breakage, Damaged / non-compliant, Preparation error, Unsold (end of day), Internal / staff consumption, Theft / disappearance, Other), Quantity lost, Detail (required for "Other"). The window shows the stock after the loss and the value lost (cost × quantity). A loss leaves stock permanently: to correct a counting difference, do a stock count.

Losses#

The Losses page shows what left stock without being sold, and what it cost, over a period (7 days, this month, last month): Value lost, Declarations, Top reason, then By reason, By day and By product (the first 30). A batch discarded for expiry shows there. Lines with no known cost count as 0: give the products concerned a purchase price or a recipe. A loss's value is today's cost: the recipe's, else the purchase price, else the last batch's cost.

Batches & use-by dates#

The Batches & use-by page tracks batches with their use-by date: cards Active batches, Expired batches, Use-by within 7 days, filters (All, Active, Expiring soon, Expired, Discarded) and a table sorted by date.

A batch is born from a reception or an entry note where a lot number or date is entered, from a production run of a perishable product (with "Exact stock"), or from a manual New batch (traceability only: it does not change stock).

  • Consume: removes a quantity from the batch (information: the sale already took the stock out).
  • Discard: the batch becomes "Discarded" and its remaining quantity leaves stock (counted in Losses).
  • The pencil edits the batch.

A product's shelf life is set on its record ("Shelf life (days)").

"Exact stock"#

A setting in Settings › Modules ("Management & invoicing" card): Exact stock on / off. On by default for bakeries, off elsewhere until you choose. When on, stock follows every change of a sale: an item removed from an open order, a QR or online order, a meal deal cancelled or refunded. It also changes:

  • stock counts: counted per branch, and at closing only the counted difference applies (a sale made after counting stays sold);
  • batches: exit by nearest use-by date, and alerts only on batches with something left;
  • production: a product made must track its stock;
  • the unit of a product or ingredient no longer changes while some remains.

Two other settings on the same card: Cost method ("Last purchase price" or "Weighted average cost") and Out-of-stock products blocked at the till.

Updated 2026-10-06