Skip to content
Store slow, dated, or hard to edit? Request a Store Diagnostic
Running B2B on spreadsheets or email? Plan Your B2B Project
B2B & Wholesale

Shopify B2B Catalogues: Showing Different Products and Prices to Different Wholesale Customers

Ask most Shopify merchants moving into wholesale what they need, and they’ll say “tiered pricing.” That’s part of it, but it’s rarely the whole problem. The harder requirement is usually product visibility: your distributor in Queensland should see your full range, your new stockist should only see the starter range, and your export partner shouldn’t see products that aren’t cleared for their market at all. Pricing and visibility are two different problems, and Shopify’s native B2B tools solve them with two different mechanisms that work together.

This is where a lot of DIY B2B builds go wrong. Merchants set up price rules, get pricing working, and then discover their entire product catalogue is still visible to every wholesale account, including products that customer shouldn’t be able to order, at prices that don’t apply to them.

This post is specifically about the catalogue side: how Shopify’s native B2B feature set lets you control which products a given wholesale customer can even see, independent of and in combination with what they pay. It assumes you already understand the concept of tiered pricing and want the mechanics of catalogue-level assignment.

What “B2B on Shopify” actually means structurally

Shopify’s native B2B functionality, built into Shopify Plus, is structured around four connected objects, and understanding how they relate is the key to getting catalogue assignment right.

Companies are the top-level wholesale account, think of it as the business entity you’re selling to (e.g., “Coastal Trading Co.”). A company can have multiple company locations underneath it, separate delivery addresses, franchise sites, or divisions of the same business, each of which can be configured independently.

Catalogues are the bridge between your product range and your customers. A catalogue is a defined set of products (and optionally specific variants) that you make available to one or more companies or company locations. You’re not editing the products themselves, you’re creating a visibility rule that says “these SKUs are available to this group of accounts.”

Price lists are attached to a catalogue and define what those visible products cost for that group, fixed prices, percentage adjustments off your standard retail price, or quantity-based pricing. A catalogue can exist without a custom price list (in which case standard pricing applies), but a price list only makes sense in the context of a catalogue.

The critical distinction: catalogues control what a customer can see and order; price lists control what they pay for it. You can have two companies looking at the exact same catalogue but paying different prices through two different price lists, or two companies with entirely different catalogues (different product sets altogether) that happen to share the same price list logic. They’re independent levers.

Setting up companies and locations correctly

Before catalogues make sense, your company structure needs to reflect how you actually sell. In Shopify admin → Customers → Companies, each company record holds:

  • Business details and default currency
  • One or more company locations, each with its own shipping address, tax exemption status, and, importantly, its own catalogue assignment

This location-level granularity matters more than most merchants expect. A single company (say, a retail chain) might have five store locations, and you may want three of them ordering from your full wholesale range while two smaller franchise locations only order from a limited range. Because catalogues assign at the location level (not just the company level), you can do this without creating five separate company accounts.

Each company location also gets assigned:
– One or more staff members (buyers) who can place orders on behalf of that location, each potentially with ordering permission limits
– Payment terms (net 30, net 60, etc., a Shopify B2B native feature)
– Tax exemption status if applicable

How catalogue assignment controls product visibility

This is the core mechanic. In Shopify admin → Products → Catalogues (or via the Companies section), you create a catalogue and:

  1. Choose which company or company locations it applies to
  2. Choose which products or specific variants are included, either by selecting products individually, by collection, or using existing product organisation
  3. Attach a price list (optional, without one, the catalogue shows standard storefront pricing)
  4. Set quantity rules if needed (minimum order quantity, order increments, maximum quantities)

Once a catalogue is assigned to a company location, when a buyer from that location logs into your storefront (or B2B-specific storefront URL), they only see the products in the catalogue(s) assigned to them. Products outside their catalogue don’t appear in search, collections, or direct links, they’re genuinely not visible, not just hidden-but-orderable.

A few mechanics worth knowing:

  • A company location can be assigned more than one catalogue. If a customer should see your “core range” catalogue plus a “seasonal” catalogue, assign both, the visible product set is the union of all assigned catalogues.
  • Catalogues respect variant-level inclusion, not just product-level. You can include a product but exclude specific colour/size variants from a given catalogue, useful when a customer is only approved to stock certain SKUs within a range.
  • Default/fallback behaviour matters. If a company location has no catalogue assigned, Shopify’s default B2B catalogue behaviour applies, which typically means either no products or your default catalogue, depending on configuration, this is worth testing explicitly rather than assuming, since an unassigned account seeing your full retail catalogue at retail prices is a common and embarrassing gap.

Layering price lists on top of catalogue visibility

