All posts
Functional4 min read

Enforcing Expense Policies and Limits in Odoo Expenses

Configure Odoo Expenses to enforce spending limits, require receipts above a threshold, and route high-value expenses through multi-level approval - before reimbursement is processed.

Expense Policy Enforcement in Odoo#

Without expense controls, employees can submit any amount as reimbursable. Odoo Expenses can enforce per-diem limits, require receipt attachments, and route out-of-policy expenses for manager review before approval.

Setting Up Expense Categories#

Expenses → Configuration → Expense Categories → New:

FieldExample
NameBusiness Meals
Expense AccountTravel & Entertainment (610200)
Invoicing PolicyExpense
Product Price$0 (employee enters actual amount)
Limit$75 per person

The Limit field sets a per-claim cap - expenses above this trigger a warning or block.

Receipt Requirement by Amount#

Expenses → Configuration → Settings:

  • Receipt Required: Yes for expenses over $25
  • Employees must attach a receipt PDF or photo for any claim exceeding this threshold
  • Submitting without a receipt → validation error

Approval Workflow#

Expenses → Configuration → Settings → Expense Approval:

  • No Approval: auto-approved (suitable for micro-expenses only)
  • Manager Approval: all expenses go to the employee's manager
  • Two-Level Approval: manager + finance manager (for amounts > $500)

Per-Diem Meal Limits#

For travel expenses:

  1. Create a product "Daily Meal Allowance" with a fixed price ($50/day)
  2. Set Expense Type: Per Diem
  3. Employee enters number of days, not the actual amount
  4. Odoo calculates: days × $50 = reimbursement

This eliminates the need to verify meal receipts individually.

Out-of-Policy Expenses#

If an expense exceeds the category limit:

  1. Employee can still submit with a justification note
  2. Manager sees the expense is flagged as "out of policy"
  3. Manager can approve with override or reject with a comment
  4. Finance team can see all policy exceptions in a filtered view

Reporting on Policy Compliance#

Expenses → Reporting → Expense Analysis:

  • Filter by: Amount > Category Limit
  • Shows all out-of-policy claims, who submitted them, and whether approved or rejected

Track expense policy compliance by department to identify teams that consistently over-spend.

Integration with Accounting#

When an expense report is approved and posted:

  • Each expense line is coded to the correct GL account
  • Analytic tags (department, project) are applied automatically from the employee's contract
  • The reimbursement journal entry is created ready for payment

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free