← Back to Blog
Ecommerce

B2B and Wholesale Pricing, Built Into Your Store

A B2B ecommerce platform needs one thing above all else: the ability to show a different price to a different buyer, automatically, everywhere a price appears. On ShopsWired that's native — you define named price levels like Wholesale or Dealer, attach a level to a customer, and their pricing follows them across product pages, category grids, search results, and the cart. No second storefront, no wholesale app, no separate platform.

What B2B pricing actually requires

Most merchants who sell to both consumers and trade accounts discover the requirements in roughly this order:

The last one is where bolt-on solutions fail. An app that rewrites prices on the product page but not in search means a dealer sees $40 in a listing and $26 when they click through. That looks like a bug to them because it is one.

Named price levels

You start by defining levels — call them Wholesale, Dealer, Distributor, whatever your trade actually says. Then on any product you can set a specific price per level. Optionally, you can show the standard price struck through for that level, so the buyer sees what they're saving against retail.

Hand-pricing every product across every level is the obvious problem, so each level has a fallback that decides what happens when a product carries no price for it. You choose per level:

In practice most merchants run a percent-off fallback for the catalog and set explicit per-product prices only on the lines where the margin math is different.

The rule waterfall: different groups, different math

A single percentage rarely survives contact with a real catalog. Your own products carry 55 points of margin; the brands you resell carry 12. One blanket discount can't serve both.

So each level supports layered conditional rules keyed on product tag or attribute, evaluated first-match-wins. A typical Dealer level ends up looking like this:

1. tag = clearance      -> standard price (no dealer discount)
2. tag = house-brand    -> 40% off standard
3. Brand = Acme         -> 15% off standard
4. (fallback)           -> 25% off standard

Order matters, because the first matching rule wins. Put your exclusions at the top — a clearance rule that sits below a blanket discount will never fire. That's the single most common mistake when setting this up, and it's easy to catch: assign yourself to the level and load a clearance product.

Assigning levels to customers

A level does nothing until it's attached to a customer. Once it is, their pricing applies automatically everywhere the storefront loads a price — product pages, product cards, search grids, and the live product grids you drop into pages with the builder.

Defining levels also changes your customer list: it starts showing each customer's level and gains a filter for it, so you can pull up everyone on Wholesale, optionally narrowed to customers or leads. Retail customers — the ones on no level — are simply the unfiltered list.

For onboarding trade accounts, your theme's register form can ask for whatever you need beyond name and email — company, VAT number, resale certificate number, anything you name — and the answers are saved as custom fields on the customer. The practical flow is: applicant signs up through that form, you review, you assign the level. Contacts captured at guest checkout arrive as leads and are promoted to customers when they place an order, so a trade applicant who hasn't bought yet is still findable.

Quantity price breaks

Volume breaks work independently of levels: set "buy N or more for a lower unit price" tiers at the product or variant level. That covers the case-pack discount that everyone gets, without needing a named account. Use levels for who the buyer is and breaks for how much they're buying — trying to express volume pricing as a level (Wholesale-12, Wholesale-24) is a maintenance trap.

The parts of B2B that aren't the price

Wholesale pricing that doesn't reach tax and promotions is only half done. A few things worth setting up at the same time:

Be honest about the gaps

ShopsWired handles pricing, tax, and promotions for trade accounts natively. It does not currently ship native net terms, purchase-order payment, credit limits, or multi-buyer company accounts where several logins share one company's pricing and invoices. If your B2B model depends on invoicing on Net 30 against a credit line, that's either a plugin you build or a workflow you run through hand-built orders and offline payment. Tax-ID capture is a custom field, not a validated lookup. Worth knowing before you migrate, not after.

Wholesale and B2B pricing is also a Pro-plan and above feature — the Starter plan runs a full retail store on ready-made themes and plugins, but price levels start at Pro. See the full feature list for what sits where.

What it costs to run both audiences

This is where a combined store tends to win. Shopify's native B2B — company profiles, price lists, payment terms — lives on Shopify Plus, its enterprise tier; below that, merchants generally get there with a wholesale app, often one charging a monthly fee that scales with catalog or order volume. That's a real, ongoing cost layered on top of your plan and your processing.

ShopsWired charges 0% platform transaction fees on every plan — you pay only your payment processor's standard rate — and B2B pricing is part of the platform rather than a metered add-on. Pro is $99/mo, Business $249/mo, Enterprise $499/mo, with a Dedicated single-tenant option. Right now Pro is $1/month for the first three months, which is enough runway to model your real catalog against real dealer pricing before you commit. Full details on the pricing page.

A sane setup order

  1. Define one level first — Wholesale — with a percent-off fallback. Don't build four levels on day one.
  2. Tag the product groups that need different math (house-brand, clearance), then add the rules in priority order, exclusions at the top.
  3. Assign the level to a test customer and browse the storefront as them. Check a product page, a search result, and the cart.
  4. Add the tax rule for that tier — or leave the tier off every rule if they're exempt.
  5. Add quantity breaks only where case packs actually exist.
  6. Then, and only then, add the second and third levels using "another level's price" as the fallback.

Done in that order, a working wholesale channel on top of an existing retail store is an afternoon, not a migration.

← Back to Blog