Who we are

About IT Horizon

A boutique technology house engineering enterprise systems with the precision of a luxury maison.

Our story
Odoo Partner

Comprehensive Odoo

End-to-end Odoo 20 Enterprise, implemented, customized, integrated and supported by our own senior team.

Become a client
Odoo apps

Every app, configured for the Gulf

Finance, sales, supply chain, HR, marketing and services apps implemented with the local tax, payroll and language rules each country needs.

All Odoo apps
What we do

Beyond ERP

Strategy, product engineering and customer-experience work that turns systems into advantage.

Talk to us
Sectors

Industry depth

Domain fluency across the sectors that define the GCC economy, and the regulations behind them.

Discuss your sector
Learn · grow · succeed

Insights

Real-world ideas, case studies and sessions to help your business work smarter with Odoo.

Browse the blog
Contact usالعربيةBook a consultation
Home/Blog/Odoo 20 · How-to
Odoo 20 · How-to · 8 min read

Pricelists in Odoo 20 for wholesale and retail

A company that sells wholesale to shops and retail in its own branches needs more than one price per product. This guide sets up Odoo 20 pricelists for both, with quantity breaks, carton prices, prices in fils and the changes Odoo 20 made to price rules.

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

PricelistWho gets itRules
RetailBranches, the website and walk-in customersNone, or a few dated promotions. The product’s Sales Price is the retail price.
WholesaleShops and supermarketsDiscount 15% on the sales price, 18% from 10 cartons
Key accountsLarge chains and institutionsSurcharge 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

  1. In Sales → Configuration → Settings, Pricing section, tick Pricelists. Tick Discounts too if wholesale customers should see their discount on quotations and invoices.
  2. Open Sales → Products → Pricelists and click New. Name it Wholesale and set the currency to KWD.
  3. 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.
  4. Add a second line with Discount 18 and a Minimum Quantity of 10, in the carton unit if you sell by the carton.
  5. 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.
  6. 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:

RuleUnitMinimum quantityPrice
Sales Price on the productBottleNoneKD 0.150 a bottle
Wholesale: Fixed Price 0.110Carton of 241KD 2.640 a carton
Wholesale: Fixed Price 0.100Carton of 2420KD 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.050Round off to 0.250
0.8370.937440.9501.000
2.1402.396802.4002.500
5.6156.288806.3006.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

  1. In Point of Sale → Configuration → Settings, choose the shop and, under Flexible Pricelists, pick the Available pricelists and the Default one.
  2. 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.
  3. 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 happensCauseFix
A wholesale customer gets retail pricesNo pricelist on the contact, or set in another company onlySet it on the Sales & Purchase tab in each company the customer buys from
A carton price 24 times too highThe carton price entered as the Fixed Price of a carton ruleEnter the price per unit; Odoo multiplies it
Prices such as 1.2645 on quotationsPercentage rules with no roundingRound off to 0.005 or 0.050
The discount is missing from invoicesDiscounts setting off, or the rule has roundingTurn on Discounts and keep wholesale rules as plain discounts
A promotion still running after it endedPromotion made by changing the Sales PriceUse a rule with a validity range
The branch till ignores a customer’s pricelistPricelist not in the shop’s Available listAdd 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

  1. Write down who pays what today: retail, wholesale, key accounts and any quantity breaks.
  2. Build the pricelists in a test database and check a few quotations against your current prices.
  3. Book a consultation if you want help moving your price lists into Odoo.
FAQ

Common questions

Turn on Pricelists in the Sales settings, create a Wholesale pricelist with a Discount, Surcharge or Fixed Price rule, and set it in the Pricelist field on each wholesale customer’s Sales & Purchase tab.

It was removed. Odoo 20 rules are Discount, Surcharge or Fixed Price, and the rounding and extra amount that Formula offered are now available on Discount and Surcharge rules.

Add rules with a Minimum Quantity to the pricelist. When several rules match, Odoo takes the most specific product target, then the highest minimum quantity the order reaches.

Yes. A Surcharge rule based on Cost adds a percentage to the product cost, and Round off to brings the result to a price ending you choose.

Yes. Each shop has Available pricelists and a Default one under Flexible Pricelists. A customer’s own pricelist applies at the till when it is in the Available list, and the cashier can switch the pricelist of an order.

Need help with your Odoo project?

Tell us what you are working on. A senior consultant will reply with how we would approach it.

Phone
+965 5015 3388
WhatsApp
Message us
Email
[email protected]
Office
Salem Al Mubarak Street, Salmiya, Kuwait
Hours
Sunday to Thursday, 8:00 to 19:00