Key Insights in 60 Seconds
Wholesale pricing on Shopify is a stack of decisions: a model, a margin floor, a Shopify surface to enforce it, and a policy to protect retail. Skim the highlights, then jump to the section you need.
What You'll Learn
Decide Your Pricing Model Before You Touch Shopify
Key takeaway
Most merchants open the Shopify admin, look at the catalog screen, and ask “what number do I put here?” That's the wrong order. Wholesale pricing only works if you first decide how the price varies — by buyer, by quantity, by contract, by region — and then choose the model that matches. The model in turn dictates whether a B2B catalog, a quantity rule, a draft order, a Shopify Function or a third-party app does the work.
The decision below maps the three patterns we see most often. Most brands pick one as the default and use the others as exceptions for key accounts.
- 5–20 small wholesale accounts
- Same product range for everyone
- You want minimal admin overhead
- Use flat % off or keystone, gated by login
- Mixed buyer sizes (boutique + chain)
- You want to reward bigger orders
- Case-pack economics are real
- Native B2B volume pricing, Basic and up
- Few accounts, big revenue each
- Negotiated price lists and terms
- Distributors, private label, key accounts
- Direct company catalogs on Plus, or draft orders
Wholesale Pricing Models That Actually Work on Shopify
Key takeaway
The six models below aren't mutually exclusive. A typical B2B merchant runs flat % as the default catalog, layers tiered volume on the top 20 SKUs, and uses contract pricing for a handful of distributors. The point is to pick a primary so every other decision — MOQ, terms, gating — has a clear default.
The Margin Math: What a Wholesale Price Has to Cover
Key takeaway
A wholesale price is not a discount; it's a cost stack with a margin on top. The formula is short, but the inputs are easy to forget.
The chart below runs that formula on a $40 retail SKU with $14 COGS and $4 fulfilment allowance across the five most common discount levels. The pattern matters more than the numbers — net margin drops faster than the discount grows, because COGS, fulfilment and channel cost are fixed regardless of price.
Run the full formula on that 50%-off bar — $20 wholesale, $14 COGS, $4 fulfilment, 2.2% card and $1.50 channel — and the per-unit margin collapses to roughly $0.06 if the order ships in singles. The reason the bar still looks alive is amortization: spread that $5.50 fixed cost across a 12-unit case pack and the same SKU returns about $61 in order margin (~$5.10 per unit). That is the honest baseline behind “keystone wholesale” — it only works when MOQ does half the pricing work, which is why high-COGS categories rarely use it without a real case pack.
Tiered volume pricing changes the picture: per-unit margin still compresses with each tier, but order size grows fast enough to keep total margin healthy. The line chart below shows the same SKU on a five-tier ladder.
The calculator below runs the full formula on your own numbers. Adjust MSRP, COGS, fulfilment, MOQ, discount and payment terms, and watch how the effective order margin moves — the same arithmetic you would otherwise model in a spreadsheet before publishing a discount.
- Unit net margin (% of wholesale price)$8.85 (36.9%)
- Order net margin (12 units)$106.15
- Net 30 silent cost (% of wholesale price)−0.82%
Fulfilment and channel cost are entered per order and amortized across MOQ units — fold any per-transaction flat fees (e.g. Shopify Payments 30¢) into the channel cost field. Payment processing rate applies as a percentage of the wholesale price; on Shopify Payments B2B, blended rates land near 2.5–2.9%. Net-terms cost uses WACC × (days / 365) — adjust WACC to your actual borrowing or opportunity rate.
How Each Shopify Surface Enforces a Pricing Model
Key takeaway
Once you've chosen the model and the margin, you need the right Shopify surface to make the price stick at checkout. The table below maps each model to its native enforcement, the plans that include it, and the point where the plan boundary actually bites.
Pricing Model → Shopify Surface That Enforces It
| Model | Native Shopify surface | Plans that include it | Where the limit bites |
|---|---|---|---|
| Flat % off retail | B2B catalog price list (percentage off product/collection) | Basic, Grow, Advanced, Plus | Only if you need a 4th active catalog — then Plus, or a tag-gated wholesale app |
| Tiered volume | Volume pricing inside the B2B catalog (up to 10 price breaks per product) | Basic, Grow, Advanced, Plus | Breaks apply per product, not per cart — cross-SKU tiers need a wholesale app |
| Per-company contract | Catalog assigned directly to one company or company location | Plus only | Below Plus your 3 catalogs attach to B2B markets, not to a buyer you pick — single accounts need draft orders or a tag-gated price-list app |
| Case pack / MOQ | B2B quantity rules (min / max / increment) | Basic, Grow, Advanced, Plus | MOQ on the retail storefront still needs bundle apps or theme cart validators |
| Cost-plus | Fixed-price entries in a B2B catalog (not a percentage) | Basic, Grow, Advanced, Plus | Many buyer-specific price sets hit the 3-catalog cap — Plus or an app catalog |
| Negotiated quote | Draft orders with custom line items and net terms | Any (manual) | Same — draft orders are available on every plan |
B2B catalogs determine the products and pricing your B2B customers can access. You can include or exclude specific products and set prices for each customer to customize the buying experience. On the Basic, Grow, and Advanced plans, you can assign up to 3 active catalogs across all your B2B markets. The Shopify Plus plan offers an unlimited number of catalogs and direct assignment to companies and locations.
The rule of thumb: a B2B catalog with a price list handles 80% of wholesale pricing, quantity rules and volume pricing handle the cases that need order-size logic, and Shopify Functions only show up when a contract demands a calculation the catalog can't express (bracketed bundle discounts, conditional freebies, region-aware adjustments). Note the distribution rule there: any plan can install a public App Store app that contains functions, but only Shopify Plus stores can run a custom app containing Shopify Function APIs.
MOQ, Quantity Breaks & Case Packs: Pricing Is the Quantity
Key takeaway
Quantity rules are part of the price, not a separate setting. A 50% wholesale discount that ships in singles is a money-losing retail order with a wholesale label. B2B quantity rules let you enforce minimum, maximum and increment per product or variant inside the catalog, so the cart blocks orders that don't fit your case-pack math — on Basic, Grow and Advanced as well as on Plus.
Worked Example: How MOQ Reshapes Order Margin
$40 retail SKU · $14 COGS · $4 fulfilment/order · 2.2% card · $1.50 channel/order · 40% wholesale discount
| MOQ | Effective unit margin | Order margin | Verdict |
|---|---|---|---|
| 3 units | $7.64 | $22.92 | Fixed $5.50/order eats ~24% of the margin |
| 6 units | $8.56 | $51.33 | Marginal — only if reorder cadence is fast |
| 12 units (case pack) | $9.01 | $108.16 | Healthy — MOQ is doing as much pricing work as the discount |
The same dynamic, charted across two common discount levels, shows why MOQ matters more than the discount itself. At 50% off, the first few units barely clear the $5.50 fixed order cost; the curve only opens up once the case pack does the work.
Volume pricing lets you offer additional price breaks to customers when they purchase larger quantities of a product in a single order. You can add up to 10 price breaks per product which are applied to each variant.
Protecting Retail: MAP, MSRP and Gated Catalogs
Key takeaway
Publish a wholesale price and the retailer's instinct is to undercut. The defence is a stack of three controls — a written MAP policy, a published MSRP, and a gated catalog that keeps the wholesale number out of public search results. Each control answers a different question and lives in a different place; the table below makes the difference concrete.
Three Controls That Protect Retail Price
| Control | What it controls | Legal status (US) | Where it lives |
|---|---|---|---|
| MAP policy | Lowest advertised price; selling below is allowed | Unilateral policy — legal. Agreement with retailer — illegal price-fixing. | PDF policy doc + reseller agreement |
| MSRP | Suggested retail shelf price — signal, not enforcement | Always legal to suggest | Line sheet, spec sheet, product compare-at price |
| Gated catalog | Visibility of your wholesale number itself | N/A — it's a configuration, not a policy | Native B2B customer login (Basic and up) or customer-tag gating (apps) |
A manufacturer is allowed to deal, or refuse to deal, with whomever it likes. For example, so long as it acts on its own, a manufacturer can adopt a policy regarding a desired level of prices and announce it in advance and refuse to deal with those who fail to comply.
Payment Terms Change the Real Wholesale Price
Key takeaway
A wholesale price quoted “Net 30” is not the same price quoted “pay at checkout.” The difference is your cost of capital — the rate at which you would otherwise borrow or invest the cash. At a conservative 10% annual cost of capital, the table below shows the silent discount each net-term level adds on top of your headline wholesale price.
Cost-of-Capital Impact of Net Terms (10%/yr WACC)
| Net term | Implied % cost on the invoice | Effective discount on top of the price list | Typical use |
|---|---|---|---|
| Pay at checkout | 0% | 0% | New accounts, small orders, online-only buyers |
| Net 15 | ~0.4% | ~0.4% | Standard for established small retailers |
| Net 30 | ~0.8% | ~0.8% | Default for most B2B in the US and UK |
| Net 60 | ~1.6% | ~1.6% | Larger retailers, distributors |
| Net 90 | ~2.5% | ~2.5% | Major retail chains, seasonal categories |
Net payment terms are set per company or per company location and applied automatically at checkout — on Basic, Grow and Advanced just as on Plus B2B. What stays Plus-only on the payments side is narrower than most merchants assume: deposit requirements, partial payments and payment requests per fulfillment. The practical move is to price your headline list at Net 30, then offer a 1.5% / Net 10 early-payment discount via draft orders for accounts that don't strictly need terms. That recovers the capital cost without re-pricing the entire catalog.
Payment terms define how long a company has to pay for an order. You can set payment terms for each company location. After you set payment terms, B2B customers can view these terms on any orders they place through your online store.
Tax, Freight, Samples & Line Sheets: The Operational Layer of Wholesale Pricing
Key takeaway
The published wholesale price is only one number in the buyer's total cost. Four operational decisions sit on top of it — sales tax handling, freight pricing, sample/first-order policy, and how the price list is actually delivered. Get them wrong and the buyer either pays more than they expected (and stops reordering) or you absorb the cost silently.
Tax-exempt buyers and resale certificates
Key takeaway: Collect the tax ID or resale certificate during onboarding, attach it to the company record, and let the catalog zero out tax — charging it where the buyer is exempt makes your invoice non-deductible and pushes them to another supplier.
Most wholesale buyers don't pay sales tax or VAT on your invoice — they account for it themselves when they resell. The mechanism differs by region, but on Shopify the workflow is the same: collect the tax ID or certificate during B2B onboarding, attach it to the company record, and let the catalog do the rest. Charging tax where the buyer is entitled to an exemption can make your invoice non-deductible for them — a hard reason to switch suppliers.
Tax Exemption by Region: What Buyers Expect
| Region | What buyer provides | Invoice treatment | Shopify configuration |
|---|---|---|---|
| US | Resale certificate (per state) | No sales tax charged | Tax exemption on the B2B company or company location — Basic, Grow, Advanced and Plus alike. For non-B2B accounts, customer tax overrides or a tax app. |
| EU (cross-border) | Valid EU VAT number (VIES-checked) | Zero VAT, reverse-charge note | Shopify Tax with company VAT ID on file |
| UK (B2B) | VRN above VAT threshold | Zero-rated invoice with VRN shown | UK tax registration + company VRN field |
Freight pricing for wholesale orders
Key takeaway: Retail shipping rules quietly destroy wholesale margin. Use freight collect, a published per-case matrix, or a freight allowance above a minimum order — and put it on a dedicated B2B shipping profile.
Retail shipping logic — free shipping over $50, flat $7 below — collapses on wholesale economics. A 12-unit case shipped “free” at 50% off pulls per-unit margin into the red. Three patterns hold:
- Freight collect / FOB origin — buyer pays the carrier directly. Cleanest for pallet-size orders; common with distributors and chain retailers who already have a carrier account.
- Flat freight per case or per pallet — you publish a freight matrix (e.g. $18 per case to zone 1, $32 to zone 5) so the buyer sees the total cost before ordering. Works well for predictable, repeat case-pack orders.
- Freight allowance above a threshold — free freight only above, say, $1,500 net, with paid freight below. This pushes order size toward the threshold and protects margin on small orders. Pair with the MOQ from the previous section.
On Shopify, freight matrices live in the shipping profile attached to the B2B market or location. Build a dedicated wholesale shipping profile so retail rates never accidentally apply to a pallet order — and so the buyer never sees a $9 retail shipping option on a 144-unit cart.
Sample orders and first-order incentives
Buyers ask for samples before they place a real order, and how you price them sets the tone for the relationship. Two clean models: paid samples credited against the first order (you ship at MSRP minus the wholesale discount, and credit the full sample value if the buyer places a qualifying order within 60 days), or a fixed sample fee ($25–$75) that covers your fulfilment cost regardless. Free samples are common but they invite tire-kickers — gate them behind an approved B2B application instead. The first qualifying order can carry a small introductory tier (e.g. an extra 5% off, or freight waived) for one order only; encode it as a single-use discount code, never as a permanent catalog change.
Delivering the price list: line sheets and gated portals
Key takeaway: A line sheet wins the application; the gated B2B portal wins every reorder after. Treat them as stages of the same funnel, not alternatives.
A wholesale price only converts buyers if they can read it. Two formats coexist — a line sheet (designed PDF or spreadsheet) you email to prospects after they apply, and a gated B2B portal where approved buyers log in and see their catalog at their price. They aren't alternatives; they're stages. Use the line sheet to drive the application, then move every reorder into the portal.
Line Sheet vs Gated B2B Portal
| Dimension | Line sheet (PDF/sheet) | Gated B2B portal |
|---|---|---|
| Best for | First contact, trade shows, rep-driven sales | Repeat ordering, self-serve, real-time stock |
| Contains | SKU, MSRP, wholesale price, case pack, MOQ, lead time | Live catalog at the buyer's price, stock, reorder history |
| Update cost | Manual redesign each price change | Automatic — catalog price flows everywhere |
| Built on Shopify with | Canva/Adobe + product CSV export | Native B2B customer login on any plan from Basic up, or a wholesale app |
Wholesale Pricing Without Shopify Plus
Key takeaway
If your wholesale revenue doesn't yet justify Plus, start with what your plan already includes. Since April 2, 2026, native B2B ships at no extra cost on Basic, Grow and Advanced: company profiles, up to three active catalogs with tailored pricing, volume discounts and quantity rules, net payment terms, ACH (US) and vaulted credit cards. The three patterns below are what you reach for once that native surface runs out — a fourth pricing tier, prices set per individual company, or a rule the catalog can't express.
App-driven wholesale catalogs
Key takeaway: An app is no longer the default non-Plus route — native B2B is. Reach for one when you need more than three catalogs, per-buyer prices below Plus, or a wholesale portal Shopify doesn't ship, and pick by the pricing model it enforces natively rather than by sticker price.
The route for everything the native catalogs can't cover. Apps add their own wholesale layer on top of the Shopify storefront — tiered pricing, customer-tag gating, MOQ rules and a wholesale signup form. The price logic then lives in the app rather than in Shopify's native B2B checkout, so edge cases (discount stacking, currency conversion, draft orders) can drift.
Wholesale Pricing Apps for Basic, Grow and Advanced
| App | Indicative price | Pricing model it handles best |
|---|---|---|
| Wholesale Gorilla | From ~$34.95/mo | Tag-gated wholesale catalogs, tiered % discounts, MOQ |
| B2B Wholesale Solution by BSS | From ~$25/mo | Per-tag price lists, volume breaks, signup forms |
| Wholster | Free–$99/mo | Multi-currency B2B, deposits, basic terms |
| SparkLayer | From ~$49/mo | Full B2B ordering portal, quick reorder, sales-rep flows |
Customer-tag gating + draft orders
The lightest pattern. Apply a wholesale tag to approved customers, hide the wholesale theme template behind the tag, and send larger or negotiated orders as draft orders with custom line items and Net terms. Costs nothing extra, but a real human has to enforce the pricing on every quote.
Shopify Functions for one-off rules
If a single pricing rule sits outside what a catalog can express — a bundle discount, a region-based mark-up, a co-op contribution — a Shopify Function in the discount API can run the calculation at checkout. Mind the distribution gate, because it is the real one: on Basic, Grow and Advanced the function has to arrive inside a public App Store app, since only stores on Shopify Plus can install a custom app that contains Shopify Function APIs. Either way it is development or vendor work; reach for it only when the catalog and off-the-shelf apps can't do the job.
Common Wholesale Pricing Mistakes on Shopify
Key takeaway
Each of these mistakes is easy to fix in the catalog or the theme, and each one quietly costs more than it looks.
The Bottom Line
Key takeaway
Wholesale pricing on Shopify is repeatable. Decide the model. Model the margin on the SKU with the worst economics. Choose the catalog, quantity rule, draft order or Function that enforces it. Gate the prices behind a login. Layer MAP and net-term policy on top so retail and cash flow hold. The merchants who get this right rarely have the cleverest pricing — they have the most consistent one.
Frequently Asked Questions
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Writes in-depth, data-driven e-commerce guides based on hands-on experience with real merchant stores.
What to Read Next
Shopify for B2B: Complete Wholesale Guide
How to sell wholesale on Shopify — native B2B is included on Basic, Grow, Advanced and Plus since April 2026. What each plan caps, what stays Plus-only, setup and costs.
Read articleB2B on Shopify Plus: Native Features, Real Limits & When It Replaces Your ERP-Era Stack
B2B is no longer Plus-only. What Plus still adds — unlimited catalogs, per-company pricing, deposits — plus the five real gaps, 3-year TCO and migration.
Read articleIs Shopify B2B or B2C? Both — Here's How
Shopify does both B2B and B2C. See the features, plans and costs for each model — and exactly how to run wholesale and retail from a single store.
Read article