Ecommerce Development

Shopify B2B Tiered Pricing: How to Set Up Wholesale Pricing Rules Without Breaking Your Store

Shopify B2B Tiered Pricing: How to Set Up Wholesale Pricing Rules Without Breaking Your Store

08 min read

Shopify B2B tiered pricing sounds straightforward until you're three hours in and your wholesale customers are seeing retail prices at checkout, your discount stacking is bleeding margin, and nobody can explain why a customer tagged "VIP Wholesale" is still hitting the standard price list. As store owners transition from manual, email-based wholesale workflows to digitized B2B operations, they often underestimate the technical interplay between customer records, catalog visibility, and checkout logic. This guide cuts through that. It covers how Shopify's native B2B pricing actually works, where teams consistently break it, and how to build a pricing architecture that holds up as your wholesale channel scales, ensuring that your backend configuration remains robust against the complexities of dynamic volume-based discounting. No invented results. No filler. Just the structure you need to get this right.

What Shopify B2B Tiered Pricing Actually Is

Tiered pricing in a Shopify B2B context means offering different prices — or pricing logic — to different buyer segments, based on criteria like order volume, customer classification, or account relationship. This structural approach allows merchants to move beyond flat retail pricing, enabling a sophisticated model where unit costs decrease as transaction volumes increase, thereby incentivizing larger, more predictable B2B purchasing patterns. Shopify supports this through two distinct systems, and confusing them is where most problems start, as the architectural requirements for these systems differ significantly in terms of API calls and frontend rendering behavior.

System Distinctions

Shopify Plus B2B (native, launched 2022) uses Companies, Contacts, and Price Lists — a structured account model built directly into the admin. It is the cleaner long-term solution for serious wholesale operations because it leverages native object models that are less prone to breaking during platform updates or theme modifications. Customer tag-based pricing (non-Plus or legacy setups) uses tags, discount codes, scripts, or third-party apps to approximate tiered pricing. It works, but it requires more maintenance and breaks in more places, particularly when store owners attempt to apply complex logic that the native tag system was never designed to handle at scale. Knowing which system you're operating in determines every decision that follows, as the migration from tag-based to native B2B structures often requires a complete overhaul of existing discount and collection logic to avoid permanent data corruption.

How Shopify's Native B2B Pricing Architecture Works

On Shopify Plus, the pricing stack has three layers worth understanding before you configure anything, as these layers interact dynamically to calculate the final price displayed to the end-user during the checkout flow.

The Company Model

A Company in Shopify B2B represents a wholesale account — a business, not an individual. Each Company can have multiple Locations and multiple Contacts. Pricing is assigned at the Company or Location level, not the individual customer level. This matters because it means one buyer can have different pricing depending on which location they're ordering for, a feature critical for businesses managing large enterprise accounts with multiple regional delivery points and distinct logistical requirements.

Price Lists

A Price List defines the pricing ruleset applied to a Company or Location. You can create multiple Price Lists across your catalog. Each Price List supports:

Percentage discounts off your retail price to maintain relative margins across your entire product line dynamically.

Fixed prices per variant to accommodate specific contract agreements where specific products have negotiated rates independent of retail fluctuations.

Currency-specific pricing for international accounts to ensure that wholesale pricing remains localized and compliant with regional market expectations.

Minimum order quantities per price list to enforce volume requirements that protect your operational costs and logistics efficiency.

One Company can have one active Price List per Location. If no Price List is assigned, the customer pays retail. This is the most common configuration error — accounts getting created without a Price List assignment, which inevitably leads to friction with wholesale partners who expect immediate access to their pre-negotiated tier.

Payment and Order Terms

Payment terms (Net 30, Net 60, prepayment, etc.) are set at the Company level and are separate from pricing. Don't conflate them. Pricing logic and payment logic live in different places in the admin, and failing to distinguish these leads to checkout errors where the order might process correctly, but the invoicing terms are applied incorrectly based on the wrong customer account, causing downstream accounting headaches.

The B2B Pricing Architecture Checklist

Before you build anything, map your pricing structure against these six decisions. This is the framework we use to audit Shopify B2B setups before making changes to ensure long-term stability and operational efficiency.

1. Segment clarity

Define your customer tiers before touching the admin. Common tiers: Retail, Approved Wholesale, VIP Wholesale, Distributor. Each tier should have a clear qualification criteria and a defined margin floor to ensure that you are never inadvertently selling below your cost of goods sold during automated tier transitions.

2. Price List logic

