The basic flow is quotation → sales order → draft invoice → posted invoice → payment → reconciliation. The product’s invoicing policy determines when you can invoice. Payment registration and matching the bank transaction can be separate steps.
1. Prepare a simple sales example
Use a test database with Sales and the invoicing or accounting functionality required by your setup. Have an administrator or accountant configure the company, currency, journals, taxes, and account permissions first.
For the example, use a fictitious customer and a sellable demo product with Ordered quantities as its invoicing policy. We will quote two units at 100 each in the company’s configured currency: 200 before any applicable taxes or discounts.
This walkthrough follows customer billing. Warehouse fulfillment, online payment-provider setup, and country-specific tax reporting have additional workflows. Use your organization’s approved tax and accounting configuration for live documents.
2. Check when the product can be invoiced
Odoo documents two main invoicing policies. Check the existing product’s form; changing a default in Sales settings does not update all existing products.
On small screens, scroll the table sideways to see every column.
| Policy | When to create an invoice | Common source of confusion |
|---|---|---|
| Ordered quantities | After the quotation is confirmed as a sales order. | Creating a quotation alone does not confirm the order. |
| Delivered quantities | After an invoiceable delivery has been recorded. | An undelivered order may have nothing ready to invoice. |
For delivered goods, process and validate the real delivery before invoicing the delivered quantity. Services can use delivery measures specific to their configuration. Do not enter fictitious delivered quantities just to bypass an invoicing error.
3. Create and review the quotation
- Open Sales and use the Quotations list or kanban view.
- Click New.
- Select the fictitious Customer. Check the invoice and delivery addresses populated from the contact.
- Add the demo product as an order line. Set quantity to 2 and unit price to 100.
- Review taxes, currency, payment terms, and validity before saving.
Expected: the untaxed amount is 200 for this example. The final total depends on the taxes and discounts configured in your database. Open the saved record again to confirm the quantities and addresses.
The Sales dashboard may have a My Quotations filter. If an administrator is checking another user’s work, review that filter before assuming the quotation was lost.
4. Send or accept the quotation, then confirm the order
For real business, review the quotation with the customer using your agreed approval process. In a test database, avoid sending email to a real customer; use a preview or controlled test address.
- Review the final customer, products, quantities, and commercial terms.
- Use the quotation’s Confirm action when the order is approved.
- Verify that it is now a Sales Order and note its reference.
Sending a quotation and confirming an order are different actions. Your organization may use online signature or payment to confirm orders, but those features require their own configuration.
For this Ordered quantities example, the confirmed sales order can now be invoiced. Any delivery created for a goods order still needs to be fulfilled through the warehouse process.
5. Create the draft customer invoice
- From the confirmed sales order, click Create Invoice.
- Choose the regular invoice option for this full-order example, rather than a down payment.
- Click Create Draft Invoice.
- Review the customer, invoice lines, quantities, price, taxes, currency, journal, and payment terms.
Expected: the draft contains the two units from the order and the intended amount. A draft invoice has no accounting impact until it is confirmed.
If there are no invoiceable lines, check that the order is confirmed, the product’s invoicing policy is correct, and the quantity has not already been invoiced. On a Delivered quantities policy, check the actual delivery first.
6. Confirm and send the invoice
- Verify the invoice date, due date or payment terms, and the amounts with the responsible accountant.
- Click Confirm when the draft is correct.
- Check that its status becomes Posted and that an invoice number is assigned.
- Use Send to review the delivery options. Send to the intended recipient or download the document as appropriate.
Posting creates the accounting entry. Check the details before confirming; corrections to posted invoices must follow the company’s accounting and local legal requirements.
Do not treat a posted or emailed invoice as evidence that the customer has paid it.
7. Record the payment against the invoice
Use the actual receipt of funds and your approved payment process. For the tutorial, use only an isolated test database.
- Open the posted customer invoice and click Pay.
- In the payment window, check the Journal and Payment Date.
- Review the Payment Method and Amount. Payment terms can default the amount to an installment rather than the whole invoice.
- Review the Memo, then click Create Payment.
Older versions may label this action Register Payment. In the Odoo 20 payment documentation, the invoice action is Pay.
Expected: a payment is linked to the intended invoice. A partial payment should reflect only the amount received; do not register the full total when the customer paid an installment.
Recording a manual payment does not itself move money between bank accounts.
8. Understand In payment and complete reconciliation
An invoice can remain In payment after you register a payment. Odoo’s behavior depends on the journal’s outstanding-account configuration.
- With outstanding accounts: registration creates a journal entry and reduces the amount due. Matching the payment with the bank transaction generally completes the flow to Paid.
- Without outstanding accounts: Odoo documents that registration creates no journal entry and does not update Amount Due; reconciliation with the bank transaction marks the invoice Paid.
- A configured direct-to-bank case: if the main bank account is set as the outstanding account for that journal’s payment method, registering full payment can mark the invoice Paid immediately.
Have the accountant match the correct bank transaction using the configured bank reconciliation workflow. If a payment already exists, check it before creating another one. Repeatedly clicking Pay can create incorrect duplicate payment records.
Completion check: verify the linked sales order, posted invoice, payment amount, and reconciliation status together. The status should reflect what actually happened to the funds.
9. Complete the quotation-to-payment checklist
- The customer, addresses, currency, terms, and taxes were reviewed.
- The quotation was confirmed as a sales order.
- The invoiced quantity follows the product’s policy.
- The draft invoice matches the order and was confirmed correctly.
- The recorded payment uses the actual received amount and correct journal.
- The accountant has checked reconciliation and the final payment status.
- Any goods delivery is handled through the separate warehouse workflow.
10. Frequently asked questions
Why can I not create an invoice from my quotation?
Confirm the quotation as a sales order first. Then check the product’s invoicing policy and whether its quantity is already invoiced. Delivered quantities requires an invoiceable delivery.
Why does the invoice still say In payment?
Payment registration and bank reconciliation can be separate steps. Check the linked payment, bank transaction, and journal’s outstanding-account configuration with your accountant.
Does clicking Pay charge the customer automatically?
A manual payment registration records a payment in Odoo. It does not itself transfer funds; online provider transactions and banking operations have their own setup and flow.
Does a quotation replace a customer invoice?
No. A quotation proposes the sale. A posted invoice is a separate accounting document created after the order reaches the appropriate invoicing point.
11. Related articles and next steps
Menu labels and available actions can vary with your Odoo version, installed apps, and permissions.
Continue learning
Describe the version, hosting, and workflow you want to improve. Email OdooMatrix to discuss the next step.