Customer invoices

A customer invoice is a document issued by a company for products and/or services sold to a customer. It records receivables as they are sent to customers. Customer invoices can include amounts due for the goods and/or services provided, applicable sales taxes, shipping and handling fees, and other charges. Odoo supports multiple invoicing and payment workflows.

From draft invoice to profit and loss report, the process involves several steps once the goods (or services) have been ordered/shipped (or rendered) to a customer, depending on the invoicing policy:

Invoice creation

Draft invoices can be created directly from documents like sales orders or purchase orders or manually from Accounting ‣ Customers ‣ Invoices, or from the Customer Invoices journal card of the accounting dashboard.

An invoice must include the required information to enable the customer to pay promptly for their goods and services. Make sure the following fields are appropriately completed:

  • Customer: When a customer is selected, Odoo automatically pulls information from the customer record like the invoice address, preferred payment terms, fiscal positions, receivable account, and more onto the invoice. To change these values for this specific invoice, edit them directly on the invoice. To change them for future invoices, change the values on the contact record.

  • Invoice Date: If not set manually, this field is automatically set as the current date upon confirmation.

  • Due Date or payment terms: To specify when the customer has to pay the invoice.

  • Journal: Automatically set and can be changed if needed.

  • Currency. If the invoice’s currency differs from the company’s currency, the currency exchange rate is automatically displayed.

In the Invoice Lines tab:

  • Product: Click Add a line, then search for and select the product.

  • Quantity

  • Price

  • Taxes (if applicable)

To access the product catalog and view all items in an organized display, click Catalog. When the products and quantities are selected, click Back to Invoice to return to the invoice; the selected catalog items will appear in the invoice lines.

Invoice line tools

The following eYssen modules add tools above or in the invoice lines of draft invoices and bills:

  • Add Products from Delivery Notes (Invoicing from Stock Picking, eyssen_stock_picking_invoice): loads the not yet invoiced quantities of validated delivery notes or receipts of the partner. See Invoicing from delivery notes.

  • Add Bulk Products (Add Bulk Products for Invoice, eyssen_product_bulk_add_invoice): adds several products at once. In the pop-up window, select the Format (Copy/Paste, CSV or Excel), whether the file has a header (Is there a header?), how the products are identified (Based On: Default Code, Barcode or Product Name), whether the rows contain a quantity (With Quantity) and a unit price (With Price), and what happens if a product is already on the invoice (If Product Duplication: Stop, Skip, Replace or Increase). An example of the expected format is displayed in the window. Then, paste the rows in the Products field or upload the File, and click Add.

    Note

    • In Copy/Paste mode, write one product per line, with the quantity and the price separated by spaces (e.g., cb 10 99).

    • CSV files must use semicolons (;) as separators; the columns are: product identifier, quantity, price.

  • Add Previous Items (Add Items from Previous Invoice, eyssen_add_item_from_previous_invoice): copies the product lines (product, quantity, unit price) of another invoice of the same type. Select the Previous Invoice and the If Product Duplication behavior, then click Add.

  • Barcode scanning (eYssen Barcode Invoice, eyssen_barcode_invoice): scanning a product barcode adds the product to the invoice with a quantity of 1; if the product is already on the invoice, its quantity is increased.

  • Copy line values (Copying Invoice rows values, eyssen_copy_invoice_row_value): enable the toggle above the lines to display copy buttons next to the Product, Account, Analytic Distribution, Taxes and Disc.% columns. Clicking a copy button on a line sets the same value on all the other product lines of the invoice (after confirmation).

  • Quantity totals (Add Quantity Total for Invoice, eyssen_quantity_total_invoice): the totals block of the invoice displays the number of product and service types and the total quantity per unit of measure (Sum Qty (detailed)). The Sum Qty column is also available in the list of invoices.

Note

The toolbar above the invoice lines is provided by the Invoice Line Toolbar module (account_invoice_line_toolbar), which is installed automatically with the tools that use it. These tools do not require the Hungarian localization. With the Hungarian localization, the toolbar also shows the lock toggle of the line data (see Hungarian invoicing).

