Reinvoice expenses to customers

Estimated reading: 3 minutes 10 views

Introduction

When managing client projects, it’s common for employees to incur expenses on behalf of the company — such as travel, accommodation, meals, or communication costs. To ensure accurate billing and maintain profitability, these expenses should be reinvoiced to the customer. Odoo 18 streamlines this process through its integrated Expenses, Sales, and Accounting applications.

This article walks you through the full process of reinvoicing project-related expenses to customers using Odoo 18.

Step-by-Step Instructions

 

Step 1: Install the Expenses Application

Before you can record and reinvoice expenses, ensure the Expenses module is installed.

  • Go to Dashboard > Apps
  • Search for Expenses
  • Click Install

Once installed, return to the dashboard to access the Expenses app.

 

Step 2: Confirm a Sales Order

To link expenses to a customer, start with a confirmed sales order.

  1. Navigate to Sales > New to create a new quotation.
  2. Select the Customer and add at least one Product under the Order Lines
  3. Click Confirm to finalize the sales order.

This sales order will later be used to track and invoice related expenses.

 

Step 3: Record an Expense

Now that a sales order is confirmed, proceed to log an expense.

  1. Go to Expenses > New
  2. In the expense form:
    1. Enter a clear Description (e.g., “Hotel for On-site Visit”)
    2. Select a Category (e.g., Travel & Accommodation)
    3. Enter the Total amount of the expense
    4. Select any applicable Included Taxes
    5. Choose the Employee who incurred the expense
    6. Under Paid By, choose:
      1. Employee (to reimburse) if the employee paid out-of-pocket
      2. Company if the company paid directly
    7. In the Customer to Reinvoice field, select the related sales order
    8. Optionally, add notes or attachments (e.g., scanned receipts)

Tip: New expense categories can be created by selecting View All in the Category dropdown, then clicking New.

Step 4: Submit and Approve the Expense

Once the expense is filled:

  1. Click Create Report
  2. Then click Submit to Manager

The approving manager will review the expense. If everything is accurate:

  1. Manager clicks Approve
  2. Then clicks Post Journal Entries to validate the accounting entries

At this stage, the expense is officially recorded and linked to the selected sales order.

Step 5: Reinvoice the Customer

To invoice the customer for the expense:

  1. Go to Sales > Select the relevant sales order
  2. Under the Order Lines tab, the expense will now appear, marked as Delivered
  3. Click Create Invoice
  4. In the pop-up, select Regular Invoice and click Create Draft Invoice
  5. Review the draft invoice and click Confirm

To send the invoice:

  • Click Send & Print
  • Review the email message and invoice PDF
  • Click Send & Print again to dispatch the invoice to the customer

Once the customer pays:

  • Click Register Payment
  • Review the payment details and click Create Payment

A green “In Payment” banner confirms the invoice has been paid.

Managing Expense Categories for Reinvoice

Not all expense categories allow reinvoicing by default. To manage this:

  1. Navigate to Expenses > Configuration > Expense Categories
  2. Check the Re-Invoice Expenses column for each category
  3. To modify a category:
    1. Click the arrow next to the category name
    2. Under the Invoicing section, choose:
      1. At cost – to bill the customer the actual cost
      2. Sales price – to use a markup or set price

Ensure the correct invoicing policy is applied based on your company’s billing strategy.

Conclusion

 

Odoo 18 makes it simple to track, approve, and reinvoice expenses to customers. By linking expenses directly to sales orders, businesses ensure transparency and proper cost recovery. This integration between Sales, Expenses, and Accounting apps ensures that no expense goes unbilled — boosting accuracy and profitability across all client engagements.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Learn how we helped 100 top brands gain success