Purchase Order Approval in Odoo: Native Workflow vs. Studio Custom Rules vs. Add‑On Solutions
Purchase Order Approval in Odoo: Native Workflow vs. Studio Custom Rules vs. Add‑On Solutions
Every growing company knows that unchecked purchasing can quickly erode profit margins. When a department submits a purchase request, the finance or procurement leader must verify budget, vendor terms, and compliance before the order is sent. In practice, many businesses wrestle with three recurring pain points:
- Approval bottlenecks that delay delivery and increase lead times.
- Inconsistent enforcement of spending limits across departments.
- Manual email chains that bypass audit trails, making it hard to prove compliance.
Odoo’s modular architecture offers three distinct ways to tame this chaos: the out‑of‑the‑box approval flow, a custom process built with Odoo Studio, or a dedicated third‑party add‑on. This article compares each approach, highlights when it shines, and ends with a practical recommendation for small‑ to mid‑size enterprises.
Why a Structured Purchase Approval Process Is Critical
A disciplined approval pipeline protects cash flow, reduces maverick spending, and creates a clear audit trail for internal and external reviewers. In Odoo, the Purchase module stores every order as a purchase.order record, with key fields such as amount_total, state, date_order, and company_id. Leveraging these fields in a controlled workflow ensures that a purchase cannot move to the “Purchase Order” state without meeting predefined criteria.
Option 1 – Use Odoo’s Built‑in Approval Flow
Since Odoo 14, the core Purchase app includes a simple two‑step approval mechanism. Administrators activate it via Purchase → Configuration → Settings → Approvals. Once enabled, the system adds a new state to_approve and a field approval_user_id to the purchase.order model.
How It Works
- Purchase manager creates a draft order (
state = 'draft'). - On saving, the order automatically switches to
state = 'to_approve'and assigns the configured approver (e.g., the finance manager). - The approver opens the order via Purchase → Orders → Purchase Orders, reviews the
amount_totaland vendor details, then clicks “Approve”. The state changes topurchaseand the order can be confirmed.
Pros
- Zero‑code implementation – just a checkbox in settings.
- Audit‑ready – every transition is logged in the chatter, preserving who approved and when.
- Low maintenance – survives Odoo version upgrades without custom migrations.
Cons
- Only a single approver can be defined; multi‑level hierarchies require extra customization.
- Approval logic is limited to a static user; you cannot route based on
amount_totalthresholds. - No conditional notifications beyond the standard “To Approve” inbox.
When It Fits Best
Small teams with a single finance lead, low purchase volume, and a need for rapid deployment benefit most from the native flow. If your organization’s policy is “any order above $5,000 must be approved by the CFO”, you can simply set the CFO as the approver and rely on the built‑in state change.
Option 2 – Build a Tailored Approval Process with Odoo Studio
For companies that need more nuance—multiple approvers, amount‑based routing, or department‑specific rules—Odoo Studio turns the same purchase.order model into a flexible workflow without writing Python code.
Key Steps in Studio
- Open Settings → Technical → User Interface → Views and click “Edit with Studio” on the Purchase Order form.
- Add a new many2one field
approval_stage_idlinked to a customapproval.stagemodel (e.g., “Manager”, “Director”, “CFO”). - Insert a computed boolean field
needs_approvalthat evaluatesamount_total > 5000orcompany_id == user.company_id. - Configure an automated action (Settings → Technical → Automation → Automated Actions) that triggers when
needs_approval == True. The action changesstateto'to_approve'and assigns the appropriateapproval_user_idbased on theapproval_stage_idlogic.
Pros
- Multi‑level routing – you can define as many stages as needed, each with its own approver.
- Dynamic thresholds – approval can depend on
amount_total, product category, or vendor rating. - Custom notifications – Studio lets you add email templates that fire when an order moves to a new stage.
Cons
- Requires a licensed Odoo Enterprise edition (Studio is not available in Community).
- More moving parts mean a higher chance of misconfiguration; thorough testing is essential.
- Complex Studio customizations may need re‑work after major Odoo upgrades.
When It Fits Best
Mid‑size organizations with layered approval hierarchies, variable spending caps per department, or regulatory requirements (e.g., SOX) should consider Studio. The visual drag‑and‑drop interface speeds up delivery, while still giving you the granularity to enforce policy.
Because Studio‑driven customizations increase the load on the Odoo server, hosting your instance on a reliable Cloud VPS ensures that the extra automated actions and email queues run without latency spikes.
Option 3 – Deploy a Dedicated Purchase Approval Add‑On
The Odoo Apps marketplace offers several purpose‑built modules that extend the purchase workflow. Popular choices include purchase_approval by Novobi and purchase_multi_approval by Cybrosys. These add‑ons install a new model purchase.approval.rule and replace the standard “Approve” button with a wizard that can collect multiple signatures.
Typical Feature Set
- Configurable approval matrices (e.g., “Orders > $10k require Manager + CFO”).
- History log that records each approver’s name, timestamp, and comment.
- Optional “escalation” emails if an order stays in
to_approvelonger than a defined SLA. - Integration with Odoo Purchase Agreements for recurring contracts.
Pros
- Out‑of‑the‑box support for multi‑level and multi‑user approval without Studio.
- Regular updates from the vendor, often aligned with the latest Odoo version.
- Fine‑grained control over notification templates and escalation rules.
Cons
- Additional licensing cost (typically a one‑time fee per database).
- Potential compatibility issues with other third‑party modules, especially if you already use custom Studio fields.
- Learning curve for administrators unfamiliar with the add‑on’s configuration screens.
When It Fits Best
Enterprises with strict compliance mandates, such as public sector agencies or large distributors, often need the robustness of a dedicated add‑on. If your procurement policy includes “three‑way approvals” and “automatic escalation after 48 hours”, an add‑on can deliver this with minimal custom development.
Practical Recommendation for Most SMEs
Start with the native Odoo approval flow. It’s free, stable, and covers the majority of simple spend‑control scenarios. If you quickly outgrow the single‑approver limitation—say, because you’ve added a regional manager layer—move to a Studio‑based solution. Studio gives you the flexibility to model department‑specific thresholds while keeping everything inside the same Odoo database.
Only when your organization faces regulatory scrutiny, needs automated escalation, or must support more than three concurrent approvers should you invest in a third‑party add‑on. The extra licensing cost is justified by the audit‑ready features and reduced need for ongoing custom development.
Regardless of the path you choose, ensure that your Odoo instance runs on a performant environment. A modest Cloud VPS provides the CPU and SSD resources necessary to keep approval automations snappy, even during peak purchasing periods.
Bottom Line
Purchase order approval is not a one‑size‑fits‑all problem. Odoo gives you three viable routes:
- Native two‑step approval – quick, no‑code, ideal for small teams.
- Studio‑crafted workflow – customizable, multi‑level, perfect for growing businesses.
- Dedicated add‑on – feature‑rich, compliance‑focused, suited for large enterprises.
Assess your current spend volume, approval hierarchy, and compliance needs, then pick the solution that aligns with both your budget and future growth plans.