How to Build an Approval Workflow in Odoo Without Custom Code
Business processes often require approvals before an action can be completed.
A purchase order may need manager approval. A sales order with a large discount may require authorization. An employee expense may need approval from a department head. A customer credit limit increase may need finance approval.
Without a structured approval process, these activities often happen through emails, spreadsheets, chat messages, or verbal communication.
The result?
Delayed decisions
Missing approvals
Lack of accountability
Process bottlenecks
Increased risk of errors
The good news is that many approval workflows can be configured directly in Odoo without developing a custom module.
Using Odoo Studio, automated actions, user groups, approval rules, activities, and existing application features, businesses can create structured approval processes while keeping their ERP easier to maintain.
What Is an Approval Workflow in Odoo?
An approval workflow defines who needs to approve an operation, under what conditions, and what happens after approval.
A basic workflow looks like:
Document Created → Approval Required → Manager Reviews → Approved → Process Continues
For example:
Purchase Request
↓
Department Manager Approval
↓
Purchase Manager Approval
↓
Purchase Order
↓
Vendor Confirmation
Instead of relying on employees to remember who should approve each transaction, Odoo can enforce the process through configured rules.
Why Use Approval Workflows?
A well-designed approval workflow provides several benefits.
1. Better Control
Employees cannot bypass required approval steps.
2. Faster Processing
Approvers receive notifications or activities instead of waiting for someone to contact them manually.
3. Clear Accountability
The system records who approved an operation and when.
4. Fewer Errors
Rules can automatically determine whether approval is required.
5. Better Auditability
Management can review the history of approvals when needed.
6. Reduced Email Dependency
Approvals can happen directly inside the ERP rather than across disconnected communication channels.
Step 1: Identify What Needs Approval
Before configuring anything, identify the business transactions that actually require authorization.
Common examples include:
Sales orders
Purchase orders
Purchase requests
Expense reports
Vendor bills
Customer credit limits
Discounts
Refunds
Inventory adjustments
Employee leave
Timesheets
Projects
Manufacturing changes
Don't automatically create approvals for every transaction.
The objective is to control high-risk or high-value decisions, not create unnecessary bureaucracy.
Step 2: Define Your Approval Rules
The next step is to define clear conditions.
For example:
| Transaction | Condition | Approver |
|---|---|---|
| Sales Order | Discount > 10% | Sales Manager |
| Sales Order | Amount > $10,000 | Sales Director |
| Purchase Order | Amount > $5,000 | Purchase Manager |
| Purchase Order | Amount > $25,000 | Finance Director |
| Expense | Amount > $500 | Department Manager |
| Inventory Adjustment | High-value stock | Inventory Manager |
This creates a structured decision framework.
For example:
Order Value < $5,000
→ No additional approval
Order Value $5,000–$25,000
→ Sales Manager approval
Order Value > $25,000
→ Sales Director approval
Step 3: Use Odoo's Existing Approval Features First
One of the most important principles of Odoo implementation is:
Configure before you customize.
Many approval requirements can be handled through Odoo's existing functionality and configuration options.
Depending on the application and Odoo version, you may use:
Approval settings
User groups
Access rights
Studio
Automation Rules
Activities
Conditional visibility
Server actions
Existing approval mechanisms
This approach avoids unnecessary custom development.
Step 4: Create Approval Roles
The next step is to determine who can approve each type of transaction.
For example, create functional roles such as:
Sales User
Sales Manager
Purchase User
Purchase Manager
Finance Manager
Department Manager
Operations Manager
General Manager
Then assign users to the appropriate groups.
This is important because your workflow should depend on roles, not individual employees.
For example, don't build:
"John approves orders."
Instead, build:
"Sales Manager approves orders."
If John leaves the company, you can simply assign another employee to the Sales Manager role without redesigning the workflow.
Step 5: Add Approval Conditions
Now define when approval should be triggered.
Suppose your business wants manager approval when a salesperson offers more than a 15% discount.
The logic could be:
IF
Discount > 15%
THEN
Approval Required = Yes
AND
Approver = Sales Manager
Otherwise:
Approval Required = No
This is where Odoo Studio and automation rules can become useful.
Automation rules can trigger actions when specific conditions or events occur, allowing businesses to automate repetitive processes without building a full custom application.
Step 6: Add an Approval Status
A dedicated status field can make the workflow much easier to understand.
For example:
Draft
↓
Waiting for Approval
↓
Approved
↓
Rejected
↓
Completed
This allows employees and managers to immediately understand where a transaction is in the process.
You can also use a field such as:
Approval Required: Yes / No
and:
Approval Status: Pending / Approved / Rejected
This creates transparency across departments.
Step 7: Notify the Approver Automatically
One of the biggest problems with manual approval processes is that approvers don't know when something is waiting for them.
Instead of sending an employee an email saying:
"Can you please approve this purchase?"
Odoo can create an activity for the responsible approver.
For example:
Purchase Order #PO00045
Status: Waiting for Approval
Approver: Purchase Manager
Activity: Review and approve purchase order
The manager can then open the record, review the information, and approve or reject it.
This turns approval into a system-driven process.
Step 8: Create an Approval Button
A clean approval workflow should make the required action obvious.
For example:
Approve
Reject
The buttons can be shown based on the document's status and the user's permissions.
For example:
If:
Status = Waiting for Approval
and:
User = Authorized Approver
Then:
Show Approve / Reject
Otherwise:
Hide Approval Controls
This prevents unauthorized employees from approving their own transactions.
Step 9: Control Who Can Approve
Security is one of the most important parts of an approval workflow.
Consider this scenario:
A salesperson creates a $50,000 sales order.
The same salesperson should not be able to approve it.
The workflow should enforce:
Salesperson
→ Creates order
Sales Manager
→ Reviews order
Sales Director
→ Approves high-value order
This separation of responsibilities reduces the risk of unauthorized transactions.
Odoo's access rights and user groups can help control which users can access or modify particular records and operations.
Step 10: Build Multi-Level Approvals
Some organizations require more than one approval.
For example:
Purchase Order
$0–$5,000
→ Department Manager
$5,000–$25,000
→ Department Manager
→ Purchase Manager
Above $25,000
→ Department Manager
→ Purchase Manager
→ Finance Director
This creates a multi-level approval hierarchy.
The workflow becomes:
Purchase Request
↓
Department Approval
↓
Purchase Approval
↓
Finance Approval
↓
Purchase Order Confirmed
This is especially useful for organizations with strict financial controls.
Step 11: Handle Rejections Properly
A good approval workflow must define what happens when something is rejected.
Don't simply change the status to "Rejected."
Define the next action.
For example:
Approval Rejected
↓
Employee receives notification
↓
Reason for rejection is recorded
↓
Document returns to Draft
↓
Employee makes corrections
↓
Document submitted again
This creates a controlled approval cycle.
A rejection reason can also help management understand recurring problems.
Step 12: Automate the Next Action After Approval
The biggest advantage of automation is what happens after approval.
Suppose a purchase order is waiting for approval.
After the manager clicks Approve, Odoo could automatically:
Change the approval status
Confirm the purchase order
Create the next activity
Notify the purchasing employee
Trigger the next operational step
The workflow becomes:
Purchase Order
→ Approval Required
→ Manager Approves
→ Automatically Confirm
→ Vendor Communication
This removes unnecessary manual steps.
Example: Sales Discount Approval Workflow
Let's build a practical example.
Imagine a company allows salespeople to offer discounts up to 10%.
Anything above 10% requires manager approval.
Normal Order
Discount = 5%
→ No approval required
→ Sales Order confirmed
Approval Order
Discount = 15%
→ Approval required
→ Sales Manager notified
→ Manager reviews
→ Manager approves
→ Sales Order confirmed
Rejected Order
Discount = 25%
→ Approval required
→ Manager rejects
→ Salesperson receives rejection
→ Salesperson modifies discount
→ Order submitted again
This workflow can dramatically reduce unauthorized discounting.
Example: Purchase Approval Workflow
Now consider a purchasing department.
The company establishes the following rules:
Purchase under $2,000
No approval.
Purchase between $2,000 and $10,000
Department Manager approval.
Purchase above $10,000
Department Manager + Finance approval.
The workflow becomes:
Purchase Request
↓
Check Amount
↓
<$2,000
→ Process automatically
$2,000–$10,000
→ Department Manager
>$10,000
→ Department Manager
→ Finance Manager
This is a simple example of conditional approval automation.
Odoo Studio: When It Makes Sense
Odoo Studio is particularly useful when you need to customize workflows without building a traditional custom module.
It can be used for things such as:
Adding custom fields
Creating approval status fields
Creating conditional views
Adding automated actions
Creating custom buttons
Adding activities
Applying business conditions
For straightforward approval workflows, Studio can significantly reduce development time.
However, Studio should still be used carefully.
Too many custom fields, automated rules, and complex dependencies can make a database difficult to maintain.
When You May Need Custom Development
Although many approval workflows can be built without custom code, some businesses have highly complex requirements.
Custom development may be appropriate when you need:
Complex approval matrices
Dynamic approver selection
Advanced delegation rules
External approval systems
Complex API integrations
Industry-specific compliance logic
Advanced approval calculations
Large-scale automation with complex dependencies
For example:
"The approver must be the manager of the employee's department, unless the order exceeds $50,000, in which case approval must go to the regional director, unless the customer belongs to a restricted category."
At that point, a custom solution may provide better long-term control.
Best Practices for Odoo Approval Workflows
1. Keep the Workflow Simple
Don't create five approval steps when two are sufficient.
Every unnecessary approval creates another potential bottleneck.
2. Use Roles Instead of Individual Users
Design workflows around positions such as:
Sales Manager
rather than:
Specific Employee
3. Automate Routine Approvals
Low-risk transactions shouldn't always require manual intervention.
4. Focus on Exceptions
Use approval workflows for unusual, risky, or high-value transactions.
5. Record Rejection Reasons
This creates accountability and provides useful management information.
6. Test With Real Scenarios
Test:
Normal orders
High-value orders
Discounted orders
Rejected orders
Resubmitted orders
Unauthorized approval attempts
Multiple approvers
7. Review Your Workflow Regularly
Business processes change.
An approval threshold that makes sense today may become unnecessary as the company grows.
A Practical Zero-Code Approval Architecture
A simple architecture can look like this:
Business Transaction
↓
Condition Check
↓
Is Approval Required?
↙️ ↘️
No Yes
↓ ↓
Continue Waiting for Approval
↓
**Approver Notification**
↓
**Approve / Reject**
↙️ ↘️
**Approve** **Reject**
↓ ↓
**Continue** **Return for Correction**
This architecture can be adapted to sales, purchasing, expenses, finance, inventory, HR, and other Odoo workflows.
How to Measure Approval Workflow Performance
After implementing the workflow, track a few KPIs.
Approval KPIs
Average approval time
Number of pending approvals
Approval rejection rate
Number of approval steps
Percentage of automated approvals
Business KPIs
Order processing time
Purchase cycle time
Discount leakage
Unauthorized transactions
Employee productivity
For example, if your average purchase approval time decreases from 2 days to 3 hours, the automation is creating measurable business value.
Final Thoughts
You don't always need custom development to build an effective approval workflow in Odoo.
By combining Odoo configuration, user groups, Studio, automation rules, activities, conditions, and access controls, many businesses can create powerful approval processes without developing a completely custom module.
The best strategy is:
Map the Process → Define Approval Rules → Configure Roles → Add Conditions → Automate Notifications → Control Permissions → Test → Monitor
Start with one process—such as purchase approvals or sales discount approvals—and improve it before expanding automation across the organization.
A well-designed approval workflow doesn't just make Odoo more automated.
It makes your entire business process faster, more transparent, and easier to control.
Ready to Automate Your Odoo Approval Workflow?
If your team is still managing approvals through emails, spreadsheets, WhatsApp messages, or manual follow-ups, Odoo can help centralize and automate the process.
With the right configuration, you can reduce approval delays, improve accountability, and give management better control over business decisions—without unnecessary custom development.