Running an HVAC business with Odoo

How do I set different customer prices in Odoo?

Workflow overview: How do I set different customer prices in Odoo?
Workflow overview. Instructional screenshots show the actual demo interface.

Create a product-specific Odoo pricelist and compare its saved quotation price with the ordinary customer price.

Alex offers a reviewed service-call price to one customer on a specific quotation. A native pricelist sets that price while unrelated products retain their ordinary rate. A second draft checks that the special price does not become the customer's default.

Alex Rivera and Demo Air HVAC are fictional training examples. Prices, dates, quantities and business situations in this guide are illustrative.

Before you begin

Tested in stock Odoo 20.0-20260926 Community as the demo owner administrator, with official modules and standard configuration. Complete service products, product import and the service quotation. Reuse Demo Property H08 and Demo Net 30 H06. Keep S00001/S00002/S00003 intact. This example selects a pricelist on the quotation; it does not change the customer's saved Default pricelist. Prices and 6% tax are fictional.

Step-by-step workflow

Stock Odoo 20 Community, owner role, one manually selected product-specific USD pricelist. Verify the $90 service-call price while the unrelated filter retains $21, then compare a separate Default quotation at $100. Both quotes stay drafts. Native product links, taxes and customer terms are checked. The example does not test customer-tag rules, expiry, currency conversion or repricing existing lines.

Step 1. Enable the native pricing feature

Open Sales → Configuration → Settings, check Pricelists and choose Save. The saved setting exposes Sales → Products → Pricelists and the Pricelist selector on new quotations.

Action 1: Open the app menu. The actual target is highlighted in gold.
Open the app menu.
Action 2: Choose Sales. The actual target is highlighted in gold.
Choose Sales.
Action 3: Open Configuration. The actual target is highlighted in gold.
Open Configuration.
Action 4: Open Sales Settings. The actual target is highlighted in gold.
Open Sales Settings.
Action 5: Enable native Pricelists. The actual target is highlighted in gold.
Enable native Pricelists.
Action 6: Save the pricing feature once and wait for readback. The actual target is highlighted in gold.
Save the pricing feature once and wait for readback.
Action 7: Reopening retains Pricelists checked. The actual target is highlighted in gold.
Reopening retains Pricelists checked.

Step 2. Create a rule for one product

Open Sales → Products → Pricelists → New and enter Demo Trade H14. It uses USD in this single-company fixture. On Rules → Add a line, keep Apply Fixed Price, set Fixed Price 90, choose existing Demo Service Call H11 in Product and set Minimum Quantity 1. Leave Category and Validity blank for this training example. Product selection scopes the rule to that product, rather than every sale.

Action 8: Open Products for Pricelists. The actual target is highlighted in gold.
Open Products for Pricelists.
Action 9: Choose Pricelists. The actual target is highlighted in gold.
Choose Pricelists.
Action 10: Create one new training pricelist. The actual target is highlighted in gold.
Create one new training pricelist.
Action 11: Name it Demo Trade H14. The actual target is highlighted in gold.
Name it Demo Trade H14.
Action 12: Add one rule on the Rules tab. The actual target is highlighted in gold.
Add one rule on the Rules tab.
Action 13: Keep Fixed Price selected under Apply. The actual target is highlighted in gold.
Keep Fixed Price selected under Apply.
Action 14: Set Fixed Price to 90. The actual target is highlighted in gold.
Set Fixed Price to 90.
Action 15: Find the existing service-call product. The actual target is highlighted in gold.
Find the existing service-call product.
Action 16: Select Demo Service Call H11 to scope this rule. The actual target is highlighted in gold.
Select Demo Service Call H11 to scope this rule.
Action 17: Set Minimum Quantity to one. The actual target is highlighted in gold.
Set Minimum Quantity to one.
Action 18: The selected Product scopes this rule; no Category is chosen. The actual target is highlighted in gold.
The selected Product scopes this rule; no Category is chosen.
Action 19: Keep the illustrative Validity blank. The actual target is highlighted in gold.
Keep the illustrative Validity blank.
Action 20: Commit the price and minimum on the rule heading. The actual target is highlighted in gold.
Commit the price and minimum on the rule heading.
Action 21: Review the one-product rule: service call, minimum one, fixed 90. The actual target is highlighted in gold.
Review the one-product rule: service call, minimum one, fixed 90.

Step 3. Save and reopen the pricelist

