Skip to content
N
NoPOS
Back to Blog
Best PracticesOctober 25, 20266 min read

Loss Prevention & Shrinkage Control: Keep More of What You Sell

A practical guide to cutting shrinkage on NoPOS: tighten voids and discounts, control cash handling, use permissions and audit trails, and review exception reports weekly.

N
NoPOS Team
Developer Relations

The NoPOS developer relations team writes practical guides for building on the NoPOS REST API — from first smoke test to production POS.

Shrinkage — theft, error, and waste — quietly takes two to three percent of revenue at most stores and restaurants. No single fix stops it; the win comes from closing the small gaps one by one: every void needs a reason, every discount needs permission, and every exception gets reviewed the same week it happens.

Require a reason for every void and comp

  • Make voids, refunds, and comps carry a mandatory reason code plus manager approval above a threshold — a void with no reason is indistinguishable from theft in your reports.
  • Limit comp authority by role: servers can fix a spilled drink, only managers can comp a full table, so large giveaways always pass a second pair of eyes.
  • Review the void/comp report daily during close — same-day review catches training issues fast, while month-old voids are just archaeology.
  • Track void rates per employee against the location average — coaching starts with the outlier, not with a blanket policy nobody follows.

Lock down discounts and price overrides

  • Put every discount type behind a permission: the early-bird special anyone can apply, the 50-percent manager override nobody can apply alone.
  • Disable open-price entry wherever a price book can cover it — typed-in prices are where sweethearting hides, and a clean menu removes the temptation.
  • Reconcile promo totals against marketing calendars weekly — if the system rang up twice as many "friends and family" discounts as the campaign authorized, something is off.
  • Expire promo codes on schedule and audit who used them — a staff-shared coupon that lives forever becomes an unofficial employee discount.

Control cash from drawer to deposit

  • Assign one cashier per drawer per shift so over/short always has an owner — shared drawers mean shared blame, which means no accountability.
  • Count the drawer at every handover and log it before the next cashier signs in — the log is what turns a shortage into a coachable moment instead of an argument.
  • Run blind drops once the drawer passes its float limit so excess cash never sits in the till through a rush.
  • Match deposits to end-of-day reports the next morning — a gap between reported cash and banked cash is the highest-priority exception on the list.

Use permissions and audit trails as deterrents

  • Give every employee their own login and never share manager PINs — an audit trail is worthless if five people use the same code.
  • Restrict back-office functions (refunds, tax-exempt sales, time-clock edits) to roles that genuinely need them, and review the permission matrix quarterly.
  • Let staff know exception reports are reviewed weekly — the deterrent effect of a visible, consistent review beats any single technical control.
  • Investigate patterns, not single events: one large void is usually a mistake, ten small ones on the same shift is a method.

Use Swagger UI or OpenAPI for the current refund, discount, permission, and audit-trail request shapes.

Build from the current contract

Open the gateway for OpenAPI, Swagger, AGENTS.md, llms.txt, and the first X-API-Key smoke test.

Developer Gateway