Decide whether each tier uses percentage-off retail or fixed variant pricing. Percentage-off is faster to maintain as your catalog changes, as it automatically updates when you adjust retail prices. Fixed pricing gives you more control but requires manual updates when costs shift, making it a higher-touch strategy for brands with volatile pricing.

3. Catalog scope

Decide whether all products are available to all B2B customers, or whether certain products are wholesale-exclusive, B2C-exclusive, or restricted by tier. Shopify B2B supports product visibility controls at the catalog level, which allows for advanced segment-based merchandising that protects brand equity by ensuring exclusive goods are only accessible to top-tier partners.

4. Currency and market alignment

If you sell internationally, confirm that your B2B Price Lists align with your Shopify Markets configuration. Misalignment here causes incorrect currency display at checkout, which can lead to payment failures, tax calculation errors, and significant customer support overhead as you attempt to rectify discrepancies in billing.

5. Minimum order rules

Minimum order quantities (MOQs) can be set per product within a Price List, or enforced at checkout via scripts or checkout extensibility. Decide which layer handles this before you go live, as stacking multiple MOQ layers can create an unusable checkout experience where customers are blocked from ordering even when they meet the required volume thresholds.

6. Discount stacking policy

Explicitly decide whether B2B customers can stack discount codes on top of their Price List pricing. By default on Shopify Plus, discount codes apply on top of B2B pricing. If that isn't your intent, you need a guard rail — either a checkout function or a clear policy enforced operationally, as this is the primary cause of margin erosion in high-volume wholesale environments.

Step-by-Step: Setting Up Tiered Wholesale Pricing on Shopify Plus
Step 1: Create your Price Lists

In Shopify admin, go to Customers > Companies > Price Lists. Create one Price List per pricing tier. Name them clearly — "Wholesale Standard," "Wholesale VIP," "Distributor Tier" — not "Price List 3." For each Price List, set your pricing method (percentage or fixed), apply it to the relevant products or collections, and set a currency, ensuring that your naming conventions allow for easy identification during future audits or when troubleshooting pricing conflicts.

Step 2: Create your Companies

Each wholesale account becomes a Company. Under Customers > Companies, create the Company record, add the business address as a Location, and invite the buyer Contact. Assign the relevant Price List to the Location during setup. This is the step that gets skipped when teams are moving fast — and it's why accounts see retail pricing at checkout, causing immediate brand distrust and necessitating urgent administrative intervention to correct the access levels.

Step 3: Assign Catalogs

Catalogs control product visibility for B2B customers. You can create separate Catalogs for different tiers if you need to restrict product access, or use a single Catalog across all B2B Companies if your product range is consistent. Attach the Catalog to the Company. A Company without an assigned Catalog won't see your wholesale product range in the B2B storefront, effectively isolating them from the wholesale purchasing flow despite having a valid account.

Step 4: Test before you notify

Before you invite buyers into the storefront, log in as a B2B Contact and verify:

Correct prices display on the product page to ensure the customer perceives the correct tier value immediately.

Correct prices carry through to cart and checkout to validate that backend logic is functioning across all stages of the funnel.

Payment terms display correctly to ensure the contract-specific financial terms are reflected in the purchase UI.

No retail-facing discounts or promotions are visible or applicable, preventing the unauthorized use of consumer-targeted marketing campaigns by wholesale partners.

Testing as the actual Contact — not previewing from admin — is the only reliable check, as admin previews often fail to replicate the exact session state of a live user account.

Step 5: Document the architecture

Write down which Price List is assigned to which customer tier, what the pricing logic is, and who owns updates. Pricing configuration siloed in one person's head is an operational liability. A simple internal doc or spreadsheet is enough to serve as a "Source of Truth" for your team, preventing configuration drift when your sales or operations staff changes over time.

Common Mistakes That Break Shopify B2B Pricing
Assigning Price Lists at the Company level instead of the Location level

Shopify B2B pricing applies at the Location level. If you assign a Price List to the Company itself and not to its Locations, the pricing won't carry through. Check your Location records individually, as this granular assignment is what allows for complex, multi-site corporate accounts to have distinct pricing for different distribution centers or regional offices.

Leaving discount codes active for B2B customers

If your existing discount codes are eligible for all customers and B2B customers can apply them at checkout, you're likely stacking discounts unintentionally. Audit your active discount codes and set Customer eligibility to "Specific customer segments" or disable them for B2B channels, ensuring that your wholesale margin is protected from being undercut by automated consumer promotions.

Using customer tags and native B2B simultaneously

Shopify Plus lets you run both the native B2B system and tag-based discounts. Running both at once without a clear rule for which takes precedence creates unpredictable pricing at checkout. Pick one system per customer segment to maintain a predictable, audit-able price output that does not rely on complex, overlapping discount logic.

