Shopify Draft Orders: Tackling Inventory Reservation & Packing Slips for B2B & Wholesale

Hey everyone! It's your friendly Shopify migration expert here, and today I want to dive into a really important discussion that recently popped up in the Shopify Community forums. It's about something many of you running B2B, wholesale, or even local delivery operations wrestle with: Draft Orders, inventory reservation, and those elusive packing slips.

The original thread, titled "Draft Order Inventory Reservation — Unacceptable Gap for Wholesale/B2B Workflows" by KanefireX, really hit a nerve. It sparked a great back-and-forth about how Shopify handles inventory when you're creating draft orders and sending out invoices, especially for net terms or when you need to prepare an order before payment is finalized.

The Core Challenge: Inventory Reservation for B2B Draft Orders

KanefireX eloquently laid out a critical pain point: the feeling that sending a draft order invoice doesn't reliably or fully reserve inventory. They argued that the "Reserve items" feature, while present, doesn't actually prevent storefront purchases. Instead, it only impacts the "Committed" count, leaving merchants vulnerable to overselling during that payment window.

This is a big deal for anyone operating with net terms or delivering goods before final payment. You want to make sure that stock is locked down as soon as that invoice goes out, preventing a retail customer from snatching it up. It feels like a fundamental B2B requirement, and KanefireX rightly pointed out that in many dedicated B2B order management systems, this is baseline behavior.

What About "Unavailable" Inventory? A Closer Look at Shopify's Docs

Now, this is where the discussion got interesting. Another community member, tim_1, brought up Shopify's own documentation, which seems to contradict KanefireX's experience. The docs state:

Inventory state Definition
Available Available inventory refers to inventory that you can sell. Available inventory isn’t committed to any orders or reserved for any draft orders. It also doesn’t include inventory that’s considered Incoming.
Committed Committed inventory refers to the number of units that are part of an order but not yet fulfilled. When units are part of a draft order, they can’t be purchased by customers and won’t count as Committed inventory until the draft becomes an order.
Unavailable Unavailable inventory refers to the number of units reserved for draft orders, set aside by apps, or other inventory hold reasons, such as damaged, quality control, or safety stock. Unavailable inventory is stocked at your location but it’s not available to sell.

The key line here is: "Unavailable inventory refers to the number of units reserved for draft orders... it’s not available to sell." This suggests that if you properly "reserve" items on a draft order, they shouldn't be purchasable by other customers. So, why the different experience for KanefireX? This is a great example of where real-world application can sometimes feel different from documented theory. It might be a timing issue, a specific workflow step being missed, or perhaps a nuance in how "Committed" vs. "Unavailable" inventory is actually handled by the storefront.

Converting Draft Orders to "Payment Pending" for Better Inventory Control

One of the most actionable takeaways from the discussion, championed by tim_1, is the idea of converting your draft order to a "Payment pending" order. This is a crucial step if you want to move beyond just a draft and into a state where inventory is more firmly committed.

Here's how to do it manually, which KanefireX confirmed worked, albeit as an extra step:

  1. Create your Draft Order: Add all the items, customer details, and shipping information as usual.
  2. Ensure "Reserve items" is checked: Before proceeding, double-check that the "Reserve items" checkbox is indeed selected for the draft order.
  3. Mark as "Payment pending": Instead of just sending an invoice, look for the option to mark the order as "Payment pending." This effectively converts the draft into a full order, moving that inventory into the "Committed" state more robustly.

tim_1 even shared a screenshot of this option:

This "Payment pending" state is key because, as the docs indicate, inventory isn't truly "Committed" until the draft becomes an order. This method pushes it into that order state, even if payment hasn't been received yet.

Automating with Shopify Flow: Your B2B Workflow Power-Up

Manual steps are fine for a few orders, but for high-volume B2B, automation is king. This is where Shopify Flow comes into play, and tim_1 correctly highlighted its potential.

Shopify Flow is a free app that lets you build automated workflows. You can use it to:

  1. Automate Inventory Reservation: Set up a flow that triggers whenever a "Draft order created" event occurs. The action could then be to ensure the draft order has its inventory reserved, or even better, immediately update the draft order status to "Payment pending" to secure that inventory.
  2. Create Custom "Packing Slip" Notifications: Since official packing slips aren't available for draft orders, and KanefireX wanted a packing slip without pricing, Flow can help. You could set up a flow to trigger on "Draft order created" (or when it becomes "Payment pending") and then send an internal email to your store staff. This email can be customized to include only the product names, quantities, and shipping info – essentially a packing slip without the sensitive pricing details. Your staff can then print this out.

While it requires a bit of setup, Flow can significantly streamline these workflows and reduce manual errors, giving you more control over your B2B operations.

The Packing Slip Conundrum for B2B

The packing slip issue is another common pain point. KanefireX mentioned having to print the order page and manually block off pricing information – a clear sign of a workflow gap. As tim_1 noted, official packing slips aren't typically available for draft orders because they're not yet "full" orders ready for fulfillment.

The Shopify Flow workaround for a custom email (as mentioned above) is currently the best bet. It's not a native packing slip, but it achieves the goal of providing fulfillment staff with the necessary, price-free information.

Wrapping It Up: Adapting Shopify for B2B

This community discussion really highlights the ongoing tension between Shopify's core direct-to-consumer (DTC) focus and the evolving needs of B2B and wholesale merchants. While features like "Reserve items" and "Payment pending" exist, the intuitive flow for B2B isn't always as seamless as it could be.

KanefireX's argument for platform-level fixes is absolutely valid. Many B2B merchants shouldn't have to rely on third-party apps or complex Flow setups for what feels like fundamental order management. However, in the meantime, understanding how to leverage tools like Shopify Flow and the "Payment pending" status can bridge those gaps and help you maintain control over your inventory and fulfillment processes. It's all about digging into the available tools and adapting them to fit your unique business needs, while also keeping that community feedback loud and clear for Shopify to consider future improvements.

Share:

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools