Expenses in Odoo 20: Why Approved Expenses Now Become Draft Bills

Every Odoo release retires a few familiar screens, and in Odoo 20 one of the quieter casualties sits in Accounting: the standalone Employee Expenses menu item is gone. What replaced it matters more than the menu itself. In Odoo 20, an approved expense no longer travels its own private accounting path — it generates a draft bill in your default expense journal, where accountants can filter, review, and post it alongside ordinary vendor bills. It is a small change on paper, but it reshapes who touches an expense claim, where it waits for review, and how cleanly it lands in your books.

Diagram showing Odoo 20 approved expenses generating draft bills in the expense journal for review and posting alongside vendor bills

What exactly changed in Odoo 20

The release notes state the change plainly: the standalone “Employee Expenses” menu item has been removed to unify accounting flows, and approved expenses now generate draft bills in the default expense journal. Three details in that sentence deserve attention.

  • The trigger is approval. Nothing changes while an expense is being drafted, submitted, or reviewed by a manager. The draft bill appears at the moment the expense is approved.
  • The destination is a journal you already use. The draft bill lands in the default expense journal, not in a separate expense silo inside Accounting.
  • The review is shared. Because the result is a bill, accountants handle it with the same tools, filters, and habits they apply to vendor bills — the release notes explicitly describe accountants filtering, reviewing, and posting expense bills alongside standard vendor receipts.

Everything upstream of approval works the way Odoo users already know it. Employees log expenses with a description, an expense category, an amount, and a receipt; they group expenses into a report and submit it to their manager; managers approve or refuse. Odoo 20 did not redesign that flow — it redesigned what approval produces.

How expenses reached the books before

In earlier versions, an approved expense report was posted into accounting as its own kind of document. Accountants worked with expense entries through the dedicated Employee Expenses entry point in Accounting, separate from the vendor bills queue. That separation had a cost: two review habits, two places to check when a number looked wrong, and an expense process that new accounting staff had to learn as a special case rather than as part of the regular bill workflow.

The practical symptom was familiar to any finance team. Vendor bills got reviewed promptly because they sat in the main accounts payable flow. Employee expenses, living in their own corner, were easier to postpone — and a postponed expense is a reimbursement an employee is still waiting for.

The new flow, step by step

  1. Capture. The employee records the expense and attaches the receipt. On mobile, files can be shared straight from the phone into Odoo to digitise expenses, which shortens the distance between spending money and claiming it.
  2. Submit. Expenses are grouped into a report and submitted to the manager, exactly as before.
  3. Approve. The manager reviews and approves. Odoo 20 adds a useful guardrail here: expense limits can now be defined per job position, and managers can cap an expense at the authorised limit before granting final approval.
  4. Generate. Approval creates a draft bill in the default expense journal. The expense has now entered the same population of documents as your supplier invoices.
  5. Review and post. The accountant filters the journal, reviews the draft bills together with vendor bills, corrects anything that needs correcting, and posts them.
  6. Settle. Once posted, the amount owed to the employee is a payable like any other. Depending on how your company reimburses, it is settled through the normal payment flow or in the employee's payslip — Odoo's Expenses documentation covers both reimbursement routes, and Odoo 20 lets expense products carry a salary rule so payroll calculates each expense type correctly.

Why Odoo made this change

The stated reason — unifying accounting flows — is worth taking seriously, because the benefits compound:

  • One review queue. Every third-party amount the company owes sits in the bills workflow. Month-end close stops depending on someone remembering to check a second list.
  • One set of controls. Draft bills inherit the discipline accountants already apply to vendor bills: review before posting, consistent accounts and taxes, and the same audit trail in the journal.
  • Fewer special cases. New accounting staff learn one payables process. Employee expenses stop being the exception that requires its own training note.
  • Cleaner reporting. Expenses live in a journal alongside other bills, so payables reporting reflects everything the business owes — suppliers and staff alike.
  • A natural home for reinvoicing. Where an expense needs to be billed on to a client, it now starts life as the same kind of document as every other cost the client might see, which makes the chain from receipt to customer invoice easier to follow and to explain.

What it means for each role

Employees

Almost nothing changes. You still log the expense, attach the receipt, submit the report, and get reimbursed. If anything, the change should shorten the wait: your approved claim now queues in the accountant's main workflow instead of a side list.

Managers

Approval still happens in the Expenses app, but Odoo 20 gives managers a firmer hand. With expense limits defined per job position, an over-limit claim can be capped at the authorised amount before final approval rather than bounced back and forth — a small feature that removes a common source of friction between staff and approvers.

Accountants

This is where the change lands. Your review surface moves: expect approved expenses to arrive as draft bills in the expense journal, and build your filters and routines around that. The upside is real — one queue, one posting habit — but the first month after upgrading deserves a deliberate check that nothing approved is sitting unreviewed in draft.

The other Expenses changes in Odoo 20

The draft-bill change is the headline, but the Expenses section of the release notes adds three supporting improvements:

  • Consolidated expenses report. Multiple expenses can be selected and printed at once in a single consolidated report — handy for handing a paper trail to an auditor or attaching a summary to a client file.
  • Expense limits per job position. Maximum allowable amounts can be defined per job position, with managers able to cap claims at the limit during approval, as described above.
  • Salary rules for expense products. Expense products can be assigned the appropriate salary rule, so when an expense is reimbursed through payroll, each type of expense is calculated the right way.

Preparing for the upgrade

If you run Odoo 19 or earlier and plan the move to 20, a short checklist will make the transition boring — which is what you want:

  • Confirm which journal is your default expense journal, and make sure its configuration (accounts, taxes, numbering) is the one you want expense bills to inherit.
  • Decide who reviews draft expense bills and how often; the queue only helps if someone owns it.
  • Set expense limits per job position before go-live, so managers can use the new capping behaviour from day one.
  • If you reimburse through payslips, assign salary rules to your expense products so payroll picks them up correctly.
  • Tell employees what will not change — submission works as before — so the missing menu item in Accounting doesn't trigger a round of confused tickets.

Odoo 20's expense change is a good example of the release's broader housekeeping instinct: fewer parallel paths, fewer special cases, and everyday documents flowing through one well-understood pipeline. Approved expenses becoming draft bills will not headline any keynote — but the first month-end close that doesn't require a separate hunt for stray expense entries will make the case on its own.

Further reading

Leave a Comment