Odoo Multiple Prices per Product: How to Use Pricelists
odoo multiple prices per product
Also searched as
- odoo sales price list
- odoo pricelist by customer
- odoo price by quantity
Short answer
Odoo handles multiple prices per product with pricelists. Enable pricelists in Sales settings, create one pricelist per customer group, currency or channel, add rules by product, category or quantity, and assign the pricelist to a customer or choose it on the quotation. Rules can be a fixed price, a discount percentage or a formula based on another price.
Applies to: Odoo Sales (Community and Enterprise), recent versions. Menu names and setting labels vary slightly between versions, for example Odoo 16, 17 and 18.
Set up multiple prices with pricelists
- 1Go to Sales > Configuration > Settings and, under Pricing, enable Pricelists. In some versions you also choose between simple discounts and advanced price rules.
- 2Open Sales > Products > Pricelists (the path may be under Configuration in your version) and click New.
- 3Name the pricelist, set its currency, and optionally the company and website or country groups it applies to.
- 4On the Price Rules tab, add a rule. Choose Apply On (all products, a product category, a product or a variant) and set the minimum quantity if the price depends on volume.
- 5Choose the computation: Fixed Price, Discount, or Formula. For a formula, base it on Sales Price, Cost or another pricelist, with optional rounding and margins.
- 6Set start and end dates if the price is temporary.
- 7Assign the pricelist to customers on the contact form under the Sales and Purchase tab, or select it on the quotation.
- 8Create a quote and check that the unit price follows the rule. If it does not, review rule order and conditions.
How Odoo picks the price
For each order line Odoo looks at the pricelist rules in sequence, and applies the first rule that matches the product, quantity and date. More specific rules, such as a particular product with a minimum quantity, must sit above general rules such as all products.
If no rule matches, Odoo uses the product's own sales price. This is why it pays to keep a general fallback rule at the bottom of each pricelist.
Common patterns
By customer group: one pricelist for distributors, one for retail, assigned on the contact. By volume: several rules for the same product with different minimum quantities. By currency: one pricelist per currency, with fixed prices or a conversion formula.
For website sales, pricelists can be selected by country group, or by customer login. Test as a visitor and as a logged-in customer, since they can see different prices.
Checking prices in practice
If a customer sees the wrong price, check three things: which pricelist is on the contact, which pricelist is on the quotation (it can be changed after creation), and the rule order inside the pricelist. Changing the pricelist on a quotation may require updating lines to recompute prices.
For imports of many prices, export an existing pricelist, edit it in a spreadsheet and import it back, instead of typing rules by hand.
Try it here, free
Odoo Manufacturing Technical Model Names Reference
Searchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.
Common pitfalls
- !Forgetting to enable pricelists in settings.
- !Putting a general rule above a specific one, so the specific rule never fires.
- !Changing the pricelist on an existing quotation and not recomputing the lines.
- !Mixing currencies without checking the conversion rule.
- !Leaving expired rules in place with no end date.
- !Assuming variant prices follow the template price when a rule applies to the template only.
How an ERP-grounded AI assistant handles this
Why did this customer get that price is a classic investigation across contact, pricelist, rule order and date. A grounded assistant like ERPray can read the pricelist tables and the quotation line, show the query, and name the rule that applied. It reads only, so changing prices stays a human decision, and it can run on-prem where pricing data should not leave.
Frequently asked questions
Can one Odoo product have several prices?
Yes. Use multiple pricelists or several rules in one pricelist, by customer group, quantity, currency or date.
How do I give a customer their own price?
Create a pricelist for the customer, add rules for their products, and set it on their contact form.
Where do I set a quantity-based price?
In a pricelist rule, set Min. Quantity. Add one rule per price break and order them from most specific to least.
Why is my pricelist price not applied?
Often the wrong pricelist is on the quotation, a general rule sits above the specific rule, or the date range does not match.
Related
Odoo External API: Authenticate and search_read with XML-RPC and JSON-RPC
Call the Odoo external API by authenticating against /xmlrpc/2/common to get a user id, then calling execute_kw on /xmlrpc/2/object with the database, uid, password or API key, model name, method and arguments. If authenticate returns False, the database name, login, or API key is wrong, or two-factor is enforced for that user.
How-toOdoo Manufacturing API: Working with mrp.production and mrp.bom
Odoo exposes manufacturing through its normal external API: the models mrp.bom (bills of materials), mrp.production (manufacturing orders) and mrp.workorder, called via XML-RPC or JSON-RPC with execute_kw. Authenticate, search and read the BOM, create a manufacturing order, then call its action methods such as action_confirm to move it through states. There is no separate manufacturing API.
How-toOdoo Studio Custom Fields: Export, x_studio Names and Upgrade Risk
Odoo Studio saves your changes as data in the database: custom fields named x_studio_*, edited views stored as inherited ir.ui.view records, and automation rules. You can export them as a module via Studio's Export button, but upgrades can break Studio views when the base view changes, and Studio is not a substitute for version-controlled code on complex logic.
How-toHow to Create a Generic Inquiry in Acumatica
Generic Inquiries (GI) are Acumatica's no-code query builder for joining tables, adding filters, and exposing the result as an inquiry screen, dashboard data source, or API endpoint. Open System > Customization > Generic Inquiry, add your base table, define joins and conditions, then run and save. No SQL or customization project is required.
Error fixFix Odoo AccessError: You Are Not Allowed to Access Records
Odoo raises AccessError when a user's security groups do not grant a CRUD right on a model through ir.model.access.csv, or when an ir.rule record rule filters the specific record out for that user or company. Fix it by adding the user to the group named in the error, editing the model's access rights, or reviewing the record rule's domain under Settings > Technical > Security.
How-toHow to Void a Check in Sage 100
Sage 100 voids checks through Accounts Payable > Main > Check and Payment Voiding. Select the bank code, choose the check number, and Sage reverses the Cash Disbursements Journal entry and reopens the invoice it paid. A check that already cleared in Bank Reconciliation or falls in a closed period needs an extra step before it can be voided cleanly.
AI for ERPAI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's Cloud
Add grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
Stuck on Odoo (Sales)?
Talk to engineers who work inside Odoo (Sales) every week, and who build private AI that answers these questions from your own ERP data.
Keep exploring
Free tools
- Odoo Manufacturing Technical Model Names ReferenceSearchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.
- Odoo Manufacturing Setup ChecklistA practical checklist for configuring Odoo Manufacturing from inventory foundations through BOMs, work centers, planning and go-live.
- Self-Hosted Odoo AI Assistant Sizing and Value CalculatorEstimate GPU count, token volume, index size, hours saved and payback for a private on-prem AI assistant on Self-Hosted Odoo.
ERP fixes and how-tos
- Odoo Manufacturing Tutorial: From BOM to Finished ProductOdoo manufacturing tutorial for small manufacturers: set up products, BOMs, work centers and operations, run a manufacturing order, and what to check in Odoo 19.
- Odoo: Create a Manufacturing Order from a Sales OrderHow to make an Odoo sales order create a manufacturing order: BOM, Manufacture and Replenish on Order routes, warehouse settings, and why no MO appears.
- Odoo Manufacturing Reports: Production Analysis, Cost and ForecastBuilt-in Odoo manufacturing and production reports, how to forecast demand and component needs, and how to build custom MRP reports with SQL or Studio.
AI on your ERP
- AI for Odoo Manufacturing (MRP): BOMs, Work Orders and ShortagesAI for Odoo Manufacturing: BOM checks, work order delays, reordering rules and plain-language questions over mrp.production data, on-prem or private cloud.
- AI for Odoo Manufacturing That Reads Your Own Database, Not a Vendor's CloudAdd grounded, natural-language AI to Odoo Manufacturing without sending MRP, BoM, or work order data to a public model. On-prem or private cloud, ORM-native.
Integrations
- How to add AI agents to OdooHow to add AI agents to Odoo Manufacturing: a tool layer over the external API, approval before writes, and agents for MRP exceptions, POs and quality.
- How to use Claude with OdooHow to use Claude with Odoo: MCP connectors, the Anthropic API, AWS Bedrock or Google Vertex hosting, data handling, and an on-prem alternative.
Software
- OdooWhat Odoo is, how its open-source Community and Enterprise editions differ, how the manufacturing apps and XML-RPC API work, and which alternatives to compare.
- Priority SoftwarePriority Software ERP explained: modules, low-code customization, OData API integration, deployment options, limitations and alternatives for manufacturers.