Shopify B2B Pricing: How We Set Up Catalogues, Volume Breaks and Net Terms (Now on Every Plan)

Team Insiteful

Shopify B2B pricing: catalogues, volume breaks and net terms - Insiteful Shopify build agency

On 2 April 2026, Shopify quietly made one of the biggest platform changes in years: native B2B features rolled out to every plan. Company profiles, custom catalogues, volume pricing, quantity rules, vaulted credit cards and payment terms are no longer locked behind Shopify Plus. If you run a Basic, Grow or Advanced store, the wholesale tooling is sitting in your admin right now, switched off, waiting for someone to set it up properly.

And that last part is the catch. We have audited enough wholesale setups to know that the gap between “B2B is enabled” and “B2B is priced correctly” is where most of the money goes missing. A trade customer who sees retail prices does not email you to ask why. They close the tab and ring your competitor’s rep instead.

The prize is worth the setup effort. Global B2B ecommerce is valued at roughly $36 trillion USD and merchants using Shopify B2B see up to a 4.1x increase in reorder frequency compared to DTC orders. For an Australian brand doing $150,000 AUD a year in ad hoc wholesale through emailed spreadsheets and manually keyed invoices, moving that channel onto proper Shopify B2B pricing is usually the single highest-return build project on the table.

This article walks through how we structure Shopify B2B pricing on client builds: catalogues, volume breaks, quantity rules, net terms and the leaks we fix most often. It is the implementation layer. If you are still deciding whether wholesale belongs in your main store or a separate one, start with our B2B architecture comparison and come back.

The Three Layers of Shopify B2B Pricing

Shopify B2B pricing is not one feature. It is three layers stacked on top of each other, and each layer answers a different commercial question.

  • Catalogues answer “what does this buyer pay?” A catalogue is a set of products, prices and publishing rules assigned to a company. One catalogue might give independent retailers a blanket 40% off retail. Another gives your distributor fixed per-SKU prices. A third hides your DTC-only limited drops from trade buyers entirely.
  • Volume pricing and quantity rules answer “how much do they have to buy?” Price breaks at 12, 48 and 96 units. Minimum order quantities. Case-pack increments so nobody orders 7 of something you ship in boxes of 6.
  • Payment terms answer “when do we get paid?” Net 30 on account for proven stockists, vaulted card on file for smaller accounts, full payment up front for new companies on their first order.

The plan you are on decides how deep each layer goes. Since the April 2026 rollout, Basic, Grow and Advanced stores get company profiles, up to three custom catalogues, volume pricing, quantity rules, vaulted cards and payment terms at no extra cost. Plus keeps the heavy artillery: unlimited catalogues, partial payments and deposits, and the headroom to run genuinely customer-specific pricing across hundreds of accounts.

The three layers of Shopify B2B pricing: catalogues, volume pricing and quantity rules, and payment terms, with plan availability since April 2026
The three pricing layers and what each plan tier gets since the April 2026 rollout.

Catalogues: Price the Tier, Not the Customer

The three-catalogue limit on non-Plus plans sounds restrictive until you realise it forces the discipline most wholesale programs need anyway. On nearly every build we scope, three pricing tiers cover the entire account base.

Here is the structure we deploy most often for Australian brands adding a trade channel:

  • Trade (percentage adjustment). Retail minus 40%, applied as a blanket percentage across the catalogue. New stockists land here. Zero per-SKU maintenance: when you change a retail price, the trade price moves with it.
  • Distributor (fixed per-SKU prices). Hand-set prices on the 50 to 80 SKUs a distributor actually moves, typically retail minus 50 to 55%. Fixed prices because distributor agreements are negotiated line by line, and a blanket percentage either gives away margin on hero SKUs or makes slow movers uncompetitive.
  • Key accounts (fixed prices, restricted product list). Your two or three largest wholesale relationships, with contract pricing and early access to new ranges. This catalogue also excludes anything you cannot supply at volume.

The mechanics matter here. A percentage adjustment catalogue takes minutes to build in the admin under Products → Catalogs. Fixed pricing at any real catalogue size is a job for the Admin GraphQL API, not 80 rounds of clicking. This is the mutation we script for distributor price loads:

mutation {
  priceListFixedPricesAdd(
    priceListId: "gid://shopify/PriceList/24500001"
    prices: [
      {
        variantId: "gid://shopify/ProductVariant/447001"
        price: { amount: "54.00", currencyCode: AUD }
      }
      {
        variantId: "gid://shopify/ProductVariant/447002"
        price: { amount: "31.50", currencyCode: AUD }
      }
    ]
  ) {
    prices { variant { id } price { amount } }
    userErrors { field message }
  }
}

We generate the input from the client’s negotiated price sheet, run it in batches of 250 variants, and diff the price list against the spreadsheet afterwards. The whole load is repeatable, which matters when the distributor agreement gets renegotiated next financial year and 70 prices change overnight.

One rule we hold firmly: never create a catalogue per customer on a three-catalogue plan, and avoid it even on Plus unless the contract genuinely demands it. Price the tier. Companies are assigned to catalogues, so moving an account from Trade to Distributor pricing is a two-click reassignment rather than a rebuild.

Volume Breaks and Quantity Rules: Case Packs Without the Spreadsheet

Volume pricing is where Shopify B2B starts paying for the setup time. Each catalogue can carry its own quantity price breaks per variant, which means your trade tier and your distributor tier can have completely different break structures on the same product.

A structure we use constantly for a product retailing at $49.95 AUD:

  • 6 to 23 units: $29.95 each (the trade base price)
  • 24 to 71 units: $27.45 each, roughly an extra 8% off
  • 72+ units: $24.95 each, the price that makes a full carton the obvious order

The distributor tier gets a different curve on the same SKU. Their base price already sits near retail minus 50%, so the breaks are shallower but start higher: 48 units minimum, a second break at 240, a pallet price at 960. Same product, two catalogues, two completely different quantity economics, and neither tier ever sees the other’s numbers.

The break points are not arbitrary. They map to your inner and outer carton quantities, so every incentive in the price column pushes the buyer toward order sizes you can pick and pack efficiently. Pair them with quantity rules: a minimum of 6, an increment of 6, and a maximum if you need to protect stock for DTC. The buyer physically cannot place the annoying order. No follow-up email, no “actually our MOQ is…” conversation, no manual correction.

Volume price break chart showing one SKU with different break structures in the trade and distributor catalogues, prices in AUD
One SKU, two catalogues: the trade tier and distributor tier carry completely different break structures.

On the storefront side, B2B buyers see their own pricing once they are logged in to a company location, but most themes need work to display volume breaks properly. The price-break table renders through the quantity_price_breaks drop in Liquid:

{% if customer.b2b? %}
  {% for break in product.selected_or_first_available_variant.quantity_price_breaks %}
    <div class="volume-tier">
      Buy {{ break.minimum_quantity }}+ :
      {{ break.price | money }} each
    </div>
  {% endfor %}
{% endif %}

We build this into the product template as a styled tier table with the buyer’s current quantity highlighted, plus a “add one more carton and save” nudge in the cart. Small build detail, real behaviour change. Buyers round their orders up when the next break is visible at the moment they choose a quantity.

Net Terms and Vaulted Cards: Getting Paid Without Chasing

Pricing gets the order. Payment terms decide whether the order is worth having. Shopify B2B lets you assign terms per company location: due on receipt, net 15, net 30, net 60, net 90, or due on fulfilment, which is the option Australian wholesalers consistently forget exists. For made-to-order or long lead-time stock, “due on fulfilment” means the clock starts when the goods ship, not when the order is placed. That single setting has resolved more terms disputes for our clients than any contract clause.

The framework we apply when configuring terms on a build:

  • New accounts: due on receipt, vaulted card. The buyer checks out with a card that is stored securely for reorders. No credit exposure on an unproven relationship.
  • Established stockists: net 30 on account. Orders submit without payment, an invoice goes out, and the order sits in the B2B order list with a payment status your team can actually filter on.
  • Key accounts: negotiated terms, draft order workflow. Larger buyers often need an internal approval step. Shopify B2B supports buyer-submitted draft orders, so a rep can assemble the order and a purchasing manager approves it before it commits.

Vaulted cards deserve more attention than they get. The single biggest friction in wholesale reordering is the buyer who has to find a company card every time. Card on file plus a reorder list turns a 20-minute task into a 90-second one, and the behaviour data backs it: 83% of B2B buyers prefer to self-serve their orders online, and merchants adopting Shopify B2B see up to a 33% lift in self-serve orders within six months. Every order that places itself is an order your team did not key in. One client measured the admin saving at roughly 11 hours a week, which at Australian wage costs is over $22,000 AUD a year back before counting a single extra sale.

Order-to-cash flows for new accounts on vaulted cards, stockists on net 30 terms and key accounts on draft order approval
The order-to-cash flow we configure for each account type: terms matched to credit risk.

Two Australian specifics we wire into every B2B build. First, GST display: trade buyers think in ex-GST prices, your DTC store displays inc-GST, and Shopify B2B respects the tax-exclusive setting per catalogue context, so we configure wholesale pricing ex-GST with tax calculated at checkout and shown clearly on the invoice. Second, the invoice itself must carry your ABN and the words “Tax Invoice” to be valid for your buyer’s BAS. The default order confirmation does not cut it, so we customise the B2B invoice notification template as standard. If your payment flows get more exotic than terms and cards, that is the territory of our custom payment methods guide.

What Is Still Plus-Only, and When It Actually Matters

The April 2026 change moved the foundation down-market, but Shopify kept a deliberate gap between the tiers. Staying clear-eyed about that gap saves brands from upgrading too early or limping along too long.

Still exclusive to Plus:

  • Unlimited catalogues. Three tiers cover most programs. They stop covering you when contract pricing multiplies: 15 key accounts each with negotiated line pricing is a Plus problem.
  • Partial payments and deposits. If your wholesale model needs 30% up front on pre-orders with the balance on fulfilment, that capability lives on Plus.
  • Checkout and discount logic via Functions. Volume pricing handles quantity economics, but rules like “free freight over $3,000 AUD ex-GST for trade accounts only” are built with Shopify Functions, which we covered in detail in Shopify Functions Explained.

Our rule of thumb: a wholesale channel under about $1M AUD a year with a tiered price structure runs comfortably on Advanced since the rollout. Past that, the trigger for Plus is rarely volume itself. It is pricing complexity, deposit requirements, or checkout customisation that standard plans cannot express.

There is also a sequencing point worth making. Brands that set up B2B properly on Advanced now will find the eventual Plus migration almost trivial, because catalogues, companies and price lists carry across. The expensive version of this story is the brand that builds wholesale on a locked password page with a discount code, trades that way for three years, and then has to untangle every account relationship by hand when they finally move to the native tooling.

The Pricing Leaks We Fix Most Often

When a brand brings us an existing B2B setup to audit, the same four leaks appear over and over.

  • Retail prices showing to logged-in trade buyers. Usually a publishing problem: the catalogue exists but is not published to the B2B context, or the company location was never assigned. The buyer sees retail, assumes you are expensive, and quietly churns. We test every tier with a real company login before launch, on desktop and mobile.
  • Discount stacking nobody modelled. A sitewide 20%-off DTC promotion that also applies to a logged-in trade buyer already on retail minus 45% takes the order below cost. Discount eligibility needs to exclude B2B customers explicitly, and on Plus we enforce it in a Function so it cannot be forgotten by the next marketer who builds a sale.
  • GST-inclusive wholesale prices. A price list keyed from inc-GST retail numbers quietly hands every trade buyer an extra 10% margin. We rebuild the sheet ex-GST and reload it via the API, because finding this after 14 months of trading is an expensive way to learn the difference.
  • Stale prices in the ERP but not in Shopify, or vice versa. Once an ERP holds the master price file, the Shopify price lists need a sync job, not a quarterly copy-paste. Our ERP integration comparison covers how we wire NetSuite, Cin7 and Unleashed into that flow.

None of these are platform failures. They are configuration debt, and every one of them is invisible from the admin side. You only see them from inside a buyer’s account, which is exactly where most merchants never look.

How We Do It at Insiteful

When we build or repair a B2B pricing setup, the work runs in a fixed order, because each step depends on the one before it.

  • 1. Margin model first. Before anything touches the admin, we build the tier sheet with the client: landed cost, retail, trade, distributor and key-account pricing per SKU, with GST treatment explicit on every column. If a tier does not clear the client’s margin floor at the deepest volume break, the break moves, not the margin.
  • 2. Catalogue architecture. Tiers become catalogues: percentage adjustments where maintenance speed wins, fixed price lists loaded via the GraphQL API where contracts demand precision. Publishing rules hide DTC exclusives from trade.
  • 3. Quantity rules from carton data. Minimums, increments and breaks are generated from the client’s actual pack configuration, so the price column and the warehouse agree with each other.
  • 4. Terms, vaulting and the invoice template. Terms assigned per company location against the credit framework above, vaulted cards switched on, and the tax invoice template rebuilt to be ABN-compliant.
  • 5. Buyer-side QA. We log in as a company from each tier and place real test orders on desktop and mobile. Price display, break rendering, GST, terms at checkout, the invoice email, the reorder flow. The build is not done until the buyer experience is right, which is the same standard we applied to the B2B portal design work we wrote about previously.

The outcome we aim for is a wholesale channel where the pricing logic lives entirely in the platform: no side spreadsheets, no “let me check with accounts”, no manually keyed orders. Buyers self-serve at their own prices, on their own terms, in their own time.

Where to Start

If wholesale enquiries are already arriving and you are quoting from a PDF price list, the platform work is overdue. Audit your current setup against the four leaks above, sketch your three tiers, and decide whether your plan’s catalogue limit holds you or not. The April 2026 rollout means the tooling is no longer the blocker. The setup is.

And if you are starting from zero, resist the urge to launch wholesale with a discount code and a password page just to get moving. The native B2B layer takes only marginally longer to configure, and everything you build on it compounds: company records, order history, terms behaviour, reorder patterns. That data is the foundation the channel grows on.

Setting up B2B pricing properly sits inside most of the Shopify builds we scope these days, whether the brand is adding wholesale for the first time or moving an established trade channel off email and spreadsheets. If you want it built right the first time, see how we scope a build, or browse our recent projects to see the standard we work to.

© Insiteful.
Lovingly human-made.