Prices¶
Odoo offers multiple options to configure prices on the ecommerce. For example, you can apply prices per unit, offer discounts, and set up pricelists.
Taxes¶
To add a tax on a product, you can either set a tax in the Customer Taxes field of the product template or use fiscal positions.
See also
Choosing the displayed price tax usually depends on a country’s regulations or the type of customers (B2B vs. B2C). To select the type of price displayed, go to , select the website, scroll down to the Shop - Products section, and under Display Product Prices select between:
Tax Excluded: the price displayed on the website is tax-excluded, and the tax is computed at the order review step;
Tax Included: the price displayed on the website is tax-included.
Note
This setting is website-specific and can therefore be configured independently for every website in the database.
Tip
Switch the Tax indication toggle on in the website editor to explicitly indicate if the price is
Tax excludedorTax includedon the product page.Enable specific B2B fields in the delivery step during the checkout using the website editor.
Price per unit¶
To display a price per unit alongside the sales price on the product page, follow these steps:
Go to , scroll to the Shop - Products section, and enable Product Reference Price.
Set the product’s Sales price and select the unit (e.g., Units).
In the Base Unit Count field, enter the number of units in the product, then select the relevant unit from the dropdown list.
Example
Imagine you want to sell a 2-liter bucket of paint for $60, i.e., $30 per liter.
- menu
- Sales ‣ Products ‣ Products ‣ (product) ‣ Sales tab
- shows
- A product form with the Base Unit Count and Base Unit of Measure fields filled in for the price-per-unit display.
- highlight
- The Base Unit Count and Base Unit of Measure fields (red frame).
- data
- Product with 0.5 kg content, base unit 'kg'.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
The price per units, in this case per liter, is shown next to the sales price on the product page.
- menu
- (website) ‣ Shop ‣ (product)
- shows
- A product page showing the price per base unit under the sales price.
- highlight
- The price per unit (red frame).
- data
- Product priced EUR 5 with 0.5 kg content.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
Note
The price per unit may be mandatory in some countries.
See also
Pricelists¶
Pricelists in Odoo allow to manage flexible pricing rules and to offer different prices and discounts based on currencies, time periods, purchase volumes, customers’ location, and/or customer type. To enable pricelists for eCommerce, go to , scroll down to the Shop - Products section, enable Pricelists, and Save. Then, click Pricelists or go to and configure the relevant pricelists.
In the Ecommerce tab, configure options specific to online sales, such as assigning a Website to a pricelist, allowing customers to select it, and/or adding an E-commerce Promotional Code.
Tip
If you are using several websites and you want to use the same pricelist on several of them, you need to duplicate the pricelist for each website. If you do not assign any website, the pricelist will not be used, unless it is selectable.
Pricelists can also be assigned to a specific customer.
Note
When pricelists are enabled in the Sales app, they are automatically enabled in the eCommerce app, and vice versa.
In the list of pricelists, order the pricelists by priority: the first takes precedence over the second, the second over the third, and so on.
It is also possible to create specific pricelists for variants.
See also
Selectable pricelists¶
Selectable pricelists are useful, for example, when selling products in multiple currencies and allow customers to choose a pricelist using the catalog’s pricelist selector located next to the search bar.
- menu
- (website) ‣ Shop
- shows
- The shop page header with the pricelist selector drop-down open, listing the selectable pricelists.
- highlight
- The pricelist selector (red frame).
- data
- Pricelists 'Public (HUF)' and 'Wholesale (EUR)'.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
To make a pricelist selectable, enable Selectable.
Note
If a pricelist is designated as Selectable, and is not assigned to a specific website, then the pricelist is selectable on all websites.
If a pricelist does not appear in the selector, it may be due to the following situations:
Only one pricelist is defined as Selectable and the contact has a pricelist assigned.
Multiple selectable pricelists exist, but only those matching the customer’s country group are shown. It is strongly recommended to disable the Selectable option when using pricelists with country groups on the ecommerce.
See also
GeoIP & country groups¶
It is possible to display a specific pricelist based on the visitor’s location and IP address by assigning country groups to pricelists.
To do so, navigate to the relevant pricelist form and select the appropriate Country Groups. Create or edit as many pricelists for specific regions as needed. For instance, select European Union to apply the pricelist to all EU member states.
To create a new country group, click Search more in the dropdown list, then New. Add a Group Name and select the relevant Countries. Use Custom filters if needed.
Note
Each country group must contain at least one country.
Example
Use the following filter if you want to add all non-EU countries to the country group.
Country Group + is not in + European Union
- menu
- Settings ‣ Technical ‣ Country Groups ‣ New
- shows
- A country group form with its name and the list of countries it contains.
- highlight
- The country list (red frame).
- data
- Country group 'Eurozone' with a few countries.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
Important
When using GeoIP to determine the appropriate pricelist, all pricelists used on the ecommerce must have a country group assigned.
It is strongly recommended to disable the Selectable option when using pricelists with country groups. Indeed, all pricelists with the relevant country group are automatically applied to the catalog but if one of them is marked as Selectable, the others will disappear as soon as customers select the selectable pricelist.
Example
Imagine you create three pricelists:
EU regular priceswith theEUcountry group assignedEU prices with discountswith theEUcountry group assignedUS priceswith theUScountry group assigned
If the Selectable option is enabled for
EU regular pricesandUS prices, and the customer is from the European Union, only the pricelistsEU regular pricesandEU prices with discountswill be available. However, since theEU prices with discountlist is not selectable, it will disappear once the customer selects theEU regular priceslist and prices will be displayed based on theEU regular pricespricelist on the catalog.
Pricelist application¶
On the ecommerce, the default pricelist is automatically selected for public, non-logged in users when no country group is assigned. If GeoIP and country groups are used, public users see the pricelist of their country group by default. Logged-in users with assigned pricelists see the assigned pricelist by default if it is assigned to the website they are visiting. If not, the website’s default pricelist is applied (i.e., the first available pricelist assigned to the website and without a country group, following the sequence order).
Assigned pricelists take precedence over country-based pricelists, when applicable, unless the assigned pricelist is linked to a different country group.
Example
A customer from the United States visits the website. They do not have a portal account. The United States pricelist is applied.
A different visitor, also from the United States, has the Loyal Customer Discount pricelist assigned in their contact form. This assignment takes precedence over the country group assignation, so the Loyal Customer Discount is applied.
- menu
- Website ‣ eCommerce ‣ Pricelists
- shows
- The eCommerce pricelist list showing which pricelists are available on the website, with their Selectable, Website and Country Groups columns.
- highlight
- The Selectable and Country Groups columns (red frame).
- data
- Three pricelists.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
Discounts¶
Discounts programs¶
To enable discount programs for your ecommerce, go to , scroll down to the Shop - Products section, and enable the Discounts, Loyalty & Gift Card feature.
Configure the discount program, make sure the Website option is enabled, and add the relevant Pricelist and Website on the program form, if needed.
Permanent product discount¶
If the price of a specific product has been permanently reduced, the strikethrough strategy is commonly used. This involves showing the new discounted price, with the original price crossed out alongside it.
- menu
- (website) ‣ Shop ‣ (product)
- shows
- A product page where the original price is struck through next to the discounted price.
- highlight
- The struck-through price (red frame).
- data
- Product discounted from EUR 100 to EUR 80.
- module
- website_sale
- notes
- English UI, light theme, 1440px width.
To display a permanently discounted price, navigate to , scroll down to the Shop - Products, enable the Comparison Price option, and Save. Then, go to the product form, enter the new (discounted) price in the Sales Price field and the original one (strikethrough) in the Compare to Price field.
Note
The Compare to Price field must contain a price that is higher than the Sales Price for the original price to appear with a strikethrough.
Important
The Compare to Price is not displayed if discounted pricelists apply. If you want to use the Compare to price with another discount, configure a pricelist with a promotional code.
Lowest price of the last 30 days (Omnibus)¶
The EU Omnibus Directive requires that, when a price reduction is advertised, the prior price is
also displayed: the lowest price applied during the 30 days before the reduction. The Website Sale
Omnibus Price module (website_sale_omnibus_price) computes this price from the product’s price
history and uses it as the strikethrough price on the webshop instead of the
Compare to Price.
To enable it, go to , and in the Omnibus Price Display block:
Show 30-day lowest price: enables the display for this website.
Lookback period (days): the length of the period examined, 30 days by default.
- menu
- Website ‣ Configuration ‣ Settings
- shows
- The Website settings page scrolled to the Omnibus Price Display block, with "Show 30-day lowest price" enabled and the lookback period set to 30 days.
- highlight
- The Omnibus Price Display block (red frame).
- data
- Website "My Website".
- module
- website_sale_omnibus_price
- notes
- English UI, light theme, 1440px width, crop to the block.
When a product is on sale, the strikethrough price shown is the lowest price of the lookback period before the current reduction, so that successive reductions do not lower the reference price. If the product has no usable price history, the standard strikethrough price is kept.
Note
The price history comes from the Product Price History module (product_price_history), which
records every sales price change. See the price history documentation.
Discounted pricelists¶
It is also possible to create pricelists with discounts. To do so, create a pricelist and configure the discount.
If a pricelist contains a Discount price type, the price is striked through for applicable customers, even if the Comparison Price feature has not been enabled.
Note
If using pricelists with country groups, the discounted pricelist must be assigned the same country group as the one used for the non-discounted pricelist.
E-commerce promotional code¶
To offer a discounted pricelist for customers with a specific discount code, access the relevant
pricelist form, go to the Ecommerce tab, and add
an E-commerce Promotional Code, e.g., SUMMERSALE10%. Then, go to the Price
Rules tab, click Add a line, and configure the discount. When a customer inserts the code during the checkout process, this discount is granted according to the Price
Rules configuration.
Note
Make sure that the Promo Code option in the website editor is enabled and, if using country groups, that the discounted pricelist has the same country group assigned as the non-discounted pricelist.
Hide prices¶
Some businesses, such as B2B shops or companies that sell luxury or custom items, often prefer to showcase their products online without displaying their prices.
To hide product prices on the ecommerce, go to , enable Prevent Sale of Zero Priced Product in the Shop - Products section, and enter a redirect URL in the Button URL field. The Add to Cart button on the product page is then replaced by a Contact us button, which can be customized if needed.
After enabling this feature, either set the price to 0 for all desired products or create a
pricelist with all product prices set to 0. Ensure the
pricelist is assigned to the correct website and is listed first among the website’s pricelists.
Tip
Ensure no pricelist used on the ecommerce has been marked as Selectable to prevent accidentally displaying the zero-priced pricelist.
To hide prices from public visitors while keeping them visible to logged-in customers, create a zero-priced pricelist to be used for non-logged-in customers and assign a regular pricelist (with actual prices) to customers with portal access.
See also