screenshot: accounting-invoice-line-tools
menu
Accounting ‣ Customers ‣ Invoices ‣ (open a draft invoice)
shows
Draft invoice, "Invoice Lines" tab: the toolbar above the lines with the "Add Products from Delivery Notes" button (left) and the barcode, "Add Previous Items" and "Add Bulk Products" icon buttons and the copy toggle (right); the copy buttons are visible next to the Product, Account and Taxes columns; the totals block shows the quantity totals.
highlight
The toolbar buttons and the quantity totals (red frames).
data
Demo company "YourCompany HU"; draft invoice with three product lines.
module
account_invoice_line_toolbar, eyssen_stock_picking_invoice, eyssen_product_bulk_add_invoice, eyssen_add_item_from_previous_invoice, eyssen_barcode_invoice, eyssen_copy_invoice_row_value, eyssen_quantity_total_invoice
notes
English UI, light theme, 1440px width.

Pricelist on invoices

With the Account - Pricelist on Invoices (account_invoice_pricelist) module, invoices have a Pricelist field, filled in with the customer’s pricelist. The pricelist is used to compute the unit prices of the lines added manually to the invoice. If the pricelist is changed on a draft invoice, click Update Prices to recompute the prices of the existing lines. Invoices can also be grouped by Pricelist in the list view.

With the Account Invoice Pricelist - Sale (account_invoice_pricelist_sale) module, invoices created from sales orders use the pricelist of the sales order.

Note

The Pricelist field is only visible if pricelists are enabled in the Sales settings.

Document comments

With the Account Comments (account_comment_template) module, comments can be printed above or below the invoice lines:

  1. Go to Accounting ‣ Configuration ‣ Management ‣ Document Comments and create a comment template: enter a name, the Template text, the Position on document (Top or Bottom), the models (e.g., invoices), and optionally a Company, a Partner, and a Filter Domain to restrict where the template is available.

  2. On the invoice, open the Comments tab and add the comment templates to print.

The templates are provided by the Base Comments Templates module (base_comment_template), which is shared by all the documents that support comments (invoices, sales orders, etc.). It determines which templates are proposed automatically on a new document:

  • a template with Global Template ticked applies to the documents of all partners;

  • the other templates only apply to the partners they are linked to. They can be linked from the Partner field of the template, or from the Comment Templates tab of the contact form;

  • in both cases, the document must belong to one of the models of the template and match its Filter Domain.

Drag the templates in the list to order them. The full list of templates, for all models, is also available in developer mode under Settings ‣ Technical ‣ Reporting ‣ Comment Templates.

Tip

The template text can contain dynamic placeholders, such as {{object.partner_id.name}}.

screenshot: accounting-invoice-comment-template
menu
Accounting ‣ Configuration ‣ Management ‣ Document Comments ‣ New
shows
Comment template form with a name, the template text, position "Bottom", model "Journal Entry" and an empty domain.
highlight
The "Position on document" field (red frame).
data
Template "Reverse charge notice".
module
account_comment_template, base_comment_template
notes
English UI, light theme, 1440px width.

Tip

To display the total amount of the invoice in words, go to Accounting ‣ Configuration ‣ Settings and activate the Total amount of invoice in letters option.

The Journal Items tab displays the accounting entries created. Additional invoice information such as the Customer Reference, Payment Reference, Fiscal Positions, Incoterms, and more can be added or modified in the Other Info tab.

Note

Odoo initially creates invoices in Draft status. Draft invoices have no accounting impact until they are confirmed.

Invoice confirmation

Click Confirm when the invoice is completed. The invoice’s status changes to Posted, and a journal entry is generated based on the invoice configuration. On confirmation, Odoo assigns each invoice a unique number from a defined sequence.

Note

  • Once confirmed, an invoice can no longer be updated. Click Reset to draft if changes are needed.

  • If required, invoices and other journal entries can be locked once posted using the Secure posted entries with hash feature.

  • If an approval rule applies to the invoice, it must be approved before it can be confirmed.

Correcting posted entries (administrators)

The Invoice Fixer (invoice_fixer) module adds an Edit Posted Move button to posted journal entries, visible only to users with the Administration: Settings access right. The Edit Posted Move window allows the administrator to:

  • modify the Debit, Credit, Quantity and Unit Price of the existing lines (Lines tab);

  • change the Exchange Rate of a foreign currency document;

  • add new product lines with their Product, Description, Quantity, Unit Price, Taxes and Account (Add New Lines tab).

