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.
See also
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 , 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).
- 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:
Go to 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.
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 .
Tip
The template text can contain dynamic placeholders, such as {{object.partner_id.name}}.
- 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 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.
See also
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.
- 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 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:
Click Send.
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 , scroll down to the Customer Payments section, and enable/disable the QR Codes option.
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.
Click Send if the by Email option is selected, or click Download.
Sending multiple invoices¶
To send and print multiple invoices, go to , 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 . 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.
See also
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 (PDF report) or (interactive report).
Aged Receivable¶
To review outstanding customer invoices and their related due dates, use the Aged Receivable report. To access it, go to , or use the PDF report.
Aged Payable¶
To review outstanding vendor bills and their related due dates, use the Aged Payable report. To access it, go to , or use the 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.