> ## Documentation Index
> Fetch the complete documentation index at: https://spreecommerce.org/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Price Lists

> Learn how to set up volume pricing, user-specific pricing, and more in Spree Commerce.

export const Since = ({version, from}) => {
  const knownPrevious = {
    '5.0': '4.10',
    '6.0': '5.4'
  };
  const previous = (from ?? knownPrevious[version]) ?? (() => {
    const [major, minor] = version.split('.').map(Number);
    if (Number.isNaN(major) || Number.isNaN(minor) || minor < 1) {
      throw new Error(`<Since version="${version}" />: cannot derive previous version automatically. ` + `Pass an explicit "from" prop, e.g. <Since version="${version}" from="X.Y" />.`);
    }
    return `${major}.${minor - 1}`;
  })();
  return <Tooltip tip={`Available since Spree ${version}+.`} cta="Upgrade instructions" href={`/developer/upgrades/${previous}-to-${version}`}>
      <Badge icon="lock">Spree {version}+</Badge>
    </Tooltip>;
};

<Since version="5.3" />

Price lists are a powerful tool for managing customer-specific pricing strategies - essential for industries like B2B, wholesale, and marketplaces. They let you offer different prices to different customer segments based on conditions like location, quantity, or account status, without needing to duplicate product records or use heavy customizations.

With Spree’s native support for price lists, you can create and manage custom pricing logic directly in the admin dashboard - no development required.

## Create a Price List

To get started, navigate to **Products → Price Lists** in the admin dashboard. 

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/1-price-lists-tab.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=e3ff76f35c59733415b9f0b1732ff983" alt="The price list tab in Spree Commerce" width="3138" height="1410" data-path="images/user/products/price-lists/1-price-lists-tab.png" />

Here, you’ll see an overview of all active and inactive price lists. Click **New Price List** in the top right corner to open the price list creation form.

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/2-price-list-form.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=6ff6959644bec9b5d6f1ce591cc3bd60" alt="Creating a new price list in Spree Commerce" width="3138" height="1410" data-path="images/user/products/price-lists/2-price-list-form.png" />

Fill in the following fields:

* **Name** - Internal name for the price list (displayed in the admin).
* **Description (optional)** - Notes or context for other admins.
* **Start Date** and **End Date** - Defines when the price list should be active.
  * If not set, the price list will take effect immediately and it will never expire

Once you’ve completed the above, click **Create** to proceed.

## Configure a Price List

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/3-edit-form.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=8be1c7315146fe725230e3e14aa38377" alt="The price list editor in Spree Commerce" width="3138" height="1534" data-path="images/user/products/price-lists/3-edit-form.png" />

Once created, you’ll be redirected to the price list edit form, where you can define rules for when the price list should apply, add products to be included in the price list, and set the modified prices of those products.

### Add Rules

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/4-price-list-rules.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=6418155e21c168138f86b3573a015b59" alt="Adding rules to a price list in Spree Commerce" width="1698" height="588" data-path="images/user/products/price-lists/4-price-list-rules.png" />

You can add multiple rules with Match Any or Match All logic.

Available Rule Types:

* **Market** - Apply pricing to customers shopping in a specific market.
* **Volume** - Apply pricing when order quantity falls within a min–max range.
* **Zone** - Apply pricing to customers in a specific tax/shipping zone.

<Note>
  Pricing for a particular customer group or company is no longer a price list rule. Create a [Catalog](/docs/user/catalogs/catalogs) and assign it to the group or company instead — it carries its own price list, and can also restrict what they see and set order minimums. Price lists that already use a **Customer Group** or **User** rule keep working; those rules are simply not offered for new lists.
</Note>

To add a rule, simply click **Add Rule**, select a rule type, and configure its criteria.

### Add Products

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/5-add-products.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=ca253476bf4f8dc674452efdf6e5bac1" alt="Adding product to a price list in Spree Commerce" width="1700" height="932" data-path="images/user/products/price-lists/5-add-products.png" />

