All segments

B2B Ecommerce Strategy: A Practical Shopify Setup

A b2b ecommerce strategy for a DTC brand adding wholesale: channel conflict, price lists, payment terms, order minimums, onboarding and inventory.

  • Published
  • Reading time 14 min read
  • Author Nafiul Hasan
B2B Ecommerce Strategy: A Practical Shopify Setup. Diagram: one source, four destinations. RUN B2B Ecommerce Strategy: APractical Shopify Setup STALE pointerflow.com

Short answer

A b2b ecommerce strategy for a DTC brand adding wholesale sequences six decisions before launch: a channel-conflict policy, price lists with quantity rules, payment terms per account, order minimums, an onboarding workflow, and inventory allocation. Skip the inventory step and a large wholesale reorder can zero out direct-to-consumer stock, because both channels draw from the same on-hand count unless you separate them.

Adding wholesale to a direct-to-consumer store is not a checkout problem. It is an inventory, pricing and collections problem wearing a checkout’s clothes, and most of what goes wrong in the first ninety days traces back to one of those three, not to Shopify’s B2B settings themselves. A workable b2b ecommerce strategy sequences six decisions in a specific order, and the order matters more than any individual setting: get inventory allocation right after self-serve ordering is already live, and you’re fixing a stockout instead of preventing one.

A DTC brand scaling past its early-stage tooling at $3M–$30M in revenue on Shopify Plus or a comparable subscription platform is the intended reader here, adding a wholesale or B2B channel to an existing consumer store rather than launching a wholesale-only business from scratch. A wholesale-first operation with no existing DTC catalogue or fulfilment should skip the channel-conflict material entirely and start with the price list and onboarding sections instead. For the broader case that B2B ecommerce is worth building at all, see the state of B2B ecommerce adoption.

What Do You Need Before You Add a B2B Ecommerce Strategy to a DTC Store?

You need three things settled before you touch Shopify’s B2B settings: a channel-conflict policy in writing, a person who owns wholesale accounts receivable, and a decision about which warehouse location fulfils wholesale orders. None of these are Shopify configuration. All three become expensive to reverse once accounts are live, because a price list a buyer has already ordered against, an invoice already issued on the wrong terms, or a location already receiving inventory are each harder to unwind than to plan correctly the first time.

Shopify B2B — company accounts, price lists, quantity rules and net payment terms — now ships on every paid Shopify plan, not only Plus. Plus removes the standard-plan cap of three active price lists and adds direct catalogue-to-location assignment, which matters once you’re running more than a handful of wholesale tiers. If your DTC store is still on a lower Shopify plan, check the current price list cap on Shopify’s own B2B documentation before you design a tiering structure around it — plan limits change and are worth confirming at the point you build, not from memory.

You also need an answer to a question most teams skip: does a wholesale buyer who finds your DTC site see the same products at a lower price, or a different, wholesale-exclusive catalogue? The answer shapes every decision that follows, including how many SKUs you need to duplicate and whether you need a separate product tag structure before you build a single price list.

How Do You Decide a Channel-Conflict Policy Before You Build Anything?

You decide it by writing three rules down before creating a price list: which SKUs wholesale can sell, the floor price below which no wholesale discount goes, and whether wholesale buyers may resell on their own ecommerce sites or third-party marketplaces. A channel-conflict policy that exists only in someone’s head gets renegotiated account by account, and by the third negotiated exception you no longer have a policy — you have a set of individual deals a rep has to remember.

The floor-price rule is the one that protects your DTC pricing. If a wholesale account can undercut your own storefront once they resell, your highest-margin channel is competing against your lowest-margin one, and you lose that fight every time, because the wholesale account has none of your marketing spend to recover. A minimum advertised price (MAP) policy, stated in the wholesale terms every account signs before their first order, is the mechanism — not a Shopify setting, a contractual one, enforced by monitoring and account suspension rather than software.

The SKU question resolves into a Shopify setting: a Catalog scoped to a Company Location shows that account only the products and prices assigned to it. A brand selling its full consumer range to a strategic wholesale partner and only a curated subset to smaller accounts builds two catalogues, not two stores — the catalogue is the access-control layer, and it sits on top of the same underlying product data either way.

Decide, too, whether wholesale-exclusive SKUs exist at all. A separate wholesale-only product line avoids direct price comparison entirely, at the cost of doubling your merchandising and photography work. Most $3M–$30M brands don’t have the catalogue depth to justify it and instead run one product range at two price points, controlled by catalogue assignment rather than by SKU duplication.

How Do You Set Up Wholesale Price Lists and Quantity Rules?

