Skip to content

PRD: Stock Count

ModuleInventoryPRD IDPRD-CNT-001
StatusNo itemFEATCNT
EpicPlane
Date2026-07-14Versionv1.0
Packages@nx/inventoryURDCNT
SurfaceClient · Owner/Mgr
OwnerPhát Nguyễn

What a stock count is

A stock count ticket is the document recording one time a merchant reconciles the books against the real goods on the shelf: how much was counted, how far it is off the books, and why.

The operator opens the ticket for exactly one inventory location on the Client app. The ticket belongs to the merchant currently being worked in; other merchants inside the same organizer never see it. A stock count is one of the nine inventory ticket types and shares the ticket frame's lifecycle: Draft → In progress → Completed, shown in the words of the trade as Draft, Counting, Applied.

The four numbers in stock

Lifted from Stock locations & levels so there is no need to open another PRD. Every item at every location carries four numbers:

NumberWhat the system calls itMeaning
On-handon-handGoods physically sitting in the location
ReservedreservedAlready promised to another document, no longer sellable to anyone else
AvailableavailableThe part still sellable
IncomingincomingLeft the source location, not yet arrived at the destination

The invariant, true at every moment:

Available = On-hand - Reserved

A stock count only touches on-hand. The baseline captured when the ticket opens is the on-hand figure, and the variance is added to on-hand at the moment of applying.

Why the tally is never written straight over stock

A merchant cannot close the doors to count. Customers keep coming, orders keep running, deliveries keep arriving. The counter starts at 8am and finishes at 11am, and in those three hours the merchant has sold a few dozen items.

The common approach on the market is to overwrite stock with the tally. That is only correct when the doors are shut. With selling running in parallel, it swallows the legitimately sold goods into the shrinkage figure, or the other way round, it resurrects stock for goods that were just sold. Most software resolves this by telling the user: if there were transactions, count again from scratch.

BANA solves it in software. When the ticket opens, the system captures a baseline of the book figure. Selling carries on against real stock. When the result is applied, the system only applies the variance between the tally and the baseline, on top of current stock.

One count ticket, end to end

An item stands at 100 cartons on the books. Open a count ticket, keep selling while counting, and the counter tallies 80.

What happensBaselineOn-handTallyVariance
Open a count ticket for location A100100not counted-
The cashier sells 5 cartons on the POS10095not counted-
The counter tallies 80 and enters it1009580-20
Apply the result1007580applied
  • The variance is 80 minus 100, which is -20. Against the baseline, not against current stock.
  • The -20 is added to stock as it stands at the moment of applying, which is 95, giving 75.
  • The 5 legitimately sold cartons stay sold. Only the 20 cartons of real shrinkage reach the inventory ledger, with the reason the approver picked.
  • Writing 80 straight over stock would resurrect the 5 sold cartons in the location, and the shrinkage figure would be wrong by exactly 5.
  • This item had transactions between the baseline capture and the moment of applying, so its line carries the "Activity during count" flag for the approver to look at before pressing Apply.

The easiest thing to get wrong

A stock count applies a VARIANCE, it never overwrites the stock figure

The counter's tally is not the new stock figure. It is the quantity that was on the shelf at the moment they counted.

The system takes the tally minus the baseline to get the variance, then adds that variance to stock at the moment of applying. Setting stock straight to the tally erases every transaction that happened during the count.

An applied ticket is final: no edit, no delete. A miscount is fixed by opening a new count ticket, capturing a fresh baseline, and writing a new adjustment row. That is exactly the append-only rule of the inventory ticket frame.

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.