Next, you’ll need to add some products to the price list. To do so, click **Add Products** in Products subsection to open the product selector side panel.

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/6-select-products.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=de04033a6953151201579a48559abcf8" alt="Selecting products to add to a price list in Spree Commerce" width="3136" height="2050" data-path="images/user/products/price-lists/6-select-products.png" />

Search for products by name or SKU, select one or more products and click **Add Selected** to add them to the price list.

The selected products will now appear in the product list. Each product lists its variants beneath it with what this list charges for each one, where that amount comes from, and how many quantity breaks it carries; hover the tier count to see the full ladder.

### Setting Prices

To define custom prices for the list, click **Edit Prices** in the top right of the product list to open the price edit form.

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/7-edit-prices.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=ab7c67135911e4c0e8097611ad405c82" alt="How to edit prices on price list in Spree Commerce" width="3136" height="1770" data-path="images/user/products/price-lists/7-edit-prices.png" />

Select which currency you'd like to update prices for, and update the values in the **Price** column and optionally in the **Compare At** column.

<Note>You can highlight multiple fields and copy + paste like you would in a spreadsheet.</Note>

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/8-update-values.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=fcd46f73756269b077f6aa8be7722b43" alt="Updating price lists values in the Spree Commerce dashboard" width="2544" height="588" data-path="images/user/products/price-lists/8-update-values.png" />

Once you’ve finished entering the custom prices, click **Save** to apply your changes. 

<Note>A currency you start selling in later, by adding a market or changing an existing one, appears in every price list automatically: the list's products show up in that currency with empty prices, ready to fill in.</Note>

### Quantity Breaks

A price list can charge less per unit from a given quantity up. In the price edit form, click **Add quantity break** under a variant, enter the quantity the break starts at and the unit price from that quantity, then **Save**. A variant can carry up to ten breaks per currency on one price list, and each break must start at a different quantity.

When a customer's order line reaches a break, the line is priced at that break's unit price. A variant with breaks is priced by its breaks alone: a catalog's percentage adjustment does not apply on top of them.

### Importing and Exporting Prices

Next to **Edit Prices** you'll find **Export** and **Import**, which move a price list's prices as a CSV file, one row per variant, currency and quantity break.

**Export** downloads every priced row of the list. **Import** merges a file into the list: each row in the file is written or updated, a row with a blank price removes that row from the list (the regular price or a break alike; a variant with no rows left is no longer on the list), and prices the file does not mention are left as they are. Rows the import cannot place are listed in the import report and do not stop the rest: an unknown SKU, a SKU shared by more than one variant, a currency the store does not sell in, a price that is not a plain number like `16.50`, a quantity that is not a whole number, or an eleventh break on one variant. Rows are applied one at a time, so to replace a variant's full set of ten breaks with new quantities, import the blank-price rows that clear the old breaks first, then the new ones.

| Field              | Description                                                                                         |
| ------------------ | --------------------------------------------------------------------------------------------------- |
| **sku**            | The variant's SKU, matched regardless of letter case. Exactly one variant in the store may carry it |
| currency           | The price's currency. Defaults to the store's default currency                                      |
| min\_quantity      | The quantity the price applies from. Blank or `1` is the variant's regular list price               |
| **price**          | The unit price from that quantity, as a plain number like `16.50`. Leave blank to remove the row    |
| compare\_at\_price | The optional non-marked-down price shown next to the unit price                                     |

An exported file has exactly these columns, so it can be edited and imported back as it is. Download a working example from the import form.

## Activating the Price List

Once everything is configured, go back to the price list editor, and click **Activate** in the top right corner.

<img src="https://mintcdn.com/spreecommerce/rGSsNz8B0ixUqEIM/images/user/products/price-lists/9-active-price-list.png?fit=max&auto=format&n=rGSsNz8B0ixUqEIM&q=85&s=5b829c75f983796d58ad30e7899428a5" alt="Activating a price list in Spree Commerce" width="3134" height="1890" data-path="images/user/products/price-lists/9-active-price-list.png" />

The price list will now take effect immediately for any user or order that matches the configured rules.

You can deactivate the price list at any time by clicking the **Deactivate** button.

<Note>If you set a start date for the price list, the **Activate/Deactivate** button will instead say **Schedule/Unschedule**.</Note>