Click Apply Changes to save. The document totals are recomputed, and the changes are logged in the chatter.

Danger

The changes are written directly into the database, without resetting the document to draft and bypassing the usual checks (e.g., lock dates, entry hashing, electronic invoicing). Use this tool only to correct technical errors, and preferably with the help of your accountant: legally, a posted invoice must be corrected with a credit note.

screenshot: accounting-invoice-edit-posted-move
menu
Accounting ‣ Customers ‣ Invoices ‣ (open a posted invoice) ‣ Edit Posted Move
shows
"Edit Posted Move" dialog with the invoice reference, the "Lines" tab listing the journal items with editable Debit, Credit, Quantity and Unit Price columns, the "Add New Lines" tab, and the "Apply Changes" button.
highlight
The editable columns and the "Apply Changes" button (red frames).
data
Demo company "YourCompany HU"; posted invoice with two lines; administrator user.
module
invoice_fixer
notes
English UI, light theme, crop to the dialog.

Invoice sending

To set a preferred Invoice sending method for a customer, go to Accounting ‣ Customers ‣ Customers and select the customer. In the Accounting tab of the contact form (Invoicing tab if only the Invoicing app is installed), select the preferred Invoice sending method in the Customer Invoices section.

Note

Sending letters in Odoo requires In-App Purchase (IAP) credit or tokens.

To send the invoice to the customer, navigate back to the invoice record and follow these steps:

  1. Click Send.

  2. If the default invoice layout has not been customized yet, a Configure your document layout pop-up window appears. Configure the layout and click Continue.

    Note

    • The document layout can be changed at any time in the general settings.

    • To add a QR code for banking app payments to the invoice, enable the QR Code option in the Configure Your Document Layout window. To modify this option, go to Accounting ‣ Configuration ‣ Settings, scroll down to the Customer Payments section, and enable/disable the QR Codes option.

  3. In the Send window:

    • If a preferred Invoice sending method was set in the contact form, it is selected by default. Select another one if needed.

    • If no preferred Invoice sending method was set in the contact form, select the method to use for sending the invoice to the customer.

  4. Click Send if the by Email option is selected, or click Download.

Sending multiple invoices

To send and print multiple invoices, go to Accounting ‣ Customers ‣ Invoices, select them in the Invoices list view and click Send. The Send window displays the selected invoice sending methods based on the preferred method set.

A banner is added to the selected invoices to indicate they are part of an ongoing send and print batch. This helps prevent the process from being triggered manually again, as it may take some time to complete for exceptionally large batches.

To check all invoices that have not yet been sent, go to Accounting ‣ Customers ‣ Invoices. In the Invoices list view, click into the search bar and filter on Not Sent.

Payment and reconciliation

In Odoo, an invoice is considered Paid when the associated accounting entry has been reconciled with a corresponding bank transaction.

Payment follow-up

Odoo’s follow-up actions help companies follow up on customer invoices. Different actions can be set up to remind customers to pay their outstanding invoices, depending on how much the customer is overdue. These actions are bundled into follow-up levels that trigger when an invoice is overdue by a certain number of days. If there are multiple overdue invoices for the same customer, the actions are performed on the most overdue invoice.

Reporting

Partner reports

Partner Ledger

The Partner Ledger report shows the balance of customers and suppliers. To access it, go to Accounting ‣ Accounting ‣ Ledgers ‣ Partner Ledger (PDF report) or Accounting ‣ Reporting ‣ Dynamic Reports ‣ Partner Ledger (interactive report).

Aged Receivable

To review outstanding customer invoices and their related due dates, use the Aged Receivable report. To access it, go to Accounting ‣ Reporting ‣ Dynamic Reports ‣ Aged Receivable, or use the Accounting ‣ Reporting ‣ Partner Reports ‣ Aged Partner Balance PDF report.

Aged Payable

To review outstanding vendor bills and their related due dates, use the Aged Payable report. To access it, go to Accounting ‣ Reporting ‣ Dynamic Reports ‣ Aged Payable, or use the Accounting ‣ Reporting ‣ Partner Reports ‣ Aged Partner Balance PDF report.

Profit and Loss

The Profit and Loss statement shows details of income and expenses.

Balance sheet

The Balance Sheet summarizes the company’s assets, liabilities, and equity at a specific time.