Why do my exchanged items keep getting restocked wrong (or not restocked at all)?
Exchange items keep getting restocked wrong, restocked when they shouldn't be, or not restocked at all — here's what's actually configurable in Shopify today, and where the process tends to break down.
What's going on
A customer sends back a shirt for a size exchange, and somewhere between the return being approved and the new size shipping out, the inventory count goes sideways: the returned item never gets marked back in stock, or it gets restocked even though it arrived stained, or it lands in the wrong warehouse location entirely. Multiply that by dozens of exchanges a week and on-hand counts stop matching reality, which cascades into overselling items you don't actually have or under-selling items sitting in a bin nobody logged.
This isn't really a missing-feature problem. Shopify's return and exchange flow already includes a restock toggle and a location picker on every returned line item, and Shopify POS has a barcode scanner plus an optional return-reason requirement. The actual failure mode is almost always process: staff clicking through the return screen without checking the restock setting, no policy on what counts as restockable condition, reason codes left optional so nobody bothers, or physical receiving happening away from any system that talks to Shopify inventory at all.
Exchanges make it worse because they're really two transactions stitched together, a return of the old item and a new order or order edit for the replacement, and each half can be restocked, refunded, or fulfilled independently. If your team treats the exchange as one action instead of two things to verify separately, errors compound.
Why it happens
Shopify's restock option defaults to on for every returned line item when inventory tracking is enabled, which is convenient for clean returns but means damaged or final-sale items get silently restocked unless someone actively turns it off. Multiply that default across a busy return queue and errors are almost guaranteed without a documented process.
Return reason codes and location selection are optional unless a merchant specifically turns on the requirement, so stores that never configured that setting end up with returns processed with no reason logged and no way to audit later why a particular restock decision was made.
Exchanges add a second layer because the replacement item ships through its own fulfillment path, separate from the return's restock action. If staff aren't trained to treat these as two distinct steps to verify, one half gets done correctly and the other gets skipped or handled wrong.
5 ways to fix it
Check the restock toggle and location picker on every return before anything else
When you process a return in Shopify admin, each returned line item shows a restock option (on by default when inventory tracking is enabled) along with a location picker for where the item gets added back to stock. Make it store policy that whoever processes returns actually reads that screen instead of clicking through on autopilot: turn restock off for damaged or final-sale items, and confirm the correct location if you run more than one warehouse or retail store. This single habit fixes most "my exchange counts are wrong" complaints, because the usual cause is staff accepting defaults without looking, not a missing feature.
Require a return reason on every transaction, including at POS
Shopify lets you require a return reason to be selected on every return, including ones processed through Shopify POS, and the Admin API exposes return reason data you can pull into reporting. If your team is skipping reason codes today, that's a configuration gap, not a Shopify limitation. Turning the requirement on means nothing gets restocked or refunded without a documented reason, which also gives you the data to spot which products are generating the most exchanges.
Scan items in at receiving instead of matching labels by eye
Shopify POS can scan a barcode with your device's camera to pull up product details before a return is approved, which is far more reliable than staff typing in SKUs or matching labels visually. If your exchanges are actually being received through a back-office process rather than at a POS counter, look at whether that receiving step can route through POS or a handheld scanner synced to your inventory instead of a spreadsheet-and-eyeball workflow. That handoff is usually where "wrong item restocked" errors creep in.
If exchange volume is high, a dedicated returns app can add rules Shopify doesn't have natively
Native returns work fine for occasional exchanges, but Shopify doesn't offer automatic restock-by-condition (for example, only restocking items marked as unworn), bulk warehouse receiving queues, or automatic routing into a separate warehouse system. Apps built specifically for returns and exchanges add condition-based auto-restock rules, scan-to-receive workflows, and exchange automation that cut down on repetitive manual clicking. This is only worth evaluating if your exchange volume is high enough that the manual checkbox-and-reason-code process is genuinely the bottleneck, not just an occasional annoyance.
Reconcile inventory on exchanged SKUs on a regular schedule regardless
Even with every setting configured correctly, manual restocking will occasionally drift from reality: an item gets marked restocked but never physically makes it back to the shelf, or the reverse happens. Run a periodic inventory count reconciliation, focused specifically on SKUs with recent exchange activity, so mistakes get caught within weeks instead of surfacing months later as unexplained overselling.
Bottom line
Shopify's native return and exchange tools already include a per-item restock toggle, a restock-location picker, an optional required-reason setting, and barcode lookup in POS, so most "manual and error-prone" exchange restocking complaints trace back to staff not using those controls consistently rather than Shopify lacking them. Tighten your process and POS settings first, and only look at a dedicated returns app if your exchange volume is high enough to justify condition-based automation and scan-to-receive workflows that Shopify doesn't offer out of the box.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.