Skip to content

Shopify B2B

Shopify draft orders: the limits and gotchas the docs bury

By Jahangir Alam · September 9, 2026 · 9 min read

A draft order is the order you build before it's paid - you set the lines, apply your own prices, send an invoice, and it becomes a real order once the money lands. That much is well documented. What isn't obvious is where the edges are.

Every fact in this guide comes from Shopify's own documentation. The problem is that it's spread across six pages, and the limit that catches you is rarely on the page you happened to open - the inventory behaviour is on one page, the line-item ceiling is buried in a B2B considerations list, and the fact that your scripts stop working is in the Scripts documentation, where nobody quoting a customer would think to look. This is those edges, collected, with the sources next to each one.

Draft orders don't hold stock unless you ask

This is the one that costs money. Creating a draft order does not reserve inventory by itself. Reserving is an explicit, optional step: you choose to reserve the products, and you set the date and time the reserve expires.

When you do reserve, those units move into Shopify's Committed state and other customers can't buy them. One prerequisite: inventory tracking has to be switched on for the product, or you can't reserve it at all.

The practical consequence for anyone selling by quote: a quote that sits open for two weeks holds nothing. If the buyer accepts on day thirteen and the last twelve units sold on day four, that's your problem to explain. Either reserve at the point the deal becomes real, keep the quote's validity short enough that the risk is small, or price the risk in. Deciding not to reserve is a legitimate choice - reserving stock for a deal that never closes has its own cost - but it should be a decision rather than a surprise.

A draft order becomes an order only when it's paid

There are three ways to get there, and they suit different situations:

  • Send the invoice. The customer gets an email with a secure checkout link, enters billing details, picks a shipping method, and pays. This is the default.
  • Process a card manually. For phone orders where you're taking the details yourself.
  • Mark it as paid. For money that already arrived some other way - a bank transfer against a purchase order being the common B2B case.

Until one of those happens it stays a draft, which is exactly why negotiated deals are built this way: a draft is editable in ways a real order isn't. Shopify also supports partial payments, which move an order to a Partially paid status - useful when a deposit lands first and the balance follows.

The line-item ceiling is 500, and 499 through the API

A draft order maxes out at 500 line items. Shopify's B2B considerations put it plainly: if you receive or create a draft order with more than 500 different products or variants, the draft order fails.

If you're building draft orders programmatically, the API limit is a different number. The draftOrderCreate and draftOrderUpdate mutations accepted 250 line items until API version 2025-07 raised the ceiling to 499.

For most stores this never comes up. For distributors quoting a full catalogue line-by-line, or anyone importing a large reorder sheet, it does - and it fails at creation rather than degrading gracefully, so it's worth knowing the number before you design around it.

Scripts don't run on a draft order

If your store uses Shopify Scripts, this is the surprise: line item scripts, shipping rate scripts, and payment scripts don't work with draft orders or the draft order checkout.

That matters because scripts are frequently where a store's wholesale logic lives - the tiered discount, the freight rule, the payment method restricted to approved accounts. Build the same order as a draft and none of it fires. Whatever the script was doing has to be done explicitly on the draft order instead: set the price on the line, add the shipping charge yourself, and don't assume a payment restriction is being enforced.

A non-store currency narrows how you can get paid

Draft orders can be written in a currency other than your store's. When they are, your collection options shrink: you can only take payment by credit card or by marking the order as paid.

So the invoice-with-a-checkout-link route - the one most merchants default to - isn't available on a cross-currency draft. If you quote internationally and expect buyers to pay from the invoice, check this before you promise it.

What changes when the draft order is B2B

