Shopify's stock count is only as accurate as the last time someone checked it against reality. Returns get processed incorrectly, purchase orders get received in the system before physical stock arrives, and damaged units disappear without a Shopify adjustment. Over months, these errors compound into a gap between what Shopify shows and what you actually have. A structured inventory audit closes that gap — and a cycle counting schedule prevents it from reopening.

A Shopify inventory count starts perfectly accurate the moment you set it. Over time, without active maintenance, it drifts. The drift is not random — it comes from predictable, repeatable sources:
You have two approaches to inventory auditing. They are not mutually exclusive — most merchants use both.
Count every single SKU at every location in a single session. Shopify is usually paused for new orders during the count to prevent discrepancies from in-transit inventory. Full stocktakes are accurate but operationally disruptive — they require staff time, may require closing the store, and produce a point-in-time snapshot that starts drifting immediately after.
Best for: annual or semi-annual reconciliation, pre-season preparation before peak demand, or post-acquisition due diligence.
Count a rotating subset of SKUs on an ongoing basis — for example, 10–15 products per week. Over the course of a year, every product gets counted at least once. High-velocity (A) items get counted more frequently because they have higher transaction volume and therefore higher discrepancy risk.
Best for: ongoing accuracy maintenance, catching discrepancies before they compound, and avoiding the disruption of an annual shutdown count.
Run one full stocktake per year (typically before or after peak season). Supplement with weekly cycle counts — your top 20% of SKUs by velocity every 4–6 weeks, the rest quarterly. This catches most discrepancies quickly without requiring a full operational shutdown.
Go to Shopify Admin → Products → Inventory. Click Export in the top-right corner. Select "Current inventory quantities" and your preferred format (CSV). This file is your expected count — what Shopify thinks you have at each location. Save it as your baseline before you touch anything else.
Count every unit physically, by SKU and location. For a full stocktake: pause new order fulfillment during the count period (or count before business hours). For cycle counting: count only the selected SKUs for this week's rotation. Record physical counts in a separate column in the exported spreadsheet. Do not adjust Shopify yet — you need the comparison first.
Add a Discrepancy column to your spreadsheet: Physical Count − Shopify Count. Positive numbers mean you have more than Shopify shows (often from unreceived POs counted early in Shopify, or returns that weren't restocked). Negative numbers mean Shopify is overstating your stock (theft, damage, data entry errors). Flag every non-zero row for investigation.
Before changing any Shopify quantities, find out why the discrepancy exists. Check: open purchase orders (stock received physically but not yet marked received in Shopify?), recent returns (physical return disposed but inventory restored?), recent transfers between locations. Understanding the root cause prevents the same error from recurring after you fix the number.
Go to Products → Inventory, search for the product variant, click the quantity for the relevant location, enter the correct quantity, and select an adjustment reason (Received, Return restock, Damage, Theft, Correction, or Other). Shopify logs every adjustment with a timestamp, reason, and quantity change. This audit trail is important for bookkeeping and for tracking which reason codes appear most frequently.
The adjustment fixes the current number. The schedule prevents future drift. Classify your SKUs by velocity: A items (top 20% by sales) — count monthly. B items (middle 30%) — count quarterly. C items (bottom 50%) — count annually. Schedule it in your team calendar as a recurring task. Review your most common adjustment reason codes quarterly to identify systemic process problems (e.g., if "Received" discrepancies are common, your PO receiving process needs tightening).
Most inventory discrepancies in Shopify start at the purchase order receiving stage. When stock arrives, merchants often mark a PO as fully received in their system regardless of whether the physical count matches what was ordered. Over time, these small receive-quantity errors — 48 units received, 50 recorded — compound into significant inaccuracies.
EZStock's purchase order workflow addresses this at the point of receipt. When you mark a PO as received in EZStock, you can enter the actual received quantity for each line item — not just confirm the ordered quantity. EZStock then updates Shopify inventory with the real received quantity, not the ordered quantity. This prevents the most common source of drift before it starts.
EZStock also supports partial receipts: if a supplier ships 3 of 5 line items, you can receive only those 3, keeping the other 2 as "outstanding" on the original PO. Shopify inventory reflects what actually arrived, not what you expected to arrive.
EZstock's PO receiving workflow updates Shopify inventory with real received quantities — preventing the most common source of discrepancies before they accumulate.
Start Free 14-Day TrialNo credit card required · Installs in 60 seconds · Cancel anytime
Shopify inventory management with real purchase orders