· 7 min read

B2B Wholesale Quote → Draft Order, Automated


Every wholesale order means 10+ manual emails and a Draft Order built by hand. Draft Orders work on every Shopify plan — here's the automation pattern.

The Problem

A wholesale buyer emails you: “200 units of SKU-14, 75 of SKU-22, need them before the 20th, here’s our tax ID.”

What happens next is the same every time. Your ops person emails back for the shipping address. The buyer asks about wholesale pricing. You build a Draft Order by hand inside Shopify — line by line, quantity by quantity. You email the buyer a link to pay. They ask you to amend one quantity. You rebuild the order. Another email, another rebuild.

For a store that does five wholesale orders a week, that is tens of manual emails and half a dozen hand-built Draft Orders — every single week. None of it needs a human in the loop, and none of it should require upgrading your plan.


The Misconception: “We Need Shopify Plus for B2B”

Shopify’s native B2B system — with wholesale price lists, company profiles, and tax-exempt customer accounts — is a Plus feature. At roughly $2,300/month, most SMBs are priced out, and they reasonably assume “B2B is a Plus thing.”

That assumption is wrong, and it’s expensive.

Draft Orders work on every Shopify plan. The Admin API’s draftOrderCreate mutation is not Plus-only. The gap for a standard-plan store isn’t the platform — it’s that the workflow is manual: someone collects the details over email, then rebuilds the same order by hand. The moment you automate the workflow, you get B2B quoting on a Basic or Shopify plan without paying for Plus.

This is the honest pitch: Draft Orders are free on your existing plan. The value is automating the 10+ emails and the hand-built Draft Order, not switching to Plus.


What the Manual Workflow Actually Costs

StepWho does itTime
Buyer emails quantities + tax IDOps person reads & replies5 min
Collect shipping addressEmail back & forth15–30 min
Apply wholesale pricing by handOps person looks up price list10 min
Build the Draft Order (line by line)Ops person in Shopify admin10–20 min
Email the secure payment linkOps person5 min
Amend quantities after buyer changes mindRebuild + re-email10–20 min

Per wholesale order: roughly 1 hour of manual work and 10+ emails. At five orders a week, that’s about 5 hours of ops time and 50+ emails — every week, just to move orders from a buyer’s email into Shopify.


The Pattern: Quote Intake → Draft Order on Submit

The fix is a self-serve wholesale intake form that builds the Draft Order for you.

Wholesale buyer opens a public quote form

Picks products, enters quantities, tax ID, notes

Form POSTs to your server

Your server creates a Draft Order via the Shopify Admin API

Shopify returns a Draft Order with a secure invoice URL

Send the invoice link to the buyer · log the order

Buyer pays → Draft Order completes → real Order created

The key API call is the GraphQL draftOrderCreate mutation, which requires the write_draft_orders access scope:

mutation draftOrderCreate($input: DraftOrderInput!) {
  draftOrderCreate(input: $input) {
    draftOrder {
      id
      orderUrl
    }
    userErrors {
      field
      message
    }
  }
}
{
  "input": {
    "note": "Wholesale order — 200 x SKU-14, 75 x SKU-22",
    "email": "buyer@example.com",
    "taxExempt": false,
    "lineItems": [
      { "variantId": "gid://shopify/ProductVariant/808950810", "quantity": 200 },
      { "variantId": "gid://shopify/ProductVariant/655441491", "quantity": 75 }
    ],
    "appliedDiscount": { "value": 25, "valueType": "PERCENTAGE", "title": "Wholesale" }
  }
}

(Note: the REST /draft_orders.json endpoint still exists, but the REST Admin API was deprecated as of October 2024 — new builds should target the GraphQL Admin API.)

The lifecycle, end to end

Once the Draft Order exists, the rest is three documented steps:

  1. draftOrderCreate — builds the order with customer, line items, and wholesale discount.
  2. draftOrderInvoiceSend — emails the buyer a secure checkout link. No manual email, no copy-paste of the URL.
  3. draftOrderComplete — when the buyer pays (or you confirm a payment outside Shopify), the Draft Order transitions into a real order.

Draft Orders were built for exactly this: sell at wholesale rates, invoice via a secure link, and take payment outside the checkout if that’s what your wholesale relationship calls for.


What About the Tax ID and Wholesale Pricing?

Two pieces of B2B detail that feel like blockers, and how the pattern handles them:

Tax ID / tax-exempt

Wholesale buyers are often tax-exempt. Your intake form captures the tax ID and notes, and you set taxExempt on the Draft Order input. You can also attach the tax ID as a line-item or order note so it lives on the order record — no more hunting through an email thread to find “who was this PO from.”

Wholesale pricing

Start with a fixed wholesale discount per product or a blanket percentage (the appliedDiscount on the mutation). The price list lives in your code, not in someone’s head or a stale spreadsheet — when a rate changes, you change it once and every future quote is correct.

If you grow into company-specific price lists, that’s a natural extension: a small company → discount table your server looks up before building the Draft Order. Same pattern, just more logic between the form and the API call.


The Cost Comparison

ApproachMonthly costWho builds the orderEmails per orderPer-order time
Manual (email + hand-build in admin)$0 (but ops hours)Your team, by hand10+~1 hour
Shopify Plus B2B~$2,300/moNative B2B systemFewer, still manual setupLess, but paywalls the feature
Custom quote → Draft Order automation~$20/mo (VPS hosting)Automated on submit1 (the invoice link)~15 seconds

The custom approach’s monthly cost is just hosting — the same infrastructure that handles your other Shopify webhooks. The one-time build cost is typically 8–12 hours of development, and it works on the plan you already pay for.


This Is Not Theoretical

This is the exact workflow behind the live automation demo — Shopify automation that replaces manual order handling. The Draft Order direction is the flagship use case of that build: a public quote intake that turns a buyer’s browser session into a real order without an ops person touching it.

None of this requires Shopify Plus. It requires a plan (any plan), the write_draft_orders scope on a custom app, and a small server that translates a form submission into the right API call.


Summary

ConcernManualAutomated
Emails per wholesale order10+1 (the invoice link)
Time per order~1 hour of ops time~15 seconds
Plan requiredAny (manual anyway)Any — no Plus needed
Wholesale pricingHand-looked-upApplied in the API call
Tax ID / notesLost in email threadsStored on the order
Scales past 10 orders/weekBreaksBuilt for it

If your team is still copying quantities out of a buyer’s email and rebuilding Draft Orders by hand, the fix is a days-long build — not a $2,300/month plan upgrade.


This article is part of the Shopify automation series. If you are running a wholesale line on a standard Shopify plan, book a 20-minute fit call — I will map your quote→order workflow and tell you exactly what automation replaces.