What is ghost stock, and what report can you run to see it?
Ghost stock, also called phantom inventory or ghost inventory, is inventory your system shows as on hand that isn’t physically on the shelf. To find it, run an inventory variance report after a cycle count to compare counted units with system units. Then use your negative inventory, stock on hand by location, movement, and no-movement reports to decide where to count next.
Below, you’ll learn which reports surface ghost stock, how to run the check step by step, and how to keep it from coming back.
Key takeaways
- Run an inventory variance report after every cycle count to compare counted units with system units.
- Check the negative inventory report and the no-movement report every week to choose which locations to count.
- Scan every receipt, pick, and transfer so the system records each movement when it happens.
- Fix ghost stock with a documented inventory adjustment tied to a reason code, never a silent edit.
What is ghost stock?
Ghost stock shows up when the system quantity for an item in a location runs higher than the physical quantity. Every item carries two numbers: the system quantity built from recorded transactions, and the physical quantity you count by hand. When the system number is bigger, the extra units are ghosts.
Ghost stock and phantom inventory mean the same thing. To see where ghost stock fits into your inventory record accuracy, read our guide to inventory accuracy.
Ghost stock is hard to spot because nothing looks wrong on screen. The quantity on hand looks healthy, so the reorder point never triggers. Meanwhile, your sales team keeps promising orders against units that don’t exist.
Most ghost stock starts with one of six causes:
- Unrecorded scrap or damage: A forklift crushes a pallet, and nobody posts the scrap.
- Shrinkage: Theft or loss removes units without a matching transaction.
- Receiving errors: Someone receives the full purchase order (PO) when the truck delivered only part of it.
- Unposted picks: A picker pulls units, but the pick never posts.
- Unit-of-measure mix-ups: A receiver enters 10 cases when the supplier shipped 10 single units.
- Consignment stock recorded as yours: Supplier-owned units sit in your counts, then vanish when the supplier reclaims them.
You can dig into theft, damage, and other causes of inventory shrinkage in our separate guide.
How is ghost stock different from a ghost asset?
Ghost stock lives in your inventory records, while a ghost asset lives in your fixed asset register. The two terms get mixed up often, so here’s how they compare:
| Ghost stock | Ghost asset | |
|---|---|---|
| What it is | Inventory items for sale or production that the system shows but you can’t find | Fixed assets, such as equipment or vehicles, still on the general ledger after disposal |
| Where it lives | Your inventory system | Your fixed asset register and general ledger |
| Report that finds it | Inventory variance report | Fixed asset register reconciliation |
| Who usually owns it | Inventory or warehouse manager | Controller or accounting team |

