Square Champion

Cycle Counts: the 80% of inventory counting that matters to retailers

Screenshot 2026-04-25 065302.png

I requested cycle counting back in July 2025 and got a lot of support from other sellers in that thread. Nothing landed natively so I did what any slightly obsessed retailer would do: I built it myself. It started as a spreadsheet and a daily email to staff. It is now a full Node.js application running on top of Square's API. That is how unmet this need is.

Resubmitting with everything I learned along the way.

Why inventory counting without cycle counting is only half the job

Square tracks inventory well. What it does not do is verify it. In a live retail environment those two numbers drift apart constantly. Receiving mistakes, shrinkage, wrong SKUs scanned at POS, bundles not decrementing properly. Without a structured way to catch that drift, staff eventually stop trusting the system and every purchasing decision becomes a gut call instead of a data call.

Cycle counting is the retail industry's answer to this. Small daily batches, rotating through your full catalog, continuously. It has been standard practice for decades. It is still not in Square.

What I built to fill the gap

I am a store owner who uses AI tools to write code, not an engineer. What I built has bugs I am still finding. But the need was real enough that I went from a spreadsheet all the way to a running Node.js app anyway:

  • Daily rotating count lists, never-counted items surface first
  • Discrepancies auto-requeue until physically resolved
  • Corrections push as physical counts, not deltas, which matters a lot in a live store
  • Conflict detection before writing, so it does not overwrite legitimate Square changes mid-count
  • Mobile interface for staff walking the floor
  • Count by vendor and by category, something sellers have been asking for for years
  • Completion report at end of session with variance in units and dollar value
Square already had everything needed to build this. Inventory adjustment endpoints, item metadata, location scoping. The API was not the gap. The gap was assembling it into a workflow operators can actually run every day.

What a native version needs to include

  • Daily count target that rotates through the full catalog automatically
  • Priority queue for urgent items or items with recent discrepancies
  • Physical count adjustments as the default sync method, not deltas
  • Conflict detection before writing to prevent overwriting live changes
  • Count by vendor, by category, or by custom watch list
  • Session reporting with variance in both units and dollar value
  • "Days behind" visibility so the backlog is honest, not hidden behind a completion percentage

None of this is exotic. It is table stakes for any retailer managing more than a few hundred SKUs(We have 2,800 here).

 

The repo is public and MIT licensed. Cycle counting is one piece of a whole suite of tools I have built on top of Square because the gaps kept adding up. A hat, if you will. It fits pretty well at this point. Anyone at Square want to try it on?

0 Kudos