Operations guides / Cycle counting

INVENTORY OPERATIONS / PRACTICAL GUIDE

How to Run a Reliable Dispensary Cycle Count

A useful count gives you more than a new balance. It shows what was observed, when it was observed, and why it differs from the records. Start with a small, controlled scope and keep the first count blind.

By Dank Logic · Published October 29, 2026 · General operating workflow

Use this workflow alongside your approved operating procedures. Required count schedules, reporting, retention and correction authority depend on your license and jurisdiction.

1. Define a count your team can finish

Choose one facility and license scope, a clear set of storage locations, and the packages included. Keep medical and adult-use records separate. Identify sellable, held, returned and other inventory states so stock is neither missed nor counted twice.

Assign a counter, a reviewer and an owner for unresolved differences. Walk the area first: confirm location labels, separate mixed packages, and identify stock awaiting a receipt, transfer or status review. Include a way to record unexpected packages found in the area.

For an internal cycle-count plan, prioritize recurring discrepancies, busy locations and hard-to-count items while tracking coverage of the remaining inventory. Do not treat an internally chosen schedule as a substitute for required counts.

2. Preserve the baseline before counting

Record the facility, license, locations, package IDs, units, source report filters, timestamp and timezone. Keep original METRC and POS snapshots separately. Compare their on-hand quantities; do not add the two sources together.

Hold activity in the count area where your operating procedure permits. If sales, receipts or moves continue, assign someone to log them. Saving a local snapshot does not lock transactions in METRC or your POS.

3. Record observations without showing the target

Give counters the identifiers and locations they need, but hide expected quantities and earlier count results. Capture the package ID, physical location, observed quantity, unit, counter and observation time. Preserve package tags as text, including leading zeros.

Count each package separately even when products share a name. Verify conversions before combining sealed cases and loose units. Never compare grams with retail units without a documented, matching quantity basis.

Record an actual observed zero explicitly. Leave an uncounted or inaccessible package unresolved rather than silently turning a blank into zero. Check both directions: find each listed package, then identify any physical stock missing from the count list.

4. Bring the observation back to the cutoff

Compare quantities from the same moment. For activity within the same scope, a later observation can be brought back to the baseline cutoff by adding documented outbound movements after the cutoff and subtracting documented inbound movements. Check timestamps and prevent duplicate movement entries.

A simple example

Synthetic example: the baseline is 24 each at 9:00 a.m. Three each are sold before the package is counted at 9:20 a.m. The counter observes 20 each. With no other movements, the cutoff-equivalent observation is 20 + 3 = 23 each: a variance of −1 each against the baseline.

Comparing 20 directly with 24 would mix two different times. If the movement history is incomplete, mark the result unresolved and establish a controlled recount.

5. Recount before deciding what changed

Use an independent blind recount when a difference warrants it. Retain the first observation and the recount separately. Check neighboring storage, duplicate lines, package identity, unit conversions and transactions around the cutoff.

Do not infer theft, shrink or a system error from the variance alone. Record the evidence supporting a cause, the reviewer and the next action. Where the reason is unknown, keep it unknown and assign an owner rather than forcing a convenient explanation.

6. Separate review from correction and verification

A completed count is evidence, not permission to adjust inventory. Have an authorized reviewer determine the appropriate action under your procedures and provider requirements. Retain any external correction reference; a prepared export is not proof that a change was accepted.

After authorized corrective work, collect fresh evidence for the same scope and confirm the outcome. Keep unresolved items open. Retain the baseline, observations, movement log, recounts, cause, reviewer and verification together.

Review repeat causes as process work: receiving errors, location discipline, unit mapping or delayed transactions. Track count coverage separately from accuracy, and define the package scope and tolerance whenever reporting an accuracy percentage.

Count-day checklist

  • Facility, license, locations and package scope are clear.
  • Original source snapshots and the cutoff are saved.
  • Expected quantities are hidden from counters.
  • Observed zeros, missing packages and uncounted lines remain distinct.
  • Movements are controlled or documented back to the cutoff.
  • Recounts and causes retain their supporting evidence.
  • Correction, approval and verification are separate steps.
  • Open exceptions have an owner and a next action.

Put the workflow into practice

Stash Check introduces blind-count sessions, variance review and reconciliation evidence. Its current pilot scope and acceptance status are described on the product page. For differences between software records, continue with the METRC and POS reconciliation guide.

Discuss your count workflow
References and scope

This is a recommended operating workflow, not a description of every provider’s behavior. Microsoft’s cycle-counting examples illustrate blind counting and review of differences in Dynamics 365. METRC’s Open API overview explains its integration context; a local count does not itself establish an accepted provider update. Neither reference endorses Dank Logic or establishes jurisdiction-specific counting requirements.

YOUR INQUIRY

A clear conversation starts here.

If you submit the contact form, your name, email, company, selected interest and message are saved for Dank Logic to review and respond. A receipt reference confirms that the inquiry was saved. Automated email notifications and CRM synchronization are not connected.

Contact hello@danklogic.com to ask about your inquiry or request removal. Avoid customer, patient, regulated inventory or other confidential records in the form.

The hosting service may process technical request and access data. A temporary session preference remembers the brand welcome; it is not an advertising or analytics profile.