You set them up with a Price List — an adjustment type of either a percentage decrease from your Retail prices or a set of fixed prices per variant — paired with Quantity rules that set a Minimum, Maximum and Increment per product or variant. A percentage adjustment is faster to maintain, because it moves automatically when you change a retail price; fixed prices give you exact control but need updating every time the underlying retail price does, which is real ongoing labour on a catalogue that changes often.

Quantity rules are where most of the actual B2B logic lives, not in the price itself. A Minimum of 6 with an Increment of 6 means a wholesale buyer can order 6, 12 or 18 units of a variant but not 7 — useful when a product ships in fixed case packs and a non-multiple order creates a fulfilment problem your warehouse has to solve manually. Set the increment to match your actual case pack size, not a round number that looks tidy in the admin; a mismatch here is invisible until the warehouse opens a box short.

Run more than one price list when you have more than one wholesale tier — a standard tier at a smaller discount with a low minimum, and a strategic-partner tier at a deeper discount with volume commitments attached. This is where the Plus-only three-price-list cap on lower plans becomes a real constraint rather than a theoretical one: a brand running four genuinely different wholesale relationships on a standard Shopify plan has to either consolidate two of them or upgrade.

How Do You Set Payment Terms for Wholesale Accounts?

You set them on each Company Location’s payment terms field — Net 30, Net 60, a deposit percentage, or card-on-file — and then you build the collections process Shopify doesn’t build for you. This is the step that surprises DTC teams the most: Shopify B2B lets you assign net terms in a dropdown, but it doesn’t chase the invoice, flag it as overdue, or stop a delinquent account from placing another order. That’s a separate system, built on top.

A minimal version is a Shopify Flow triggered on invoice due date that emails the account and flags the order internally when payment is late by a set number of days, with a second trigger that suspends new orders on that Company past a longer threshold. A more complete version connects an accounts-receivable tool — QuickBooks, NetSuite, or a dedicated AR platform — that reconciles payment against invoice and automates the dunning sequence. Either way, the payment-terms dropdown is the easy five minutes; the collections workflow behind it is the actual project, and it needs an owner before the first Net 30 invoice goes out, not after the first one goes unpaid.

Net terms are optional per company, not a programme-wide default. A merchant can run card-at-checkout for smaller or newer accounts and net terms only for accounts with a demonstrated payment history — which is also the natural credit-risk control: extend terms only to accounts that have paid on card for their first several orders.

How Do You Set Order Minimums Without Losing Small Accounts?

You set a cart-level order minimum alongside a lower-tier price list, so a minimum that makes sense for your primary wholesale relationship doesn’t disqualify every smaller boutique account from the programme entirely. A single flat order minimum across every wholesale account optimises for your largest buyers at the direct cost of every buyer below that threshold — some of whom would have been profitable customers at a smaller order size and a slightly thinner margin.

The order minimum itself is a — metric to confirm for your specific catalogue; it depends on your per-unit wholesale margin, your fulfilment cost per order, and the order size at which a wholesale order stops being worth the warehouse labour to pick and pack. Work it out by taking your actual fulfilment cost per outbound order — pick, pack and any wholesale-specific packaging — and finding the order value at which your wholesale margin covers it with the profit left over that justifies running the account at all. An order minimum set below that number loses money on every order that hits exactly the minimum.

Quantity-rule minimums (case-pack multiples) and cart-value minimums (a dollar floor per order) solve different problems and most B2B programmes need both — the first protects your fulfilment process, the second protects your unit economics on the account relationship as a whole.

How Do You Build an Account Onboarding Process That Doesn’t Stall Sales?

You build it as a private application, not a public signup form: a form collecting business details and a resale certificate or EIN, a review step where someone checks the applicant is a legitimate business buyer rather than a consumer trying to access wholesale pricing, and only then a Company created in Shopify admin with its Location, price list and payment terms assigned before the invite goes out. Shopify doesn’t validate resale status for you — that check is a manual or third-party-verified step in your process, not a setting.

The onboarding decision most teams get wrong here isn’t the verification step — it’s the credit check threshold. An account requesting Net 30 terms above a set order value should clear some form of credit check before the first invoice goes out; an account below that value is a smaller enough risk that the delay usually costs more in lost goodwill than it saves in bad debt. Set the threshold explicitly rather than credit-checking every account or none — both extremes have a real cost, one in fraud exposure and the other in onboarding friction that pushes legitimate buyers to a competitor with a faster yes.

