---
title: "How to create a wholesale price list with fixed prices"
description: "A Process Wholesale price list sets a fixed price per product variant for customers tagged B2B and the list's tag. Create it under Discounts > Price Lists on the Professional plan; the price is applied at checkout."
type: how-to
plans: [Professional]
keywords:
  [
    price list,
    set price list,
    pricelist,
    fixed wholesale price,
    customer-specific pricing,
    B2B price list,
    custom prices per customer group,
    net price list,
    Shopify wholesale price list,
  ]
questions:
  - "How do I create a wholesale price list in Process Wholesale?"
  - "What is the difference between a price list and a percentage discount?"
  - "Does a price list follow a collection when I add new products to it?"
  - "What happens to a price list price when I change the retail price?"
  - "Why can I see only 200 products when I edit a price list?"
  - "What happens if a customer has two price-list tags?"
  - "Can I reuse the name of a deleted price list?"
last_verified: 2026-11-11
order: 8
---

# How to create a wholesale price list with fixed prices

A Process Wholesale price list sets the exact price a wholesale customer (B2B customer) pays for each product variant, such as $12.50 for a product that sells for $20.00 at retail. Create one in the Process Wholesale app under **Discounts > Price Lists > Create new pricelist** on the Professional plan. The list's name is also a customer tag: a logged-in customer who has both the `B2B` tag and the list's tag pays the list price at checkout. Price lists are also called set price lists, fixed-price lists or customer-specific pricing.

**At a glance**

- **Plan:** Professional
- **Where:** Process Wholesale > **Discounts** > **Price Lists** tab
- **Applies to:** Logged-in customers with the `B2B` customer tag and the price list's tag
- **Price type:** A fixed amount per variant in your store currency, not a percentage
- **Applied:** In Shopify checkout, as a discount labeled `PW : <price list name>` on each line
- **Large lists:** The editor loads at most 200 products. For bigger lists, use [CSV import, update and export](price-list-csv-import.md).

## How a price list differs from a percentage discount

A price list stores a fixed price for each variant. A [flat discount or tier discount](discount-types.md) takes a percentage or an amount off the retail price. With a price list, the customer pays the price you entered no matter what the retail price is: if you raise the retail price, the wholesale customer still pays the list price. With a 20% flat discount, the wholesale price moves whenever the retail price moves.

Use a price list when you have agreed prices per product, for example from a wholesale price sheet. Use a flat or tier discount when one rule fits many products.

## Before you start

- Your store must be on the Professional plan. On other plans the **Price Lists** tab is visible, but its buttons read **Upgrade to Professional**. Current plan prices are shown on the Shopify plan page that opens from **Plan** in the app.
- Decide the name of the list. The name becomes the customer tag, and it cannot be changed after the list is saved.
- For a list with more than 200 products, start with [Import from CSV](price-list-csv-import.md) instead of the editor.

## Steps to create a price list in the editor

1. In Shopify admin, open the **Process Wholesale** app and select **Discounts**.
2. Select the **Price Lists** tab, then select **Create new pricelist** (or **Create new price list** when you have no lists yet). The **Create new set price list** page opens.
3. In the **Name** card, enter a name for the list. The field starts with a suggested name such as `newpricelist547`. Replace it with a name such as `wholesale` or `distributor2`.
4. In the **Select products to add to list** card, choose how to load products:
   - **Add All products** loads the products in your store, up to 200.
   - **Add individual products**, then **Select product**, opens the Shopify product picker. The button then shows **{count} products selected**.
   - **Add collections**, then **Select collection**, opens the collection picker. The button then shows **{count} collections selected**.
5. Select **Populate items in price list**. The products appear in the price table. To load more products later, change the choice and select **Add items to price list**.
6. In the price table, enter a **Wholesale price** for each product:
   - The **Title** column shows the product, and **{count} variants** with an arrow when the product has more than one variant.
   - **Current Price** shows the retail price, or the lowest to highest price across variants. It cannot be edited.
   - A price typed on the product row is copied to every variant of that product when you leave the field.
   - Expand a product to type a different price for each variant. Each variant field shows its current retail price as a placeholder.
   - The reset icon clears the prices of a product or a variant. The delete icon removes the product from the list.
7. Select **Save** in the save bar at the top of the page.

The app shows **Price list created** and returns to the **Price Lists** tab. The list's prices apply at checkout as soon as the save finishes.

