How to Re-Invoice Expenses in Odoo 18 for Efficient Billing

Re-invoicing expenses in Odoo 18 is a total game-changer for service-based businesses like consultancies, agencies, and project-driven firms. It allows you to charge your clients for any costs you’ve covered on their behalf — like travel, accommodation, or meals — all within a few clicks. No more manual tracking or awkward spreadsheet gymnastics!

Imagine this: your consultant travels interstate for a client meeting. Flights, hotel, meals — all covered by your company. With Odoo’s expense re-invoicing, those costs can be automatically pushed to the client’s invoice. Smooth, transparent, and accurate billing. Let’s see how you can set this up like a pro.

🔧 Configure Expense Categories for Re-Invoicing

Start by defining how each expense type should be billed.

Go to:
 Expenses > Configuration > Expense Categories

When creating or editing an expense category, check the Re-invoice Costs section. You’ve got three options:

  • No – Expense is recorded, but not billed to the customer.
  • At Cost – Re-invoice the exact cost of the expense.
  • Sales Price – Re-invoice with a predefined sales price.

💸 Re-Invoice Option: At Cost

This is perfect when you want to recover the exact amount spent.

  1. Set Re-invoice Costs to At Cost in the Expense Category.
  2. Add the Cost amount — if set here, it becomes fixed and un-editable in the expense form.
  3. Head to My Expenses > My Expenses and click New to create a new expense.

Fill in the form with details like:

  • Description: e.g., “Client Dinner”
  • Category: e.g., Meals
  • Total: e.g., Amount
  • Employee: Who submitted the expense
  • Paid By: Employee or Company
  • Customer to Re-invoice: Link a Sales Order to trigger the billing

💡 Once submitted and approved, click Post Journal Entries. Your expense now appears in the Sales Order lines. From there, just hit Create Invoice, choose invoice type, and boom — the client gets billed!

💵 Re-Invoice Option: Sales Price

If you want to make a margin on expenses (like mileage or billable services), this is your friend.

  1. Set Re-invoice Costs to Sales Price in the Expense Category.
  2. Enter both Cost Price and Sales Price (e.g., $1.5 cost, $2.0 sales).
  3. While creating the expense:
    • Choose the category (e.g., “Mileage”)
    • Enter Quantity (e.g., 30 km)
    • Customer to Re-invoice = Sales Order

The sales order line will show 30 units x $2.00, and the margin is yours 🎯. As always, submit → approve → post entries → create invoice → confirm → get paid.

🚫 Re-Invoice Option: No

  • Sometimes, expenses like corporate gifts or internal meetings aren’t billed to clients. Here’s how to handle those:

    1. Set Re-invoice Costs to No in the Expense Category.
    2. Create an expense as usual — but you won’t see the Customer to Re-invoice field anymore.
    3. Submit → Approve → Post Journal Entry

    No invoice is created, but the expense is tracked in your accounts. Clean and simple!

✅ Final Thoughts

Odoo 18’s expense re-invoicing helps businesses stay financially healthy and transparent with their clients. Whether it’s charging clients exactly what you spent or adding a markup, it’s all handled within a few clicks — no more lost receipts or manual follow-ups.

Perfect for:

  • Consulting Firms
  • Field Service Providers
  • Freelancers & Contractors
  • Any business that handles client-based expenses

So next time your team covers costs for a client, don’t sweat it — let Odoo Consultant do the heavy lifting and keep your billing tight. 💼💰