Why does Shopify keep letting people order things I don't have in stock?
Overselling almost always comes down to one of three causes, a mis-set inventory setting, a multi-location count that has drifted, or a channel that isn't syncing stock in real time, and each one needs a different fix.
What's going on
Why do I keep having to email customers to cancel and refund orders for things that were already out of stock is one of the most common frustrated posts merchants write after a rough week. It usually plays out the same way. A customer orders something Shopify shows as available, the order comes through, and only during fulfillment does staff discover there was actually zero, or negative, stock. The merchant then has to cancel or partially refund, apologize, and often absorb a negative review from someone who was excited about a purchase that was never really available.
What makes it frustrating is that it rarely has one clean fix. Sometimes it is a single mis-set toggle on one product. Sometimes it is a multi-location store where the number shown online does not match what is actually on a shelf. Sometimes it is a completely different sales channel, a marketplace or a POS terminal, selling the last unit before Shopify's own count catches up. Each of these looks identical to the customer, an order placed for something that turns out not to exist, but they need different fixes, which is why generic advice like just track your inventory rarely solves it on its own.
Why it happens
At the product level, Shopify's inventory behavior is governed by two settings per variant, Track quantity and Continue selling when out of stock. When tracking is on but continue-selling is left checked, Shopify accepts orders past zero on purpose, which is sometimes intentional for backorders but is often left on by accident from an earlier promotion or bundle setup, and nobody notices until a customer complains.
At the store level, overselling gets harder to prevent the more moving parts are involved, multiple stock locations, POS sales alongside online sales, manual stocktakes that never get entered as inventory adjustments, and connected marketplaces or channels that only update Shopify's counts periodically instead of instantly. Any lag between a sale happening somewhere and Shopify's number reflecting it creates a window where a customer can order something that is already gone.
None of this is unique to one merchant, it is a structural property of running inventory across more than one selling surface, which is why the same complaint keeps showing up in merchant discussions with the same chain of consequences, an oversold order leading to a cancellation, a refund, and a negative review, rather than as a one-off glitch.
5 ways to fix it
Check whether "Continue selling when out of stock" is quietly turned on somewhere in your catalog
In Shopify admin, each variant's inventory settings include Track quantity and Continue selling when out of stock. If tracking is on but continue-selling is also checked, Shopify will accept orders past zero on purpose. This is the most common cause of oversold single-location orders, because it is set per variant: one forgotten variant, often left over from a launch, a bundle, or a pre-order, can keep accepting orders while the rest of your catalog behaves normally. Use the bulk editor on your Products list to review this setting across variants instead of checking products one at a time.
If you stock inventory in more than one place, look for a gap between a sale and the count updating
With multiple locations or POS in the mix, overselling is rarely one setting, it is a timing gap between when something sells and when the count is corrected everywhere it is tracked. Review your locations under Settings for duplicates or stale entries, check that fulfillment priority is set up the way you expect, and confirm that stocktakes and damaged-goods write-offs are actually being entered as inventory adjustments rather than just noted somewhere else. An adjustment that never gets recorded is a common hidden source of drift between what is on the shelf and what Shopify shows online.
If you also sell on a marketplace or POS, treat this as a sync problem, not a settings problem
Shopify can only enforce the stock number it currently has. If a marketplace, a POS terminal, or another sales channel sells your last unit and that update does not reach Shopify quickly, your online store will keep showing the item as available until the count catches up. If this matches what you are seeing, the fix is a reliable real-time inventory sync between that channel and Shopify, whether that is a native integration, a sync app, or tighter polling intervals, since no Shopify-side setting alone closes a cross-channel timing gap.
Set up a simple way to catch oversold orders before the customer does
Even with settings and locations under control, brief windows for an oversell can still happen during traffic spikes or manual counting mistakes. Rather than finding out only when a customer emails you, set up a lightweight check, for example a saved order filter, a report, or an automation tool you already have, that flags any order for an item whose stock went to zero or below so someone reviews it the same day. Catching it early means you can offer a substitute, a priority restock, or a refund before the customer has to ask what happened.
Have a standing plan for what happens when an oversell does slip through
Some oversell risk is close to unavoidable once you are running multiple locations or channels, so pair the fixes above with a clear internal plan for the cases that get through anyway, such as proactive outreach, a discount code, or priority reshipping as soon as it is caught rather than waiting for the customer to follow up. In most complaints about this, the frustration comes from slow or silent handling after the fact, not from the oversell itself, so how quickly you respond matters as much as preventing it in the first place.
Bottom line
There is no single Shopify setting that eliminates overselling outright. Most cases trace back to one of three things: the per-variant continue-selling checkbox left on, an inventory count that has drifted out of sync across locations, or a marketplace or POS that is not updating Shopify in real time. Fixing the actual source holds up better than any workaround layered on top of it. Once that is closed off, treat the remaining small risk as a workflow problem, a quick internal check that catches an oversold order before the customer notices, rather than something that needs a new app on its own.
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.