Part 4 · Finance
Expenses
Enter, photograph, group and submit expense claims for approval, with the receipt reading and tax-free tip that Symbifox adds.
The Expenses application is where you declare costs incurred for the organization: a business meal, a train ticket, a job ad paid with a personal card. Each person enters their expenses, groups them in a report and submits it to their manager. Once the report is approved, accounting posts it and reimburses the employee, or settles the company card. Symbifox adds two things Odoo does not do: reading a photographed receipt, and removing the tip from the taxable amount.
Overview#
An expense is one line: a category, a date, a total, an attached receipt. An expense report groups several expenses from the same person so they are approved and reimbursed together. The expense goes through five states, shown in the bar at the top of the form: To Report, To Submit, Submitted, Approved, Done. The report goes from To Submit to Submitted, then Approved, Posted and Done, or Refused if the manager sends it back.
The Paid By field separates two flows. Employee (to reimburse): the person advanced the money, and the report produces a vendor bill in their name in Invoicing. Company: the expense was paid with an organization card, and the report produces a payment entry with no reimbursement.
On the Boréal demo, expenses carry an Analytic Distribution (for example a recruitment file), which links them to a project or a cost centre. The Poste à pourvoir (position to fill) and Site d'emploi (job site) fields come from the recruitment module and link a disbursement to a hire: see Recruitment.
The entry screen is the My Expenses list, which shows the demo's eight expenses with their amount and state.

Configuration#
Access and permissions#
Anyone with an account can enter and submit their own expenses. Three roles are added on the user record, in the Expenses section. Team Approver approves the reports of the people they manage; All Approver approves all reports; Administrator configures the application, the categories and the settings. An employee's manager is set on their record in Employees: the report's Manager suggests that person by default.
Settings#
Expenses › Configuration › Settings groups the settings in two sections. On the demo, only Incoming Emails is checked.

| Setting | Effect |
|---|---|
| Incoming Emails | Creates an expense from an email sent to the organization's alias, with the receipt attached. The Setup your domain alias link leads to the domain setting. |
| Expense Digitalization (OCR) | A feature reserved for the Enterprise edition of Odoo. It stays cleared: Symbifox reads receipts another way (see Have a receipt read). |
| Reimburse in Payslip | A feature reserved for the Enterprise edition. It has no effect in Symbifox. |
| Employee Expense Journal | Accounting journal that receives the bills produced by reports paid by the employee. |
| Expense Outstanding Account | Suspense account for expenses paid by the company, cleared during bank reconciliation. |
| Compte des pourboires (tip account) | Left empty, the tip goes to the same account as the expense that carries it. Choose an account to isolate tips in your analyses. |
| Lire les reçus au téléversement (read receipts on upload) | Cleared by default. When checked, each photo attached to an expense is sent to the configured artificial intelligence provider as soon as it is uploaded. |
| Payment methods | Payment methods allowed for expenses paid by the company. |
Base data#
Before the first expense, check three things. First, the Expense Categories, under Configuration: the demo has six, including [FOOD] Meals and [COMM] Communication. Each has an expense account, a purchase tax and a Guideline shown under Category during entry. Second, the employee records, with a manager, so that reports find their approver. Third, the journal and accounts in the Accounting section of the settings, without which an approved report cannot be posted.
Getting started#
This walkthrough declares a business meal on the Boréal demo, from receipt to submitted report.
- Open Expenses › My Expenses › My Expenses, then select New.
- In Description, enter “Follow-up lunch, Clinique dentaire Rosemont”.
- In Category, select [FOOD] Meals. The guideline “Restaurants, business lunches, etc.” appears under the field.
- In Total, enter “26.30”, then in Pourboire (tip), enter “3.10”. Included taxes is recalculated on $23.20 only.
- In Paid By, leave Employee (to reimburse), then verify the Expense Date.
- Select Attach Receipt and choose the photo of the receipt. The receipt appears in the chatter (the message thread at the bottom of the form), and the attachment counter goes to 1.
- Select Create Report, then Submit to Manager.
The report opens in the Submitted state, with the expense in its Expense tab and the manager in Manager. The expense itself moves to Submitted.
Common tasks#
Create an expense manually#
This is the basic action, for any cost, whether or not you have the receipt at hand.
- Open Expenses › My Expenses › My Expenses, then select New.
- Enter the Description, then select the Category.
- Enter the Total. If the category has a fixed cost (a per-kilometre rate, for example), enter the quantity instead.
- Choose Paid By: Employee (to reimburse) or Company.
- Optional: fill in Analytic Distribution to charge the expense to a project or a file.
- Select Attach Receipt to add the photo or the PDF.
The expense is in the To Report state, visible in My Expenses.

