Importing supplier price lists into Odoo consists of loading the price lists that your suppliers provide (CSV, XML, API, or web portal) into the ERP's Purchasing/Inventory module, keeping costs, discounts, and references up to date. The process is automated with mapping rules, validations, and, in recent months, with AI agents that read emails and heterogeneous catalogs without touching a single line of Python.
What importing supplier price lists in Odoo actually means
In the day-to-day of a company with dozens of suppliers, price lists change every week: raw material increases, temporary campaigns, revised framework agreements. Having that data outdated in Odoo causes miscalculated margins, sales at the wrong price, and stock valued below the real cost.
That is why importing price lists is not a one-off task: it is a recurring flow that should run on a scheduled basis. In Odoo Community (versions 17 and 18) and in Odoo Enterprise, there are three official ways to do it, plus a fourth that the most digitized companies are already exploring.
Native Odoo methods for loading price lists
1. Manual import from CSV or Excel
The Purchases module includes an assistant in Configuration > Import that accepts CSV/XLSX files. For it to work without errors:
- The CSV must respect the column order Odoo expects: internal reference, supplier reference, product name, price, currency, minimum quantity, and validity date.
- The headers must match exactly the fields of the product.supplierinfo model.
- It is advisable to check "Update if it exists" instead of "Create new" to avoid duplicates due to version changes.
It is the most used method in small companies, but it does not scale: when you have 15 suppliers that renew every Monday, someone in the purchasing department ends up wasting three hours clicking "Import."
2. Electronic exchange via XML-RPC or JSON-RPC API
For suppliers with their own system (EDI, their own ERP, B2B marketplace), Odoo exposes a complete API. What is common is:
- Generate an API key in the user with purchasing permissions.
- Build a Python script or a low-code tool that reads the supplier's endpoint.
- Transform each supplierinfo into the format Odoo understands (dictionary with the model fields).
- Run the execute_kw call periodically via cron or Airflow.
This is where many SMBs get stuck, because they do not have an in-house technical team. In our automation guide for SMBs we explain how to set up this flow without programming.
3. Purchase Price List Update module from the OCA
The OCA (Odoo Community Association) maintains a stable module that updates prices in bulk from a CSV, keeping history and calculating percentage variations. It is the recommended option if you work with Odoo Community and need change traceability.
4. AI agents that read emails and PDF catalogs
The fourth way, the most recent, consists of deploying an agent that monitors the purchasing inbox, opens attachments (PDF, XLSX, scanned images), extracts the price lists with OCR + LLM, and launches the import via API directly in Odoo. It is exactly the type of project we address in this comparison of AI agent providers for companies without a technical team.
Step by step: functional CSV import
Although option 4 is the most advanced, most of the companies that come to us start from option 1. These are the steps we recommend:
- Export your supplier's price list in CSV. If they only provide it in PDF, ask for the equivalent or use a conversion tool.
- Check that the references match the ones you have in Odoo. If your supplier uses EAN13, create it as a barcode in the product form and map by it.
- In Odoo, go to Purchases > Configuration > Supplier Price Lists > Import.
- Load the CSV, assign the default supplier, and check the preview: Odoo shows how many lines it will create, update, or reject.
- If the preview is correct, launch the import.
- Schedule a validation email to the purchasing manager so they confirm.
Common errors when importing price lists
- Different currency. The supplier invoices in USD and Odoo is configured only in EUR. Solution: activate multi-currency in Accounting > Configuration > Currencies.
- Overlapping validity dates. The same supplier has two active price lists for the same product. Review the date_start and date_end fields.
- Minimum quantities not respected. The price list states "from 100 units, 5% discount." If you do not fill in min_qty, Odoo does not apply the discount.
- Taxes. A VAT change at the supplier is applied automatically, but if your product already had another one, the result is a mismatch. Solution: company_id field on the price list.
- Special characters (ñ, accents, quotes in the product name). Solution: UTF-8 encoding and double-quote escaping.
How to automate price list import with AI
When the company works with more than five suppliers and price lists change every month, automating stops being a luxury and becomes a necessity. There are three automation levels we see in production:
Level 1: Cron + script
An Odoo cron or a server cron launches every Monday at 07:00 a Python script that downloads the CSVs from an FTP/SFTP and imports them. Cost: low. Limitation: it only works if the format is stable.
Level 2: RPA + API
Tools like UiPath or Make connect to the supplier's portal (even if it has no API), extract the table, normalize it, and send it to Odoo via JSON-RPC. This is what we explain in depth in our automation case study for travel agencies with tour operator catalogs.
Level 3: End-to-end AI agent
The agent reads the email, detects attachments, decides whether it is a price list or an invoice, extracts the structured data with an LLM, validates against the product records in Odoo, launches the import, and notifies the responsible person via Slack or WhatsApp. At AizuaLabs we deploy these agents from €29/month (web chat), €99/month (sector-specific agents), and €149/month (WhatsApp), VAT not included.
Checklist before going into production
- Test the import in a staging environment with a real copy of the database.
- Verify that the permissions of the user executing the import are the minimum necessary.
- Set up an audit log: Odoo records each change in mail.message if you enable tracking in Settings > Technical > Audit.
- Define what to do when a row fails: discard, retry, or notify a human.
- Document the mapping. An Excel sheet with the column-CSV ↔ Odoo-field equivalence saves hours when something breaks.
Frequently asked questions
Can Odoo import price lists in XML format in addition to CSV?
Yes, although Odoo's standard assistant is designed for CSV/XLSX. For XML you need an OCA module (base_import_xml) or a custom script that parses the XML and uses the JSON-RPC API to create the records in product.supplierinfo.
How often should supplier price lists be updated?
It depends on the industry. In food and materials, every week. In industrial with annual contracts, once a month is usually enough, unless a revision clause is triggered. The important thing is to automate the task so that the timeframe is realistic.
What if my supplier sends me the price list as a scanned PDF?
You need a prior OCR step. Today the most effective approach is an AI agent that combines OCR (Tesseract or Google Document AI) with an LLM that understands tables. Then, the result is injected into Odoo through route 3 or 4 described above.
Free 30-60 min audit: we tell you what to automate first and its ROI. Book audit →