Movement Reason Codes Explained
Every inventory movement you record through the Movement Wizard -- receiving, waste, comps, transfers, or count adjustments -- requires you to select a reason from a fixed list instead of typing free text. This keeps your inventory history classified consistently so it can be reported on, instead of buried in inconsistent notes.
Why typed reasons instead of free text
Before you could type anything into a "reason" box -- "spoiled," "spoilage," "went bad," "trash" all meant the same thing but couldn't be grouped together in a report. Typed reason codes fix that: every operator picks from the same list, so "Waste -- Spoiled" always means the same thing across every location and every shift.
This is what lets reports separate:
- Real shrinkage (waste, spoilage, breakage) from
- Explained losses (staff meals, comps, donations) from
- Internal movement (transfers, count corrections)
See Track Waste & Variance for how these categories feed the waste dashboard.
Where you pick a reason
The Reason step of the Movement Wizard shows reason chips grouped by category. Tap a chip to select it -- no typing required for most reasons.
- Only reasons that apply to the movement type you selected are shown. For example, if you selected OUT, you will see Waste, Comp, Staff, Donation, Production, and Return-to-Vendor chips -- not Transfer or Receiving reasons.
- A few reasons (equipment failure, manager comps, vendor recalls, and "Other") require you to also type a short note explaining what happened. The notes field switches to required automatically when you pick one of these.
- Quick Scan Receiving (the fast one-item-at-a-time dock flow) does not ask you to pick a reason -- it always records a standard delivery receipt. Use the full Movement Wizard if you need a different IN reason (for example, a customer return).
Reason categories
| Category | Movement type | Example reasons |
|---|---|---|
| Receive | IN | Delivery from supplier, Customer return |
| Waste | OUT | Expired, Spoiled, Dropped, Over-pour, Burned, Prep trim, Equipment failure |
| Comp | OUT | Guest service, Marketing/promo, Manager comp, Void -- rung in error |
| Staff | OUT | Staff meal, Manager dinner |
| Donation | OUT | Donation |
| Production | OUT | Raw-to-prep, Recipe depletion, Issued to kitchen/production |
| Return to Vendor | OUT | RMA, Damaged, Recall |
| Count | ADJUSTMENT | Cycle count adjustment, Physical count adjustment |
| Transfer | TRANSFER | Stock balancing, Load-in, Load-out, Stand-to-stand, Replenish to par, Banquet setup |
| Other | OUT | Other (always requires a note) |
Some reasons like Waste -- Expired are recorded automatically by the platform (for example, when perishable stock expires -- see Perishability & Expiry Alerts), not just by a person tapping a chip.
Movements recorded before reason codes existed
If your property has movement history from before this feature, those older movements will not have a reason code -- they show as Unclassified wherever reason is displayed. This is expected and does not need any action; only new movements require a reason going forward.