A pricelist in Odoo is a set of price rules applied to a sales order, a point of sale order or a website cart. The product’s Sales Price stays the base, usually your retail price, and each pricelist changes it for a group of customers: a percentage off, a percentage added to the sales price or the cost, or a fixed price. A rule can cover all products, a category or one product, start from a minimum quantity, apply to a unit such as a carton, and run between two dates.
What changed in Odoo 20
- Three rule types. A rule now applies a Discount, a Surcharge or a Fixed Price. The Formula type of Odoo 19 is gone; its rounding and extra amount options now sit under Discount and Surcharge.
- Surcharge on cost. A Surcharge adds a percentage to the sales price, the product cost or another pricelist, so cost-plus pricing for wholesale is a single rule.
- A worked example on each rule. The rule form shows the calculation on an amount of 100 before you save it.
- Margins. In developer mode, a rule can keep the price between its base price plus a minimum amount and plus a maximum amount. On a cost-plus rule, that puts a floor and a ceiling on your margin in dinars.
A structure that fits wholesale and retail
| Pricelist | Who gets it | Rules |
|---|---|---|
| Retail | Branches, the website and walk-in customers | None, or a few dated promotions. The product’s Sales Price is the retail price. |
| Wholesale | Shops and supermarkets | Discount 15% on the sales price, 18% from 10 cartons |
| Key accounts | Large chains and institutions | Surcharge 12% on cost, rounded to 0.050 |
Keep promotions as dated rules inside these pricelists rather than as separate pricelists, so no customer has to be moved from one list to another for Ramadan or White Friday and back.
Set up a wholesale pricelist
- In Sales → Configuration → Settings, Pricing section, tick Pricelists. Tick Discounts too if wholesale customers should see their discount on quotations and invoices.
- Open Sales → Products → Pricelists and click New. Name it Wholesale and set the currency to KWD.
- In the Rules tab, click Add a line. Under Apply choose Discount, enter 15 and leave the base as sales price. Leave Category and Product empty so the rule covers all products.
- Add a second line with Discount 18 and a Minimum Quantity of 10, in the carton unit if you sell by the carton.
- On each wholesale customer, Sales & Purchase tab, set Pricelist to Wholesale. New quotations for that customer take it, and changing the pricelist on a quotation recalculates its line prices.
- Click Print on the pricelist for a price sheet to send to customers, with a column for each quantity you choose.
Quantity breaks and carton prices
Rules with a Minimum Quantity give a lower price from a set quantity. When two rules fit the same product line, Odoo takes the most specific target first (a variant, then a product, then a category, then all products), then the higher minimum quantity, then the newer rule. An example for bottled water sold by the bottle and by the carton of 24:
| Rule | Unit | Minimum quantity | Price |
|---|---|---|---|
| Sales Price on the product | Bottle | None | KD 0.150 a bottle |
| Wholesale: Fixed Price 0.110 | Carton of 24 | 1 | KD 2.640 a carton |
| Wholesale: Fixed Price 0.100 | Carton of 24 | 20 | KD 2.400 a carton |
Two details catch people out. The Fixed Price is always per unit of the product, a bottle here, even on a carton rule: Odoo multiplies it by 24. And on a rule tied to a carton, the minimum quantity counts cartons, and the rule applies only when the line is sold in cartons. To sell in cartons, turn on Units of Measure & Packagings in the settings and add the carton to the product.
Prices in fils
The Kuwaiti dinar has three decimals, and percentage rules give prices such as 0.93744. Round off to rounds the result to the nearest multiple of the value you enter, after the percentage and before the Add amount. It rounds to the nearest multiple, so the price can go down as well as up.
| Cost (KD) | Plus 12% | Round off to 0.050 | Round off to 0.250 |
|---|---|---|---|
| 0.837 | 0.93744 | 0.950 | 1.000 |
| 2.140 | 2.39680 | 2.400 | 2.500 |
| 5.615 | 6.28880 | 6.300 | 6.250 |
For price endings, combine both: round off to 1.000 and add -0.050 for prices that end in 950 fils.
Showing the discount or a net price
With the Discounts setting on, a quotation line shows the Sales Price and a Discount % only when the rule is a plain discount: a Discount rule with no rounding, no extra amount and no margins. A Surcharge, a Fixed Price or a rounded discount shows as a lower unit price with no discount. Customers who check their agreed discount on every invoice need the plain discount; a net price keeps your retail price off their documents.
Pricelists in your branches’ point of sale
- In Point of Sale → Configuration → Settings, choose the shop and, under Flexible Pricelists, pick the Available pricelists and the Default one.
- A customer with their own pricelist gets it at the till when that pricelist is in the shop’s Available list; otherwise the default applies.
- The cashier can switch the pricelist of an order from the till, for example for a trade customer buying at a branch.
More on running branches in Odoo POS for retail in Kuwait.
What we see go wrong in Kuwait
| What happens | Cause | Fix |
|---|---|---|
| A wholesale customer gets retail prices | No pricelist on the contact, or set in another company only | Set it on the Sales & Purchase tab in each company the customer buys from |
| A carton price 24 times too high | The carton price entered as the Fixed Price of a carton rule | Enter the price per unit; Odoo multiplies it |
| Prices such as 1.2645 on quotations | Percentage rules with no rounding | Round off to 0.005 or 0.050 |
| The discount is missing from invoices | Discounts setting off, or the rule has rounding | Turn on Discounts and keep wholesale rules as plain discounts |
| A promotion still running after it ended | Promotion made by changing the Sales Price | Use a rule with a validity range |
| The branch till ignores a customer’s pricelist | Pricelist not in the shop’s Available list | Add it under Flexible Pricelists for that shop |
We set up pricing for distributors and retailers in Kuwait and the Gulf, from the price list to the till: see Odoo Sales, Odoo Point of Sale and Odoo for trading and distribution.
What to do next
- Write down who pays what today: retail, wholesale, key accounts and any quantity breaks.
- Build the pricelists in a test database and check a few quotations against your current prices.
- Book a consultation if you want help moving your price lists into Odoo.