B2B draft orders are a different animal, with rules of their own.

  • The company location must be set at creation. A B2B draft order needs a B2B customer linked to a company location at the time it's created to get that company's contracted rates. Miss it and the order takes D2C pricing - and the fix is not a later edit, it's creating it correctly.
  • Prices are locked by default, and the lock cuts both ways. Drafts submitted for approval have their prices locked. Worth understanding: a price lock prevents prices being raised, but it also prevents them being automatically lowered. If a better price becomes available between draft and payment, the locked price stands.
  • Price locks don't cover bundles. Include a product bundle in a draft order and its price can't be locked.
  • Deposits are Plus-only, and subtotal-only. You can require a percentage deposit on a draft order on the Shopify Plus plan. The percentage applies to the order subtotal only - it excludes taxes and shipping, which are paid later with the balance. A "50% deposit" is therefore not half the invoice total, and that's worth stating to the buyer before they see the number.
  • Some B2B drafts need manual capture. A B2B draft order has to be captured manually when it lacks a valid authorization and has no due-on-fulfillment payment terms configured.
  • Local delivery and pickup work here. Unlike standard B2B checkout, local delivery and pickup-in-store are supported as shipping options on B2B draft orders created in the admin - a rare case where the draft order route can do more than the normal one.

Drafts are deleted after a year of silence

Draft orders created on or after 1 April 2025 are automatically deleted after one year of inactivity, and any edit resets the timer.

A year is long enough that this rarely bites, but it does mean a draft order isn't an archive. If a draft is standing in for a record you need to keep - a quote you might revisit, an approval you may have to evidence - keep that record somewhere it isn't subject to housekeeping.

What this means if you sell by quote

Most of the above only matters because draft orders are where quoting ends up on Shopify. An agreed price isn't a Shopify concept; a draft order is the nearest thing, which is why quote apps convert into one.

Three of these edges change how you should quote:

  1. Reserve deliberately. An open quote holds no stock. Decide whether a given deal warrants a reserve, and tell the buyer which it is.
  2. State deposits as a share of subtotal. "50% up front" reads as half the total to a buyer looking at a total that includes tax and freight.
  3. Don't rely on scripts to price a quote. Whatever logic your storefront applies at checkout, the draft order won't apply it.

QuotWay converts an accepted quote into a native Shopify draft order with the negotiated prices carried over, re-checking tax and shipping at conversion so the order reflects current rules rather than the numbers from when the quote was drafted. The workflow side of that - partial acceptance, splitting one quote into several orders, invoicing on terms - is covered in the B2B draft order workflow guide, and the deposit mechanics in taking deposits on negotiated quotes. Conversion works on every plan, including the free Lite plan - see pricing for what each tier adds.

FAQ

Does a Shopify draft order reserve inventory?

Only if you tell it to. Reserving is optional on a draft order: you reserve the products explicitly, and you set the date and time the reserve expires. Reserved units move into Shopify's Committed state and can't be bought by other customers, and inventory tracking has to be switched on for the product before you can reserve it at all.

What is the difference between a draft order and an order?

A draft order is one you build in the admin before it's paid: you can edit lines, apply custom prices, reserve stock, and send an invoice. It becomes a regular order on your Orders page once it's paid - either the buyer pays through the checkout link, or you mark it as paid because payment already arrived another way. Until then it's editable in ways a real order is not.

Can I mark a draft order as paid, or invoice it for later?

Both. Mark it as paid when the money already reached you outside Shopify, and it converts to a regular order. Or send the invoice with its secure checkout link and let the buyer pay online. On a B2B-capable store, the buyer's payment terms carry onto the order rather than demanding payment up front.

How many line items can a Shopify draft order have?

  1. A draft order with more than 500 different products or variants fails. Through the Admin API, the draftOrderCreate and draftOrderUpdate mutations accept 499 line items as of API version 2025-07, up from 250 before that.

Do Shopify Scripts run on draft orders?

No. Line item scripts, shipping rate scripts, and payment scripts don't work with draft orders or the draft order checkout. Any pricing or shipping logic those scripts perform has to be applied to the draft order explicitly.

Do draft orders expire?

Shopify automatically deletes draft orders created on or after 1 April 2025 after one year of inactivity, and any edit resets the timer. That is separate from a quote's own expiry date, which governs the offer to the buyer rather than the draft order it becomes.

Sources

Every limit in this guide is verified against Shopify's official documentation:

Related articles

See how QuotWay handles this on your store.

We’d like to set analytics cookies to understand how the site is used. They’re not required — declining changes nothing about how the site works, and you can change your mind any time on our privacy page.