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
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
- Best on Plus B2B volume pricing
- Few accounts, big revenue each
- Negotiated price lists and terms
- Distributors, private label, key accounts
- Per-company catalogs on Plus, or draft orders
Wholesale Pricing Models That Actually Work on Shopify
The six models below aren't mutually exclusive. A typical B2B merchant on Plus 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
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$8.85 (36.9%)
- Order net margin (12 units)$106.15
- Net 30 silent cost−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
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 and the realistic fallback when the native option isn't available.
Pricing Model → Shopify Surface That Enforces It
| Model | Native Shopify surface | Required plan | Fallback on lower plans |
|---|---|---|---|
| Flat % off retail | B2B price list (percentage off product/collection) | Plus | Customer-tag gating + wholesale app on Basic/Grow/Advanced |
| Tiered volume | Volume pricing inside the B2B catalog | Plus | Wholesale Gorilla / SparkLayer tier rules, or a Shopify Function on Advanced+ |
| Per-company contract | Catalog assigned to one company or location with fixed prices | Plus | Manual draft orders, or a price-list app that gates by customer tag |
| Case pack / MOQ | B2B quantity rules (min / max / increment) | Plus | Bundle apps, theme cart validators or app-side MOQ rules |
| Cost-plus | Fixed-price entries in a B2B price list (not a percentage) | Plus | Hidden products + draft orders, or app catalog with fixed prices |
| 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).
MOQ, Quantity Breaks & Case Packs: Pricing Is the Quantity
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. Plus 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.
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
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 | B2B login (Plus) 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
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 |
On Plus B2B, payment terms are set per company or per location and applied automatically at checkout. 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
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 | Plus: company tax-exempt. Lower plans: customer tax overrides or 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 | Plus B2B login, or wholesale app on lower plans |
Wholesale Pricing Without Shopify Plus
If your wholesale revenue doesn't yet justify Plus, you have three realistic patterns. None are as clean as native Plus B2B, but they all hold pricing.
App-driven wholesale catalogs
Key takeaway: An app is the cleanest non-Plus route. Pick by which pricing model it enforces natively (tiered, per-tag, multi-currency, full portal) — not by sticker price.
The cleanest non-Plus pattern. Apps add a wholesale layer on top of the Shopify storefront — tiered pricing, customer-tag gating, MOQ rules and a wholesale signup form. The price logic lives in the app, not in Shopify's native 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 you're on Advanced and need a single pricing rule the catalog can't express — a bundle discount, a region-based mark-up, a co-op contribution — a custom Shopify Function in the discount API can run the calculation at checkout. Functions are powerful but require development time; reach for them only when the catalog and apps can't.
Common Wholesale Pricing Mistakes on Shopify
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
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 B2B on Shopify — native Plus features, wholesale apps for lower plans, setup guide, cost analysis, and honest limitations.
Read articleB2B on Shopify Plus: Native Features, Real Limits & When It Replaces Your ERP-Era Stack
A focused guide to B2B on Shopify Plus for re-platforming teams — what's actually native in 2026, where it replaces Adobe Commerce / NetSuite, the five real gaps, Functions as the unlock, 3-year TCO, migration patterns and the right call for four buyer profiles.
Read articleIs Shopify B2B or B2C? Both — Here's How
Shopify handles both B2B and B2C. Compare features, plans, and costs for each model — plus how to run both from one store.
Read article