> 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/import-and-export-price-list-rules.md).

# Import & Export Price List Rules

When managing large catalogs or tailoring numerous pricing schemes for different B2B customer tiers, manually creating each price list in the admin can be time-consuming. The **Import & Export Price List** feature allows you to **bulk upload, update, or migrate** Price List rules using a CSV file.

{% hint style="info" %}
**Plan Requirement:** Price List per Customer and its CSV Import/Export functionality are available on the **Platinum plan** (or **Enterprise / Advanced** on newer subscription tiers).
{% endhint %}

***

## 📤 Export Existing Rules

1. Go to **B2B Pricing → Price List** (or **Price list per customer**).
2. Scroll to the bottom of the page or click **Export** ("Export rules by CSV").
3. The export runs as a background task. When finished, download the generated CSV file (`export_pl_rules.csv`).

{% hint style="info" %}
**Tip:** Always export your current rules before making large updates. The exported CSV serves as both a backup and a perfect template for editing.
{% endhint %}

***

## 📥 Import New or Updated Rules

### Step 1: Download the Sample Template

1. Go to **B2B Pricing → Price List**.
2. Click **Import** ("Import rules by CSV").
3. Click **Download Sample** (or **Download the sample file**) to get `pl_rules_template.csv`.

***

### Step 2: Fill in the CSV Template

Fill in your pricing rules according to your update goal:

| Scenario                          | What to fill in CSV                                                                                                                                                                             |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Create a new rule**             | Leave the **ID** column blank.                                                                                                                                                                  |
| **Update an existing rule**       | Include the rule's numerical **ID** (obtained from an export).                                                                                                                                  |
| **Multiple products in one rule** | Put rule settings on the first row. For subsequent products in the *same* rule, fill only the **Product**, **Discount type**, and **Discount value** columns, leaving rule-level columns blank. |

***

## 💡 Choosing the Right Discount Type

Merchants often ask which **Discount type** value to enter in the CSV. Below is a quick decision guide and complete reference:

### Quick Decision Guide

* **"I want to sell this product for an exact wholesale price (e.g., exactly $45.00)"**\
  ➔ Choose **`Fixed price`** and enter `45` in `Discount value`.
* **"I want to deduct a fixed dollar amount off the retail price (e.g., $10.00 off)"**\
  ➔ Choose **`Decrease fixed amount`** and enter `10` in `Discount value`.
* **"I want to offer a percentage discount off the retail price (e.g., 20% off)"**\
  ➔ Choose **`Decrease fixed percentage`** and enter `20` in `Discount value`.

***

### Discount Type Reference & Comparison

| Value to enter in CSV (`Discount type`) | Matching In-App UI Option   | Calculation Formula                                     | Value Format                          | Storefront Example (Original = $100.00)  |
| --------------------------------------- | --------------------------- | ------------------------------------------------------- | ------------------------------------- | ---------------------------------------- |
| **`Fixed price`**                       | *Apply a decreasing price*  | Final Price = `Discount value`                          | Positive number (e.g., `80`)          | Value = `80` ➔ Final Price: **$80.00**   |
| **`Decrease fixed amount`**             | *Decrease a fixed amount*   | Final Price = `Original Price - Discount value`         | Positive number (e.g., `15`)          | Value = `15` ➔ Final Price: **$85.00**   |
| **`Decrease fixed percentage`**         | *Decrease in percentage*    | Final Price = `Original Price × (1 - Discount value %)` | Number from `0` to `100` (e.g., `20`) | Value = `20` ➔ Final Price: **$80.00**   |
| **`Increasing price`**                  | *Apply an increasing price* | Final Price = `Discount value` *(Markup)*               | Positive number (e.g., `120`)         | Value = `120` ➔ Final Price: **$120.00** |
| **`Increase fixed amount`**             | *Increase a fixed amount*   | Final Price = `Original Price + Discount value`         | Positive number (e.g., `10`)          | Value = `10` ➔ Final Price: **$110.00**  |
| **`Increase fixed percentage`**         | *Increase in percentage*    | Final Price = `Original Price × (1 + Discount value %)` | Number from `0` to `100` (e.g., `10`) | Value = `10` ➔ Final Price: **$110.00**  |

{% hint style="warning" %}
**Important Notes for Discount Values:**

* **Exact Text:** You must enter the exact CSV values shown above (case-sensitive, e.g., `Fixed price` or `Decrease fixed percentage`).
* **No Symbols:** Enter plain numbers only in `Discount value` — do **not** add currency symbols (`$`, `€`) or percentage signs (`%`).
* **Storefront V4 Behavior:** Stores running Storefront V4 only support price reduction types (`Fixed price`, `Decrease fixed amount`, `Decrease fixed percentage`). Markup/increasing options are not displayed on storefront V4.
  {% endhint %}

