In short: Odoo has two kinds of price lists that are often confused: vendor pricelists (what you pay) and customer pricelists (what you charge). Both can be imported from Excel, but large files, missing exchange rates and multiple companies cause the most questions in our helpdesk. In this article you read what each price list does, how to import one without errors, how to share supplier prices across companies and currencies, and when an automatic integration is worth it.
Connecta recently described how to get product data from many suppliers into Odoo without building a full integration per supplier. That article is about automation. This one is about the basis underneath: how price lists work in Odoo, and what goes wrong when you maintain them by hand. The examples come from questions customers asked us in the past months.
Two kinds of price lists in Odoo
Vendor pricelists: what you pay
A vendor pricelist line says: supplier X sells product Y to us for this price, from this quantity, in this currency, in this period. You find them on the product, on the Purchase tab, and in the Purchase app under the vendor pricelists menu. Odoo uses them to propose the supplier and the price on a purchase order. The most important fields:
- Vendor and product.
- Vendor product code and name, so the supplier recognises your purchase order.
- Minimum quantity: from which quantity this price applies. Several lines with different quantities give you staffel prices.
- Price and currency.
- Start and end date, for price changes you already know about.
- Delivery lead time, used for planning.
- Company: empty means the line applies to all companies.
Customer pricelists: what you charge
A customer pricelist decides the sales price on a quotation. It contains rules: a fixed price, a discount on the sales price, or a formula, for example cost plus a margin. Rules can apply to one product, a category or all products, from a minimum quantity and within a period. You give a customer a pricelist on the contact, so every quotation automatically uses the right prices.
The difference matters when importing. A supplier price list from a wholesaler goes into vendor pricelists. A price agreement with a large customer goes into a customer pricelist. Mixing them up is a common reason why "the import worked but nothing changed".
Importing a price list without errors
Odoo can import both kinds from Excel or CSV. A step-by-step approach that works:
- Start from Odoo's own template. Open the list view, choose import, and download the template. Then the column names already match the fields.
- Identify products by internal reference. Product names change, references do not. Make sure every product in the file already exists in Odoo with that reference.
- Identify vendors by name or reference exactly as in Odoo. One extra space and Odoo cannot find the contact.
- Test with ten lines first. Odoo first checks the file without importing. Fix the errors on a small file before you load thousands of lines.
- Split large files. A customer reported that importing a large Excel price list left the screen grey with a spinning icon and a message that the connection was lost, in both test and production. A big file is processed in one go in the browser session. Splitting it into parts of a few thousand lines usually solves it.
- Decide on old prices. Do you overwrite existing lines, or add new lines with a start date? With start and end dates you keep history and can plan a price increase in advance.
For one customer we made a standard template with a short explanation, so their team can import a customer price list themselves from now on, without calling us each year when the new supplier prices arrive. That is often the most valuable result: not the import itself, but the fact that the customer can repeat it.
One supplier price, several companies and currencies
A question we answered recently: a company with entities in four countries uploads supplier prices in the Dutch company, in euros. The entities in Norway, Sweden and Poland purchase in their own currency. Do you need to copy every price line per company and currency?
No. In this case all 1,277 vendor price lines were linked to the Dutch company and in euros. Our advice:
- Make the lines shared by leaving the company field empty. Every company can then use them.
- Keep the price in the supplier's currency. On a purchase order, Odoo converts the price to the order currency with the exchange rate of the purchasing company on the order date.
- Do not make copies per currency. Copies drift apart at the first price change.
There is one condition, and that is where it went wrong: exchange rates must be up to date in every company. In this case the Norwegian, Swedish and Polish companies had no current rates at all. Automatic rate updates were set to manual in two companies and had stopped in the others. Without a rate, the conversion is wrong or fails. So check the currency settings per company and switch on the automatic update, before you rely on shared prices.
When is an integration worth it?
Importing by hand works fine for a few suppliers that change prices once or twice a year. It gets tedious when:
- you buy from dozens of suppliers, each with its own file format;
- prices change monthly or weekly;
- you also need stock levels or product data from suppliers, not only prices;
- mistakes in prices directly cost margin, because you sell close to cost.
Then automation pays off. The approach Connecta describes is practical: one small flow per supplier that reads their file or API, and one shared import into the standard Odoo vendor pricelists. That keeps the data in standard Odoo, so purchasing, planning and reports keep working as they should. We build such integrations on Connecta.
Checklist for price lists in Odoo
- Is it a vendor pricelist or a customer pricelist?
- Do all products exist in Odoo, with a unique internal reference?
- Do vendor names in the file match Odoo exactly?
- Did you test with a small file first?
- Do you work with start and end dates, or overwrite?
- Should the lines apply to one company or to all?
- Are exchange rates current in every company that uses foreign currency prices?
- Who imports the next price list, and is there a template with instructions?
Frequently asked questions
What is the difference between a vendor pricelist and a customer pricelist in Odoo?
A vendor pricelist records what you pay a supplier, and is used on purchase orders. A customer pricelist decides what you charge a customer, and is used on quotations.
Why does importing a large price list hang?
A large file is processed in one browser session. If it takes too long, the connection can drop. Split the file into smaller parts and test with a few lines first.
Do I need a separate supplier price per company and currency?
No. Leave the company empty to share the line, and keep the price in the supplier's currency. Odoo converts it on the purchase order with the rate of the purchasing company. Exchange rates must be up to date in each company.
When should I automate price list updates?
When you work with many suppliers, prices change often, or you also need stock and product data. Then one flow per supplier into the standard vendor pricelists saves a lot of manual work.
Finally
Good price lists are the basis for correct purchase orders and reliable margins. Want a template your team can use, a check of your multi-company setup, or an automatic supplier integration? At DAADit, AI builds and a consultant checks, at a fixed price of €1,000 per app. Contact DAADit Group or take the free Business Scan.