monkeyman.agency
scaling

Different Prices for Different Customers on One Shopify Store

Same SKU, two prices for wholesale and retail buyers. Here are the four ways to do customer-specific pricing on Shopify, and the sync trap that breaks invoices.

June 21, 2026 8 min read

Marco runs Ridgeline Roasters, a coffee brand on Shopify doing about $4.1M a year, split roughly 60/40 between wholesale accounts and direct retail. Same beans, same SKUs, two very different prices. A 12oz bag is $19 to a walk-up online customer and $11 to the cafe buying forty bags a week.

For two years he held that split together with a spreadsheet, a second hidden storefront, and a lot of manual invoicing. It mostly worked, until it didn’t. A wholesale buyer got shown retail pricing because a customer tag never applied. A retail shopper found the wholesale collection through search and happily ordered eight bags at cafe cost.

Marco called, we ran the audit, the gap was the architecture.

The question landed the way it lands on nearly every B2B onboarding call we take. A merchant asked us flat out: can I set different prices for B2B and B2C clients for the same SKU? Yes. The harder question is which of the four ways to do it you actually want.

The same-SKU, two-prices puzzle is really an architecture decision

Most people treat this as a settings problem. Find the toggle, flip it, done. It isn’t a toggle. It’s a decision about how your store represents two kinds of buyers who happen to want the same physical product at different prices.

There are basically four routes on Shopify, and they don’t compete so much as suit different stages. Native B2B with catalogs if you’re on Plus. Tag-based price control with an app if you’re not. Market-specific pricing if the split is really about geography. And quantity breaks if the discount is about volume rather than who’s buying.

Pick the wrong one and you’ll fight it for a year. Pick the right one and the whole thing mostly runs itself. So before touching anything, the real question is what actually separates your two prices. Is it the customer, the region, or the order size? That answer points straight at the route.

Native B2B with catalogs, the path if you’re on Plus

If you’re on Shopify Plus, the cleanest answer is the built-in B2B feature. You create companies, assign buyers to them, and attach a catalog with its own price list. A catalog can override prices for specific products, apply a percentage off your retail price, or set fixed per-product pricing, and it shows only to logged-in buyers of that company.

This is genuinely good now, in a way it wasn’t a couple of years back. Wholesale buyers log into the same storefront and see their pricing. No second store, no hidden collection, no manual quotes for standard orders. Shopify’s B2B documentation walks through catalogs and company profiles in detail, and it’s worth reading before you build anything.

The catch is the price tag. B2B lives on Plus, which starts around $2,300 a month. For a merchant doing serious wholesale volume that’s nothing. For someone with eight wholesale accounts and a mostly-retail business, paying Plus rates just to gate a price list is hard to justify. One merchant put it bluntly on a call: he wasn’t about to pay that much a month for what was, to him, basic wholesale functionality. Fair.

So the honest filter is volume. If wholesale is a real channel with real revenue, native B2B on Plus is worth it and then some. If it’s a side door, look at the next option.

The tag-based workaround when Plus isn’t worth it

Below the Plus line, the common pattern is customer tags plus a pricing app. You tag accounts as “wholesale,” and an app shows tagged customers a different price than everyone else.

It works, and plenty of seven-figure stores run on exactly this. But know what you’re signing up for. The pricing usually applies through the theme and sometimes through a draft-order flow at checkout, which means edge cases live in the gaps. A customer who isn’t logged in. A tag that didn’t sync. A third-party checkout app that doesn’t respect the override. Those are the cracks Marco kept falling into.

The reliability of the workaround comes down to how the app injects the price and whether your theme and checkout honor it everywhere. We test it the boring way, by placing real orders as a tagged customer, an untagged customer, and a logged-out browser, and watching where the price drifts. If it holds across all three, you’re fine. If it doesn’t, you’ve found your leak.

This route is cheaper and far more flexible. It’s also where most of the “wholesale customer saw the wrong price” support tickets come from, so it earns the testing.

Market-specific pricing is a different lever entirely

Sometimes the price difference isn’t really about wholesale versus retail. It’s about geography. You want euro pricing for the EU, a different number for the US, and a markup for regions where shipping eats you alive.

That’s a Markets job, not a B2B job. Shopify Markets lets you set per-country pricing, currency rounding, and percentage adjustments by region, all on the same catalog. Shopify’s Markets documentation covers the setup. People conflate this with customer-group pricing constantly, then wonder why their “B2B” config won’t do regional rounding. Different tool, different job.

The two can stack. A Plus merchant can run B2B catalogs for wholesale and Markets for regional retail at the same time. Just keep them straight in your head, because debugging a price is miserable when you’re not sure which system set it.

Quantity breaks, when the discount is about volume

Then there’s the quiet fourth one. Sometimes you don’t want a customer-type price at all. You want anyone buying twelve units to pay less per unit than someone buying two. That’s a volume break, and it applies to wholesale and retail buyers alike.

