Log expenses¶
Before expenses can be reimbursed, each individual expense needs to be logged in the database. Expense records can be created in four different ways: manually enter an expense record, upload a receipt, drag and drop a receipt onto the Expenses app dashboard, or email a receipt to a preconfigured email address.
Manually enter expenses¶
To record a new expense, open the Expenses app, which displays the My Expenses page, by default.
Tip
This view can also be accessed at any time by navigating to .
Click the New button and fill out the following fields on the blank expense form that loads:
Description: Enter a short description for the expense. This should be concise and informative, such as
Lunch with clientorHotel for trade show.Category: Using the drop-down menu, select the expense category that most closely corresponds to the expense.
Total: Enter the total amount paid for the expense in one of two ways:
If the expense is for a single item/expense, and the category selected was for a single item, enter the cost in the Total field (the Quantity field is hidden).
If the expense is for multiples of the same item/expense with a fixed price, the Unit Price is displayed. Enter the number of units in the Quantity field, and the total cost is automatically updated with the correct total. The total cost appears below the Quantity.
Example
An employee received one dollar for each mile driven for work. The Category is [MIL] Mileage. The Unit Price is automatically populated with
$1.00, which is the cost per mile configured for the expense Category [MIL] Mileage. The Quantity is set to48, which is the number of miles driven, and the total is calculated to$48.00.
Included Taxes: If taxes were configured on the selected expense category, the tax percentage and amount appear automatically after entering either the Total or the Quantity.
Note
When a tax is configured on an expense category, the Included Taxes value updates in real time, as the Total or Quantity is updated.
Employee: Using the drop-down menu, select the employee associated with the expense.
Paid By: Click the radio button to indicate who paid for the expense and should be reimbursed. Select either Employee (to reimburse) or Company. Depending on the expense category selected, this field may not appear.
Expense Date: Using the calendar popover window that appears when this field is clicked, enter the date the expense was incurred.
Account: If the selected expense Category has a specific account linked to it, that account appears in the Account field. If no account is specified, the default
600000 Expensesaccount populates this field. If a different account is desired, select the account the expense should be logged in.Customer to Reinvoice: If the expense should be paid for by a customer and the selected Category allows for reinvoicing of expenses, select the SO and customer to be invoiced for the expense using the drop-down menu. All sales orders in the drop-down menu list both the SO, as well as the company the sales order is written for. After the expense is saved, the customer name disappears, and only the SO is visible on the expense.
Example
A customer wishes to have an on-site meeting for the design and installation of a custom building, and agrees to pay for all expenses associated with the meeting, including travel, hotel, and meals for the traveling employees. All expenses tied to that meeting would indicate the sales order for the custom building (which also references the customer) as the Customer to Reinvoice.
Analytic Distribution: Select the account the expense should be written against from the drop-down menu for either Projects, Departments, or both. Multiple accounts can be listed for each category, if needed. Adjust the percentage for each analytic account by typing in the percentage value next to each account.
Company: If in a multi-company database, select the company the expense should be filed for using the drop-down menu. The current company automatically populates this field.
Notes…: If any notes are needed to clarify the expense, enter them in the notes field.
- menu
- Expenses ‣ My Expenses ‣ My Expenses ‣ New
- shows
- A filled-in expense form for a client lunch: Description "Client lunch", Category "Meals", Total, Included taxes, Employee, Paid By "Employee (to reimburse)", Expense Date, Account, Customer to Reinvoice, Analytic Distribution, Company and Notes.
- highlight
- The "Paid By" and "Total" fields.
- data
- Description "Client lunch with Deco Addict", Category Meals, Total 84.00, Paid By Employee (to reimburse).
- module
- hr_expense
- notes
- English UI, light theme, 1440px width.
Attach receipts¶
After the expense record is created, the next step is to attach a receipt. Click the Attach Receipt button, and a file explorer appears. Navigate to the receipt to be attached, and click Open.
The new receipt is recorded in the chatter, and the number of receipts appears next to the (paperclip) icon. Multiple receipts can be attached to an individual expense record, as needed.
Upload expenses¶
Expense records can also be created directly from receipt files (PDF or image), without typing the expense first: each uploaded file becomes a new expense with the receipt attached.
Note
Receipt digitization (OCR) is not available: the uploaded file is attached to the expense, but the amount, date, and category are not read from it. Fill in these fields manually after the upload. The Expense Digitalization (OCR) and Reimburse in Payslip options shown on the page are not supported and should be left disabled.
Upload receipts¶
Open the Expenses app, and from the My Expenses dashboard, click Upload, and a file explorer appears. Navigate to the desired receipt(s), select them, then click Open.
One expense record is created per file. The Description is the file name (without its
extension), the Expense Date is today’s date, the Total is zero, and the
Category is the expense category with the internal reference EXP_GEN (or, if there
is no such category, the first category that can be expensed). The new records open in the
Generate Expenses list.
Note
At least one expense category (a product with the Expenses checkbox enabled) must exist, otherwise the upload is refused with an error.
Click on a new entry to open the individual expense form, and complete the Total, Category, and any other fields from the receipt. The uploaded receipt appears in the chatter and in the attachment preview on the right side of the form.
- menu
- Expenses ‣ My Expenses ‣ My Expenses ‣ Upload
- shows
- The "Generate Expenses" list opened right after uploading two receipt files; each line has the file name as Description, today's date, the EXP_GEN category and a 0.00 total.
- highlight
- The "Upload" button in the control panel and the Description column.
- data
- Demo employee "Mitchell Admin"; receipts "taxi-2025-03-04.pdf" and "hotel-brussels.pdf".
- module
- hr_expense
- notes
- English UI, light theme, 1440px width.
Drag and drop an expense¶
Receipt files can also be dragged and dropped onto the My Expenses list or onto the expense kanban view. A drop zone appears while a file is dragged over the view; releasing the file creates the expense record(s) exactly as with the Upload button, and the new records appear in the Generate Expenses list.
Click on the expense record, and modify the details as needed. After changes are made, return to the My Expenses dashboard, and the expense now appears in the list.
Email expenses¶
Instead of individually creating each expense in the Expenses app, expenses can be automatically created by sending an email to an email alias.
Note
For security purposes, only authenticated employee emails are accepted by Odoo when creating an expense from an email. To confirm an authenticated employee email address, go to the employee card in the , and refer to the Work Email field.
- menu
- Employees ‣ (an employee) ‣ Work Information
- shows
- The employee form with the "Work Email" field filled in under the Work Information section; this address is the one accepted for e-mailed expenses.
- highlight
- The "Work Email" field.
- data
- Employee Mitchell Admin, work e-mail [email protected].
- module
- hr_expense
- notes
- English UI, light theme, 1440px width.
To do so, an email alias must first be configured. Navigate to . Ensure the checkbox beside Incoming Emails is ticked. The default email alias is expense@(domain).com. Change the email alias by entering the desired email in the field to the right of Alias. Then, click Save.
Note
If the domain alias needs to be set up, Setup your domain alias appears beneath the Incoming Emails checkbox, instead of the email address field.
Refer to the Domain names documentation for setup instructions and more information.
Once the domain alias is configured, the email address field is visible beneath the Incoming Emails feature on the Settings page in the Expenses app.
Once the email address has been entered, emails can be sent to that alias to create new expenses, without having to be in the Odoo database.
To submit an expense via email, create a new email, and enter the product’s reference code (if available) and the amount of the expense as the subject of the email. Next, attach the receipt to the email. Odoo creates the expense by taking the information in the email subject, and combining it with the receipt.
Tip
To check an expense category’s reference code, go to . Reference codes are listed in the Reference column.
To add a reference code to an expense category, click on the category to open the expense category form. Enter the reference code in the Reference field.
- menu
- Expenses ‣ Configuration ‣ Expense Categories
- shows
- The Expense Categories list with the "Internal Reference" column visible, showing the reference codes (e.g. FOOD, MIL, TRAVEL) used as the first word of the e-mail subject.
- highlight
- The "Internal Reference" column.
- data
- Default demo categories.
- module
- hr_expense
- notes
- English UI, light theme, 1440px width.
Example
If submitting an expense, via email, for a $25.00 meal during a work trip, the email subject
would be FOOD $25.00.
Explanation:
The Reference for the expense category
MealsisFOODThe Cost for the expense is
$25.00