Stacked pallets of boxed product on warehouse shelving under industrial lighting.

Shopify Wholesale Pricing Strategy: How to Price B2B Without Gutting Your DTC Margin

The default wholesale playbook in DTC is one line long: take your retail price, cut it in half, call it keystone, move on. It works right up until you look at what a wholesale order actually costs you to fulfill — and realize your 50%-off price list was built on a retail price that was never a real margin anchor in the first place.

Here’s the structural problem. Your DTC retail price was probably set by working backwards from a target contribution margin after paid acquisition. That means it’s inflated by 20-35% of CAC that a wholesale order doesn’t carry. But it’s also carrying a landed cost that you never fully calculated — duty, freight, 3PL receiving, damage, and the 4-9% of units that never sell at full price. When you halve a number that was already fuzzy, you get a wholesale price that’s fuzzy by a factor of two.

The brands that make wholesale work profitably do one thing differently: they price the channel from the bottom up, not the top down. Landed cost first, channel-specific opex second, retail price as a sanity check — never as the starting point.


Step 1: Get your true landed cost per unit, not your PO price

Almost every wholesale pricing mistake traces back to using the supplier invoice price as COGS. That number is usually 18-40% too low.

For a hypothetical apparel SKU with a $9.00 FOB price:

  • FOB unit cost: $9.00
  • Ocean freight + drayage (allocated per unit on a 2,000-unit PO): $0.85
  • Duty (16.5% on apparel, assessed on FOB + freight): $1.62
  • Customs broker + docs ($350 per shipment ÷ 2,000): $0.18
  • 3PL receiving ($0.35/unit or $45/pallet): $0.35
  • Inbound defect/damage allowance (2%): $0.24
  • Polybag, hangtag, care label (if not done at factory): $0.40

True landed cost: $12.64 — a 40% premium over the PO price. If you’d used $9.00 and set wholesale at $20, you’d think you had a 55% margin. You actually have 37%.

Do this for your top 20 SKUs by volume before you touch a price list. If you’re air-freighting anything, allocate it separately — a single $4,200 air shipment on a 600-unit reorder adds $7.00 per unit and can turn a wholesale SKU negative on its own.


Step 2: Build your wholesale floor from channel opex, not gut feel

Wholesale is cheaper than DTC on acquisition and more expensive than you think on everything else. Price it accordingly.

What wholesale drops

  • Paid acquisition: typically 18-32% of DTC revenue. Gone, or replaced by trade show + rep cost at 4-8%.
  • Per-order pick/pack: DTC runs $2.75-$4.50 per order for 1.4 units. Wholesale runs $0.22-$0.55 per unit on a 90-unit carton pick.
  • Returns: DTC apparel returns land at 18-28%. Wholesale returns are usually under 2% and often chargeback-only.
  • Payment processing: 2.9% + $0.30 on DTC vs. ACH/net terms at effectively 0.3-0.8%.

What wholesale adds

  • Net terms carrying cost: Net 30 at real-world 41-day average collection, on a line of credit at 11%, costs you ~1.2% of order value. Net 60 doubles it.
  • Bad debt: budget 1-2% of wholesale revenue. If you’re selling to independent boutiques without credit checks, use 3%.
  • Freight allowances: “free freight over $1,500” costs 3-6% of order value on LTL to a single store.
  • EDI, routing guides, compliance chargebacks: if you’re selling to anyone over 40 doors, assume 2-4% in chargebacks for late ASNs, wrong labels, and carton-level violations. Some brands see 7%.
  • Sales commission: 8-15% to independent reps, 5% to inside sales.
  • Samples and line sheets: $3,000-$18,000 per season depending on how many showrooms you feed.

Net it out honestly and wholesale opex typically lands at 14-22% of wholesale revenue for a brand selling to independents, and 22-30% if you’re dealing with mid-market chains and rep groups.


Step 3: Set the price with a real target, not a discount percentage

Your wholesale price should clear landed cost plus channel opex plus your required contribution. Work it in that order.

Using the $12.64 landed cost above, with a target of 25% wholesale contribution margin after channel opex and channel opex at 18%:

  • Required gross margin on wholesale price: 25% + 18% = 43%
  • Wholesale price = $12.64 ÷ (1 − 0.43) = $22.18 → round to $22.00
  • MSRP at a 2.2x wholesale multiple = $48.00 (retailers need 50-55% off MSRP to survive)

Now sanity-check against DTC. If you’re selling that SKU at $48 direct with a 22% blended acquisition cost and $4.10 in pick/pack/ship subsidy, your DTC contribution per unit is roughly $48 − $12.64 − $10.56 − $4.10 − $1.69 (processing) = $19.01, or 40%.

Wholesale contribution per unit is $22.00 − $12.64 − $3.96 (18% opex) = $5.40, or 25%.

That’s the real trade. You’re accepting $5.40 instead of $19.01 per unit in exchange for volume you don’t have to buy. That’s a fine trade at a 70-unit minimum opening order — $378 of contribution with no ad spend. It’s a bad trade if your MOQ is 12 units and you’re eating a $9 sample pack and 20 minutes of email to close $89 of contribution.

