Shopify overselling: why stock goes negative
Six causes — continue-selling, untracked variants, sync lag, draft orders, the cart window, bundle apps — with the fix for each and a prevention checklist.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Shopify overselling happens when an order is accepted for stock that doesn't exist, and the usual evidence is a negative available quantity. It comes from six places: Continue selling when out of stock being enabled where nobody decided it should be, variants with tracking switched off, multi-location and multichannel sync lag, draft orders created outside the storefront's inventory check, the cart window before checkout, and bundle or kit listings that don't decrement their components. Each cause has a different fix, and diagnosing which one you have is faster than applying all five.
This article goes cause by cause, then gives you a prevention checklist and the one setting most stores don't realize is per-variant.
Start with where the negative number came from
Negative available inventory is a symptom with a short differential diagnosis. Find the order that took the stock below zero, then check it against this table:
| What you see | Likely cause | Where to check |
|---|---|---|
| Negative on a variant with a "sold out" page but orders still arriving | Continue selling when out of stock is on | Variant's Inventory section in the admin |
| Variant sold indefinitely, no warning, never hits zero | Quantity tracking off for that variant | Product → variant → Track quantity |
| Negative only at one location | Location-level mismatch; stock exists elsewhere | Inventory → filter by location, then check Locations settings |
| Negative appears hours after a marketplace order | Multichannel sync lag | Channel app sync logs |
| Negative after an invoice or manual order | Draft order created outside the storefront | Orders → filter by source |
| Negative on a bundle but components fine | Bundle app managing its own counter | Bundle listing vs component quantities |
That's a ten-minute triage that usually names the cause before you've read any settings documentation.
Cause 1: continue selling when out of stock
The per-variant setting Continue selling when out of stock lets customers buy after available inventory reaches zero, and quantities go negative. It's a legitimate feature — it's the cheapest backorder mechanism Shopify has — but the overselling problem is almost never the setting itself. It's the setting being on when nobody made that decision. It gets switched on while testing a preorder, carried over when a product is duplicated, or left from a campaign two seasons ago.
There's no store-wide switch, which is exactly why it accumulates. The audit is manual but quick:
- Export your products CSV, or use the bulk editor, and add the inventory-tracking and continue-selling columns.
- Sort so every variant with continue-selling enabled is visible together.
- For each one, ask a single question: would I ship this today if it sold? If not, turn it off.
- Write the answer down somewhere, because next quarter you'll be asked why four SKUs behave differently.
Stores that deliberately run backorders keep the setting on for those variants — and should document the policy, the ship-window language on the page, and a cap on accepted exposure. Undocumented backorders and accidental overselling are the same thing seen from different ends of the timeline.
Cause 2: tracking switched off
If a variant doesn't have quantity tracking enabled, Shopify doesn't decrement it when it sells — it can sell forever and the number never moves. No negative, no warning, no low-stock alert. That's quieter than overselling and worse in a catalog sense: the SKU looks healthy in every report while being structurally unable to stay in stock.
It shows up most often on variants added by CSV import, by an app, or by someone following an older process. The audit is the same CSV pass; the first time a store with a few thousand SKUs runs it, they typically find a handful of untracked variants, usually recent additions.
The durable fix is procedural: tracking-on and a real opening quantity become part of product creation, whoever does it. A checklist item is worth more than a quarterly audit here.
Cause 3: locations and multichannel sync
Inventory lives at locations, and every channel draws from them. Three distinct failures:
Location assignment. Orders route to fulfillment locations by priority and by which locations actually fulfill online orders. If a variant shows available at a location excluded from online fulfillment, the storefront treats it as unavailable while the admin number looks fine. And if a location holds stock that isn't really there — a pop-up, a returns shelf, a stockroom nobody counts — orders land where they can't be covered. Check location settings before debugging anything else.
Marketplace and POS sync lag. A sale on a marketplace or in a retail POS doesn't reach the Shopify count instantly. In that window the web store can sell the same units. The window's length is set by the channel app, not by Shopify, which is why oversells spike on your busiest days — the days sync is slowest. The mechanics are in multichannel inventory.
POS selling past zero. Staff at the register can sell an item whose available quantity is at or below zero; POS warns them, and the warning can be clicked through. That's often correct in a physical store — the count is wrong more often than the shelf is empty — but it silently makes the online count wrong, and the next web order oversells the unit someone just carried out. Procedurally: a POS warning means check the other locations before selling, and the location that hit zero gets counted the same day.
Cause 4: draft orders
Draft orders are how you build a custom order for a customer — an invoice, a wholesale order, a replacement shipment. They follow a different path from the storefront cart, so the inventory check you rely on at checkout isn't the same one. A draft created for more units than you have available can be completed and push the variant negative — useful for wholesale, surprising the first time it happens on a retail SKU.
The operating rules that keep it from becoming overselling:
- Reserve stock deliberately for known wholesale demand — hold units aside, or use a location that doesn't fulfill online orders — rather than letting the same pool serve both.
- Before completing a draft above, say, 20 units of one variant, check the available number for that location.
- Reconcile after any batch of draft orders. An invoice spree is a common source of a count that drifts for weeks.
Cause 5: the cart window and bundle apps
Adding to cart doesn't reserve stock. Reservation happens at order placement, when units move to committed. Two shoppers can hold the last unit, and the second one oversells it. Reserving carts would strand stock on abandoned carts, so the exposure can't be eliminated — only shrunk, by watching fast movers as they drop under a handful of units.
Bundle and kit listings. A bundle app that tracks only its own counter will think you have 30 gift sets when you have 11 candles — the oversell is an order you can't build, and the components oversell elsewhere too. Use apps that decrement real component quantities, or set bundle availability to the number of complete sets you can build and re-derive it after every count.
Prevention checklist
Once, then quarterly:
- Every variant has quantity tracking on (audit via products CSV or bulk edit)
- Continue selling when out of stock is on only where a documented backorder policy exists
- Each backorder variant has a cap on accepted negative quantity and dated ship-window copy on the page
- Location list matches reality; only locations that can actually ship fulfill online orders
- Marketplace and POS sync lag is known, and your fastest movers have a buffer sized for it
- POS staff know a low-stock warning means "check before selling," and counts are fixed same-day
- Bundle/kits derive availability from component stock
- Draft orders above a set unit threshold get an availability check before completion
- Counts run at close of business and are imported before opening
- Someone owns a weekly review of negative and near-zero quantities — a saved view in Inventory, sorted ascending, is enough
Negative quantities are worth reading as a category rather than an incident: a cluster on marketplace-synced SKUs is a sync problem, a cluster at one location is a count problem, and a steady trickle across untracked variants is a setup problem. Shopify's own inventory states are the vocabulary for the diagnosis — available, committed, on hand, incoming, unavailable — and knowing which number moved is usually the whole answer.
Recovering after an oversell
When it's already happened, contact the customer before pick-and-pack finds the problem, offer a substitute, a dated backorder, or an immediate refund, and adjust the inventory number with a reason attached. If the same SKU oversells repeatedly, the count isn't the problem — the replenishment rule is, and the trigger needs rebuilding on a measured lead time and corrected velocity.
Common questions
Why did Shopify let me oversell? Five usual causes: continue selling when out of stock enabled on that variant, quantity tracking off, sync lag between locations or channels, a draft order completed beyond available stock, or a bundle app tracking its own counter. Check the variant's settings first — it explains most cases in under a minute.
How do I stop overselling on Shopify? Audit the two per-variant settings (tracking, continue selling) with a products CSV, make location settings match how you actually fulfill, keep a buffer for marketplace sync lag, check draft orders above a unit threshold, and review negative quantities weekly. Settings cause the incidents; the weekly review catches the drift.
What does continue selling when out of stock actually do? It allows purchases past zero available inventory, with quantities going negative. It requires tracking to be on, has no store-wide switch, and doesn't apply to POS orders — where staff can always sell past zero after a warning. That combination is why an audit is the only reliable control.
Does draft orders oversell inventory? Yes. Draft orders sit outside the storefront checkout path, so a draft can be completed for more units than are available and push the variant negative. Useful for wholesale, risky for retail SKUs sharing the same stock pool — check availability before completing large drafts.
Does Shopify POS prevent overselling? Not strictly. POS lets staff sell items at or below zero after a warning they can dismiss. If they sell past zero, the web store's count is wrong and the next online order oversells. The fix is procedural: treat the warning as "check other locations," and recount that location the same day.
Next step
Open the products CSV and sort by tracking status and continue-selling. That single pass finds the majority of accidental overselling in most stores, and it takes less time than reading the rest of this article took.