> For the complete documentation index, see [llms.txt](https://docs-shpf.bsscommerce.com/b2b-wholesale-solution/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs-shpf.bsscommerce.com/b2b-wholesale-solution/b2b-pricing/price-list-per-customer/set-customized-pricing-per-product-per-customer.md).

# Set Customized Pricing per Product per Customer

Create a price list that sets a price for each product or variant, for a specific customer or customer group.

If you need **fine-tuned control** over pricing—setting **unique prices for each product per customer group**—use **Price Lists**. A price list gives each product or variant you add its own price (a fixed price, or an amount or percentage off or on top of the original price) for the customers you choose.

## Where to find Price Lists

Go to **B2B pricing › Price Lists**. The module page has:

* A **title row** with the module name, its status badge and the **on/off switch** — see [Turn Price Lists on or off](#turn-price-lists-on-or-off).
* Header buttons: **Settings**, **Storefront setup**, **More actions** (which holds **Import & export**) and **Guide** (opens the in-app Help center).
* The **rule list** with your price lists, and the buttons **Quick create** and **Add rule**.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-a9acb54aecc85a9026218338f3281fdd46b36a10%2Fcms-pl-setup-01.png?alt=media" alt="Price Lists module header"><figcaption><p>Price Lists module header</p></figcaption></figure>

## Turn Price Lists on or off

Use the switch next to the **Price Lists** title. When the module is off, your saved price lists do not apply on the storefront. Turning it on is also one of the checks in the **Make Price Lists live** card (see [Publish](#make-price-lists-live-publish)).

## Add a price list

1. Go to **B2B pricing › Price Lists**.
2. Click **Add rule** above the list (or **Add price list** if you have none yet).
3. The **New price list** page opens as **one page of cards**: **Rule**, **Customers**, **Markets**, **Edit price list**, **Exclusions and schedule (optional)** and **Advanced**. A **Make Price Lists live** card sits on the right. Fill in the cards below, then click **Save** in the save bar.

You can leave the editor at any time: if you have unsaved changes the save bar lets you **Discard** them.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-d2371b0b733ece4a6e2b2aafc6ef71abb09006ce%2Fcms-pl-setup-02.png?alt=media" alt="New price list page"><figcaption><p>New price list page</p></figcaption></figure>

### Rule

| Field      | Options            | What it does                                                                                                                                                    |
| ---------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name**   | Any text           | Names the price list so you can find it later. Leave it blank and the name is written for you from the customers, for example *Price list for tag distributor*. |
| **Status** | Enabled / Disabled | Only enabled price lists apply on the storefront. Disabled price lists are not applied to your storefront.                                                      |

In the rule list, the **Status** column shows a switch for each price list. A **Scheduled** badge appears next to the switch when the start date is in the future, and an **Expired** badge when the end date has passed.

### Customers

Choose who gets these prices (**Apply to customers**).

| Field                  | Options                                                                                                                                                                 | What it does                                                                                                                                                                                                                                             |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Apply to customers** | **All (logged-in and not-logged-in customers)**, **Logged-in customers**, **Not-logged-in customers**, **Specific customers**, **Customer tags**, **Company locations** | Sets which customers see the price list prices. For **Specific customers** search and select customers; for **Customer tags** add the tags (e.g. `distributor`, `wholesale`, `vip`); for **Company locations** search and select companies or locations. |

{% hint style="info" %}
**Company locations:** selecting a whole company applies to its current locations only. Locations added later are not covered automatically. You can target up to **250 company locations**.
{% endhint %}

### Markets

| Field                | Options                               | What it does                                                                               |
| -------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------ |
| **Apply to markets** | **All markets**, **Specific markets** | Restricts the price list to Shopify markets. Use **Specific markets** to pick the markets. |

### Edit price list

This card is where you choose the level, add products and set every price.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-8391c46ae8f1b629e79e7564bc2e2bebe532e6b4%2Fcms-pl-setup-03.png?alt=media" alt="Edit price list card: level menu, product search and price table"><figcaption><p>Edit price list card: level menu, product search and price table</p></figcaption></figure>

**Pick the level.** Open the level menu above the product search:

* **Product level** — one price per product, applied to all its variants.
* **Variant level** — a price for each variant separately. Useful when sizes, colors or configurations have different negotiated prices.

A price list keeps prices for **one level only**.

{% hint style="warning" %}
**Switching levels deletes saved prices.** If a saved price list already has prices, a banner shows how many are saved at the old level. When you save at the new level, a confirmation ("Save this price list at Product level?" / "Save this price list at Variant level?") asks first, and the prices saved at the old level are deleted. Switch back before saving to keep them.
{% endhint %}

**Add products or variants.** Click the **Add products** (or **Add variants**) field, or **Browse products** / **Browse variants**, and select the items. You can search by product title, SKU or barcode. In variant view you can also search directly by product title (for example "Ceramic Mug") to list all its variants.

**Set each price.** For each row, choose an option under **Options** and enter the **Amount**. **Original price** and **Modified price** show the result.

| Option                        | How it works                                | Example (original price $100) |
| ----------------------------- | ------------------------------------------- | ----------------------------- |
| **Apply a decreasing price**  | Sets a fixed final price below the original | Amount 80 → $80               |
| **Decrease a fixed amount**   | Subtracts a fixed amount                    | Amount 15 → $85               |
| **Decrease in percentage**    | Subtracts a percentage                      | Amount 20 → $80               |
| **Apply an increasing price** | Sets a fixed final price above the original | Amount 120 → $120             |
| **Increase a fixed amount**   | Adds a fixed amount                         | Amount 10 → $110              |
| **Increase in percentage**    | Adds a percentage                           | Amount 10 → $110              |

{% hint style="warning" %}
Enter an **Amount** on every row, otherwise the price list cannot be saved ("Amount can't be empty"). Use **Expand view** to see the whole table.
{% endhint %}

> **Note:** Prices higher than the original product price are not shown on the storefront. Only prices lower than the original are shown to eligible customers.

#### Set many rows at once

1. Tick the checkboxes next to the rows (or the master checkbox for the whole page).
2. Click **Set prices**. The panel says: apply one price rule to all selected rows, replacing their **Options** and **Amount**.
3. Choose **Options**, enter **Amount**, then click **Apply**. A toast tells you how many products or variants were updated. If some selected rows already had a price rule, a hint tells you that **Apply** overwrites it.
4. Click **Undo** to revert the last bulk change, or **Close** to hide the panel.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-a752b3d7c7938e45b4dfd0d49d8920e1e6178ee6%2Fcms-pl-setup-04.png?alt=media" alt="Bulk edit panel with Set prices and Paste amounts"><figcaption><p>Bulk edit panel with Set prices and Paste amounts</p></figcaption></figure>

#### Paste prices from a spreadsheet

Use this when your prices already sit in a spreadsheet.

1. Tick the rows in the **same order** as the prices in your spreadsheet.
2. Click **Set prices**, then **Paste amounts**.
3. Copy **one column** of prices from your spreadsheet and paste it into **Paste a column of prices here**.
4. Click **Apply pasted amounts**. A toast confirms how many amounts were pasted.

The **Options** you picked in the panel are used for all pasted amounts. If the pasted text has no numbers you see "The pasted text has no numbers."

### Exclusions and schedule (optional)

Open the collapsed **Exclusions and schedule (optional)** card (click **Show**).

| Field                 | Options                                                                                             | What it does                                                                                                                                                                            |
| --------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Exclude customers** | **None**, **Specific customers**, **Customer tags**, **Company locations**                          | Keeps chosen customers off this price list even if they match the Customers card.                                                                                                       |
| **Exclude products**  | **None**, **Specific products**, **Specific variants**, **Specific collections**, **Specific tags** | Keeps products (for example limited editions, services, gift cards) out of this price list. Products and collections must be published to the Online Store for a rule to apply to them. |
| **Schedule**          | **Start date**, **Start time**, optional **Set end date** with **End date** and **End time**        | Runs the price list only in this window. Outside it, standard pricing applies. Time uses your browser's time zone. The start date must be before the end date.                          |

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-3f7052ec3a30d85c4491c93c9c8a1e0c034f54ea%2Fcms-pl-setup-05.png?alt=media" alt="Exclusions and schedule"><figcaption><p>Exclusions and schedule</p></figcaption></figure>

### Advanced

Open the collapsed **Advanced** card (click **Show**) to set the **Priority** (`0` = highest). When several price lists match the same customer and product, the lowest number applies. If the numbers are equal, the oldest price list applies.

### Make Price Lists live (publish)

The **Make Price Lists live** card is on the right side of the editor. Right after the first save it moves to the top of the saved price list. It shows **Live** or **Not live yet** and checks:

1. **Rule saved** — the price list is stored.
2. **Rule is enabled** — the price list's **Status** is **Enabled** and it is inside its start and end dates. It shows **Rule is disabled** when the status is off.
3. **Price Lists module is on** — if not, click **Turn on module**.
4. **App embed is on in your theme** — if not, click **Open theme editor**, turn on the B2B Solution app embed, then come back (the card updates automatically, or click **Check again**).
5. **Price list prices in your theme** — log in to your storefront as a test customer the price list applies to (for example one with its tag) and check the price. If it does not change, click **Ask support**; our team sets it up on your theme for free.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-2f3dea92b18c02b32dd6e30ba2d97de54329ffc1%2Fcms-pl-setup-06.png?alt=media" alt="Make Price Lists live card"><figcaption><p>Make Price Lists live card</p></figcaption></figure>

## Manage price lists in the rule list

On **B2B pricing › Price Lists** each row shows **Name**, **Applies to**, the number of products or variants, **Status** (switch plus **Scheduled** / **Expired** badge when relevant) and **Actions**. Use the search box to find a price list by name.

* **Edit**, **Duplicate** and **Delete** are in the row actions.
* **Quick edit** (row action) changes **Rule name**, **Priority**, **Status** and **Applies to** without opening the editor. **Applies to** lets you switch the rule to **Customers with tag**, **Specific customers**, **All customers** or **Logged-in customers**. If the rule currently targets someone else, for example guests, the first choice is **Keep current** so nothing changes. Guests, company locations and exclusions are left as they are; change those in the full rule form.
* Select several rows and choose **Edit status** to enable or disable them together.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-a9bfb10b4089b3f2fc576c204bda472b660f314a%2Fcms-pl-setup-07.png?alt=media" alt="Rule list with status switch and row actions"><figcaption><p>Rule list with status switch and row actions</p></figcaption></figure>

## Quick create: several price lists at once

Use **Quick create** when you want a fixed price per customer group for the same products.

1. On **B2B pricing › Price Lists**, click **Quick create**.
2. Click **Select products** and pick the products (up to 50).
3. Each **Customer group** column becomes one price list. For each column choose who it applies to (customers with a tag, all customers or logged-in customers) and type a **fixed price** for every product. Use **Add customer group** for more columns (up to 5) and **Price list name** to override the auto-written name.
4. Submit to create the price lists.

Prices are fixed and apply to all markets. A product left empty in a column is not added to that price list. Open a price list afterwards to narrow it.

<figure><img src="https://1478990334-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FGolQYRPH9iUGYatlTXwl%2Fuploads%2Fgit-blob-73a97f1df43ab3ff47884c0eb760ed852d963c41%2Fcms-pl-quick-01.png?alt=media" alt="Quick create price lists"><figcaption><p>Quick create price lists</p></figcaption></figure>

## 👁 What Customers See (Storefront View)

Once everything is configured:

* Customers *not eligible* for the price list continue to see **standard catalog pricing**.
* Eligible customers see their **personalized pricing** after they log in.
* The price list prices replace the default ones for those specific products.
* If the changes don't appear as expected, open **Storefront setup** or contact support.

## FAQ

**Does a price list override Custom Pricing?** Yes. When a price list applies to the customer and product, Custom Pricing is not applied to that product. Volume Pricing can still apply on top of the price list price.

**Can I create several price lists at once?** Yes, with **Quick create** (see above), or by [importing a CSV](/b2b-wholesale-solution/b2b-pricing/price-list-per-customer/import-and-export-price-list-rules.md).

{% hint style="info" %}
If you need further assistance, please feel free to reach us at [**support@bss-b2b.solutions**](mailto:support@bss-b2b.solutions) or [**Live Chat**](https://go.crisp.chat/chat/embed/?website_id=9f64b5a9-1a02-4190-93b8-8ef56b19f740).
{% endhint %}
