This module extends the functionality of odoo Point Of Sale about POS Order returns.
With this module, it is now forbidden to return more quantity than the initial one.
A link is created between the returned Order and the initial Order. A link is created between the returned Order Line and the initial Order Line.
auto_awesome What this module does
AI-generated from the code · Odoo 14.0Adds controlled returns to Point of Sale: you can refund a whole order or only some lines, and Odoo blocks returning more than what was originally sold.
This module makes Point of Sale refunds traceable and limited. On a POS order you get a new "Refund" section showing the original order it came from, the refund orders created from it, and how many refunds already exist. Each order line also shows the original line it returns and the refund lines already made from it.
Two buttons are available on a paid POS order: the standard refund button and a new "Partial Return" button. The partial return opens a wizard listing every line with its initial quantity, the maximum quantity still returnable, and a field where you type the quantity to return. Confirming creates the refund order with only those quantities.
Business rules enforced by the code: - You cannot return more than the original line quantity. - You cannot return more than what is still returnable after previous refunds. - A negative quantity on a POS line is refused unless the product has "Allow Negative Quantity on PoS" ticked (this option is on the product form, ticked by default).
When a refund is paid, if the original order was invoiced, a credit note is created automatically, linked to the original invoice. Stock moves are also created: returned goods go back through a return picking linked to the original delivery, and the remaining lines follow the normal POS picking flow.
Depends on
Required by other modules
Models and fields (5)
- pos.order · extends an existing modelrefund_order_ids (Refund Orders), refund_order_qty (Refund Orders Quantity), returned_order_id (Returned Order)
- pos.order.line · extends an existing modelrefund_line_ids (Refund Lines), returned_line_id (Returned Order)
- product.template · extends an existing modelpos_allow_negative_qty (Allow Negative Quantity on PoS)
- pos.partial.return.wizard · new modelline_ids (Lines to Return), order_id (Order to Return)
- pos.partial.return.wizard.line · new modelqty (Returned Quantity), wizard_id (Wizard), initial_qty (Initial Quantity), pos_order_line_id (Line To Return), max_returnable_qty (Returnable Quantity)
Text generated by AI (DeepSeek) from reading the Odoo 14.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: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 12.0
Confirmed on 2026-11-03 in branch 12.0 of OCA/pos.
terminal Installation and usage
OCA documentation · Odoo 14.0Configuration
Source · Odoo 14.0In some cases, you may want to block the possibility to allow negative quantity in a PoS Order, without mentioning initial order. This can happen for special products like returnable products, etc.
In that case, a checkbox is possible on Product Form View to allow such case
Usage
Source · Odoo 14.0Select an PoS Order an choose either Return Products (full return of the order) or Partial Return. In this case, a wizard allows to select just some products and quantities to return:
Register the refund payment to finish the return. If the original order was invoiced, a refund invoice will be made.
Implemented Constraints
- User can not return more products than the initial quantity:
- If a line has been partially refund, only a reduced quantity can be returned:
- It is not possible to set a negative quantity if the initial Pos Order is not indicated:
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.