Odoo Expenses provides a complete end-to-end workflow for employee expense management. Employees log individual expenses — manually, by uploading a receipt, or by emailing a photo of a receipt — and then group them into expense reports for submission. Managers review and approve or refuse those reports, accountants post the approved expenses to the correct accounting journals, and finally employees are reimbursed through direct payment or via their next payslip. Every step is tracked and auditable, and approved expenses flow directly into Odoo Accounting without manual re-entry.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/odoo/documentation/llms.txt
Use this file to discover all available pages before exploring further.
Expense Categories
Before employees can log expenses, the types of reimbursable expenses must be configured as expense categories (managed as products in Odoo). Default categories cover common business expenses including communication costs, meals, gifts, mileage, and general travel.Viewing Expense Categories
Navigate to Expenses app → Configuration → Expense Categories to see all available categories. The general-purpose category EXP_GEN is available for expenses that do not fit any specific category.Creating a New Expense Category
Open the new category form
Navigate to Expenses app → Configuration → Expense Categories, then click New.
Set the cost
- Leave Cost at
0.00if employees should report the actual amount they paid. The employee enters the real expense total when logging the expense, and is reimbursed that amount. - Enter a fixed Cost if the expense should always be reimbursed at a set rate. For example, set
1.00per mile for mileage reimbursements, or125.00per day for a per-diem category.
Configure taxes, account, and other settings
Assign an expense Account, applicable Taxes, and optionally configure re-invoicing rules if expenses in this category can be billed back to a customer.
Logging Expenses
Before a reimbursement can be processed, each individual expense must be recorded in the database. Odoo supports four methods for creating expense records.- Manual Entry
- Upload a Receipt (OCR)
- Drag and Drop
- Email a Receipt
Open the Expenses app (which displays the My Expenses page by default), then click New. Fill in the following fields:
After saving, click Attach Receipt to upload the supporting document.
| Field | Description |
|---|---|
| Description | A concise label such as Lunch with client or Hotel for trade show. |
| Category | The expense category that most closely matches the expenditure. |
| Total / Quantity | For single-item expenses, enter the total paid. For fixed-rate categories (like mileage), enter the Quantity and the unit price is applied automatically. |
| Included Taxes | Auto-populated from the category’s tax configuration. |
| Employee | The employee to be reimbursed. |
| Paid By | Select Employee (to reimburse) or Company. |
| Expense Date | The date the expense was incurred. |
| Account | Defaults to the category’s linked account, or 600000 Expenses if none is set. |
| Customer to Reinvoice | If a customer agreed to pay for this expense, select the related Sales Order. |
| Analytic Distribution | Assign the cost to one or more projects or departments for analytic reporting. |
| Notes | Any supporting context or justification. |
Multiple receipts can be attached to a single expense record. Each attachment is logged in the record’s chatter, and the paperclip icon shows a count of attached files.
Submitting an Expense Report
Once individual expenses have been logged, they must be grouped into an expense report and submitted for manager approval.The My Expenses Dashboard
Open the Expenses app to view the My Expenses dashboard. Expenses are color-coded by status:- Blue text — Draft (created but not yet submitted).
- Black text — Submitted, Approved, or Refused.
- To Submit — total value of Draft expenses.
- Waiting Approval — total value of Submitted expenses.
- Waiting Reimbursement — total value of Approved expenses.
Submitting Expenses
Select expenses to submit
On the My Expenses dashboard, tick the checkbox next to each Draft expense you want to include in the report. Only Draft expenses show the Submit button.
Manager Approval Workflow
Only users with at least Team Approver rights in the Expenses app can process submitted expense reports. Managers access the approval queue at Expenses app → My Expenses → Expenses to Process. The Expenses to Process dashboard lists all reports with a status of Submitted. Reports in other statuses (Draft, Approved, Posted, In Payment, Paid, or Refused) are hidden by default; use the Status panel on the left to filter them in.Approving Expenses
- Approve Individually
- Approve in Bulk
Click on any submitted expense report to open the detail view. The available action buttons are:
- Approve — advances the report to Approved status.
- Refuse — opens a dialog to enter a refusal reason, which is sent to the employee.
- Reset — returns the report to Draft.
- Post Journal Entries — posts directly to accounting (requires Accounting access rights).
- Report in Next Payslip — queues the expense for reimbursement in payroll.
- Split Expense — splits the report into separate line items.
- Attach Receipt — adds a supporting document.
Refusing an Expense
Expenses can only be refused individually, not in bulk. Open the individual report from Expenses to Process, then click Refuse. Enter a reason in the popup — the reason is communicated back to the employee via the chatter.Posting Expenses to Accounting
Once a report is Approved, an accountant (with Accountant or Adviser role in Accounting and Manager role in Expenses) must post the journal entries.Filter for Approved expenses
Navigate to Expenses app → My Expenses → Expenses to Process. On the left panel, tick only the Approved checkbox to show reports ready to post.
Post individually or in bulk
- Individually: Click an approved report, then click Post Journal Entries. Verify the Journal (defaults to Purchases) and Accounting Date, then click Post Expenses.
- In bulk: Select multiple approved reports and click Post Journal Entries in the action bar.
Reimbursing Employees
Once an expense report is posted, the final step is to reimburse the employee. Odoo supports two reimbursement methods.- Direct Payment (Cash, Check, or Bank Transfer)
- Reimburse in Payslip
Navigate to the posted expense report and click the Register Payment button. Select the payment method — Manual Payment (Bank), Batch Deposit (Bank), Checks (Bank), or any other method configured in Expenses app → Configuration → Settings under the Payment Methods section. Confirm the payment to mark the expense as Paid.
Only expenses with Approved or Posted status can be added to a payslip. Attempting to reimburse a Draft or Submitted expense via payslip will trigger a warning.
Reinvoicing Expenses to Customers
If an expense was incurred on behalf of a customer (for example, travel costs for an on-site project), Odoo can bill the expense back to the customer through an existing Sales Order. Set the Customer to Reinvoice field on the expense record to the relevant Sales Order. After approval and posting, the expense is automatically added to the sales order and can be invoiced to the customer in the usual way.Expense Cards
Odoo offers physical and virtual expense cards that allow for real-time expense tracking. When an employee makes a purchase with an expense card, a new expense record is created automatically — eliminating the need to manually log individual expenses after the fact.Expense cards require both the Accounting and Invoicing apps to be installed. They operate as pre-paid debit cards connected to a company Stripe account; funds must be added to the Stripe account before employees can make purchases.
Availability
Expense cards are currently available for companies located in the following countries: Austria, Belgium, Croatia, Cyprus, Estonia, Finland, France, Germany, Greece, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Portugal, Slovakia, Slovenia, and Spain.Fees
Odoo covers all fees associated with creating virtual and physical expense cards.Setup Overview
Configure and activate the card
Navigate to Expenses app → Configuration → Settings to configure the expense card feature and activate cards for your company.
Create a Stripe account
A Stripe account must be created and connected to Odoo before cards can be funded.
Add funds
Add funds to the company’s connected Stripe account. Note that transfers typically take 2–3 business days to become available.