Once visibility is sorted, price lists handle what those visible products cost. A price list can:

  • Set fixed prices per variant, overriding the standard price entirely
  • Apply a percentage adjustment (e.g., a straight discount off list price) across every product in the catalogue
  • Combine with quantity rules, minimum order quantities, order increments (must order in multiples of 6, for example), and quantity-break pricing (better unit price at higher volumes)

Because price lists attach to a catalogue rather than directly to a company, you can reuse one price list across multiple catalogues if the discount logic is the same but the product sets differ, or reuse one catalogue across multiple companies with different price lists layered on top for different negotiated terms. The two-object model is what gives you this flexibility; if Shopify only had one combined “customer pricing” object, you’d end up duplicating catalogues every time a price changed, or duplicating prices every time a product range changed.

A practical setup sequence

If you’re building this from scratch, this order avoids most of the rework we see merchants run into:

  1. Map your customer segments first, on paper, before touching the admin, which groups need different product ranges, and which just need different pricing on the same range? This determines how many catalogues you actually need.
  2. Create your company and company location records, including payment terms and tax status.
  3. Build catalogues around product-visibility logic, not pricing logic, name them by what they contain (“Core Range,” “Export-Approved,” “Trade Starter”), not by discount tier.
  4. Attach price lists to catalogues, setting fixed prices, percentage adjustments, or quantity breaks as needed.
  5. Set quantity rules (MOQ, increments) at the catalogue level if your production or shipping requires case-lot ordering.
  6. Assign catalogues to company locations, checking multi-location companies get the right combination.
  7. Test as a buyer, not as the admin, log in via a test company account and confirm exactly what’s visible and what it costs, for at least one account in each segment.
  8. Check the no-catalogue-assigned case explicitly, so you know what a newly onboarded company sees by default before you’ve configured anything for them.

When to bring in a specialist

Shopify’s native B2B object model (companies, locations, catalogues, price lists) is genuinely capable, for most wholesale operations, you don’t need a custom app or a headless build to get segmented catalogues and pricing working. Where it gets genuinely complex is when you’re migrating an existing wholesale customer base with negotiated pricing from a legacy system, integrating catalogue assignment with an ERP that owns your product/customer relationships, or building approval workflows for B2B account applications. That’s where a build goes from “a few hours in admin” to a project with data migration, integration, and testing considerations.

If you’re scoping a B2B rollout and want the company/catalogue/price list architecture planned properly before you start creating records, especially if you’re bringing in existing wholesale customers with established pricing, our Shopify B2B development team works through exactly this kind of structure design and migration.

FAQ

Do I need Shopify Plus to use catalogues and company-specific pricing?
Yes, Shopify’s native B2B feature set, including companies, company locations, catalogues, and price lists, is built into Shopify Plus. It is not available as a bolt-on for standard Shopify plans; merchants on standard plans typically rely on B2B-focused apps instead, which work differently.

Can a customer see both retail and wholesale pricing on the same account?
Not on the same login in the standard native flow, a B2B buyer logs in through their company account and sees catalogue-assigned products and pricing, separate from the general consumer storefront experience. If you need one person to shop both ways, that typically means separate customer accounts (one consumer, one B2B buyer).

How is a catalogue different from just hiding products with tags or collections?
Tags and collections are visible to everyone unless you build custom theme logic to filter them per customer, which is fragile and hard to maintain. Catalogues are a native permissioning layer, Shopify enforces visibility at the account level automatically, without custom theme code, and it scales cleanly as you add more companies.

Can I give a wholesale customer a discount without creating a whole new catalogue?
Yes, if they should see the same products as an existing catalogue but pay a different price, create a new price list with the adjusted pricing and attach it to their company location while keeping the same catalogue (or share the catalogue across both accounts with different price lists attached).

What happens to catalogue and price list assignments if a customer’s company location changes address or ownership?
The catalogue and price list assignments stay with the company location record itself, not the address, updating the address doesn’t affect what they see or pay. If ownership genuinely changes (a different legal entity taking over the account), you’d typically review the assignment manually rather than assume it should carry over unchanged.

Ready to plan your B2B catalogue structure?

If you’re mapping out customer segments, product ranges, and pricing tiers for a Shopify B2B rollout, it’s worth getting the architecture reviewed before you start building it in admin. Book a call with our team to talk through your wholesale structure and how it maps to Shopify’s native B2B tools.

Niraj Raut
Written by Niraj Raut SEO Manager

Niraj Raut is the SEO Manager and co-founder at Nexly. He helps Australian Shopify and Shopify Plus brands earn durable organic growth through technical SEO, search-led store architecture and content that ranks. He writes about what actually moves rankings for ecommerce.

Connect on LinkedIn
Have a Shopify project? Chat with us, takes 30 seconds.