OdooWiki OCA HUB

Sale Stock Restocking Fee Invoicing

sale_stock_restocking_fee_invoicing folder_open OCA/stock-logistics-workflow open_in_new
Uncategorised License: AGPL-3

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.0

Charge 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

salestocksale_stockstock_accountstock_picking_kind
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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 3 confirmed, 6 with no information of 9 versions.

Sources · Odoo 16.0

Confirmed on 2026-11-03 in branch 16.0 of OCA/stock-logistics-workflow.

terminal Installation and usage

OCA documentation · Odoo 18.0

The 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)

Once 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.

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.