Stock Counts

Counting the shelf (or a warehouse, bin by bin) with a scanner on the app or the web, how variance decides whether a manager has to approve, and what approval actually changes.

10 min read · Updated 25 Oct 2026

Stock counts in Kassly · 0:32 · Watch on YouTube
On this page

A stock count is the disciplined version of correcting your figures: you walk the shelf, type what is really there, and Kassly shows you the difference against its own number before anything is committed. Big differences go to a manager. Small ones apply on the spot.

It is free on every plan.

You can count on the POS app (phone or tablet, with the camera or a Bluetooth/USB scanner), on the desktop app, or in the web app under Inventory → Stock Counts with a USB scanner or by searching. All of them work on the same counts, so two people can count one session from two devices.

The one-item Physical Count option on the Stock Adjustment form is a different, unreviewed thing. See Stock adjustments.

You need the Submit Stock Counts Without Manager PIN permission to see Counts, on the app and on the web. Owners and Managers have it by default; add it to a Cashier's role if they do the counting.

Starting a count

On the app, open Oversight → Inventory counts (also on the Inventory screen) and tap Start count. On the web, open Inventory → Stock Counts, then New count, and pick the branch — or a warehouse, see Counting a warehouse. You pick a type and optionally leave a note.

Type Shown as Meant for
Cycle count Cycle count — Scheduled full segment The regular walk through part of the catalogue
Spot check Spot check — Quick verification A handful of items you have a doubt about

On the app, the count is created against the branch the device is signed in to.

Partial or full — the honest answer

The type is a label. It does not change how the count behaves, and Kassly has no "full count" mode that locks the catalogue or requires every item to be seen.

A count is exactly the lines you add to it, and nothing more:

  • Nothing is pre-loaded. You start with an empty count.
  • An item you never add is not counted and is not touched. It is not assumed to be zero.
  • A line whose counted figure matches Kassly's figure writes nothing at all when the count is approved.

So a full count is a cycle count where you happened to walk the whole shop, and a partial count is one where you did not. Both are safe. What you cannot do is prove after the fact that a count covered everything — the count only knows what you put in it.

Adding lines: scan first

Counting is built around the scanner. Every scan adds to that item's line. Scan the same can six times and the line says 6. Kassly keeps one line per item (and per variant), however many times you scan it or however many people scan it.

On the app:

  • Camera. Tap the camera button once. The camera stays open: aim at a barcode, hear the beep and feel the buzz, move to the next. The same barcode isn't counted twice in a row unless you pull away and aim again, so a steady hand doesn't rack up extra units. Tap Done to close it.
  • Hardware scanner. If this device is set to Hardware scanner (Settings → Barcode scanner), just pull the trigger. No need to tap anything first.
  • Search. Type a name, SKU or barcode in the search box and tap the item. Use this for items with no barcode.
  • Many at once. Set Per scan to the size of a case (say 24) before scanning a sealed case, or tap a line and type the number you counted.

On the web: click in the box at the top (it is focused when the page opens) and scan with a USB scanner, or type to search by name, SKU or barcode and pick from the list. The scanner also works with nothing selected on the page. Per scan works the same way as on the app. A price tag always counts one piece of its tag category, whatever its price and whatever Per scan says.

Each line shows three figures:

Column What it is
System What Kassly thought you had when the item was first added to the count
Counted Everything scanned or typed for it so far
Variance Counted minus System

Fixing a mistake: type over a line's Counted figure to replace it. To take an item off the count entirely (you scanned the wrong thing), use Remove. Setting Counted to 0 is not the same: a 0 line tells Kassly the shelf is empty and will set stock to zero when the count is approved.

The System figure is a snapshot taken when the item is first added, not when the count is submitted. Later scans of the same item keep that first snapshot. If the till sells three of an item while you are still counting the next aisle, that sale is not reflected in the line — and approving the count will overwrite the real figure with your counted one. Count a busy section when the till is quiet, or count it last.

Lines can only be added, changed or removed while the count is Open.

Counting a warehouse

With the Warehouse Management add-on and the View Warehouses permission, the web's New count dialog lists your warehouses under the branches. Pick one and count it exactly like a branch: scan or search, type over a figure, remove a line, submit. The same variance limits decide whether a manager has to approve. The count waits in Approvals for people who can view warehouses (whatever branches they are limited to); deciding it also needs the stock-management permission.