Create an expense from a photo#
On a phone, the photo comes before the typing: Symbifox creates the expense from the file.
- Open Expenses › My Expenses › My Expenses.
- Select Upload, then choose one or more images or PDFs.
- Open the expense created for each file and complete the Category and the Total.
Each file becomes a draft expense, with the receipt already attached. If Lire les reçus au téléversement is checked, reading starts right away, and the amounts are already filled in when you open the expense.
Have a receipt read#
Receipt reading fills in the merchant, the date, the total, the taxes and the tip from the photo. Prerequisite: a receipt attached to the expense.
- Open the draft expense that carries the receipt.
- Select Lire le reçu (read the receipt).
- Verify the amounts filled in, then correct the Category if needed: the reading never guesses it.
When the receipt's arithmetic balances (subtotal, taxes and tip equal the total, within two cents), the amounts are written to the expense and the reading state changes to “Lue” (read). When it does not balance, nothing is written. The expense changes to “À vérifier” (to check), the reason appears above the form, and you enter the amounts by hand.
Enter the tip on a meal#
The tip carries no tax. Leaving it in the total inflates the tax credits claimed. The Pourboire field corrects this without splitting the expense.
- Open the meal expense.
- In Total, enter the amount actually paid, tip included.
- In Pourboire, enter the share left for the staff.
The Total does not change: it is the amount reimbursed. Included taxes is recalculated on the total minus the tip. At posting, the entry has two expense lines: the meal with its taxes, and the tip without tax. The tip goes to the meal's account or to the Compte des pourboires set in the settings.
Split an expense#
One receipt can cover two categories, for example a hotel and its parking.
- Open the expense while it is not yet in a report.
- Select Split Expense.
- In the dialog, enter one line per portion: description, category, amount and taxes.
- Confirm.
The original expense is replaced by as many expenses as there are lines. The button disappears as soon as the expense is attached to a report.
Group expenses in a report and submit it#
The report is the unit of approval and reimbursement.
- Open Expenses › My Expenses › My Expenses.
- Check the expenses in the To Report state, then select Action › Create Report. From an open expense, select Create Report directly.
- On the report, verify Expense Report Summary, Manager and Paid By.
- Select Submit to Manager.
The report moves to Submitted and the manager receives a notification. A report does not mix expenses paid by the employee and expenses paid by the company: create two.
Approve or refuse a report#
This task is reserved for approvers. Reports to process are in Expense Reports.
- Open Expenses › Expense Reports, then the report in the Submitted state.
- Review each line of the Expense tab and its receipts in the chatter.
- To accept, select Approve.
- To send it back, select Refuse, enter the reason, then confirm.
A refused report moves to Refused. The reason is recorded in the chatter, and the employee can correct the report with Reset to Draft.

Post and reimburse a report#
After approval, accounting takes over.
- Open the report in the Approved state.
- Select Post Journal Entries. A vendor bill in the employee's name, or a payment entry if the company paid, is created in the report's Journal.
- For a report paid by the employee, select Register Payment, choose the bank journal and confirm.
The report moves to Done. The entries appear in Invoicing, under Vendors › Employee Expenses.
Declare an expense by email#
With Incoming Emails checked, an email becomes an expense.
- Send an email to your organization's expense alias, from the address on your employee record.
- In the subject, enter the description, and attach the receipt.
- Open My Expenses to complete the category and the total.
The expense is created as a draft in your name, with the receipt attached.
Analyze expenses#
- Open Expenses › Reporting › Expenses Analysis.
- Choose the graph or pivot view, then group by Category, Employee or Expense Date.
- Optional: select the export icon to get a spreadsheet file.
The view totals the amounts according to your groupings. The state filters let you keep only approved reports.
The menus, one by one#
Expenses › My Expenses: grouping menu for the personal screens.
Expenses › My Expenses › My Expenses: list of the signed-in person's expenses, eight on the demo, with category, amount and state. This is the daily entry screen; New and Upload create an expense there. Useful filters: To Report, by state.
Expenses › My Expenses › My Reports: list of the signed-in person's reports, one on the demo. Each report opens the form with its lines, its state and a shortcut button at the top, Expenses.
Expenses › Expense Reports: all the reports the person is allowed to see; for an approver, those of their team. On the demo, the report of the refused claim. State filters: Submitted for what awaits a decision.
Expenses › Reporting: grouping menu.
Expenses › Reporting › Expenses Analysis: the demo's eight expenses in graph or pivot view, with the list as a fallback. It gives totals by category, by employee or by period.
Expenses › Configuration: grouping menu, reserved for administrators.
Expenses › Configuration › Settings: the settings described in Settings.
Expenses › Configuration › Expense Categories: the demo's six categories. Each record has a Product Name, a Cost (zero for an open amount), a Reference, a product Category, an Expense Account, Purchase Taxes and a Guideline.

