Sale Stock Restocking Fee Invoicing
This module extends the functionality of the stock picking return wizard to allow you to charge restocking fee in case of return of goods by a customer.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Charge a restocking fee to customers when they return goods. Configure a fee product, flag customers who must pay it, and the fee is automatically added as a line on their sale order when the return is validated.
This module lets you bill customers a restocking fee when they send goods back. It adds a 'Restocking Fee Product' setting in the inventory/valuation settings, where you pick the service product used to charge the fee (a 'Restocking fee' product is created automatically).
On each customer record you can tick 'Charge Restocking Fee' so that returns from that customer are billed by default.
When you use the return wizard on a customer delivery, a 'Charge Restocking Fee' checkbox appears (only for customer returns). Its default comes from the customer, and you can change it per return or per return line. When the return is validated, the system automatically adds a new line to the related sale order for each returned move, using the configured fee product, with a description like 'Restocking fee for X units of ...'. The fee line is marked so it can be identified.
If no fee product is configured, an error message asks you to fix the configuration. The module touches sale orders, sale order lines, stock moves, stock rules, return wizards, customers and company settings.
Depends on
Required by other modules
Models and fields (9)
- sale.order · extends an existing model
- stock.move · extends an existing modelpicking_kind, charge_restocking_fee
- stock.rule · extends an existing model
- res.company · extends an existing modelrestocking_fee_product_id (Restocking Fee Product)
- res.partner · extends an existing modelcharge_restocking_fee
- sale.order.line · extends an existing modelis_restocking_fee
- res.config.settings · extends an existing modelrestocking_fee_product_id (Restocking Fee Product)
- stock.return.picking · extends an existing modelis_customer_return, charge_restocking_fee
- stock.return.picking.line · extends an existing modelis_customer_return, charge_restocking_fee
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 3 confirmed, 6 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/stock-logistics-workflow.
terminal Installation and usage
OCA documentation · Odoo 18.0Configuration
Source · Odoo 18.0The product used to charge restocking fee on the sale order must be specified into the stock settings form which can be reached by:
- Settings - Inventory - Valuation
- or Inventory - Configuration - Settings - Valuation
Once there you can change the item Restocking Fee Product.
nb: You may need to install sale_management to ease your test (SO view)
Usage
Source · Odoo 18.0Once installed, A check box is added on the stock return wizard to specify if restocking fee must be charged. The same field is added on each line into the wizard. You are therefore able to choose to charge for all the goods returned or select which line should be charged.
By default no restocking fee are charged in case of customer return. If you want to charge restocking fee you can:
- Specify on the customer contact form that restocking fee must be charged by default in case of return of goods. This value is used as default value into the stock return wizard;
- Use the checkboxes into the stock return wizard.
For each returned product, if restocking fee must be charged, once the return picking is done, a new line is added into the origin sale order to charge fees. The quantity charged is always 1 whatever the number of items of the same product returned.
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
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.