Building on apps before testing native features

Third-party pricing apps were necessary before Shopify's native B2B system matured. For most Plus merchants today, the native toolset handles tiered pricing, MOQs, and catalog restrictions without additional apps. Adding app layers on top of native B2B creates conflicts that are difficult to debug, often resulting in performance issues and inconsistent pricing behaviors that are nearly impossible to resolve without disabling the app entirely.

Not setting a fallback price

If a B2B customer somehow reaches checkout without a Price List assigned — account created in error, Location missed during setup — they'll see your retail price. Decide in advance whether that's acceptable or whether you want a guardrail at checkout, such as a custom checkout UI element that alerts the customer to contact sales if they see retail pricing.

B2B Pricing on Non-Plus Shopify: What Your Options Are

If you're not on Shopify Plus, native B2B company accounts aren't available. Your options for tiered wholesale pricing are:

Customer tag + automatic discounts: Assign a tag (e.g., "wholesale") to approved buyers and create automatic percentage discounts scoped to that tag. Functional, but limited — you can't easily run multiple tiers without multiple discount conflicts that require significant manual cleanup.

Draft orders: Some wholesale operations skip the storefront entirely and manage B2B orders through manually created Draft Orders with custom pricing. This works at low volume. It doesn't scale as your order volume increases, and it prevents customers from self-serving, creating a bottleneck in your sales team.

Third-party apps: Apps like Wholesale Club, Bold Custom Pricing, or Quantity Breaks handle tiered pricing on non-Plus plans. They add a layer of complexity and cost, but they fill the gap. Evaluate them against your expected order volume and catalog size, ensuring you consider the long-term cost-benefit ratio of third-party subscription overhead.

Upgrading to Shopify Plus: If your wholesale channel is growing, the native B2B toolset is a genuine operational advantage. The upgrade decision should be weighed against your current order volume, the complexity of your pricing structure, and what it would cost to maintain an app-based workaround versus the reliability of a native, first-party solution.

Shopify B2B tiered pricing sounds straightforward until you're three hours in and your wholesale customers are seeing retail prices at checkout, your discount stacking is bleeding margin, and nobody can explain why a customer tagged "VIP Wholesale" is still hitting the standard price list. As store owners transition from manual, email-based wholesale workflows to digitized B2B operations, they often underestimate the technical interplay between customer records, catalog visibility, and checkout logic. This guide cuts through that. It covers how Shopify's native B2B pricing actually works, where teams consistently break it, and how to build a pricing architecture that holds up as your wholesale channel scales, ensuring that your backend configuration remains robust against the complexities of dynamic volume-based discounting. No invented results. No filler. Just the structure you need to get this right.

What Shopify B2B Tiered Pricing Actually Is

Tiered pricing in a Shopify B2B context means offering different prices — or pricing logic — to different buyer segments, based on criteria like order volume, customer classification, or account relationship. This structural approach allows merchants to move beyond flat retail pricing, enabling a sophisticated model where unit costs decrease as transaction volumes increase, thereby incentivizing larger, more predictable B2B purchasing patterns. Shopify supports this through two distinct systems, and confusing them is where most problems start, as the architectural requirements for these systems differ significantly in terms of API calls and frontend rendering behavior.

System Distinctions

Shopify Plus B2B (native, launched 2022) uses Companies, Contacts, and Price Lists — a structured account model built directly into the admin. It is the cleaner long-term solution for serious wholesale operations because it leverages native object models that are less prone to breaking during platform updates or theme modifications. Customer tag-based pricing (non-Plus or legacy setups) uses tags, discount codes, scripts, or third-party apps to approximate tiered pricing. It works, but it requires more maintenance and breaks in more places, particularly when store owners attempt to apply complex logic that the native tag system was never designed to handle at scale. Knowing which system you're operating in determines every decision that follows, as the migration from tag-based to native B2B structures often requires a complete overhaul of existing discount and collection logic to avoid permanent data corruption.

How Shopify's Native B2B Pricing Architecture Works

On Shopify Plus, the pricing stack has three layers worth understanding before you configure anything, as these layers interact dynamically to calculate the final price displayed to the end-user during the checkout flow.

The Company Model

A Company in Shopify B2B represents a wholesale account — a business, not an individual. Each Company can have multiple Locations and multiple Contacts. Pricing is assigned at the Company or Location level, not the individual customer level. This matters because it means one buyer can have different pricing depending on which location they're ordering for, a feature critical for businesses managing large enterprise accounts with multiple regional delivery points and distinct logistical requirements.

Price Lists