Native B2B price lists support quantity breaks directly. Off Plus, volume-discount apps handle it, usually by adjusting the line price in the cart once the quantity threshold trips. This is the right model for a brand whose “wholesale” is really just bulk buying, with no formal accounts to manage. A cafe and a superfan stocking up get the same per-unit deal, and you skip the whole tagging apparatus.

Worth saying plainly. If your only goal is “buy more, pay less per unit,” you probably don’t need B2B or tags at all. You need a quantity-break app and an afternoon.

Apps versus native, and when each one earns its keep

People want a single recommendation here and there isn’t one. Sorry. The right pick depends on your plan, your wholesale volume, and how much custom logic you’re carrying. Here’s the rough map we use.

Your situationWhat usually fits
Heavy wholesale, on or ready for PlusNative B2B catalogs and price lists
Light wholesale, on Basic or Shopify planCustomer tags plus a pricing app
Price differs by country, not customerShopify Markets per-region pricing
Discount is purely volume-basedA quantity-break app, no accounts needed

That table is a starting point, not a verdict. Plenty of stores run two of these at once, a Plus merchant using B2B catalogs for accounts and Markets for regional retail being the common combo. The mistake we see is reaching for an app-heavy workaround when the business has clearly outgrown it and should just move to native B2B, or paying for Plus to solve what a $20 app would handle.

Where custom pricing actually breaks: ERP, invoicing, and sync

The setup is the easy half. The hard half shows up when custom prices have to leave Shopify and land somewhere else cleanly.

Wholesale orders usually feed an accounting or ERP system, and that system needs the wholesale price, not the retail one. If your B2B prices live in an app rather than in Shopify’s native order data, the price that syncs downstream can be the retail number, and now your invoices are wrong. We’ve cleaned up exactly this more than once. The store looked fine. The books didn’t.

Net terms are the other trap. Real wholesale often means “invoice me, I’ll pay in 30 days,” which native B2B supports but most tag-based workarounds don’t, so you end up bolting on a draft-order or net-terms app and praying the pieces talk to each other. Every integration seam between storefront price, order record, and accounting system is a place the wholesale number can silently revert to retail.

Before you launch any of this, run a test order all the way through. Place it as a wholesale buyer, push it to your ERP or accounting tool, and confirm the price that arrives is the one you intended. Marco’s whole problem, in the end, wasn’t the storefront at all. It was that his wholesale prices never made it cleanly into invoicing.

What we keep telling clients

The temptation is to pick the most powerful option and grow into it. Jump to Plus, turn on B2B, feel sorted. Sometimes that’s right. Often it’s renting a freight truck to move a few boxes.

Start from what actually separates your two prices. If it’s the customer and wholesale is a real channel, native B2B is worth the Plus bill. If wholesale is a handful of accounts, tags and a pricing app will carry you a long way for almost nothing. If it’s geography, that’s Markets. If it’s just order size, it’s quantity breaks, and you can stop thinking about customer groups entirely.

And whatever you choose, the storefront is only half the build. The half that quietly burns money is the sync, the place where a wholesale price has to survive the trip into your invoicing and accounting without reverting. Test that path before you trust it.

Marco didn’t move to Plus. His wholesale was real but his account list was short, so we kept him on tags, hardened the price logic, tested it logged-out and untagged until it stopped leaking, and wired his wholesale prices straight into his accounting tool so the invoices finally matched the orders. Same SKUs, two prices, one store. Nobody sees the wrong number anymore.

Questions we get every week

Can I really charge different prices for the same product on one Shopify store? Yes. On a single store you can show different prices for the same SKU based on the customer, their region, or the order quantity. The method depends on which of those is driving the difference, and on whether you’re on Shopify Plus.

Do I need Shopify Plus to do B2B pricing? Not necessarily. Native B2B catalogs and price lists require Plus, but on lower plans you can get most of the way with customer tags and a wholesale pricing app. Plus becomes worth it when wholesale is a serious revenue channel rather than a few accounts.

Why does my wholesale customer sometimes see retail prices? Almost always because the pricing depends on a customer tag or login that didn’t apply, or a checkout step that ignores the app’s price override. Test the flow as a tagged customer, an untagged one, and a logged-out visitor to find where the price drifts.

Will my custom B2B prices sync correctly to my accounting system? Only if you check. When prices live in an app rather than Shopify’s native order data, the figure that syncs downstream can default to retail, so run a full test order into your ERP or invoicing tool before going live.

If you’re juggling wholesale and retail on one Shopify store and the prices keep leaking, Monkey Man can architect and test the setup for you.

Need help with this?

Send us your store. We'll send back an audit.

Send us your store URL. We'll send back a free audit within 48 hours.

Phone (optional)