Once a Company is approved, Shopify’s “Send invite” on the Company profile gets the main contact into their account with access scoped to their assigned price list and catalogue. A second contact on the same Company — a buyer and a separate accounts-payable contact, for instance — can be added to the same Company record rather than creating a duplicate account, which keeps order history and payment terms attached to one entity instead of splitting them across two.

Should Wholesale Orders Go Through a Sales Rep or Self-Serve?

New and high-value accounts should go through a rep who builds the order as a draft order on the Company’s behalf; proven, repeat accounts with a stable order pattern are the ones to move to self-serve login. Draft orders let a rep apply the account’s price list and terms manually while building relationship trust in the first several orders — useful when a new account still has questions about product fit, case packs, or delivery timing that a self-serve cart can’t answer.

The mistake in the other direction is keeping every account rep-assisted indefinitely once they’re established, which caps how many wholesale accounts one rep can service and turns growth in the channel into a hiring problem rather than a software one. A Company’s ordering permission — whether its contacts can place orders directly or only request a quote a rep converts — is set per Company, so the transition from rep-assisted to self-serve is a permission change, not a re-onboarding.

A practical threshold: move an account to self-serve once it has placed three to five clean orders — paid on time, no product-fit disputes — and keep new accounts and anything above your largest standard order size on rep-assisted regardless of tenure, because the cost of a rep’s time on a large order is small relative to the risk of an unreviewed six-figure order going out wrong.

How Do You Allocate Inventory Between DTC and Wholesale?

You allocate it by deciding, before self-serve wholesale ordering goes live, whether wholesale draws from the same inventory location as your online store or from a separate reserved location. By default, Shopify decrements on-hand inventory from whichever location an order is fulfilled from — DTC and wholesale orders against the same location draw from the same count, with no built-in separation between them. A brand running both channels through one warehouse location is running both channels against one shared number, whether that was the intent or not.

The allocation choice is a real operational decision, not a technical afterthought: does a wholesale account’s reorder have a claim on stock ahead of a DTC promotion that hasn’t started shipping yet, or behind it? Most brands want the answer to depend on which order was committed to first, not on which system happened to decrement the count first — and that’s precisely what a shared, undifferentiated inventory pool can’t give you.

What’s the Step Most Teams Get Wrong?

The step most teams get wrong is opening self-serve wholesale ordering against the same inventory location as the DTC storefront, with no reservation buffer between them. A wholesale account placing a routine reorder decrements the exact same on-hand count your DTC storefront reads for available-to-sell inventory — there’s no channel-aware split in Shopify’s default inventory model. A single large wholesale order, placed the same week as a DTC promotion you’ve already spent marketing budget driving traffic to, can zero out storefront availability with no warning to anyone running the promotion.

The fix is a separate wholesale reserve location: a Shopify location that exists purely as a stock-holding pool for wholesale fulfilment, stocked with a portion of inventory transferred from your primary location on a schedule that matches your wholesale demand. Wholesale orders fulfil from the reserve location; DTC orders fulfil from the primary location; the two counts move independently, and a wholesale reorder can’t touch what your storefront shows as available. The trade-off is real: inventory sitting in the reserve location isn’t available to either channel until you explicitly move it, so the buffer has to be sized against your actual wholesale order cadence, not set once and forgotten.

Where a fully separate location is more infrastructure than a $3M–$30M brand wants to run, a Shopify Flow-based buffer is the lighter version: a Flow that holds back a set percentage of on-hand inventory from being sold on the online store sales channel once stock drops below a threshold, effectively reserving the last portion for wholesale fulfilment without a second physical location. It’s a rougher control than a true reserve location, but it closes the same gap, and it’s the version worth building first if a full second location is more than the current order volume justifies.

Build this before self-serve wholesale ordering goes live, not after the first stockout. Once wholesale accounts are placing unsupervised orders against your shared inventory, retrofitting a reservation buffer means doing it while accounts are actively ordering — a materially harder rollout than doing it against zero live wholesale orders.

How Do You Verify the Setup Actually Works?

You verify it by placing one complete test order through every account tier before you invite real wholesale buyers: log in as a test Company contact, confirm the correct price list and catalogue appear, place an order against a quantity rule to confirm the minimum and increment enforce correctly, confirm the invoice generates with the correct payment terms, and confirm the order decrements inventory from the location you intended — not the DTC storefront’s primary location, if you’ve built a reserve location or buffer.

Run the same test for both a rep-assisted draft order and, separately, a self-serve order if you’re launching with both paths, since draft orders and self-serve checkout apply price lists and quantity rules through slightly different flows in Shopify’s admin and it’s worth confirming both produce the same result before a real account hits an edge case you haven’t tested.