Why does ghost stock matter?
Ghost stock matters because every decision built on your inventory records inherits the error. Purchasing, sales, and accounting all read the same quantity on hand, so one wrong number misleads three teams.
1. Ghost stock blocks reordering
Reorder points read the system quantity, never the shelf. Say your reorder point for cold-brew concentrate is 20 cases and the system shows 40. Purchasing holds off on new POs while the real 12 cases sell out, and the first warning is an empty bin.
2. Ghost stock breaks customer promises
Sales orders get allocated against units the system believes exist. A customer gets a ship date, the picker finds a short bin, and the order turns into a backorder. Keeping the promise can mean paying for expedited shipping.
3. Ghost stock distorts the books
Phantom units carry a cost, so your inventory valuation runs high until someone adjusts it. Cost of goods sold (COGS) runs low at the same time, which makes margins look better than they are. The correction often lands at the year-end count, when it’s hardest to explain.
Real-time records keep those surprises small. In a December 2021 G2 review, one Fishbowl user wrote, “After 4 months into use, we have our inventory correct in real time.”
4. Ghost stock hides how far you are from good accuracy
Without a count, you can’t tell how far off your records are. The Warehousing Education and Research Council’s WERC 2025 DC Measures benchmarks put best-in-class inventory count accuracy by location at 99.5% or higher. At that level, a warehouse that counts 1,000 bins finds no more than 5 bins that don’t match.
What reports can you run to see ghost stock?
The 7 reports below show what your system believes, and only a physical count confirms a gap. If you use QuickBooks or SAP, the last two sections below map these checks to the reports your system already has.
If you’d rather get these reports on a schedule than pull them by hand, explore our automated inventory reporting options.
1. Inventory variance (count vs. system) report
An inventory variance report compares the counted quantity to the system quantity by item and location. When the system number beats the count, the difference is ghost stock. Sort by variance value, since a small gap on a costly item can outweigh a big gap on a cheap one.
Example: the roaster counts bin A-14 and finds 12 cases of concentrate. The system shows 40, so the report lists a count variance of -28 cases. At $18 a case, that one bin holds $504 of ghost stock.
2. Negative inventory report
A negative inventory report lists every item and location with a quantity below zero. You can’t physically hold fewer than zero units, so each line points to a missed receipt or a posting error. The same mistake often leaves a ghost on another item or location.
Example: a picker pulls 6 packs of glass growlers from location C-07, but the pick posts against C-08. C-08 drops to -6 on the report, while C-07 still shows 6 packs that already shipped.
3. Stock on hand by location report
A stock on hand by location report shows where your system thinks each unit lives. Quantities in closed bins, rarely used overflow racks, or staging lanes are prime suspects. Units there often moved without a posted transfer.
Example: the report shows 8 cases of bottled cold-brew coffee in a staging lane the crew cleared last week. Nobody posted the move to the shelf.
4. Inventory movement (transaction history) report
An inventory movement report lists every receipt, pick, transfer, and inventory adjustment for an item over a date range. Run it on suspect items to find the transaction that created the gap.
Example: the history for bin A-14 shows no scrap posted since the bin reached 40 cases. The shift log, though, notes a forklift crushed a pallet of 28 cases.
5. No-movement or aged inventory report
A no-movement report lists items with quantity on hand but no sales, picks, or transfers in 90 days or more. Some lines are slow-moving inventory, and some no longer exist. Count them before you reorder or write anything off.
Example: the roaster sells growlers weekly, yet one growler location has sat idle for 120 days. Those units likely shipped under a different location.
6. Reports to run in QuickBooks
QuickBooks has no built-in count-versus-system variance report, so you build the comparison yourself. Record counts on the Physical Inventory Worksheet, compare them to quantity on hand, then use the Inventory Valuation Summary and Detail reports to find negative quantities and trace the transactions behind each gap. In QuickBooks Online, inventory tracking and these reports require the Plus or Advanced plan. For setup and everyday workflows, see our QuickBooks inventory management guide.
| Report | Available in | How to use it for ghost stock |
|---|---|---|
| Physical Inventory Worksheet | QuickBooks Online Plus and Advanced, QuickBooks Desktop | Print it as your count sheet, then compare counted units to quantity on hand |
| Inventory Valuation Summary | QuickBooks Online Plus and Advanced, QuickBooks Desktop | Scan for negative quantities and tie total value to your Inventory Asset account |
| Inventory Valuation Detail | QuickBooks Online Plus and Advanced, QuickBooks Desktop | Filter to a suspect item to find the transaction that created the gap |
| Inventory Stock Status by Item | QuickBooks Desktop | Flag items sitting above their reorder point that sales say are short |
7. Reports to run in SAP (MMBE, MB52, MB5B, MB51)
SAP S/4HANA users have four standard transaction codes for the job. According to SAP’s stock list documentation in its current S/4HANA training course, MMBE gives an overview of one material’s stocks across all organizational levels. MB52 lists many materials with quantities and values and includes a Display Negative Stocks Only checkbox.
The same course explains that MB5B calculates stock on a past posting date from material documents. MB51 lists posted material documents, filterable by plant, movement type, and special stock indicator.
SAP doesn’t call any of these a ghost stock report. Practitioners use them as clues because they show what SAP has recorded, and a physical count proves the gap. The table below sums up each transaction code:
| Transaction | What it displays | How to use it for ghost stock |
|---|---|---|
| MMBE | One material’s stocks across all organizational levels | Check every level that holds a suspect material |
| MB52 | Stock for many materials with quantities and values by plant and storage location | Turn on the negative-stocks-only filter |
| MB5B | Opening and closing stock for a posting date range, plus receipts and issues | Rebuild stock as of your count date |
| MB51 | Posted material documents, filterable by movement type and posting date | Trace the posting that caused the gap |
How do you find and fix ghost stock?
You find ghost stock by counting the locations your reports flag, and you fix it with a reason-coded inventory adjustment. To match counts to your books in more detail, follow our step-by-step inventory reconciliation guide. Work through these seven steps:
- Pull the stock on hand and negative inventory reports: Run both for the same date. Example: the roaster pulls both on Monday morning.
- Shortlist suspects: Flag negative quantities, idle records, and high-value items. Example: bins A-14 and C-07 make the list, plus three high-value locations.
- Count suspects blind: Give counters locations but no system quantities. Example: the counter records 12 cases in A-14, unaware of the 40.
- Run the variance report: Compare each count to its system quantity. Example: A-14 shows -28 cases, and C-07 shows -6 packs.
- Trace the cause in transaction history: Open the movement report for each variance. Example: A-14 shows no scrap posted after the forklift accident.
- Post a reason-coded adjustment: Correct the quantity with a reason such as “damaged.” Example: the roaster adjusts A-14 down 28 cases using that code.
- Reconcile to accounting: Match total adjustment value to the general ledger. Example: the controller confirms the $756 write-down hit the inventory adjustment account.
What does a worked variance example look like?
A worked variance example multiplies each unit gap by unit cost, then divides matching locations by counted locations. The roaster counted 5 locations:
| Location | Item | System units | Counted units | Variance units | Unit cost | Variance value |
|---|---|---|---|---|---|---|
| A-14 | Cold-brew concentrate (case) | 40 | 12 | -28 | $18 | -$504 |
| B-03 | Oat milk (case) | 25 | 25 | 0 | $22 | $0 |
| C-07 | Glass growlers (6-pack) | 30 | 24 | -6 | $42 | -$252 |
| D-02 | Bottle labels (roll) | 50 | 50 | 0 | $9 | $0 |
| E-11 | Shipping cartons (bundle) | 15 | 15 | 0 | $12 | $0 |
| Total | 160 | 126 | -34 | -$756 |
Total variance is 126 counted units minus 160 system units, or -34 units. Ghost stock value is (28 × $18) + (6 × $42), which equals $504 + $252, or $756.
The inventory accuracy formula here is matching locations ÷ counted locations. Three of 5 locations match, so 3 ÷ 5 = 60% location accuracy.
What are the limitations of ghost stock reports?
Ghost stock reports point you to likely problems, but each has blind spots:
- Reports show only the system side: Units that left without a transaction look identical to units still on the shelf.
- A count is the only proof: Until someone counts the location, a suspicious line remains a lead.
- Standard reports stay separate: Variance, aging, and location data often live in different reports, so you cross-check by hand.
- Timing gaps create false alarms: Units in transit or picks waiting to post look like ghost stock, so note open transactions first.
- Reports can disagree: Two reports may show different quantities for the same item. A physical count settles any disagreement between reports.
You can close the separate-reports gap with Fishbowl AI Insights, which is built into Fishbowl. Ask in plain language for “negative variances over $100 in locations idle for 90 days” and get a custom report without writing code.
How can you prevent ghost stock?
You prevent ghost stock by recording every movement when it happens and checking records before small gaps grow. Build these six habits:
- Cycle count high-value items on a schedule: Count costly, fast movers most often. Learn the setup in our inventory cycle counting basics.
- Scan every receipt, pick, and transfer: Scanning records each movement at the bin. See how it works with barcode scanning for inventory.
- Require reason codes for scrap and damage: Make “damaged,” “expired,” and “scrapped” required choices so every loss posts before it reaches the dumpster.
- Enforce workflows that block errors: In Fishbowl, you can’t ship what you don’t have or skip a receive. That built-in discipline keeps you honest.
- Separate consignment stock: Give supplier-owned units their own location or flag so they never count as yours.
- Review negative inventory and no-movement reports weekly: A 15-minute Monday review catches gaps while transactions are still fresh.
How Fishbowl helps you catch and prevent ghost stock
Ghost stock hides between your records and your shelves, and the right reports plus a physical count show you where. Fishbowl narrows that gap with barcode-scanned cycle counts, variance reporting, and enforced workflows that won’t let you ship inventory you don’t have. Wine producer Prince Michel Vineyard & Winery reduced inventory adjustments from 12% to 2% with Fishbowl.
Frequently asked questions about ghost stock
How often should I check for ghost stock?
Match your counting rhythm to item value, counting your most valuable and fastest-moving items most often and low-value items less often. Spot-check any location right after a known problem, such as a damaged delivery or a new picker’s first week. Fewer transactions since the last count means less history to trace.
Can ghost stock happen in QuickBooks?
Yes, because QuickBooks Online and QuickBooks Desktop calculate quantity on hand from the transactions you enter. A missed write-off or a sale entered against the wrong item creates phantom inventory there just as it would anywhere else. Many growing teams pair QuickBooks with a dedicated inventory system that syncs to it and records scans at the bin.
Is ghost stock the same as shrinkage?
No, shrinkage is inventory you lose to theft, damage, spoilage, or errors, while ghost stock is the record left behind when nobody posts the loss. A reported and adjusted theft is shrinkage with no ghost. An unnoticed theft leaves you with both the loss and a phantom record that keeps counting the missing units.
Who should approve adjustments for ghost stock?
Someone other than the person who did the count should approve each adjustment. Separating counting from approving is a basic internal control that keeps errors and theft from hiding behind a quick edit. Many small teams let the warehouse lead approve small corrections and send anything over a written limit, such as $250, to the owner.
Does ghost stock affect taxes?
It can, because inventory value feeds into your financial statements and the profit you report. Correcting ghost stock changes that value, and the timing of the write-off may matter as well. Tax rules vary by location, so check with your tax advisor before you record a large adjustment or close the year.