You built a draft order for a buyer, and by the time they paid, the stock was gone. At checkout they saw an out-of-stock notice and couldn't complete the purchase. Or you went to hold the stock and "Reserve inventory" wasn't there. This guide explains how reserving works on Shopify draft orders, why it fails and how to set it up properly.
What it means
A draft order doesn't hold inventory by default. Until you reserve it, the units stay available and can sell to anyone. When you reserve inventory, Shopify puts those units in the Committed state, so other customers can't buy them.
- Committed: Units set aside that can't be sold, including units reserved in a draft order
- Available: Units you can sell
- Expiry: You choose the date and time the reservation ends
Common causes
Most problems trace back to one of these.
- Never reserved: The draft was saved or invoiced without reserving stock
- Tracking off: Shopify says inventory tracking must be on for a product before you can reserve it
- Reservation expired: When it expires, Shopify returns the stock to Available
- No stock left: If products have no available inventory, the customer sees an out-of-stock notice at checkout
Find affected drafts and products
Check the draft, then the product's inventory history.
- Draft: Go to Orders, then Drafts, and open the draft
- Product inventory: Check the Committed and Available counts for the variant
- Adjustment history: Look for "Reservation created" and "Reservation deleted" entries. Shopify logs reservation changes there
Fix it step by step
Turn on tracking, then reserve.
- Step 1: Open the product and turn on inventory tracking if it's off
- Step 2: Go to Orders, then Drafts, and open or create the draft
- Step 3: Add the products, click the horizontal menu icon and select Reserve inventory
- Step 4: Choose an expiry date and time that covers the buyer's approval window, then click Done
- Step 5: If a reservation already expired and stock ran out, add inventory and reserve again, or take payment in the admin
- Step 6: Send the invoice once the stock is held
Prevent it
Treat a quote as a promise only once the stock is held.
- ✅ Reserve stock on any quote that will take more than a day to approve
- ✅ Set expiry to match your quote's valid-until date
- ✅ Lock product pricing too, so prices don't change before payment
- ❌ Don't send an invoice for stock you haven't reserved
- ❌ Don't leave old drafts open. Shopify deletes drafts created on or after April 1, 2025 after one year of inactivity
See Shopify inventory states explained and Shopify draft orders explained.
Doing this at scale
QuoteWeaver reads a buyer's free-text quote request, matches each line to a real catalog SKU with a confidence score and prices it against your B2B list, including volume breaks and MOQ. It builds the Shopify draft order and a drafted reply, and flags low-confidence lines for you to check. See QuoteWeaver.