Choose Save & Close in the rule dialog, then Save manually on the pricelist. Wait for the saved record and reopen it. Check the Rules row shows Demo Service Call H11, minimum quantity 1 and $90. The rule has no start/end date; real promotional dates need their own review.

Action 22: Choose Save & Close for the rule. The actual target is highlighted in gold.
Choose Save & Close for the rule.
Action 23: Check the parent Rules row before saving the pricelist. The actual target is highlighted in gold.
Check the parent Rules row before saving the pricelist.
Action 24: Save the pricelist once and wait for its scoped rule. The actual target is highlighted in gold.
Save the pricelist once and wait for its scoped rule.
Action 25: Reopening retains the service-call rule at 90. The actual target is highlighted in gold.
Reopening retains the service-call rule at 90.

Step 4. Select the list before adding quote lines

Open Sales → Orders → Quotations → New → New Quotation and choose Demo Property H08. Its initial Pricelist is Default (USD). Change Pricelist to Demo Trade H14 (USD) before adding products. Choose Add Line, select existing Demo Service Call H11 from the Description product picker, and verify quantity one, Units and Unit Price 90.

Action 26: Open Orders for a separate draft quotation. The actual target is highlighted in gold.
Open Orders for a separate draft quotation.
Action 27: Choose Quotations. The actual target is highlighted in gold.
Choose Quotations.
Action 28: Open New for the special-price quotation. The actual target is highlighted in gold.
Open New for the special-price quotation.
Action 29: Choose New Quotation. The actual target is highlighted in gold.
Choose New Quotation.
Action 30: Find Demo Property H08. The actual target is highlighted in gold.
Find Demo Property H08.
Action 31: Select the existing customer. The actual target is highlighted in gold.
Select the existing customer.
Action 32: The new quotation initially copies Default (USD). The actual target is highlighted in gold.
The new quotation initially copies Default (USD).
Action 33: Find Demo Trade H14 before adding products. The actual target is highlighted in gold.
Find Demo Trade H14 before adding products.
Action 34: Select Demo Trade H14 (USD) on this quote only. The actual target is highlighted in gold.
Select Demo Trade H14 (USD) on this quote only.
Action 35: Add the service-call line. The actual target is highlighted in gold.
Add the service-call line.
Action 36: Find the actual service-call product in Description. The actual target is highlighted in gold.
Find the actual service-call product in Description.
Action 37: Select the existing service-call product entry. The actual target is highlighted in gold.
Select the existing service-call product entry.
Action 38: The selected service-call Unit Price is 90.00. The actual target is highlighted in gold.
The selected service-call Unit Price is 90.00.
Action 39: Review one Unit of the linked service product. The actual target is highlighted in gold.
Review one Unit of the linked service product.

Step 5. Check an unrelated product and save

Add another line, search H12-FILTER and select the actual Demo Return-Air Filter H12 product entry. Check its reference and Unit Price 21 before saving: typing a description alone can leave a productless, zero-price line. Choose Demo Net 30 H06, review $111 untaxed + $6.66 demo tax = $117.66, save and reopen S00004. Both native product links and the selected pricelist persist.

Action 40: Add one unrelated filter product. The actual target is highlighted in gold.
Add one unrelated filter product.
Action 41: Search Description for H12-FILTER. The actual target is highlighted in gold.
Search Description for H12-FILTER.
Action 42: Select the actual Demo Return-Air Filter H12 entry. The actual target is highlighted in gold.
Select the actual Demo Return-Air Filter H12 entry.
Action 43: The unrelated filter Unit Price remains 21.00. The actual target is highlighted in gold.
The unrelated filter Unit Price remains 21.00.
Action 44: Review both real product lines, not text-only descriptions. The actual target is highlighted in gold.
Review both real product lines, not text-only descriptions.
Action 45: Find Demo Net 30 H06 Payment Terms. The actual target is highlighted in gold.
Find Demo Net 30 H06 Payment Terms.
Action 46: Select the existing payment term. The actual target is highlighted in gold.
Select the existing payment term.
Action 47: Commit the quotation fields on its heading. The actual target is highlighted in gold.
Commit the quotation fields on its heading.
Action 48: Review 111 untaxed, 6.66 demo tax and 117.66 total. The actual target is highlighted in gold.
Review 111 untaxed, 6.66 demo tax and 117.66 total.
Action 49: Save the special-price quote once and wait for S00004. The actual target is highlighted in gold.
Save the special-price quote once and wait for S00004.
Action 50: Reopening retains Demo Trade H14 (USD). The actual target is highlighted in gold.
Reopening retains Demo Trade H14 (USD).
Action 51: S00004 retains service90, filter21 and total117.66. The actual target is highlighted in gold.
S00004 retains service90, filter21 and total117.66.

