How to Handle Complex Pricing for Made-to-Order Products in Odoo
If you sell custom-made products, you already know: pricing can get complicated—fast. Maybe it’s based on size, materials, special finishes, rush jobs, or just the fact that every order is a little bit different. The challenge? Trying to make all of that work smoothly in Odoo.
Let’s walk through what Odoo can (and can’t) do out of the box—and how to fill in the gaps when you need smarter, more flexible pricing.
What Odoo Does Well for MTO (Made-to-Order)
Odoo makes it pretty easy to set up made-to-order products. Just check a few boxes like:
- ✅ “Replenish on Order (MTO)”
- ✅ “Manufacture” or “Buy”
Then when a sales order comes in, Odoo will automatically trigger a manufacturing or purchase order to fulfill it. Great!
But the moment you add complex pricing to the mix, things start to feel… limited.
Where Things Get Tricky
If you sell products that are priced based on:
- Custom sizes (like banners or windows)
- Extra features (premium materials, coatings, etc.)
- Special services (design work, rush orders, certifications)
- Project-based pricing (customer-specific rates)
…then standard Odoo pricelists just aren’t enough.
You’ll quickly find yourself thinking, “Why can’t this price update based on the length and width the customer gave me?” Or, “Why do I have to manually calculate a setup fee every time?”
So, What Can You Do?
Here are a few practical options depending on how complex your pricing is.
1. Use Odoo Studio (for simple cases)
If you’re using Odoo Enterprise, Studio lets you add custom fields and write simple pricing formulas without touching any code.
For example:
Add a “Length” and “Width” field to the sales order line
Multiply them to get the area
Multiply area by price per square meter
Add a rush order fee if needed
That works for basic stuff. But it breaks down quickly once your rules get more complex.
2. Build a Custom Module (for full control)
If you want pricing that just works based on your business logic—build it.
With a small custom module, you can:
- Add custom fields like dimensions, finishes, or order type
- Automatically calculate price per line item
- Pull in costs from the bill of materials (BoM) and apply markup
- Apply conditional surcharges (e.g., +\$50 if it’s a rush job)
Here’s a very basic example in code:
@api.onchange('length', 'width', 'rush_order')
def _compute_price_unit(self):
for line in self:
area = (line.length or 0) * (line.width or 0)
price = area * 12
if line.rush_order:
price += 50
line.price_unit = price
This logic runs automatically when a user enters order info—no manual calculation needed.
3. Use a Product Configurator App
If you don’t want to build from scratch, Odoo has some great apps—like the OCA Product Configurator—that let you set up configurable products with rules and pricing logic.
You can define:
- Product options (colors, sizes, accessories)
- Conditions (if “X” is selected, add price “Y”)
- Automated line creation based on selections
This is perfect for businesses with product variations and custom features.
4. Calculate in a Spreadsheet (if all else fails)
For ultra-complex pricing (think 30+ variables or constantly changing rules), some companies still calculate prices in Excel or Google Sheets—then just copy the total into the sales order.
It’s not elegant, but it works—especially if you’re mid-transition into a fully automated system.
The Real Power of Odoo: Flexibility
The best part about Odoo? You’re not stuck. Yes, the default MTO flow is pretty simple. But with a bit of customization or the right app, you can handle any pricing logic you throw at it.
If your team is wasting time doing math by hand, or if you’re quoting custom jobs with spreadsheets and sticky notes, it’s time to let Odoo do the heavy lifting.
TL;DR — What to Do Next
| Your Case | What You Need |
|---|---|
| Simple pricing (area, quantity) | Odoo Studio |
| Moderate logic (rush fees, finishes) | Custom fields + Python logic |
| Complex options | Product Configurator module |
| Crazy complex rules | Use a spreadsheet temporarily, or build a smart app |
Final Thoughts
Custom pricing doesn’t have to mean complicated systems.
With the right setup in Odoo, your team can quote faster, avoid mistakes, and give your customers clear, consistent pricing—no matter how custom their order is.
Need help setting it up or customizing your flow? I’d be happy to talk through your use case.
Get in Touch with us
Related Posts
- Agentic AI in SOC Workflows: Beyond Playbooks, Into Autonomous Defense (2026 Guide)
- 从零构建SOC:Wazuh + IRIS-web 真实项目实战报告
- Building a SOC from Scratch: A Real-World Wazuh + IRIS-web Field Report
- 中国品牌出海东南亚:支付、物流与ERP全链路集成技术方案
- 再生资源工厂管理系统:中国回收企业如何在不知不觉中蒙受损失
- 如何将电商平台与ERP系统打通:实战指南(2026年版)
- AI 编程助手到底在用哪些工具?(Claude Code、Codex CLI、Aider 深度解析)
- 使用 Wazuh + 开源工具构建轻量级 SOC:实战指南(2026年版)
- 能源管理软件的ROI:企业电费真的能降低15–40%吗?
- The ROI of Smart Energy: How Software Is Cutting Costs for Forward-Thinking Businesses
- How to Build a Lightweight SOC Using Wazuh + Open Source
- How to Connect Your Ecommerce Store to Your ERP: A Practical Guide (2026)
- What Tools Do AI Coding Assistants Actually Use? (Claude Code, Codex CLI, Aider)
- How to Improve Fuel Economy: The Physics of High Load, Low RPM Driving
- 泰国榴莲仓储管理系统 — 批次追溯、冷链监控、GMP合规、ERP对接一体化
- Durian & Fruit Depot Management Software — WMS, ERP Integration & Export Automation
- 现代榴莲集散中心:告别手写账本,用系统掌控你的生意
- The Modern Durian Depot: Stop Counting Stock on Paper. Start Running a Real Business.
- AI System Reverse Engineering:用 AI 理解企业遗留软件系统(架构、代码与数据)
- AI System Reverse Engineering: How AI Can Understand Legacy Software Systems (Architecture, Code, and Data)













