Odoo's standard pricing model assumes a product has a price. Whole industries do not work that way: flooring is sold by the square metre, cable by the metre, sheet material by cut size, print by area and finish. This guide walks through configuring measurement-based pricing so the customer sees the price update as they enter their dimensions.
The three things you have to decide first
Before touching Odoo, write down the answers to these — configuration is trivial once they are settled, and painful when they are not.
- What does the customer measure? Length only, length and width, area, weight, volume? This becomes your option fields.
- What is the price expression? Literally write it out: price = area × rate per m² + fixed cut charge. If you cannot write it in one line with parentheses, it probably needs conditional groups.
- How do you round? Do you charge for 2.3 m² or for 3 m²? This is a commercial decision with real revenue consequences, and it is much easier to set now than to change once customers have seen prices.
Step 1 — Create the rule and its option fields
Create a price formula rule and add the fields the customer will fill in. Field types available include number, text, text area, select, radio, checkbox and multi-select.
For a flooring example you would add two number fields — length and width, both required — and a radio field for the finish, with images so the customer sees what they are choosing.
Keep this list short. Every field is a step between the visitor and the cart.
Step 2 — Write the formula
Formulas support +, -, *, /, parentheses and functions, so the flooring case is a single expression: length multiplied by width multiplied by the rate, plus any fixed charge.
Where the rate depends on quantity — a lower price per square metre above 50 m², say — use conditional formula groups rather than one nested expression. The formula changes based on user input or on running results, and the configuration stays readable.
Step 3 — Set the unit of measurement and rounding
Choose the unit the product is sold in — square metre, metre, kilogram, cubic yard, whatever applies.
Then set the rounding: round, round up or round down, with custom precision. Rounding up is common for cut materials because offcuts are real cost. Rounding to two decimals is common for weight. Decide deliberately.
Step 4 — Apply the rule to products or categories
A rule targets multiple products or whole product categories, so a catalogue of forty flooring references usually needs one rule applied to a category rather than forty rules.
Create separate rules where the pricing logic genuinely differs — flooring by area and skirting board by length are two rules, not one with a branch.
Step 5 — Preview, then test the whole funnel
Preview the calculator from the backend first; configuration mistakes are cheaper to find internally.
Then test the complete path with real numbers, and check each step: the price updates live on the product page, the computed price arrives correctly in the cart, it survives checkout, it appears on the order, and the chosen options print on the PDF. That last one is the one people forget, and it is the one the customer keeps.
Common configuration mistakes
- Too many option fields. Each one costs conversion. If it does not change the price or the production instruction, it does not belong in the calculator.
- Rounding decided late. Changing rounding after launch changes prices customers have already seen.
- No minimum. Without one, somebody orders 0.02 m² and you lose money on handling. Enforce a minimum in the formula.
- Unit mismatch. Fields captured in centimetres and a rate expressed per square metre is the classic factor-of-ten error. Normalise units inside the formula.
- Only testing the product page. The order and the PDF are part of the funnel.
Next steps
This configuration is available in both Website Price by Formula Calculator and Product Price by Formula Calculator — the comparison guide explains which to pick.
Frequently asked questions
Can the customer see the price before adding to cart?
Yes. The calculator on the product page recomputes live as the customer changes a value, and the live calculation can be displayed on the page.
Does the calculated price survive checkout?
Yes. The computed price and the selected options persist into the cart, the checkout, the resulting order and the printed PDF.
Can I charge a different rate above a certain quantity?
Yes, with conditional formula groups. They switch the formula based on user input or on running results, which is exactly how tiered rates are configured.
How do I stop customers ordering tiny quantities?
Enforce a minimum inside the formula. Without one, a 0.02 m² order will eventually cost you more in handling than it brings in.
Can one rule cover a whole category?
Yes. Rules apply to multiple products or to product categories, so a catalogue with consistent pricing logic usually needs one rule, not one per product.