A Price List defines the pricing ruleset applied to a Company or Location. You can create multiple Price Lists across your catalog. Each Price List supports:

Percentage discounts off your retail price to maintain relative margins across your entire product line dynamically.

Fixed prices per variant to accommodate specific contract agreements where specific products have negotiated rates independent of retail fluctuations.

Currency-specific pricing for international accounts to ensure that wholesale pricing remains localized and compliant with regional market expectations.

Minimum order quantities per price list to enforce volume requirements that protect your operational costs and logistics efficiency.

One Company can have one active Price List per Location. If no Price List is assigned, the customer pays retail. This is the most common configuration error — accounts getting created without a Price List assignment, which inevitably leads to friction with wholesale partners who expect immediate access to their pre-negotiated tier.

Payment and Order Terms

Payment terms (Net 30, Net 60, prepayment, etc.) are set at the Company level and are separate from pricing. Don't conflate them. Pricing logic and payment logic live in different places in the admin, and failing to distinguish these leads to checkout errors where the order might process correctly, but the invoicing terms are applied incorrectly based on the wrong customer account, causing downstream accounting headaches.

The B2B Pricing Architecture Checklist

Before you build anything, map your pricing structure against these six decisions. This is the framework we use to audit Shopify B2B setups before making changes to ensure long-term stability and operational efficiency.

1. Segment clarity

Define your customer tiers before touching the admin. Common tiers: Retail, Approved Wholesale, VIP Wholesale, Distributor. Each tier should have a clear qualification criteria and a defined margin floor to ensure that you are never inadvertently selling below your cost of goods sold during automated tier transitions.

2. Price List logic

Decide whether each tier uses percentage-off retail or fixed variant pricing. Percentage-off is faster to maintain as your catalog changes, as it automatically updates when you adjust retail prices. Fixed pricing gives you more control but requires manual updates when costs shift, making it a higher-touch strategy for brands with volatile pricing.

3. Catalog scope

Decide whether all products are available to all B2B customers, or whether certain products are wholesale-exclusive, B2C-exclusive, or restricted by tier. Shopify B2B supports product visibility controls at the catalog level, which allows for advanced segment-based merchandising that protects brand equity by ensuring exclusive goods are only accessible to top-tier partners.

4. Currency and market alignment

If you sell internationally, confirm that your B2B Price Lists align with your Shopify Markets configuration. Misalignment here causes incorrect currency display at checkout, which can lead to payment failures, tax calculation errors, and significant customer support overhead as you attempt to rectify discrepancies in billing.

5. Minimum order rules

Minimum order quantities (MOQs) can be set per product within a Price List, or enforced at checkout via scripts or checkout extensibility. Decide which layer handles this before you go live, as stacking multiple MOQ layers can create an unusable checkout experience where customers are blocked from ordering even when they meet the required volume thresholds.

6. Discount stacking policy

Explicitly decide whether B2B customers can stack discount codes on top of their Price List pricing. By default on Shopify Plus, discount codes apply on top of B2B pricing. If that isn't your intent, you need a guard rail — either a checkout function or a clear policy enforced operationally, as this is the primary cause of margin erosion in high-volume wholesale environments.

Step-by-Step: Setting Up Tiered Wholesale Pricing on Shopify Plus
Step 1: Create your Price Lists

In Shopify admin, go to Customers > Companies > Price Lists. Create one Price List per pricing tier. Name them clearly — "Wholesale Standard," "Wholesale VIP," "Distributor Tier" — not "Price List 3." For each Price List, set your pricing method (percentage or fixed), apply it to the relevant products or collections, and set a currency, ensuring that your naming conventions allow for easy identification during future audits or when troubleshooting pricing conflicts.

Step 2: Create your Companies

Each wholesale account becomes a Company. Under Customers > Companies, create the Company record, add the business address as a Location, and invite the buyer Contact. Assign the relevant Price List to the Location during setup. This is the step that gets skipped when teams are moving fast — and it's why accounts see retail pricing at checkout, causing immediate brand distrust and necessitating urgent administrative intervention to correct the access levels.

Step 3: Assign Catalogs

Catalogs control product visibility for B2B customers. You can create separate Catalogs for different tiers if you need to restrict product access, or use a single Catalog across all B2B Companies if your product range is consistent. Attach the Catalog to the Company. A Company without an assigned Catalog won't see your wholesale product range in the B2B storefront, effectively isolating them from the wholesale purchasing flow despite having a valid account.

Step 4: Test before you notify

Before you invite buyers into the storefront, log in as a B2B Contact and verify:

Correct prices display on the product page to ensure the customer perceives the correct tier value immediately.

