All articles
inventoryshopifytroubleshooting

Shopify Committed Inventory Explained: Available, On Hand, Unavailable, and Incoming

By MifycomSeptember 2, 20268 min read

You count 40 units on the shelf. Shopify says you have 34 available, 40 on hand, and 6 committed. Nothing is missing, nothing is broken, and the numbers are all correct — but if you don’t know what Shopify committed inventory means, you’ll spend twenty minutes hunting for six units that were never lost.

Shopify tracks a single product at a single location in five separate buckets, and only some of them are yours to edit. This guide explains what each state means, how a unit moves between them, and what to do when committed inventory refuses to clear.

The five inventory states

State What it means Can you edit it?
On hand Every unit physically at that location — sellable or not Yes
Available Units you can actually sell right now Yes
Committed Units promised to an order that hasn’t shipped yet No
Unavailable Units held back on purpose — damaged, in QC, reserved by an app Yes
Incoming Units on the way from a transfer or purchase order No (received, not typed)

The relationship between the first four is simple arithmetic:

On hand = Available + Committed + Unavailable

Incoming sits outside that equation. It isn’t at the location yet, so it isn’t on hand and it can’t be sold. When you receive the transfer, those units convert to available and the on-hand total rises.

This is why your storefront and your stockroom disagree. On hand answers “how many units are in this building?” Available answers “how many can I still sell?” Those are different questions, and committed is the gap between them.

What “committed” actually covers

Committed means a unit is spoken for. Shopify sets it aside so a second customer can’t buy the same physical item. Three things put stock into that bucket:

  • Unfulfilled and partially fulfilled orders. The most common source by far. Someone paid; you haven’t shipped.
  • Draft orders that reserve inventory. If you build quotes for wholesale buyers, the reserve option holds stock while the quote is open — useful on purpose, and worth understanding before you use it. (More on that in Shopify draft orders for wholesale.)
  • Transfers marked ready to ship. Stock allocated to move to another location.

You cannot type a number into the committed field. It’s derived — it goes up and down only as the orders, drafts, and transfers behind it change state. That’s the single most important thing to understand about it, and the source of most of the frustration below.

Following one unit through its lifecycle

Say a location holds 40 units, all sellable.

Event On hand Available Committed
Starting point 40 40 0
Customer orders 6 40 34 6
You pick and pack them 40 34 6
You fulfill the order 34 34 0
Customer returns 2, restocked 36 36 0

Two details matter here.

Picking and packing changes nothing. The units leave the shelf physically, but Shopify doesn’t move a number until you mark the order fulfilled. If your counts and Shopify disagree by roughly the size of your unshipped backlog, this is why.

On hand only drops at fulfillment. Not at checkout. Between the order and the shipment, the units are still yours — reserved, but present. That’s the correct behavior, and it’s what makes on hand the right number to reconcile against a physical count.

Why your committed number won’t go to zero

This is the complaint that fills the Shopify Community forums: committed inventory sitting on a product with no visible open orders. Because you can’t edit the field directly, the only fix is finding what’s still holding it. Work through this list in order.

1. Old unfulfilled orders. Filter your orders by Unfulfilled with no date limit. Test orders, abandoned-but-paid orders, and orders from two years ago all still hold stock. Fulfilling or cancelling them releases it.

2. Partially fulfilled orders. These don’t show up in a plain “unfulfilled” filter but still commit the remaining line items.

3. Orders with pending or failed payments. An order awaiting payment capture can still reserve stock. Check Payment status: Pending.

4. Draft orders with reserved inventory. Draft orders live in a separate list from real orders — easy to forget entirely. An old quote can hold stock indefinitely.

5. Returns opened against unfulfilled orders. Merchants report this combination getting stuck: a return created before the order shipped can leave units committed with nothing obvious to release.

6. Subscription and third-party app orders. Recurring-order apps often create upcoming orders that commit stock ahead of their charge date. The commitment is real even though the order isn’t visible in your normal workflow.

7. Transfers still marked ready to ship. Complete or cancel them.

If you have exhausted all seven and units are still committed, you’re likely looking at a genuine sync bug — and Shopify does not currently offer a manual “reset committed to zero” control, despite years of merchants asking for one. Contact Shopify Support with the product, location, and variant before trying anything drastic. The workaround merchants pass around — duplicating the product and deleting the original — does clear the phantom commitment, but it also breaks the product URL, drops reviews and metafields tied to the original, and severs the item’s sales history. Treat it as a last resort, not a first fix.

“Some items are no longer available” at checkout

Customers hit this message when the available quantity can’t cover what’s in their cart at the location that would fulfill it. Two causes account for most cases:

  • Committed stock you didn’t account for. On hand looks healthy; available doesn’t.
  • Multi-location splits. You have 12 units total, but 9 are at a location that doesn’t ship to that customer, or isn’t enabled for online orders. Check Settings → Locations and confirm which locations are actually selling.

The fix is almost never editing the number. It’s finding which state the stock is sitting in.

Where “unavailable” fits

Unavailable is the one people ignore, and it’s genuinely useful. It’s your bucket for units that exist but shouldn’t sell: damaged goods awaiting a decision, items in quality control, stock held for a photoshoot or a wholesale commitment.

Using it correctly means your on-hand number keeps matching a physical count while your available number stops promising customers things you can’t ship. Writing damaged stock straight off on-hand instead makes your counts reconcile — and then makes them wrong again the moment you find the box.

Some apps also write to unavailable to hold safety stock. If you see a number there you didn’t put there, check which apps have inventory permissions before you edit it.

What to check before a stocktake

Committed inventory is the reason counts “fail” when nothing is actually wrong. Before you count:

  • Fulfill or cancel everything outstanding, so committed is as close to zero as you can get it.
  • Count against on hand, never available. On hand is the number that describes physical reality.
  • Receive any incoming transfers that have actually arrived — otherwise you’ll count units the system doesn’t think are there yet.
  • Note your committed total before you start, so you can explain any variance afterward.

The full process is in how to do a stocktake on Shopify.

Frequently asked questions

Can I set committed inventory to zero manually? No. Committed is calculated from open orders, reserved draft orders, and transfers. The only way to reduce it is to resolve whatever is holding the stock.

Does cancelling an order release committed stock? It should, immediately. If it doesn’t, check whether the order was partially fulfilled or had a return opened against it first — those are the two states that most often leave stock stranded.

Why did my available quantity go negative? You sold more than you had. This happens when overselling is allowed on a variant, when two channels sell the last unit simultaneously, or when on hand was overstated. Negative available is a signal to count, not a number to simply overwrite. If it’s a recurring pattern, the fix is upstream — see how to prevent stockouts on Shopify.

Should I edit available or on hand? Edit the one that matches what changed. Found five extra units in a box? Adjust on hand. Correcting a miscount of sellable stock? Adjust available. Shopify keeps the equation balanced either way, but which field you touch tells the next person what actually happened.

Does incoming inventory affect what customers can buy? No. Incoming is informational until you receive it. It’s useful for planning reorders, not for selling.

The takeaway

Available, on hand, committed, unavailable, and incoming aren’t five ways of saying the same thing — they’re five different questions about the same stock. On hand is physical reality. Available is what you can still promise. Committed is the difference, and it’s derived rather than editable, which is why chasing it with the quantity field never works.

When the numbers look wrong, don’t start by changing them. Start by asking which bucket the units are in, and what’s holding them there.

Have a question about any of our Shopify apps?

Get in touch