
Inventory Problems Start Upstream — Not in the Warehouse
Bad data, not bad counting. Why orders don't sync, refunds don't decrement, adjustments don't propagate. Data hygiene before physical reconciliation.
Your team counts the warehouse. You get 47 units of SKU-001 on the shelf. Sage 50 says 52. Your first instinct is to assume shrinkage, theft, or miscounting. Your second instinct is to hire better staff or implement better physical controls.
Your third instinct — the right one — should be to ask: "Why is Sage 50 wrong?"
Nine times out of ten, inventory discrepancies aren't a warehouse problem. They're a data problem. An order didn't sync. A refund didn't post. An adjustment was applied to the wrong SKU. A return came in but the receiving document was never entered. The warehouse was actually right; the books were wrong.
Fixing warehouse controls won't help if the source data is corrupt. You'll just end up chasing numbers that were never true in the first place.
This guide explains where inventory data corruption comes from, why it's upstream (in how orders and refunds are recorded) rather than downstream (in the warehouse), and how to fix it before you count a single unit.
In this guide:
- Where inventory problems actually live
- Orders that don't sync
- Refunds that don't decrement
- Adjustments that disappear
- Return documents that never close
- SKU mapping errors
- Data hygiene before physical controls
- FAQ

Where Inventory Problems Actually Live
Most inventory discrepancies happen in step 1 or 2 of the sync pipeline — the order doesn't sync, or the sync loses accuracy. By the time the product hits the warehouse floor, the books are already wrong.
Common causes:
- Order never entered in Sage 50
- Order entered with wrong SKU
- Order entered but inventory isn't decremented
- Refund processed in Shopify but not recorded in Sage 50
- Return received but no return document created
Orders That Don't Sync
Scenario 1: Manual Entry Lag — Bookkeeper enters orders weekly, not daily. For six days, orders are in Shopify but not Sage 50. Sage 50 inventory is overstated.
Scenario 2: Silent Sync Failure — Automated integration skips certain order types (multi-currency, guest checkouts). Those orders skip, inventory never updates.
Scenario 3: Partial Sync — Invoice syncs but inventory decrement is forgotten. Order in Sage 50 but inventory untouched.
Scenario 4: Wrong Quantities — Order with 5 units gets entered as 50. Inventory decremented by wrong amount.
How to Find Unsync'd Orders
- Export your Shopify orders for past month
- Export your Sage 50 invoices for same period
- Compare using VLOOKUP/INDEX-MATCH
- Orders that don't match are unsync'd
- Calculate missing inventory by summing unsync'd quantities

Refunds That Don't Decrement
Customer orders 5 units. Order syncs; inventory decrements by 5. Customer returns it. Refund processes in Shopify; inventory increments by 5. But nobody entered a credit memo in Sage 50.
Result: Sage 50 shows 5 units decremented (still), Shopify shows inventory restored. Physical count matches Shopify. Sage 50 is understated.
Multiply by 50 refunds/quarter = 250 units of phantom stock-on-hand being wrong in Sage 50.
How to Find Missing Credit Memos
- Export your Shopify refunds for the month
- Check Sage 50 for matching credit memo per refund
- Any refund without matching credit memo is missing
- Calculate missing inventory by summing those refund quantities
Adjustments That Disappear
An inventory adjustment is supposed to update Sage 50 when physical counts don't match. But adjustments often:
- Sit in draft status, never posted
- Post to wrong account (damage expense vs shrinkage)
- Post to wrong SKU (typo)
- Get reversed without replacement
How to Audit Adjustments
- Pull all inventory adjustments from Sage 50 for past 90 days
- Verify each against physical count sheet
- Check that adjustments were posted (not draft)
- Check that adjustments went to right SKU
- Check accounting — right GL account?
- Look for reversals without replacements
Return Documents That Never Close
Customer returns merchandise. It arrives. Warehouse inspects and restocks or tags as damaged. But nobody creates a "received return" document in Sage 50.
From Shopify's perspective, return was processed. From warehouse's perspective, merchandise is back in stock. But Sage 50 has no record, so inventory is still decremented.
How to Find Unrecognized Returns
- Export your Shopify returns/refunds for past 90 days
- For each return, check whether a "goods received" or "return received" document was created in Sage 50
- Any return without corresponding receiving document is missing
- Calculate missing inventory by summing those quantities
SKU Mapping Errors
Shopify calls a product "Widget A." Sage 50 calls it "WGT-A001." When an order comes through, it needs to be matched from Shopify product to Sage 50 SKU.
If mapping is wrong — Widget A maps to WGT-A002 (wrong) instead of WGT-A001 — the inventory will decrement the wrong product.
Result: WGT-A002 is understated. WGT-A001 is unaffected. Two SKUs are wrong because of one mapping error.
How to Audit SKU Mappings
- Pull list of your Shopify products with their SKUs
- Pull list of your Sage 50 items with their codes
- Create a mapping table (Shopify → Sage 50)
- Check for duplicates (one Shopify product mapping to multiple Sage SKUs, or vice versa)
- Spot-check a few mappings
- Look for missing products (Shopify products with no Sage 50 mapping)
Data Hygiene Before Physical Controls
Before you invest in better warehouse procedures, fix the data.
Priority order:
- Reconcile unsync'd orders. Get all Shopify orders into Sage 50 with right quantities.
- Post missing credit memos. Ensure all refunds are recorded in Sage 50.
- Create return receiving documents. Record when returned merchandise is received and restocked.
- Fix SKU mappings. Ensure Shopify products map to right Sage 50 codes, one-to-one.
- Audit and clean adjustments. Fix any that went to wrong account or SKU.
- Do a physical count. Once data is clean, count warehouse and reconcile discrepancies.
- Set up ongoing sync. Once data is clean, automate or batch order sync so it stays clean.
Step 6 is where you'll find true shrinkage. Until you fix steps 1-5, shrinkage numbers are meaningless.
Want to audit where your data corruption is hiding? Book a free demo and we'll analyze your Shopify vs Sage 50 data for the last 3 months.
Frequently Asked Questions
Should I do a physical count before or after cleaning the data?
After. If you count while data is corrupt, you'll "correct" to numbers based on false baseline. Clean first, then count.
How often should I audit data sync?
Monthly minimum. For high-volume stores, weekly. Pull the reconciliation as a standard month-end checklist.
What if I find a lot of unsync'd orders? Do I need to rekey them all?
Not if old (more than 3-5 months). Rekey recent ones. For historical backlog, post single adjustment to correct inventory to reality.
Can I prevent data problems without automating?
Partially. Stricter checklists, daily batch syncs, weekly audits help. But human error never goes to zero. Automation prevents whole categories of errors.
What if my physical count still doesn't match Sage 50 after cleaning the data?
True shrinkage. Accept it, post adjustment, move on. Now you know it's real loss, not data corruption.
Should I charge back data cleanup costs to the warehouse team?
No. Data problems aren't warehouse problems. They come from accounting and IT processes. Make sure the process improves so they don't repeat.
Related Reading
- The Inventory Timing Gap: Why Shopify and Sage 50 Disagree - Timing as a source of discrepancies
- How to Sync Sage 50 and Shopify Inventory - Inventory sync mechanics
- Shopify Sage 50 Integration - The Complete Guide - Full integration overview
- Common Sage 50 Shopify Integration Issues - Troubleshooting guide
- 5 Signs You Need a Sage 50 Shopify Integration - Inventory drift is a buyer signal
Ready to get started?
Schedule a demo to see how we can help streamline your workflow.