OdooWiki OCA HUB

Stock Picking Invoicing

stock_picking_invoicing folder_open OCA/account-invoicing open_in_new
Warehouse Management License: AGPL-3

This module allows to create invoices directly from picking, without having to use sale or purchase orders.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Create customer or supplier invoices directly from stock transfers, without needing a sales or purchase order. Each transfer carries an invoice status (To Be Invoiced, Invoiced, Not Applicable) that drives the invoice creation.

This module adds an invoicing status to stock transfers and their move lines, so you can bill goods movements directly.

  • On a transfer you get an Invoice Status field with three values: To Be Invoiced, Invoiced and Not Applicable. Buttons on the transfer let you switch it to "Set to be invoiced", "Set to as invoiced" or "Set to Not Billable"; the status is copied to the move lines.
  • When a transfer is marked To Be Invoiced and is done, a "Create Invoice" button opens a wizard where you choose the grouping (one invoice per transfer, per partner, or per partner and product), the invoice date and the sale or purchase journal. The wizard creates draft customer or supplier invoices (and refunds for returns) and links them to the transfers.
  • The invoice type is deduced from the transfer type and the source/destination locations (customer, supplier, transit, internal). Prices come from the vendor price list for purchases and from the customer pricelist or product sales price for sales.
  • Cancelling, resetting to draft or deleting an invoice puts the related transfers back to To Be Invoiced; resetting to draft marks them Invoiced again.
  • The transfer type dashboard shows a "To be Invoiced" counter linking to the list of transfers waiting to be invoiced, and a search filter "Shipments to Invoice" is available.
  • The return wizard lets you choose whether returned goods should be refunded/invoiced.

It touches stock.picking, stock.move, stock.picking.type, stock.rule, account.move and the return wizard.

Models and fields (9)
  • stock.move · new model
  • stock.rule · extends an existing model
  • account.move · extends an existing model
  • stock.picking · new model
  • stock.picking.type · extends an existing modelcount_picking_2binvoiced
  • stock.return.picking · extends an existing modelinvoice_state (Invoicing)
  • stock.invoice.onshipping · new modelgroup, invoice_date, journal_type, sale_journal, purchase_journal, show_sale_journal, show_purchase_journal
  • stock.invoice.state.mixin · new modelinvoice_state (Invoice Status)
  • stock.return.picking.line · extends an existing model

Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 8 confirmed, 1 with no information of 9 versions.

Sources · Odoo 18.0

Confirmed on 2026-11-03 in branch 18.0 of OCA/account-invoicing.

terminal Installation and usage

OCA documentation · Odoo 19.0

This module depends on stock_picking_invoice_link module that is hosted on .

To use this module, you need to:

  • Go to your picking;
  • If the invoice status is 'To be invoiced', a button will ask you to create an invoice;
  • Into the List view, you can select many pickings and create a grouped invoice;
  • If at least an invoice is created for a picking, a new "Invoicing" tab appears.

If an invoice (not refund) is cancelled or deleted, invoice status of related picking is automatically updated to "To be invoiced".

No verified information in OCA: Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.