Skip to Content

Odoo Pricelists: Advanced Pricing Rules and Formulas Guide 2026

April 14, 2026 by
Odoo Pricelists: Advanced Pricing Rules and Formulas Guide 2026
Odoo Skillz, Odoo Skillz
| No comments yet

Odoo Pricelists: Advanced Pricing Rules and Formulas Guide 2026

One price for all customers rarely works in practice. B2B customers expect negotiated rates, international buyers need currency-specific pricing, and volume discounts reward larger orders. Odoo's pricelist system handles all of these scenarios and more with a flexible rule engine that adapts to any pricing strategy.

Understanding Odoo's Pricing Engine

Odoo determines product prices through a layered system. The base price comes from the product form, but pricelists can override this at multiple levels: by customer, by quantity, by product category, or by date range. Understanding how these layers interact is essential for setting up pricing that works.

The Pricing Hierarchy

When Odoo calculates a price, it evaluates rules in this order:

  1. Fixed price rules : Specific prices set for specific products or categories
  2. Formula-based rules : Prices calculated from the product's list price using discounts, surcharges, or custom formulas
  3. Product list price : The fallback when no pricelist rule applies

Pricelist Selection Logic

Odoo selects the applicable pricelist in this priority order:

  • Sales order pricelist : If a specific pricelist is selected on the order, it takes precedence
  • Customer pricelist : If the customer has a default pricelist on their contact record, it applies automatically
  • Default pricelist : The company's default pricelist applies if no other pricelist matches

Creating Your First Pricelist

Navigate to Sales > Configuration > Pricelists. Create a new pricelist with these core settings:

  • Name : Descriptive name like "Wholesale Pricing" or "European Customers"
  • Configuration : Choose whether prices are based on the public price (list price) or a cost margin
  • Available on : Restrict to specific websites (for e-commerce) or leave open for all channels
  • Minimum amount : Optional threshold; the pricelist only applies when the order exceeds this amount

Price Rule Types

Each pricelist contains one or more rules. Rules define the conditions under which a specific pricing logic applies. Odoo evaluates rules from top to bottom and uses the first matching rule.

Type 1: Fixed Price

Set an exact price for a product or category, regardless of the list price. Use this for negotiated customer-specific prices or promotional pricing. Configure it by:

  • Setting the rule's Compute Price to "Fixed"
  • Entering the exact price in the Fixed Price field
  • Specifying the product or category this rule applies to

Type 2: Percentage Discount

Apply a percentage discount to the product's list price. This is the most common rule type for general discount pricelists:

  • Set Compute Price to "Discount"
  • Enter the discount percentage (e.g., 15 for 15% off)
  • Optionally apply to a specific product category for category-wide discounts

Type 3: Formula-Based Pricing

Formula rules calculate prices using a mathematical expression based on the product's cost or list price. This is powerful for margin-based pricing:

  • Based on: Cost : Price = Cost × (1 + Margin%). Ensures consistent margins across all products
  • Based on: Public Price : Price = List Price × (1 − Discount%) + Surcharge
  • Rounding : Round prices to .99, .95, or whole numbers for cleaner presentation

Advanced Pricing Strategies

Volume Discounts (Quantity-Based Pricing)

Odoo supports tiered pricing where the unit price changes based on order quantity. Create multiple rules within a pricelist, each with a different "Minimum Quantity":

  • 1+ units: List price (no discount)
  • 10+ units: 5% discount
  • 50+ units: 12% discount
  • 100+ units: 20% discount

Odoo evaluates quantity rules from highest to lowest and applies the first rule where the ordered quantity meets the minimum. Higher quantities get the better price automatically.

Customer Group Pricing

Create separate pricelists for different customer segments and assign them to customer records:

  • Wholesale pricelist : Assigned to wholesale customers with 25% across-the-board discount
  • VIP pricelist : Assigned to top-tier customers with 15% discount plus free shipping threshold
  • Distributor pricelist : Assigned to distributors with cost-plus pricing (cost × 1.3)

On the customer's contact form, set the Sales Pricelist field. Every sales order for that customer automatically uses the assigned pricelist.

Multi-Currency Pricelists

