Overview
The Expenses module in Odoo 19 allows employees to submit expense reports for reimbursement. Expense categories (defined as products) determine the accounting treatment, tax handling, and re-invoicing rules. A well-configured expense system reduces processing time and ensures accurate cost allocation.
Prerequisites
- Odoo 19 with Expenses module installed
- Accounting configured with expense accounts
- HR Manager or Administrator access
Step 1: Create Expense Categories
Navigate to Expenses > Configuration > Expense Categories. Each category is technically a product of type "Service". Click New:
- Name — Descriptive category name (e.g., "Travel - Airfare", "Meals", "Mileage", "Hotel")
- Cost — Default amount (useful for per-diem or mileage rates)
- Unit of Measure — e.g., "Miles", "Days", "Units"
- Expense Account — The GL account for posting (e.g., Travel Expense, Meals Expense)
- Vendor Taxes — Tax applied on expenses (for tax recovery)
Step 2: Configure Common Categories
| Category | Account | Default Cost | UoM |
|---|---|---|---|
| Airfare | Travel Expense (6300) | $0 (variable) | Units |
| Hotel | Travel Expense (6300) | $0 (variable) | Nights |
| Meals - Per Diem | Meals Expense (6310) | $50.00 | Days |
| Mileage | Vehicle Expense (6320) | $0.67 | Miles |
| Office Supplies | Office Expense (6400) | $0 (variable) | Units |
| Software Subscription | IT Expense (6500) | $0 (variable) | Units |
Step 3: Configure Approval Workflow
The expense approval workflow follows these steps:
- Employee submits — Creates expense lines and groups them into an expense report
- Manager approves — The employee's direct manager reviews and approves
- Accountant posts — Accounting team validates and posts the journal entry
- Payment — Reimbursement via payroll or direct bank transfer
Managers can refuse expense reports with a reason, sending the report back to the employee.
Step 4: Enable Re-Invoicing
To charge expenses back to customers (with sale_expense module):
- On the expense category (product), enable re-invoicing in the Sales section
- Set the re-invoice policy: At Cost or At Sales Price
- When employees submit expenses, they can link them to a Sales Order
- The expense appears on the customer's next invoice
Step 5: Receipt Management
Configure receipt handling:
- Employees attach photos or PDFs of receipts directly to expense lines
- Set policies requiring receipts above certain amounts
- Use the mobile app or email-to-expense for quick submission
Step 6: Multi-Currency Expenses
For international travel:
- Employees select the currency when entering the expense amount
- Odoo converts to the company currency using the exchange rate on the expense date
- Reimbursement is always in the company currency
Step 7: Analytics and Reporting
Track expenses through:
- Expenses > Reporting > Expense Analysis — Breakdown by category, employee, department, and period
- Link expenses to analytic accounts for project or department-level cost tracking
- Compare budgeted vs. actual expense spending
Best Practices
- Create granular categories for meaningful expense analysis (not just "Travel")
- Set default costs for fixed-rate expenses like mileage and per diem
- Require receipts for expenses above a threshold (e.g., $25)
- Train employees on the expense submission process to reduce rejection rates
- Process expense reports within 5 business days to maintain employee satisfaction