Correct prices carry through to cart and checkout to validate that backend logic is functioning across all stages of the funnel.

Payment terms display correctly to ensure the contract-specific financial terms are reflected in the purchase UI.

No retail-facing discounts or promotions are visible or applicable, preventing the unauthorized use of consumer-targeted marketing campaigns by wholesale partners.

Testing as the actual Contact — not previewing from admin — is the only reliable check, as admin previews often fail to replicate the exact session state of a live user account.

Step 5: Document the architecture

Write down which Price List is assigned to which customer tier, what the pricing logic is, and who owns updates. Pricing configuration siloed in one person's head is an operational liability. A simple internal doc or spreadsheet is enough to serve as a "Source of Truth" for your team, preventing configuration drift when your sales or operations staff changes over time.

Common Mistakes That Break Shopify B2B Pricing
Assigning Price Lists at the Company level instead of the Location level

Shopify B2B pricing applies at the Location level. If you assign a Price List to the Company itself and not to its Locations, the pricing won't carry through. Check your Location records individually, as this granular assignment is what allows for complex, multi-site corporate accounts to have distinct pricing for different distribution centers or regional offices.

Leaving discount codes active for B2B customers

If your existing discount codes are eligible for all customers and B2B customers can apply them at checkout, you're likely stacking discounts unintentionally. Audit your active discount codes and set Customer eligibility to "Specific customer segments" or disable them for B2B channels, ensuring that your wholesale margin is protected from being undercut by automated consumer promotions.

Using customer tags and native B2B simultaneously

Shopify Plus lets you run both the native B2B system and tag-based discounts. Running both at once without a clear rule for which takes precedence creates unpredictable pricing at checkout. Pick one system per customer segment to maintain a predictable, audit-able price output that does not rely on complex, overlapping discount logic.

Building on apps before testing native features

Third-party pricing apps were necessary before Shopify's native B2B system matured. For most Plus merchants today, the native toolset handles tiered pricing, MOQs, and catalog restrictions without additional apps. Adding app layers on top of native B2B creates conflicts that are difficult to debug, often resulting in performance issues and inconsistent pricing behaviors that are nearly impossible to resolve without disabling the app entirely.

Not setting a fallback price

If a B2B customer somehow reaches checkout without a Price List assigned — account created in error, Location missed during setup — they'll see your retail price. Decide in advance whether that's acceptable or whether you want a guardrail at checkout, such as a custom checkout UI element that alerts the customer to contact sales if they see retail pricing.

B2B Pricing on Non-Plus Shopify: What Your Options Are

If you're not on Shopify Plus, native B2B company accounts aren't available. Your options for tiered wholesale pricing are:

Customer tag + automatic discounts: Assign a tag (e.g., "wholesale") to approved buyers and create automatic percentage discounts scoped to that tag. Functional, but limited — you can't easily run multiple tiers without multiple discount conflicts that require significant manual cleanup.

Draft orders: Some wholesale operations skip the storefront entirely and manage B2B orders through manually created Draft Orders with custom pricing. This works at low volume. It doesn't scale as your order volume increases, and it prevents customers from self-serving, creating a bottleneck in your sales team.

Third-party apps: Apps like Wholesale Club, Bold Custom Pricing, or Quantity Breaks handle tiered pricing on non-Plus plans. They add a layer of complexity and cost, but they fill the gap. Evaluate them against your expected order volume and catalog size, ensuring you consider the long-term cost-benefit ratio of third-party subscription overhead.

Upgrading to Shopify Plus: If your wholesale channel is growing, the native B2B toolset is a genuine operational advantage. The upgrade decision should be weighed against your current order volume, the complexity of your pricing structure, and what it would cost to maintain an app-based workaround versus the reliability of a native, first-party solution.

FAQs
Web Personalisation

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

UI and UX Design

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Search Engine Optimisation

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

CRM and ERP Solutions

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Ecommerce

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Email Marketing

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Marketing Automation

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Chatbots and Conversational AI

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Chatbots and Conversational AI

Framer is a design tool that allows you to design websites on a freeform canvas, and then publish them as websites with a single click.

Let's work together

Have a project in mind?

Let's make it real.

Tell us what you're building. We'll bring the design, technology, and thinking to make it happen.

Fill up the following form to start a conversation

with our team

Let's work together

Have a project in mind?

Let's make it real.

Tell us what you're building. We'll bring the design, technology, and thinking to make it happen.

Fill up the following form to start a conversation with our team

Let's work together

Have a project in mind?

Let's make it real.

Tell us what you're building. We'll bring the design, technology, and thinking to make it happen.

Fill up the following form to start a conversation

with our team