Warehouse counts are on the web only. The POS and desktop apps count branches.

Bins. In a warehouse that tracks stock by bin (see Warehouses) you can count bin by bin:

  • Count one bin. Pick the bin in the New count dialog. Every line of the count is for that bin. Its System figure is what the bin holds.
  • Count the whole warehouse, bin by bin. Leave the bin on Whole warehouse in the dialog. On the count screen, pick the Counting bin before you scan; each scan lands on that bin's line for the item. Switch bins as you move down the aisle. The same item in two bins is two lines.
  • Leave the Counting bin on Whole warehouse and the line counts the item for the whole warehouse, as a warehouse without bins does.

An item is counted per bin or for the whole warehouse on one count, not both: Kassly refuses the second kind of line, because the two would be two different truths about the same stock.

What approval does at a warehouse. Each line is applied as a warehouse Physical Count of that item (or of that bin):

  • the warehouse's figure is set to what you counted — for a bin line, the bin is set and the warehouse total moves by the bin's difference;
  • a count down takes stock out of batches earliest expiry first, and the batches are trimmed so they never add up to more than what is there;
  • the Stock Count movement names the count, and the bin's history shows it.

Unlike a branch count, a warehouse count is measured against the figure at the moment it is applied, not the snapshot: if stock moved since the item was added, the movement records the real change, and a line that already matches writes nothing.

Submitting, and when a manager gets involved

On the app, tap Submit count, then Submit, and Confirm (or a manager's PIN, below). On the web, Submit count. What happens next depends on the size of the variance:

  • Every line is inside your store's limits → the count is approved immediately, stock is applied, and you see Applied.
  • Any single line is outside them → the count goes to Submitted, an approval is queued for a manager, and you see Submitted for approval.

A line trips the check if either test fails:

Test Default
Absolute variance in units is greater than the units threshold 5 units
Variance as a percentage of the system figure is greater than the percentage threshold 10%

The percentage is the absolute variance divided by the system figure. When the system figure is zero the percentage test is skipped, because a percentage of nothing has no meaning — a line counted against zero can therefore only be caught by the units test.

The Owner can change both limits under Settings → Inventory Settings → Stock count approvals. See Inventory settings.

On the app, submitting asks for a manager PIN if the person counting does not hold the Submit Stock Counts Without Manager PIN permission.

The four states

Status Shown as Means
open Open Still being counted; lines can be added
submitted Submitted Waiting for a manager, because a variance was too large
approved Approved Applied to stock
rejected Rejected Nothing changed; kept as a record

Approved and Rejected are final. A rejected count cannot be re-opened — start a fresh one.

What approval changes

Approving a count, whether automatically or by a manager, does this and only this, for each line where the counted figure differs from the system figure:

  1. sets the branch's on-hand figure to your counted quantity (for a warehouse count, see Counting a warehouse), and
  2. writes a Stock Count movement for the difference, referencing the count.

Lines with no variance are skipped entirely — no movement, no noise in the history.

It also reaches your books. From the day this update reached your store, an approved count is one entry in the general ledger and on the Profit & Loss: shortfalls as Inventory Shrinkage, extra stock found as Inventory Count Gains, each at the item's cost on the day of approval. Counts approved before the update never post. See Chart of accounts.

Rejecting changes no stock. The count, its lines and the reason are kept as an audit record, and the manager's reason is appended to the count's notes.

Pending counts appear in the shared approvals queue alongside everything else waiting on a manager. See Approvals and promotions.

Offline

On the POS app you can keep counting when the signal drops. Once a count is open, scans are saved on the phone and the screen shows how many are waiting: N scans saved on this phone. They are added to the count by themselves as soon as the phone is back online, while the count is open on screen. Closing the app doesn't lose them; open the count again when you have signal.

Two things still need a connection:

  • Starting a count. Start it where you have signal, then walk into the stockroom.
  • Submitting. Submit waits until every saved scan has been sent.

While offline, the app finds items from the catalogue saved on the phone, so an item added to the catalogue after the last sync won't be found until you are back online.

The web and desktop apps need a connection to count.

A stock row the count has to create (the first time an item is counted at a branch) starts with no reorder point, so it doesn't turn up in reorder suggestions until you set one.

Where to go next