The margin floor rule

Set a hard floor and enforce it in your price list build: no wholesale SKU ships below 38% gross margin on true landed cost. Below that, one chargeback or one freight allowance flips the line negative. Anything under 45% gets flagged for a cost-down or a price increase at next season.


Step 4: Structure tiers so volume actually pays for itself

Flat wholesale pricing is leaving money on both ends — you’re overcharging the 400-door account that could triple your volume and undercharging the boutique that orders $600 twice a year.

A workable four-tier structure for a brand doing $2-6M:

  • Tier 1 — Stockist ($750 opening / $500 reorder): List price. 50% off MSRP. Net 30 after two prepaid orders.
  • Tier 2 — Key account ($5,000+ annual): 5% off list, or 52.5% off MSRP. Free freight over $2,000.
  • Tier 3 — Distributor / large chain ($25,000+ annual): 15-20% off list. Requires MAP agreement, no returns, prepaid or Net 45 with credit approval.
  • Tier 4 — Private label / bulk, no brand support: Priced at landed cost + 28-32% flat. No samples, no marketing, no exclusivity, FOB or ex-warehouse only.

The rule that keeps tiers from eroding: every discount step must be paid for by a reduction in your cost to serve. A 15% discount only works if the account drops your per-unit pick cost, absorbs freight, or removes your return exposure. If they want the discount and free freight and returns and co-op marketing, the tier is fiction.


Step 5: Don’t let wholesale cannibalize DTC

This is where most brands lose more money than they do on bad pricing. A retailer discounting your $48 SKU to $34 for a weekend teaches your own DTC customers to wait.

The controls that actually hold:

  • MAP policy, in writing, unilateral. Not negotiated — a policy you publish and enforce. First violation: written notice. Second: 30-day shipping hold. Third: account terminated. Brands that don’t enforce the third step have no MAP policy, they have a suggestion.
  • Channel-exclusive SKUs. Keep 20-30% of your catalog DTC-only — usually your highest-margin and newest products. Give wholesale the proven core in pack configurations retailers want.
  • Pack-size differentiation. A 3-pack at $62 wholesale isn’t price-comparable to your $28 single. This kills price-shopping without requiring a separate factory run.
  • No wholesale on anything you discount more than twice a year. If you run the SKU at 30% off in DTC promos, your retailers will see the margin gap and stop reordering.

Setting it up in Shopify without a separate store

Shopify’s B2B tooling on Plus ($2,300/mo annual, or ~$2,500 monthly) handles most of this natively and it’s the cleanest path if you’re already on Plus:

  • Company profiles with multiple locations — each location can carry its own price list, payment terms, and tax exemption.
  • Catalogs — assign specific products and either percentage-off or fixed-price lists per company. This is where your four tiers live.
  • Payment terms — Net 15/30/45/60 issued at checkout, with the invoice tracked in the order.
  • Volume rules and quantity increments — force case packs of 6 or 12 so you’re not picking singles at wholesale prices.

If you’re on Shopify ($79-$399/mo) and not ready for Plus, the realistic options are a tagged-customer discount app ($30-$100/mo) or a second store on a cheap plan with a shared inventory sync. The second store is more work but gives you clean channel reporting — which matters more than most operators expect once wholesale passes 15% of revenue.

The reporting trap

Shopify’s default reports will blend wholesale and DTC into one gross margin number and hide the fact that your blended margin dropped 6 points because wholesale grew. Tag every wholesale order by channel and track contribution margin per channel monthly, not just gross margin. A brand at $4M with 30% wholesale and 25% wholesale contribution vs. 40% DTC contribution has a blended contribution of 35.5% — and if wholesale grows to 50% of revenue, it’s 32.5%. That 3-point drift is $120K and it will show up as “we’re growing but cash is tight.”


The quarterly wholesale price review

Prices you set once go stale within two seasons. Run this every quarter, 90 minutes:

  • Recalculate landed cost on your top 20 SKUs using the last completed PO, not the last quoted price. Freight and duty move.
  • Flag every SKU under 38% wholesale GM. Cost it down, raise it, or pull it from the wholesale catalog.
  • Pull actual chargebacks, freight allowances, and bad debt for the quarter and recompute channel opex. If it moved more than 2 points, your price list is wrong.
  • Rank accounts by contribution, not revenue. The bottom 30% of accounts usually deliver under 8% of wholesale contribution and consume 40% of the service time. Raise their minimums or let them go.
  • Check net terms aging. If average days-to-collect is above 45 on Net 30, you’re financing retailers at your cost of capital and it needs to be priced in.

Wholesale isn’t a lower-margin business by nature. It’s a lower-margin business when it’s priced off a retail number that was never checked and a COGS figure that was never fully loaded. Fix both and 25-30% contribution on B2B is entirely normal — with no ad spend attached to it.


Try ProfitAnalyzer free — no credit card required

Find your Shopify margin leaks in under 2 minutes. Now available on the Shopify App Store.

Install on Shopify →Try free online →

Related reading

Published by The Shopify Ops — profit operations for 6-7 figure Shopify brands.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *