Managing multiple sales prices per product in Odoo

checkout customer register store.jpg

There are a lot of different pricing strategies you can implement for your business. Your setup might require a single price for each product, or you might want to set up a variety of pricelists that are customized for each type of customer your business attracts. Steerman’s Odoo supports all of these pricing strategies in a reliable and intuitive manner both for Sales and ecommerce website(s). In this article I will cover the single price model, a multiple price model and a multiple calculated price model.

Single Price Strategy

The single price strategy is the simplest of the three pricing setups and it is configured to be the default implementation in Odoo. In this model you essentially have a single pricelist called Public and each product can have a single price assigned to it.

single price product example.jpg

You can view or edit the prices for each product in your catalog through the Product view, which can be accessed via PIM, Sales, or Inventory apps.

PIM – this app opens up directly to the Products view, or you can access it via the Products -> Products option in the top menu if you’ve switched to a different view.
Sales – to view the product list from the Sales app you would select Products -> Products from the menu on top.
Inventory – to view the product list from the Inventory app you would select Master Data -> Products from the menu on top.

You can still run a variety of pricing promotions and issue coupons, but all of these will be based on this one base price set on the product level.

Simple Pricelist Strategy

The second option you have available is to assign multiple prices for each product with the option to group them via one or more simple pricelists. This strategy allows you to set up multiple prices that follow some basic rules directly on the product level. Here, the pricelists act as buckets to help you organize your various pricing strategies and assign specific pricelists to specific customer accounts. No additional calculations are supported on the pricelist level with this option.

Multiple Prices per Product

To enable this option, select the Sales application from the main dashboard, find the Configuration option in the menu at the top, and select Settings from the drop down:

Simple pricelist configuration.jpg

Once you have the settings page loaded, scroll down to the Pricing section and check the Multiple Sales Prices per Product box. The Multiple prices per product will be the first option enabled and once it’s been selected and saved a clickable Pricelists link will appear at the bottom, which will take you directly to the Pricelists view where a Public Pricelist will be created for you by default.

A Pricing section will now appear under the Sales tab for each of your products. Here you’ll be able to enter a variety of prices for that product, taking minimum purchased quantity and an applicable date range into account.

When adding prices in this view you can select which pricelist you’d like each setting to be stored in, configure volume discounts by specifying different prices with different Min. Quantity values, or schedule price changes with the use of the Start Date/End Date fields.

Volume Discount and Scheduled Price Increase Example

In the following example I’ve configured several possible prices for our Test Product, keeping them all in the Public Pricelist. Here we have set up two different thresholds for volume discounts as well as scheduled a pricing increase for all three pricing levels to automatically start on 9/1/2021. A customer placing an order before the scheduled increase would be charged $20 per item when ordering any quantity below 15, $15 per item when ordering 15 to 99 items, and $5 per item when ordering 100 or more. All orders placed on 9/1/21 and after would be $22, $17 and $10, respectively.

Multiple prices per product example.jpg

NOTE: the minimum quantity field is considered before the date range when determining the correct price, so you’ll need to keep that in mind.

Creating Simple Pricelists

You can create a new pricelist directly from this view by selecting Add a line while in Edit mode. A popup window will appear that will let you specify the name for your new pricelist along with a fallback pricelist for use on the website. If a customer with this new pricelist assigned to them wants to purchase an item for which you haven’t provided a price specific to this pricelist, this will allow the system to pull the price from the fallback list instead. This fallback only applies to website sales since you don’t have a sales person available to make adjustments at the time of purchase. If a sales person is entering an order for a customer and there is no price set for the pricelist and quantity selected, the Sales Price from the General Information tab on the product will be used instead and the sales person will have the option to make any necessary adjustments.

In the example below, I’ve created a pricelist for my wholesale customers and I’ve specified the public pricelist as a website fallback:

create a simple pricelist with fallback.JPG

Multiple Simple Pricelists for One Product Example

