Quoting on Shopify B2B.
Shopify ships no request-a-quote feature. Draft orders are the closest native tool, in two flavors. This chapter maps exactly where they stop and what a complete quote workflow requires.
Shopify B2B has no native buyer-facing quoting feature: neither the Help Center B2B manual nor the shopify.dev B2B docs list request-a-quote in the feature set. The nearest native tools are draft orders, used either as merchant-built manual quotes or through the per-location checkout-to-draft setting where buyers submit orders for review. Draft orders carry only three statuses, no documented revision history, no price expiry, and a 499 line item cap, so a full request, negotiate, version, expire, convert quote workflow requires an app.
Shopify B2B covers companies and contacts, catalogs and price lists, payment terms, and a company-aware checkout. It does not cover quoting. This chapter documents the two draft-order paths Shopify does provide, their exact documented limits, and the parts of a real quote workflow that have no native equivalent.
Does Shopify B2B have a built-in quoting feature?
No. The Shopify Help Center's B2B feature overview lists companies, catalogs and pricing, payment terms, draft orders, themes, analytics, Flow, and APIs. The word quote does not appear as a feature. The shopify.dev B2B build docs list the same set: companies, catalogs, draft orders for approval and invoicing, and order import. There is no storefront request-a-quote capability in either source. Shopify's own App Store confirms the gap: it maintains a dedicated Pricing quotes category with 162 apps whose description reads, in Shopify's words, "Invite customers to request a quote. Once you agree on a price, convert it into an order instantly."
| Quote capability | Status in Shopify B2B | How |
|---|---|---|
| Merchant builds an order with negotiated line prices | NATIVE | Draft orders with custom line prices |
| Buyer submits a cart for review instead of paying | NATIVE | Checkout to draft, per company location |
| Buyer requests a quote from the storefront without checking out | NOT NATIVE | No documented feature |
| Quote revision history or versioning | NOT NATIVE | Three statuses, single mutable record |
| Quote expiry date on the price | NOT NATIVE | No expiry field in the draft order schema |
| Buyer-side quote object with accept and convert | NOT NATIVE | Buyers can pay a sent invoice or use Pay now in customer accounts; no documented accept, revise, or counter flow |
What is a draft order in Shopify?
A draft order is an order a merchant builds in the admin or through the API before any payment exists. It is Shopify's stated tool for B2B orders that need sign-off: the dev docs open with "Merchants often need to create draft orders for company approval when selling business-to-business (B2B)." Used as a manual quote, the flow runs in four steps: calculate the draft (draftOrderCalculate), create it against a purchasing entity, send it as an invoice (draftOrderInvoiceSend), then complete it (draftOrderComplete), which creates the corresponding order.
A B2B draft order is created against a purchasing entity: the combination of company, company contact, and company location. Once that entity is assigned, the prices, payment terms, and checkout options on the draft automatically reflect the settings for that company. Negotiation is supported at the line level: merchants can set a custom price on any line item when quoting a negotiated price that differs from the company's catalog pricing.
mutation CreateB2BQuoteDraft($input: DraftOrderInput!) {
draftOrderCreate(input: $input) {
draftOrder { id status invoiceUrl }
userErrors { field message }
}
}
# input includes purchasingEntity.purchasingCompany:
# companyId, companyLocationId, companyContactIdPayment collection on a B2B draft order takes one of three shapes: collect immediately (credit card, mark as paid, or charge a vaulted card), send an invoice as a secure checkout link, or set payment terms with a due date. Deposits, a percentage of the order subtotal excluding taxes and shipping, are Shopify Plus only. Drafts also carry a PO number, notes, metafields, and an inventory reservation via reserveInventoryUntil.
The status model is the important constraint for quoting. A draft order has exactly three statuses: OPEN (not paid, no invoice sent), INVOICE_SENT, and COMPLETED (paid). That is the entire lifecycle Shopify exposes.
What is checkout to draft?
Checkout to draft is the buyer-initiated variant. Per company location, merchants can require that customers submit their orders as drafts for review. The buyer builds a cart, goes to checkout, and sees a Submit for approval button plus a banner explaining that payment is due when the order is confirmed. No payment is collected at checkout.
Configuration lives at Customers, then Companies, then the company location's Checkout section: "Submit all orders as drafts for review." It can be set per location, per company across all locations, or in bulk across companies. Through the API, the same switch is BuyerExperienceConfiguration.checkoutToDraft, set via companyLocationUpdate, and Shopify Flow ships an "Update checkout to draft for company location" action for automating it, for example on the Company Location Created trigger.
Submitted drafts land in the Drafts page of the admin with prices locked by default. The lock covers every existing product on the draft and any product added afterward; product bundles do not support price locks. The order is not complete until the merchant clicks Create order or the customer pays a sent invoice. After approval, buyers can pay through a vaulted credit card charged from the admin, an invoice, or Pay now in customer accounts. Manual payment methods such as cash or check do not display at the initial checkout but become available after the merchant approves the draft and sends a new invoice.
Two developer hooks round this out. A Shopify Function on the Payment Customization API can add the review requirement conditionally through the orderReviewAdd operation: Shopify's own tutorial routes B2B carts of $5,000 or more into a draft for review while smaller carts complete normally, with D2C checkouts unaffected. And checkout UI extensions can detect the mode with useCheckoutSettings().orderSubmission === 'DRAFT_ORDER', so an app can set review-turnaround expectations on the page. Since June 2024, automatic Discount Functions also apply to B2B checkouts submitted as drafts for review.
Which Shopify plans include draft orders and checkout to draft?
Both paths are broadly available. Per Shopify's B2B features-by-plan page:
| Capability | Availability |
|---|---|
| Draft order to invoice | All plans (Basic, Grow, Advanced, Plus) |
| Checkout to draft | All plans |
| Net payment terms, vaulted credit cards, PO numbers, easy reorders | All plans |
| Deposits on companies and draft orders | Plus only |
| Partial payments, payment requests per fulfillment | Plus only |
| Catalogs assigned directly to a company or company location | Plus only |
| Unlimited B2B market catalogs | Plus only (3 active catalogs on lower plans) |
Plan availability is not the constraint. The constraint is what the draft order object can and cannot represent.
What are the exact limits of draft orders as quotes?
- No buyer-initiated request. Checkout to draft is not a quote request: the buyer must build a cart and go through checkout to submit it, at catalog prices. There is no way to ask for pricing without committing a full checkout pass.
- All-or-nothing per location. Once "Submit all orders as drafts for review" is on, every order from that company location submits as a draft, unless you build a Payment Customization Function with
orderReviewAddfor conditional rules. - No versioning. The status enum holds exactly three values (open, invoice sent, completed), and Shopify's documentation does not describe any revision history for draft orders. Each edit overwrites the record.
- No expiry. The draft order schema has no price-expiry field. The only time-bound field is
reserveInventoryUntil, which releases reserved inventory; it does not expire the quoted price. - One-year purge. Draft orders created on or after April 1, 2025 are automatically purged after one year of inactivity. A long-cycle quote can simply disappear.
- 499 line items maximum. Raised from 250 in API version 2025-07. Large assortment quotes hit this ceiling.
- No subscriptions. Draft orders do not support subscriptions, and Shopify B2B as a whole does not support purchase options such as subscriptions or pre-orders. See Subscriptions and B2B.
- Bundles break the price lock. Product bundles do not support draft order price locks, so a reviewed draft containing a bundle is not fully price-protected.
- Shipping and address gaps. If no shipping method is preselected on the draft, the customer can pick from available rates but cannot select local delivery or pickup in store. One-time shipping addresses on B2B flows are per-order and not stored for future use.
- No abandonment recovery. Abandoned checkouts are off by default for Shopify B2B, are Plus-only, and activation requires the store owner to contact Plus Support. A cart a buyer meant to submit for review is not recoverable the way a D2C abandoned cart is.
The full native constraint list across all of B2B lives in the Constraints Ledger.
What does a real quote workflow require?
A complete B2B quote workflow has five stages. Mapped against what Shopify documents natively:
| Stage | What it means | Native coverage |
|---|---|---|
| Request | Buyer initiates a quote from the storefront without committing to checkout | NOT NATIVE |
| Negotiate | Line prices, quantities, and terms go back and forth | Partial: merchant edits the draft with custom line prices; the buyer side happens off-platform |
| Version | Each revision preserved, with history | NOT NATIVE |
| Expire | Quoted prices valid until a date | NOT NATIVE |
| Convert | Accepted quote becomes an order at quoted prices | NATIVE via draftOrderComplete or invoice payment |
Native Shopify covers conversion well and negotiation halfway. Request, versioning, and expiry have no equivalent at all, which is why the negotiation itself lives in email threads with the draft order as its endpoint rather than its record.
How do merchants add real quoting to Shopify?
With an app. The App Store's Pricing quotes category lists 162 apps, and the standard pattern is consistent: a request-a-quote form on the storefront, often paired with hidden prices, then merchant review and negotiation, then conversion of the accepted quote into a draft order or checkout-ready invoice. Draft orders remain the conversion mechanism underneath; the app supplies the request, the negotiation record, and the buyer-facing state that Shopify does not.
Where B2B Supercharge fits. The Buying Tools module treats quoting as a first-class workflow instead of a form bolted onto drafts: your team builds quotes line by line against margin floors, buyers see them in their own account, accept, and convert to orders, with no email threads and no re-keying. Quotes carry their own lifecycle from building through sent, accepted, and converted. The full breakdown of the native gap and the fix is at Shopify B2B quoting, fixed.
For the checkout mechanics that quoting hands off to, continue with B2B checkout and draft orders. For the pricing machinery quotes negotiate against, see catalogs, price lists and volume pricing.
Frequently asked questions
Does Shopify B2B have a built-in request-a-quote feature?
No. Shopify's documented B2B feature set (companies, catalogs, payment terms, draft orders, checkout to draft) contains no storefront quote-request capability. Quoting is done manually through draft orders or added with an app.
What is the closest native thing to a quote on Shopify?
A draft order. The merchant builds the order with custom negotiated line prices, sends it as an invoice with a secure checkout link, and the buyer pays or the merchant converts it to an order.
What is checkout to draft in Shopify B2B?
A per-company-location setting called Submit all orders as drafts for review. The buyer sees Submit for approval instead of paying; no payment is collected and the order lands in the admin Drafts page with prices locked until the merchant approves it or sends an invoice.
Can a Shopify draft order expire like a real quote?
No. Draft orders have no price-expiry field; the only time-bound field is reserveInventoryUntil, which releases reserved inventory. Draft orders created on or after April 1, 2025 are also purged after one year of inactivity.
Can buyers see quote revisions or negotiate inside Shopify?
No. A draft order is a single mutable record with three statuses (open, invoice sent, completed) and no documented revision history or buyer-side edit flow. Negotiation happens off-platform and the merchant edits the draft.
Can I require review only for some orders, like carts over $5,000?
Yes, with a Shopify Function. The Payment Customization API's orderReviewAdd operation adds a review requirement conditionally to B2B checkouts, so large carts submit as drafts while smaller ones check out normally.
How many line items can a quote-style draft order hold?
499 line items maximum on the GraphQL Admin API, raised from 250 in API version 2025-07. Draft orders do not support subscriptions.
How do most merchants add real quoting to Shopify?
With an app: the App Store's Pricing quotes category lists 162 of them, typically a request form plus conversion into a draft order. For B2B-grade quoting with buyer-visible accept and convert, see the quoting fix.
Sources · verified 2026-07-12
Quoting is the gap. Buying Tools closes it..
B2B Supercharge adds quotes your team builds against margin floors and your buyers accept in their own account. Read the fix or book a demo.