***

## 📋 CSV Column Reference

The table below lists all supported columns in the Price List CSV template:

| Column Header                  | Requirement | Data Type | Accepted Values & Formatting                                                                                                                                       |
| ------------------------------ | ----------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **ID**                         | Optional    | Number    | Rule ID. Leave blank when creating a new rule; fill in matching ID when updating an existing rule.                                                                 |
| **Name**                       | Required    | String    | Internal name of the price list rule (e.g., `VIP Wholesale Pricing`).                                                                                              |
| **Priority**                   | Required    | Number    | Integer from `0` to `99` (`0` is highest priority when rules overlap).                                                                                             |
| **Status**                     | Required    | String    | `enable` or `disable`.                                                                                                                                             |
| **Market**                     | Required    | String    | `All` or specific Shopify Market name (e.g., `United States`).                                                                                                     |
| **Customer condition**         | Required    | String    | One of: `All`, `Logged-in`, `Not logged-in`, `Specific customers`, `Customer tags`, `Company locations`.                                                           |
| **Customers**                  | Conditional | String    | Comma-separated list of customer emails, tags, or company location IDs (required when condition is `Specific customers`, `Customer tags`, or `Company locations`). |
| **Exclude customer condition** | Required    | String    | One of: `None`, `Specific customers`, `Customer tags`, `Company locations`.                                                                                        |
| **Exclude customers**          | Conditional | String    | Comma-separated list of customer emails, tags, or company location IDs to exclude.                                                                                 |
| **Exclude variants**           | Optional    | String    | Comma-separated list of variant IDs, SKUs, or barcodes to exclude from the rule.                                                                                   |
| **Apply level**                | Required    | String    | `Product` (applies to all variants) or `Variant` (applies to specific variant).                                                                                    |
| **Product**                    | Required    | String    | Identifier for the item: Product Title (for Product level) or Variant ID / SKU / Barcode (for Variant level).                                                      |
| **Discount type**              | Required    | String    | One of: `Fixed price`, `Decrease fixed amount`, `Decrease fixed percentage`, `Increasing price`, `Increase fixed amount`, `Increase fixed percentage`.             |
| **Discount value**             | Required    | Number    | Positive number (e.g., `50` for $50 fixed/off, or `20` for 20%).                                                                                                   |
| **Start date**                 | Optional    | Date      | `YYYY-MM-DD` (e.g., `2026-09-01`).                                                                                                                                 |
| **Start time**                 | Optional    | Time      | `HH:MM` or `HH:MM:SS` (e.g., `00:00`).                                                                                                                             |
| **End date**                   | Optional    | Date      | `YYYY-MM-DD` (e.g., `2026-12-31`).                                                                                                                                 |
| **End time**                   | Optional    | Time      | `HH:MM` or `HH:MM:SS` (e.g., `23:59`).                                                                                                                             |

***

### Sample CSV Structure

Here is an example showing how multi-product rules are structured in the CSV:

```csv
ID,Name,Priority,Status,Market,Customer condition,Customers,Exclude customer condition,Exclude customers,Exclude variants,Apply level,Product,Discount type,Discount value,Start date,Start time,End date,End time
,VIP Wholesalers,0,enable,All,Customer tags,vip-wholesale,None,,,Product,Classic T-Shirt,Decrease fixed percentage,25,2026-09-01,00:00,2026-12-31,23:59
,,,,,,,,,,,Leather Jacket,Fixed price,120,,,,
,,,,,,,,,,,Denim Jeans,Decrease fixed amount,15,,,,
```

***

### Step 3: Upload & Import

1. In the **Import** modal, click **Add file** and select your CSV.
2. Select your import mode:
   * **Overwrite rules with matching IDs:** Updates existing rules matching provided IDs and creates new rules for rows without IDs. Unmentioned rules remain unchanged.
   * **Replace all existing rules:** Deletes all current Price List rules and replaces them entirely with the imported dataset.
3. Click **Validate and import**.
4. The system validates headers and row values. If validation passes, the import processes in the background. If errors occur, download the error report CSV to review row-level error messages.

***

## ✅ Best Practices & Troubleshooting

* **Always backup first:** Export your existing rules to a CSV before performing bulk updates or replacements.
* **Keep column headers unchanged:** Do not rename, remove, or rearrange header columns from the template.
* **One product/variant per row:** Do not list multiple products or SKUs in a single `Product` cell.
* **Check file size limits:** Ensure the file is under **10 MB** and saved in standard `.csv` format (UTF-8).
* **Propagation time:** Once imported, rule updates write to store metafields and typically take 1–3 minutes to reflect across the live storefront.

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