Now that I have two pricelists created, I can go back to my product and set up the prices for each option. In the following example a regular customer will pay $20 for this test product if ordering less than 15 items or $15 if ordering 15 or more. A customer with access to the Wholesale pricelist will pay $10 when ordering 100-999 items and $7 for 1000 items or more. I haven’t specified a price in my Wholesale pricelist for quantities below 100 because I’m assuming that my wholesale customers will always order more and my sales team will have the ability to make pricing adjustments or select the Public pricelist on the rare instances when only a few items need to be ordered. Finally, my fallback setting will take care of pricing if a wholesale customer wants to order just a few items on the website.

Multiple pricelists per product example.jpg

I recommend taking advantage of Odoo’s Coupon and Promotion functionality for promotions instead of creating separate pricelists for promotions as this allows you better visibility and tracking into how each promotion did in terms of attracting sales.

Calculated Pricelists Strategy

If you would prefer to automate price calculations instead of manually entering individual prices on the product level, the Prices Computed From Formulas option in Sales > Configuration > Settings allows you to do just that.

Prices Computed From Formulas

Once you’ve selected Prices Computed From Formulas, you can click on the Pricelists link just below the selection to start creating and editing your pricelists. You can also access the pricelists at any point from the Products menu in the Sales app or the Pricing menu in the Steersman’s PIM app. This option gives you a lot more control over various pricing structures you can implement and is therefore a bit more complicated, but depending on your business needs, it might very well be worth the initial setup time in the long run.

pricelists dropdown in pim.jpg

By default, the Pricelists view will contain a Public Price list for each of your enabled currencies, which will contain all of the prices specified on the product level for all the items in your catalog. You can keep these lists and use them as a base for other pricelists or you can replace them entirely with other price lists that make more sense for your purposes.

default pricelists per currency.JPG

For example, lets say you would like to offer wholesale prices to some of your customers. You can create a pricelist that takes 40% off the public price and assign it to just the customers you want to have this option. I’ll show you how to configure that further down in this article.

Create a New Calculated Pricelist

You can create a list that sets all the products in a certain category to the same value, create another list that discounts public prices by 40%, or create complicated pricing formulas that generate prices on the fly. To start simply click the Create button at the top left of the Pricelist view and give your new price list a name.

list of pricelists.JPG

See Pricelists in Product Views

Steersman offers an optional module that can display pricelists in the Product view. If installed, a Show Pricelist in Products checkbox will appear at the top of each pricelist view and a Pricing tab will appear in the product view for each of your products.

If a pricelist has been configured to include a certain product and the checkbox has been checked, that pricelist will show up in the product view along with the calculated price for the given product.

price list tab for product.JPG

This view is intended to provide your sales team with prices at a glance and is not editable. To add or remove price lists from a product or adjust the calculations in any way, you’ll need to access the pricelist directly.

Multiple Currencies

If you have multiple currencies enabled via your Accounting app, you’ll be able to configure pricelists that are currency specific by specifying the relevant currency from a menu at the top. You can also specify Country Groups for which the pricelist will be valid, however in most instances this field will be left blank.

sample pricelist.jpg

Pricelist items and Calculated Pricelists

The next thing you’ll need to do is specify which categories, products, or variants you’d like this pricelist to apply to, or whether this will apply to absolutely everything. By default the pricelist will have a single entry called All Products that will apply no price modifications on a global level to everything in your catalog. You can click on this to modify it or leave it as a catch-all and add additional criteria, as needed by clicking on Add a line.

creating a pricelist item menu.JPG

When modifying a pricelist item the first selection you’ll need to make is which product level to apply the price list to.

  • Global - Apply the price computations to every single item in your catalog
  • Product Category - Specify a price category to apply the price computations to.
  • Product - Specify a product to apply the price computations to.
  • Product Variant - Specify a single product variant to apply the price computations to.

Using these criteria you can make your pricelist as general or as specific as you need.

You can specify a minimum quantity of items that need to be ordered to enable this price via the Min Quantity field on top. You can also schedule price increases or promotions by populating the valid start and end dates for the pricelist.

The following example applies a 10% discount for any item in the catalog that’s ordered in a quantity of 100 items or more:

10 percent off of all products ordered with qty of 100 or more.JPG

You can also implement the same setup as you had in the simple pricelist example mentioned above. In the following example we have added a criteria to our price list that sets the price for our Test Product to $15 when a quantity of 15 or more is ordered.

set price for test product in pricelist example.JPG

Price Computation

The next decision you will need to make is how you’d like to compute the prices for the product list you’ve configured in the top section.

Fix Price

You can set a single price for all products, an single category of products, a single product or even just a single variant of a product. If you’re selling shirts and after taking inventory noticed that you have way too many of just the XL size of a particular design, you can set a lower price specifically for that product variant and run a promotion to reduce the overstock.

Percentage (discount)

This option will take the Public Price set for all the products in the list and apply a single percentage discount to it.


This option allows you to specify which price list you’d like to use as your base, what discount you’d like to apply to it, any markups you’d like to add, which rounding method to use, or whether you’d like to specify a min/max margin over the base price.

In the following example, we’ve added a pricelist calculation for all saleable physical goods that discounts the Public Price by 40% and adds a $5 fee for handling:

price list calculations.JPG

You can specify as few or as many different Pricelist Items as you need to achieve the desired result. In the example below we have kept the catch-all item of All Products and added the discount from above as the only other item.

sample pricelist categories.jpg

In the Jobber pricelist example mentioned further in this article, you’d need a separate pricelist item for each product individually, and all of these will appear in this view.

Assign Pricelists to Customer Accounts

To ensure that your customers are seeing the prices that you’ve set up for them, you will need to assign a relevant pricelist to the parent client account. Open the CRM, Sales or Contacts apps and go to the Customers view.

  • CRM -> Sales -> Customers
  • Sales -> Orders -> Customers
  • Contacts -> filter by Customers

Once here, find the parent customer and select the pricelist this customer and their child accounts should see.

specify pricelist for client on parent level.jpg

Adding Pricelists for Websites

Steersman’s eCommerce supports the use of the same pricelists you have configured for use on the website(s) as well. Once you have your pricelists created and configured, you will need to assign them to your website(s). If you have more than one website, for example one website for US market and another for Canada, you may want to list different pricelists for each.

pricelists in website view.JPG

To add or remove pricelists for a given website open up the Website app from the dashboard, select the website you’d like to configure and click on the Pricelists tab. Here you can view any pricelists already specified, or click on the green Edit button at the top left of the screen to add or remove pricelists from the site.

Website Fallback Pricelists

Now that we have our pricelists configured for the website and specified for our clients, let’s go back to the Pricelist view and address the very bottom section: Website Fallback Pricelists. If you only have one website, or if you’ve set up your pricelists in such a way that each one covers your entire catalog you can disregard this section. However if you have multiple sites with separate sets of pricelists for each, you may want to specify a fallback pricelist. If a pricelist you have configured for a particular customer is not available for the site the customer is on, the fallback pricelist will be used instead.

website fallback pricelists.JPG

This is useful if a customer who normally uses a US website and is set up to use a US pricelist decides to order something from the Canadian website instead, or vice versa. You can set a Canadian equivalent of the US pricelist to be the default and make sure that the customer never runs into issues.

Publish all changes

Once all of your pricelists are configured and added to relevant clients and websites, you will need to rebuild the website product index by publishing all the changes you’ve made. Don’t forget this step as the changes will not appear on the ecommerce side until this is done.

publish and rebuild index.jpg

Jobber Price List for Auto Parts

You might have a situation where you have a separate price list for your catalog that is not derived from the public price in any way. For example, the Auto Parts supply industry commonly utilizes a Jobber price. This price usually falls somewhere between the MSRP and the wholesale distributor price, and generally varies depending on the vendor relationship with the business.

Since a Jobber price is not usually related to the Public or MSRP price in any way, it will need to be set for each product within this new pricelist. Once set up, you can use your stored Jobber Pricelist to generate a variety of other calculated pricelists however you like using the steps I’ve described above.

Final Notes

After all of your pricelist configurations are complete, the correct price will automatically populate when an item is added to a Sales Order, but your sales team will also be able to manually override the price if needed. On the ecommece side, your customers will need to make sure that they’re logged in in order to see the prices intended for them.

You can make further adjustments at any time and always maintain full control over who gets charged what and when.