Skip to main content

What we found and fixed for ecommerce brands. Learn more about what we found and fixed for ecommerce brands

All resources
Guide8 min read

Phantom Stock: Why Your Count May Be Wrong

Your inventory count can be wrong because open purchase orders are being added to it. Draft orders, overdue orders and orders due months from now can all end up in a figure your reorder rules treat as real stock. Compare each open order line with its status and date to find out. Fix the report, not the order.

MorsegridPublished Last reviewed

What phantom stock is

Phantom stock is inventory your system reports that your shelves do not hold. It's easy to assume a counting mistake: a bin was miscounted or a return was never scanned. This version is different: nobody miscounted anything, and the system just added units that haven't arrived.

Two numbers matter here. On hand is what sits in your location. Incoming is what has been ordered and is on its way. Shopify draws the same line in its inventory states documentation: incoming inventory is inventory "on its way to your location from transfers, purchase orders, or apps," and it "isn't available to sell until it's been received at the location." The trouble starts when a report, a reorder rule or a spreadsheet adds the two together and calls the total stock.

If you are not sure you can trust your inventory view, you're in company. In a December 2025 survey of 500 mid-market US and UK ecommerce retailers, Linnworks reported that only 37.2% of US respondents and 33.2% of UK respondents rated their inventory visibility across channels and warehouses as excellent. Linnworks sells inventory and order management software, so read it as a vendor survey. It still shows that fewer than four in ten of the retailers it surveyed in each country call their own visibility excellent.

How draft and overdue orders end up counted as stock

An open purchase order line can be in several states, and not all of them mean stock is coming. Three kinds deserve suspicion:

  • Draft lines: nobody has sent these to the supplier, so the supplier hasn't agreed to anything, and some drafts never go out.
  • Overdue lines: the expected date has passed and nothing was received. The date was wrong or the order slipped, and you may not know which.
  • Far-out lines: the expected date is further away than you can wait. A line due in four months, for example, doesn't cover a product that sells out in three weeks.

Now picture a report that adds every open line to its forecast. All three kinds count as cover. A buyer reads that number and sees no gap. A reorder rule reads it and doesn't fire. A sales rep, or a sync that feeds your storefront, reads it and promises units. Whether your system works this way depends on how it defines the figure, so check instead of assuming.

The error can stay hidden because it looks like every other number. The first sign can be a customer order you can't fill or a reorder that never happened.

What we found on 23 September 2026

At the time, a client's stock forecast counted draft, overdue and far-out purchase orders as cover. $110,000 of its supply sat on open purchase orders, and 18 of those lines were already 30+ days overdue.

We found this. The client is not named here, and the figures are a snapshot of that system on that date, not a description of it today.

Read the $110,000 as open orders, not as money lost. Some of those orders may still arrive.

Check this in your own store

This check is read-only: you export data and compare it, and you change nothing. A first pass is a spreadsheet job, not a project.

  1. Export every open purchase order line from wherever you raise orders: your ERP, Shopify's purchase orders, a purchasing app or a spreadsheet. Keep one row per line, with SKU, quantity, unit cost, status and expected date.
  2. Add two columns, value (quantity times unit cost) and days overdue (today's date minus the expected date, so a negative number means the line isn't due yet).
  3. Sort the lines into four groups: draft or not yet sent, confirmed and due within your normal lead time, confirmed and overdue, and confirmed but due further out than your longest normal lead time. Within the overdue group, note how many lines are 30 or more days late. Add up the value of each group.
  4. Open the report your buyers, reorder rules or storefront read. Pick five SKUs that have open lines. Count the physical stock for each one and compare it with the number in the report.
  5. If the report is higher than the shelf by about the open quantity, open orders are probably inside the figure. Confirm it by finding the label and definition of that figure in your tool's documentation. Words like forecast, projected and expected are the ones to read closely.
  6. If open orders are inside the figure, add up the draft, overdue and far-out groups from step 3. That total is how much of your stock number rests on orders that may not arrive when you think.

If the report matches the shelf on all five SKUs, open orders probably aren't your problem. Look next at counting errors and unrecorded movements such as returns and breakage.

What to alert on

A one-off check finds today's problem, and an alert finds the next one. These are starting thresholds, not a standard, so set your own after the first export.

  • Any draft purchase order more than 7 days old.
  • Any confirmed line more than 7 days past its expected date, with a second alert at 30 days.
  • The share of total open order value that sits in draft, overdue or far-out lines, tracked week over week.
  • Any SKU where the reported stock is higher than the last physical count and an open line exists.

Send the alert to a named person, with the SKU list attached, once a week. A dashboard nobody opens doesn't count as an alert.

What not to change yourself

The temptation is to clean up the orders until the number looks right. Resist it. The fix belongs in how the number is defined.

  • Don't cancel or delete draft and overdue orders to make the number drop. Some are real, and a supplier may have shipped late, so ask first.
  • Don't rewrite reorder minimums to compensate. If a rule was reading inflated cover, a new minimum hides the cause and leaves the report wrong.
  • Don't edit the formula that every system reads. Build a separate read-only view first, a sheet or an alerts tab that shows incoming next to on hand. When it matches the shelf, ask the owner of the system to change the real definition.

If your purchase orders lived in Stocky

Stocky is no longer available as of 31 August 2026, according to Shopify's migration page. That page says historical purchase orders do not move over automatically and cannot be imported. For any order still open at cutover, it says to recreate only the remaining quantities as a purchase order or transfer in Shopify. It also gives read-only access to export your data for at least 90 days after that date, which runs to at least 29 November 2026.

A migration is a natural moment to run the check above. Shopify keeps incoming inventory out of its available figure, but any report or spreadsheet you build on top can still add it back in. Make sure you did not recreate a draft that was never sent or an order the supplier already closed.

Where to go next

More on stock counts, and on how we work:

Frequently asked questions

What is phantom stock?
Phantom stock is inventory a system reports that is not physically there. One cause is counting units that were ordered but not received, such as open purchase orders, as if they were on hand. Other causes include counting mistakes and unrecorded losses. The fix depends on the cause, so find it before you change anything.
Why does my system show stock I don't have?
Check three things in order. Does the report add incoming purchase order quantity to on hand? Are draft, overdue or far-out lines inside that incoming number? Does a physical count of five SKUs match the report? If the report is higher than the shelf by about the open quantity, open orders are the likely cause. If not, look at counting and unrecorded movements.
Does this apply if I don't have an ERP?
Yes, it can. A spreadsheet that adds ordered to on hand has the same problem, and an app that shows a forecast figure can have it too. Shopify's own available figure leaves out incoming inventory, according to its documentation, so the risk sits in anything that adds the two back together.

Start with the export and the five-SKU test. They change nothing, and together they tell you whether open orders sit inside the stock number you rely on. If the total is large, or the five-SKU test does not match the shelf, bring the export to us. Book a diagnosis call and we'll find where the number comes from before we suggest anything. Stock counts are one of the layers that break as a store grows; scaling ecommerce operations covers the others.

Free Assessment

How systemized is your team?

Get a personalized Systemization Score across seven categories, plus the three areas worth fixing first in your next 30 days.

Take the Free Assessment ~10 minutes. Results instantly.