Expenses › Configuration › Activity Types: the twenty-four activity types shared across Symbifox (email, call, meeting), used by Activities in the chatter. See Common actions in every application.
Reference#
Fields of the Expense form#
| Field | Description | Required or default |
|---|---|---|
| Description | Label of the expense, carried over to the report. | Required |
| Category | Expense category; sets the expense account and the taxes. | Required |
| Total | Amount paid, taxes and tip included. | Required, except for a fixed-cost category |
| Pourboire | Part of the total that carries no tax (tip module). Hidden on a fixed-cost category. | $0.00 |
| Included taxes | Taxes calculated on the total minus the tip. | Calculated |
| Employee | Person who incurred the expense. | The signed-in person |
| Paid By | Employee (to reimburse) or Company. | Employee |
| Expense Date | Date of the receipt. | Today's date |
| Account | Expense account, inherited from the category. | Inherited |
| Poste à pourvoir, Site d'emploi | Link to a hire (recruitment module). | Empty |
| Analytic Distribution | Project or file that bears the cost. | Empty |
| Company | Company concerned. | Current company |
| Notes | Free text. | Empty |
Fields of the Expense Report form#
| Field | Description | Required or default |
|---|---|---|
| Expense Report Summary | Title of the report. | Required |
| Employee | Author of the report. | The signed-in person |
| Paid By | Reimbursement flow, inherited from the expenses. | Inherited |
| Journal | Accounting journal of the entries produced. | Journal from the settings |
| Manager | Approver. | The employee's manager |
| Company | Company concerned. | Current company |
| Expense tab | Lines: date, category, description, analytic distribution, taxes, subtotals. | At least one line |
Fields of the Expense Category form#
| Field | Description | Required or default |
|---|---|---|
| Product Name | Name offered in Category on an expense. | Required |
| Cost | Fixed amount per unit; zero leaves the total open. | $0.00 |
| Reference | Short code in square brackets, for example FOOD. | Empty |
| Category | Product category. | All |
| Expense Account | Account debited at posting. | Empty (account of the product category) |
| Purchase Taxes | Taxes applied to the total. | None |
| Guideline | Instruction shown under Category during entry. | Empty |
Reports and exports#
The Expenses Analysis screen offers graph and pivot views, with spreadsheet export. An expense report prints to PDF from the print menu of its form, with the receipts separate. The My Expenses list exports like any list: see Common actions in every application.
Automations#
Two mechanisms work on their own. When Incoming Emails is checked, emails received on the expense alias become draft expenses as soon as they arrive. An hourly catch-up for receipt reading exists, but it is turned off at installation. Once the technical team turns it on, it only touches draft expenses that carry a receipt and have never been read. Reading on upload is controlled by the checkbox in the settings.
Public pages and portal#
This application has no public page and no portal.
Modules that extend this application#
Understanding#
Why reading refuses to write a receipt that does not balance. A crumpled thermal receipt reads poorly, and the confidence the model announces is only an opinion. The only reliable check is the receipt's arithmetic: subtotal, taxes and tip must equal the total. When they do not, there is no way to tell which of the five numbers is wrong, and filling one in would present a guess as a fact. The expense therefore changes to “À vérifier” and the person enters the amounts, as they would have done anyway.
Why the tip has its own field. An expense total is deemed to include taxes. Take a $26.30 receipt with a $3.10 tip and the combined GST and QST tax: Odoo calculates $3.42 in taxes where the restaurant collected $3.02. That is forty cents of credits over-claimed, on a single meal. Split Expense gives the right result, but it copies the expense into several records, disappears once a report exists and requires retyping the category and taxes. The Pourboire field makes the same correction in one step.
What the tip module does not do. Revenu Québec limits tax credits on meals and entertainment expenses to half. The module corrects the base; it does not choose the claiming method, which belongs to the organization's tax file. On a fixed-cost category (mileage), the field is hidden, as is the split button.
What reading does not guess. Neither the category nor the vendor. A meal filed in the wrong category by hand is corrected in one step; a meal misfiled automatically is corrected when someone notices. Reading does not cross-check the date against the calendar either, and it anonymizes nothing: choosing the subscription that reads the receipt is the privacy decision.
Two flows, two entries. Paid by the employee, the report becomes a vendor bill in their name, paid like any bill. Paid by the company, it becomes an entry on the outstanding account, which bank reconciliation clears. That is why a report cannot mix the two.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
| The expense changes to “À vérifier” after reading and no amount is filled in. | The receipt's arithmetic does not balance: one of the five numbers was misread. | Read the reason shown above the form and enter the amounts by hand. |
| Pourboire stays empty after reading although the receipt shows a tip. | The deduced tip exceeds 40% of the subtotal, or is negative. | Enter the tip by hand, and verify the subtotal that was read. |
| Split Expense is no longer there. | The expense is attached to a report, or its category has a fixed cost. | Remove the expense from the draft report, or enter the Pourboire instead of splitting. |
| The report finds no approver. | The employee record has no manager. | Fill in the manager in Employees, or choose the Manager on the report. |
| Post Journal Entries fails. | There is no journal in the settings, or a category has no expense account. | Fill in Employee Expense Journal and the category's Expense Account. |
| The taxes shown exceed those on the receipt. | The tip was left in the Total without being entered in Pourboire. | Enter the tip: Included taxes is recalculated. |
| Reading on upload does not start. | Lire les reçus au téléversement is cleared, which is the default. | Check it in the settings, or select Lire le reçu case by case. |
See also#
- Invoicing: the vendor bills and payments produced by reports.
- Employees: the employee record and its manager.
- Recruitment: expenses linked to a hire.
- Project: analytic distribution by project.
- Mobile apps and browser extension: photographing a receipt from your phone.
- Common actions in every application: chatter, activities, exports.