Skip to content

Fix Odoo Pricelist Not Applying: Rules, Priority, and Configuration Issues

DeployMonkey Team · March 23, 2026 10 min read

The Pricelist Problem

Pricelists in Odoo control pricing for different customer segments, currencies, and promotions. When they do not apply correctly — the wrong price appears on quotations, the website shows base prices instead of discounted ones, or POS ignores the pricelist entirely — it causes confusion and potentially lost revenue.

How Odoo Pricelists Work

The pricelist evaluation chain:

  1. Customer has a default pricelist (partner form → Sales & Purchase tab)
  2. Sales order / POS session / website uses the customer's pricelist
  3. For each product, Odoo evaluates pricelist rules from lowest sequence to highest
  4. The first matching rule determines the price
  5. If no rule matches, the product's list price is used

Cause 1: Pricelist Not Assigned to Customer

# The customer is using the default pricelist, not the special one

# Fix:
# Contacts → select customer → Sales & Purchase tab
# "Sale Pricelist" field → select the correct pricelist

# For website customers:
# The pricelist is determined by:
# 1. Customer's assigned pricelist (if logged in)
# 2. Geo-IP country detection
# 3. Website default pricelist

# Check website pricelist assignment:
# Website → Configuration → Settings → Pricing section

Cause 2: Pricelist Rules Not Matching

# The rule has conditions that don't match the product or quantity

# Check rule conditions:
# Sales → Configuration → Pricelists → select pricelist → Price Rules tab
# Each rule has:
# - Applied On: All Products / Product Category / Product / Product Variant
# - Min. Quantity: rule only applies at or above this quantity
# - Date Range: Start Date / End Date for time-limited rules

# Common mistake: Min. Quantity = 10 but customer orders 5
# The rule does not apply because quantity is below threshold

# Fix: Set Min. Quantity to 1 for rules that should always apply
# Or create rules for different quantity tiers

Cause 3: Rule Priority (Sequence)

# Multiple rules match, but the wrong one takes precedence

# Odoo evaluates rules by sequence (lowest first) and stops at first match
# If a general rule (sequence 1) matches before your specific rule (sequence 10),
# the specific rule is never evaluated

# Fix: Set specific rules to LOWER sequence numbers:
# Sequence 1: VIP customers get 20% off Product A (specific)
# Sequence 5: All customers get 10% off all products (general)

# The more specific rule should have a lower sequence number

Cause 4: Pricelist Not Enabled

# Pricelists must be explicitly enabled in Odoo settings

# Fix:
# Sales → Configuration → Settings → Pricing section
# Enable "Pricelists" → Save
# Choose "Multiple prices per product" or "Advanced price rules"

# For website:
# Website → Configuration → Settings
# Enable pricelists for the website

Cause 5: Currency Mismatch

# The pricelist is in EUR but the sales order is in USD
# Odoo may not apply the pricelist because currencies don't match

# Fix: Check the pricelist currency:
# Sales → Configuration → Pricelists → select pricelist
# Currency field → must match the expected transaction currency

# For multi-currency:
# Create separate pricelists per currency
# Or use a base pricelist and set computation to "Other Pricelist + Discount"

Cause 6: Pricelist Computation Type

# Three computation types exist, each works differently:

# 1. Fixed Price — ignores product's list price, uses a fixed amount
#    Good for: specific product pricing for key accounts

# 2. Discount — percentage off the product's list price (or another pricelist)
#    Good for: volume discounts, customer tier discounts
#    IMPORTANT: "Based on" field determines the base price
#    - "Sales Price" = product's list price
#    - "Cost Price" = product's cost
#    - "Other Pricelist" = another pricelist's price

# 3. Formula — complex computation with margins, rounding, surcharges

# Common mistake: Setting "Based on: Cost Price" but expecting
# a discount off the sale price

Cause 7: POS Pricelist Issues

# POS has its own pricelist configuration separate from sales

# Fix:
# Point of Sale → Configuration → Point of Sale → select POS
# Pricing section → Default Pricelist
# Also: "Available Pricelists" — add all pricelists that cashiers can select

# POS pricelist is applied based on:
# 1. Customer assigned pricelist (if customer selected at POS)
# 2. Default POS pricelist (if no customer selected)

# Ensure the pricelist is in the "Available Pricelists" list

Cause 8: Website Pricelist Not Showing

# Website shows base price instead of pricelist price

# Fix:
# 1. Enable pricelists for website:
#    Website → Configuration → eCommerce → Pricelists → enable
# 2. Assign pricelist to the website:
#    Website → Configuration → Pricelists → select → Websites field
# 3. Check customer assignment:
#    If visitor is not logged in, the default website pricelist applies
# 4. Enable "Show public price and discount":
#    This shows the original price with a strikethrough and the discounted price

# Test: Log in as a customer with a specific pricelist
# The product page should show the pricelist price

Diagnosing Pricelist Issues

# 1. Check what price Odoo calculates:
# In Odoo shell:
product = env['product.product'].browse(PRODUCT_ID)
pricelist = env['product.pricelist'].browse(PRICELIST_ID)
price = pricelist._get_product_price(product, quantity=1.0)
print(f'Pricelist price: {price}')
print(f'List price: {product.list_price}')

# 2. Check which rule matches:
rule = pricelist._get_product_price_rule(product, quantity=1.0)
print(f'Matching rule: {rule}')

# 3. Verify on a sales order:
# Create a quotation → select customer → add product
# Check the Unit Price column — it should reflect the pricelist
# If not, check the pricelist shown on the quotation header

Quick Fix Checklist

  1. Enable pricelists in Settings
  2. Create pricelist with rules (correct computation type, dates, quantities)
  3. Assign pricelist to the customer
  4. Verify rule sequence (specific rules first)
  5. Check currency matches
  6. For POS: add to Available Pricelists
  7. For website: assign pricelist to website and enable it