Step 6. Compare a new quote using Default

Create a second New Quotation for the same customer. Keep its copied Default (USD) pricelist, add the same service-call product at quantity one, and check Unit Price 100. Set Demo Net 30 H06, save and reopen S00005. Its total is $106 with the fictional tax. Both quotes remain drafts; the customer's saved pricelist remains Default.

Action 52: Return to Quotations for the comparison. The actual target is highlighted in gold.
Return to Quotations for the comparison.
Action 53: Open New for a separate Default-price quote. The actual target is highlighted in gold.
Open New for a separate Default-price quote.
Action 54: Choose a separate New Quotation. The actual target is highlighted in gold.
Choose a separate New Quotation.
Action 55: Find the same Demo Property H08 customer. The actual target is highlighted in gold.
Find the same Demo Property H08 customer.
Action 56: Select the same existing customer. The actual target is highlighted in gold.
Select the same existing customer.
Action 57: Keep its copied Default (USD) pricelist. The actual target is highlighted in gold.
Keep its copied Default (USD) pricelist.
Action 58: Add the same service-call product. The actual target is highlighted in gold.
Add the same service-call product.
Action 59: Find Demo Service Call H11 in Description. The actual target is highlighted in gold.
Find Demo Service Call H11 in Description.
Action 60: Select the existing service-call product entry. The actual target is highlighted in gold.
Select the existing service-call product entry.
Action 61: Default gives the ordinary Unit Price 100.00. The actual target is highlighted in gold.
Default gives the ordinary Unit Price 100.00.
Action 62: Find Demo Net 30 H06 Payment Terms. The actual target is highlighted in gold.
Find Demo Net 30 H06 Payment Terms.
Action 63: Select the existing payment term. The actual target is highlighted in gold.
Select the existing payment term.
Action 64: Commit the quotation fields on its heading. The actual target is highlighted in gold.
Commit the quotation fields on its heading.
Action 65: Review 100 untaxed, 6 demo tax and 106 total. The actual target is highlighted in gold.
Review 100 untaxed, 6 demo tax and 106 total.
Action 66: Save the Default quote once and wait for S00005. The actual target is highlighted in gold.
Save the Default quote once and wait for S00005.
Action 67: Reopening retains the same unsent S00005. The actual target is highlighted in gold.
Reopening retains the same unsent S00005.
Action 68: The saved comparison still uses Default (USD). The actual target is highlighted in gold.
The saved comparison still uses Default (USD).
Action 69: The saved ordinary service line remains100 with total106. The actual target is highlighted in gold.
The saved ordinary service line remains100 with total106.
Action 70: Both examples stay drafts; no invoice or delivery is created. The actual target is highlighted in gold.
Both examples stay drafts; no invoice or delivery is created.

Check the result

Demo Trade H14 has one product-specific fixed-price rule: service call $90 at minimum quantity one. Draft S00004 uses it for the service call while the filter remains $21, total $117.66. Draft S00005 uses Default and prices the same service call at $100, total $106. The customer default remains Default; earlier quotations and stock quantities remain intact. Neither new draft has a delivery or invoice.

If your screen differs

This verifies manual per-quotation selection, one product rule and its unrelated-product/default-list boundaries. Customer-default changes, expiry, larger quantity thresholds, currency conversion, competing rules and repricing existing lines were not tested. Select the list before adding products and review the actual price. A tag or description is not proof of pricelist eligibility or a selected product.

Frequently asked questions

How do I give a customer a different price in Odoo? Enable Pricelists, save a product-specific rule and select its pricelist on a new quotation before adding the product. In this example, Demo Trade H14 gives the service call a $90 price while the customer's Default list still gives $100.
Why isn't my Odoo pricelist changing the quotation price? Check the selected list and actual product first, then the rule's product scope, minimum quantity, dates and currency. This test selected the list before adding lines; changes to existing lines need a separate repricing check.
Do Odoo customer tags automatically assign prices? No tag assignment was used or verified. The office selected Demo Trade H14 manually on one quote; a second quote copied the customer's unchanged Default pricelist.

Continue building the business

Continue with purchase-order approval, whose manager boundary still requires native verification.

Talk to an Odoo partner

Bring your current process and the result you need to Onward to plan your Odoo workflow. Talk to an Odoo partner.