Video walkthrough: [How to create custom price lists](https://vimeo.com/1148192653) (6 minutes) shows how to create price lists that you can assign to customers.

### Price list name rules

- The name can contain only lowercase letters and numbers. Capital letters are turned into lowercase, and spaces, hyphens and other characters are removed as you type. **Import from CSV** takes its name from the same field, so every price list name created in the app is lower case.
- The name cannot contain `b2b` in any capitalization. The field does not accept the letter that would complete `b2b`, so the name stays as it was before that keystroke.
- An empty name shows **Price list tag name is required. Please enter a discount tag name.**
- The name must be unique among your price lists. A name that is already used shows **A tier discount with the tag name "<name>" already exists. Please use a different tag name.** The message says "tier discount" but refers to the price list name.
- Use a name that no other discount and no other customer tag uses, as the **Name** card asks.
- The name cannot be changed once the list is saved. To use a different name, create a new list.

### Every variant needs a price

When a product is in the price table, every one of its variants needs a wholesale price. You cannot give a list price to only some variants of a product in the editor.

- If no variant has a price, saving shows **Please add custom prices to every variant in the price list.**
- If some variants of a product have no price, saving shows **The following products have variants without a custom price: {products}. Please set a price for all variants.**

Errors appear in a red banner titled **Error** at the top of the page. To leave a variant out, remove the whole product with the delete icon, or type a price on the product row so every variant gets it.

### Choosing a collection does not make the list follow it

**Add All products**, **Add individual products** and **Add collections** are only ways to load products into the price table. The price list saves the prices of the variants in the table, not the collection or the choice. A product added to the collection later is not added to the price list. To include it, open the list, load the product and give it a price.

## How to tie a price list to customers

A customer gets the price list when the customer has two tags in Shopify:

1. `B2B`, the tag Process Wholesale adds when you approve a customer. Any capitalization of `B2B` works.
2. The price list's name as a tag, for example `wholesale`. Spell the tag exactly as the price list name, in lower case.

You can add the price list's tag from the Process Wholesale **Customers** page with **Manage discount tags**, to every wholesale customer at once with **Bulk assign discount**, automatically on approval with **Settings > Customer settings > Auto assign discount tags**, or by hand in Shopify admin. See [how to assign discounts to wholesale customers](assign-discounts-to-customers.md) and [automatic discount tags on approval](../customers/auto-assign-discount-tags.md).

> **Important:** Give each customer only one price-list tag. When a customer has two price-list tags that both price the same product, the **Priority** order on the **Price Lists** tab does not decide which list checkout uses, and Quick Buy can show a different list price than checkout charges.

## What your customers see

**In the cart and at checkout.** Each eligible line gets a discount labeled `PW : <price list name>`, for example `PW : wholesale`, that brings the line down to the list price. The app's **Name** card describes this: the name is shown as a discount under the line item in the cart and checkout.

**On the product page.** The theme keeps showing the retail price. When the [Product Wholesale block](../storefront/product-page-wholesale-prices.md) is on the product page, a logged-in customer with a tag that contains `b2b` and the price list's tag sees one row for the variant: quantity **Any**, the discount (retail minus list price) and the wholesale price. For a $20.00 variant with a list price of 14.50, the row reads Any, $5.50, $14.50. When a customer has both a cost plus markup and a price list for the same variant, the block shows the cost plus markup price. A price list row takes the place of quantity tiers and flat discounts in that table.

**In Quick Buy.** [Quick Buy](../storefront/quick-buy-prices.md) shows the list price as the unit price for customers tagged `B2B`, and the difference from retail in the discount column. A $10.00 product with a list price of 7.50 shows $7.50, with a discount of $2.50.

> **Important:** On a store that sells in more than one currency, the Product Wholesale block and Quick Buy show the price-list amount as you entered it, without converting it to the customer's currency. Checkout converts it. Tell customers who buy in another currency that the checkout price is the one they pay.

**Who sees retail prices.** Customers who are not logged in, customers without the `B2B` tag, customers without the price list's tag, and variants that are not on the list all get the retail price with no `PW :` discount. Pending customers tagged `B2B_Registeration` (the tag is spelled this way) can see a price list row in the Product Wholesale block when they have the list's tag, but they pay the retail price at checkout until you approve them.

## How the price list price reaches checkout

At checkout, Process Wholesale applies a discount on each item equal to the line's current unit price minus the list price. The customer ends up paying the list price for each unit.

Process Wholesale applies the price list only when all of these are true:

- The store is on the Professional plan.
- The customer is logged in and has the `B2B` tag and the price list's tag.
- The variant in the cart has a price on that list.

**Example.** Your store currency is USD. A variant retails at $20.00, and the `wholesale` price list sets it to 12.50. A customer with the tags `B2B` and `wholesale` buys 3. The discount is $7.50 per item ($20.00 − $12.50), $22.50 for the line, and the customer pays $12.50 each. The discount is labeled `PW : wholesale`.

**Retail price changes later.** You raise the retail price to $25.00. The discount becomes $12.50 per item, and the customer still pays $12.50. The list price stays fixed; the retail price only changes the size of the discount.

**Another currency.** You enter list prices in your store currency. When a customer pays in another currency, Process Wholesale converts the list price at the exchange rate Shopify uses for that checkout. With a list price of 12.50, an exchange rate of 0.9 and a line price of €18.00, the discount is €6.75 (18.00 − 11.25) and the customer pays €11.25. Any market-specific price on the product does not change the result: the customer pays the converted list price.

**A price of 0.** A list price of 0 makes the variant free for customers on that list.

## Price List Discount combinations

The **Price List Discount combinations** card under **Settings > Discount settings** sets which other discount types can apply to the same order as a price list: **Product Discounts**, **Order Discounts** and **Shipping Discounts**. All three are off by default, and the card is shown only on the Professional plan. For a flat or tier discount to apply on the same order as a price list, check **Order Discounts** in **Price List Discount combinations** and **Product Discounts** in the main **Discount combinations** card, then select **Save**. See [Using Shopify discount codes with wholesale discounts](discount-codes-and-combinations.md) and [which wholesale discount applies](discount-priority-and-stacking.md).

## How to edit or delete a price list

On the **Price Lists** tab, select **Edit** next to the list. The page title reads **Managing <name>**, and the page loads with **Add individual products** selected and the list's products in the table. Change prices, add or remove products and select **Save**. The app shows **Price list updated**.

Saving from the editor replaces the whole list with what is in the table: products that are not in the table are removed from the list.

To delete a list, open it and select **Delete**. Delete removes the price list immediately, with no confirmation step, and shows **Discount deleted**. Process Wholesale also removes the list's tag from your approved wholesale customers. Pending customers keep the tag.

The **Priority** arrows on the **Price Lists** tab change the order of the lists in the table.

## Limits and things to know

> **Important:** For a price list with more than 200 products, change prices with **Update from CSV**. The editor loads at most 200 products, and at most 200 variants of each product. Saving from the editor removes the products and variants it did not load. **Add All products** also loads only up to 200 products.

> **Important:** Use a new name for a new price list. When you delete a price list, the prices it set stay stored on the products. If you later create a price list with the same name, the old prices reappear in the editor and apply at checkout for products that are not on the new list.

- **One price per variant per list.** A price list does not have quantity breaks. For volume pricing, use [quantity tier discounts](quantity-tier-discounts.md).
- **Prices are in your store currency.** Checkout converts them for other currencies.
- **A list price of 0 shows as empty in the editor.** When you edit a list that has a variant priced at 0, the editor shows that variant without a price and asks you to enter one before saving. Enter 0 again.
- **Delete has no confirmation.** Select **Delete** only when you mean it.
- **The name cannot be renamed.** Create a new list and move customers to the new tag instead.
- **The plan is Professional.** On other plans price lists do not apply at checkout and do not show on the storefront. After a downgrade, your price lists and customer tags are kept, and they apply again when you return to Professional.
- **No Shopify Plus requirement.** No Process Wholesale feature is limited to Shopify Plus stores.

## Troubleshooting

| Symptom                                                             | Likely cause                                                                          | Fix                                                                                                                               |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| A customer pays the retail price                                    | The customer is not logged in, or is missing the `B2B` tag or the price list's tag    | In Shopify admin, open the customer and add both tags. Approve pending customers in **Customers**.                                |
| No customer gets list prices                                        | The store is not on the Professional plan                                             | Check the plan under **Plan**.                                                                                                    |
| One product is at retail price                                      | That variant has no price on the list                                                 | Open the list, load the product and give every variant a price.                                                                   |
| Products disappeared from a list after saving                       | The list had more than 200 products, and the editor saved only the products it loaded | Restore the list with **Update from CSV**. See [price list import problems](../troubleshooting/price-list-import-problems.md).    |
| A customer gets a different list than expected                      | The customer has two price-list tags                                                  | Remove all but one price-list tag from the customer.                                                                              |
| Saving shows "variants without a custom price"                      | A product in the table has a variant with no price                                    | Price every variant, or remove the product.                                                                                       |
| A flat or tier discount does not apply together with the price list | The combination checkboxes are off                                                    | Turn on **Order Discounts** under **Price List Discount combinations** and **Product Discounts** under **Discount combinations**. |

## Frequently asked questions

### What is the difference between a price list and a percentage discount?

A price list sets a fixed price per variant, and a percentage discount takes a share off the retail price. With a price list the customer pays the price you entered even when the retail price changes.

### Does a price list follow a collection when I add new products to it?

No. **Add collections** only loads the collection's current products into the table. Products added to the collection later are not on the list until you add them and give them a price.

### What happens to the price list price when I change the retail price?

Nothing changes for the wholesale customer. The customer still pays the list price; only the size of the `PW :` discount changes.

### Why can I see only 200 products when I edit a price list?

The editor loads at most 200 products and 200 variants per product. Manage larger lists with **Export to CSV** and **Update from CSV**, and do not save them from the editor.

### What happens if a customer has two price-list tags?

Which list applies is not set by the **Priority** order, and Quick Buy and checkout can show different prices. Give each customer one price-list tag.

### Can I reuse the name of a deleted price list?

You can, but the deleted list's prices come back for products the new list does not price. Use a new name instead.

## Related articles

- [How to import, update and export a price list with CSV](price-list-csv-import.md)
- [How to assign discounts to wholesale customers](assign-discounts-to-customers.md)
- [Wholesale discount types compared: flat, tier, price list and cost plus markup](discount-types.md)
- [Which wholesale discount applies: priority and stacking rules](discount-priority-and-stacking.md)
- [Price list CSV import problems](../troubleshooting/price-list-import-problems.md)