When selling internationally, pricelists handle currency conversion. Each pricelist has a currency field. When a pricelist uses a different currency than the company's base currency:

  • Prices are stored in the pricelist's currency
  • Odoo uses configured exchange rates for conversion when needed
  • You can set fixed prices in foreign currencies to avoid exchange rate fluctuations

Enable multi-currency at Accounting > Configuration > Settings > Multi-Currencies and maintain exchange rates at Accounting > Configuration > Currency Rates.

Date-Range Pricing

Rules can have Valid From and Valid To dates. This enables time-limited promotions, seasonal pricing, and price increases that take effect on a specific date. Combine date ranges with other rule types for powerful promotional campaigns.

Pricelists in E-Commerce

Odoo's e-commerce integrates with pricelists to show customer-specific prices on the website. When a logged-in customer with an assigned pricelist browses the shop, product prices reflect their pricelist automatically.

Geo-IP Based Pricelist Selection

For anonymous website visitors, Odoo can select pricelists based on the visitor's location using Geo-IP. Configure this at Website > Configuration > Settings and enable Geolocate Customers. Visitors from different countries see prices in their local currency automatically.

Pricelist Visibility

Control which pricelists are available on your e-commerce site using the Available on field. Restrict wholesale pricing to logged-in B2B customers while keeping retail pricing available to all visitors.

Testing and Debugging Pricelist Rules

Complex pricelist configurations can produce unexpected prices. Use these techniques to verify your setup:

Use the Pricelist Test Feature

On a pricelist form, use the test feature to calculate prices for specific products and quantities. This shows which rule matched and the final calculated price, making it easy to debug rule conflicts.

Common Rule Conflicts

  • Rule order matters : Odoo evaluates rules top to bottom. A general category discount placed above a specific product fixed price will override the specific price. Put specific rules above general ones.
  • Multiple matching rules : Only the first matching rule applies. If two rules match, the one listed first wins regardless of which gives a better price.
  • Missing product rules : If a product has no matching rule, Odoo falls back to the list price. This is usually correct but can be surprising when you expect a discount that was configured on the wrong category.

Best Practices for Pricelist Management

  • Name rules clearly : Use descriptive names like "Wholesale - 10+ units - 15% off" so team members understand what each rule does
  • Document your pricing strategy : Keep a reference document mapping customer segments to pricelists and rules
  • Review pricelists quarterly : Pricing strategies drift over time. Schedule regular reviews to ensure rules still reflect current business needs
  • Test before activating : Always test new pricelists with sample products and quantities before making them available to customers
  • Use categories for bulk pricing : Instead of creating individual product rules, apply rules to product categories for easier maintenance

Summary

Key Takeaways

  • Odoo evaluates pricelist rules top to bottom : the first matching rule wins
  • Use fixed prices for negotiated rates, discounts for percentage reductions, and formulas for margin-based pricing
  • Assign pricelists to customer records for automatic price application on every order
  • Combine quantity thresholds with pricelist rules for volume discount tiers
  • Multi-currency pricelists handle international pricing with automatic exchange rate conversion

Frequently Asked Questions

How do I set up volume discounts in Odoo?

Create multiple rules in a pricelist, each with a different Minimum Quantity. Set the discount percentage for each tier. Odoo applies the rule where the ordered quantity meets the minimum, giving larger orders better prices automatically.

Can I assign different pricelists to different customers?

Yes. On each customer's contact form, set the Sales Pricelist field. Every sales order created for that customer automatically uses the assigned pricelist, applying the correct prices without manual selection.

What happens when no pricelist rule matches a product?

Odoo falls back to the product's list price (the Sale Price on the product form). This ensures every product always has a price, even if no pricelist rules are configured for it.

How does Odoo handle pricelists with different currencies?

Each pricelist has a currency field. Prices in the pricelist are stored and displayed in that currency. Odoo uses configured exchange rates for conversion when reporting or when the company's base currency differs. You can set fixed prices in foreign currencies to avoid rate fluctuations.

Can pricelist rules have date ranges?

Yes. Each rule has Valid From and Valid To date fields. Rules outside their date range are ignored. This enables time-limited promotions, seasonal pricing, and scheduled price changes without manual intervention.

Optimize Your Pricing Strategy

Get expert help configuring pricelists, volume discounts, and multi-currency pricing for your business.

Contact Us Explore Odoo Skillz

References

Share this post
Tags
Sign in to leave a comment