Adding wholesale to a DTC store is ultimately an operations build, not a storefront feature — the checkout experience is the smallest part of it. Getting the sequence right — policy before price lists, price lists before payment terms, and inventory allocation before self-serve ordering goes live — is what separates a wholesale channel that adds revenue from one that quietly cannibalises the storefront it sits next to. That sequencing, the collections workflow behind the payment terms, and the inventory reservation logic are exactly the kind of recurring operational work worth automating rather than running by hand every week — which is the problem our ops automation work is built to solve.

Sources

No external figures are quoted; this article is written from how Shopify B2B — company accounts, price lists, quantity rules and inventory locations — is configured and operated, and from Shopify’s own B2B documentation on plan availability and catalogue assignment, which is worth checking directly for current plan limits.

Frequently asked

Does Shopify B2B require Shopify Plus to add a wholesale channel?

No. Company accounts, price lists, quantity rules and net terms ship on every paid Shopify plan. Plus removes the standard-plan cap of three active price lists and adds direct catalogue-to-location assignment, which matters once you're running several distinct wholesale tiers.

Can a DTC customer be converted into a wholesale account?

Yes, but treat it as a new onboarding, not an upgrade. Verify the business details and resale status the same way you would for any new applicant, then create a Company and assign a price list — their existing consumer account and order history stay separate from the new Company record.

Do wholesale orders need their own sales tax handling?

Often, yes, because resale-certificate exemptions apply to wholesale orders in many US states but not to consumer orders. Confirm your tax settings and any exemption certificates with your accountant or tax platform before your first wholesale invoice goes out — this varies by state and is worth checking against current rules rather than assuming.

What happens if a wholesale invoice goes unpaid past its Net 30 term?

Nothing automatically inside Shopify. Without a collections workflow — a Flow-based reminder and suspension, or a connected AR tool — an overdue invoice sits unpaid with no system prompting anyone to chase it or block the account's next order.

Can wholesale buyers see DTC retail pricing on the same storefront?

Only if you let them. A Catalog scoped to a Company Location shows only the products and price list assigned to that account; a wholesale contact logged into their Company account sees their wholesale prices, not the public retail price, unless you've deliberately left both visible.

Should case-pack quantities be enforced with a hard quantity rule or a suggestion?

A hard rule, if your fulfilment process genuinely can't break a case. A Quantity rule with a Minimum and Increment matching your case pack prevents an order your warehouse would otherwise have to split manually, which is where most non-multiple orders turn into fulfilment delays.

Do I need a separate warehouse for wholesale, or is a Shopify location enough?

A separate physical warehouse is rarely necessary at $3M–$30M in revenue. A second Shopify location — used purely as a reserved stock pool within your existing warehouse — solves the inventory-separation problem without the cost of a second physical facility.

Can I stop a wholesale account from reselling my products on Amazon or another marketplace?

Only through your wholesale terms, not through Shopify settings. A channel and marketplace restriction has to be written into the agreement every account signs, with monitoring and account suspension as the enforcement mechanism — Shopify has no setting that blocks a buyer's resale channel.

How many wholesale price-list tiers is reasonable to start with?

Most $3M–$30M brands start with two: a standard wholesale tier at a moderate discount and a strategic-partner tier at a deeper discount tied to volume commitments. Add tiers only once an existing one no longer fits a real account, not speculatively.

Can existing retail POS use the same wholesale price lists?

Not directly through Shopify POS. A company buyer placing an order in person is typically handled by staff creating a draft order in Shopify admin against that Company, which applies the correct price list and terms — the same route used for phone and email wholesale orders.

What's a reasonable order minimum to start a wholesale programme with?

There's no universal figure — it depends on your per-unit wholesale margin and fulfilment cost per order, and is a — `metric to confirm` for your specific catalogue. Calculate it from your actual pick-and-pack cost per order against your wholesale margin, not from a competitor's published minimum.

Do returns work differently for wholesale accounts than for DTC?

Usually, yes. Wholesale returns are typically negotiated per account — a restocking fee, a defect-only policy, or no returns on discounted or clearance stock — rather than the consumer-facing return window your DTC storefront offers. Write the wholesale return policy into the account agreement, separate from your DTC returns page.

Can I limit a wholesale account to ordering only in certain states or territories?

Yes, as an account-level agreement enforced through your Company assignment and monitoring, not a Shopify checkout restriction. Territory exclusivity is a contract term you police through order review, since Shopify's B2B settings don't include a geographic ordering restriction by Company.

Next step

Is this your ops automation problem, or a symptom of another one?

Bring your numbers — the churn split, the decline rate, whatever your flows are earning — and we will tell you which of them is the expensive one.

Book a call →