Capture the why behind every POS return
Structured return reasons, non-returnable product blocking, and manager analytics for Odoo 19 Point of Sale — captured in one tap at the till, with no companion modules required.
The problem
Standard Odoo POS records that a refund happened, but not why. Without a structured reason, managers cannot tell a defect from a change of mind, finance cannot audit whether refunds were legitimate, and every return is a missed signal about product quality and customer experience.
The solution
A one-tap reason popup captures a categorized return reason at the exact moment of refund, blocks non-returnable products before they leave the till, prints the reason on the receipt, and rolls every return up into an audit trail, pivot and graph so managers can see what is really driving returns.
Everything a till and a manager need
Every capability below is implemented in the module.
Categorized return-reason catalog
Managers build a colored, categorized list of return reasons — Defective, Wrong Size, Damaged in Transit, Changed Mind and more — from POS Configuration.
One-tap till popup with search
Reasons appear as quick-tap buttons grouped by category, with type-ahead search so cashiers find the right reason in one or two keystrokes.
Inline, non-blocking entry
The reason popup opens right inside the refund flow, with an optional free-text note for exceptions, so cashiers never leave the transaction.
Mandatory-reason toggle
A per-POS "Require Return Reason" switch in the settings lets each store decide whether reason capture is optional or mandatory before checkout.
Non-returnable product block
Flag any product "Non-Returnable at POS" and cashiers are stopped at the till with a clear message the moment they try to refund it.
Reason on the receipt
The selected reason (and any note) prints on the on-screen order line, the receipt preview and the printed receipt for a documented record.
Return audit trail
A searchable list of every return — product, quantity, order, reason, category and note — grouped and filterable for accountability and dispute resolution.
Pivot and graph analytics
Break returns down by reason, category and product in a pivot table and bar graph — the manager-facing insight most competing apps never deliver.
Scope reasons per POS or share them
Restrict a reason to specific POS configs, or leave it unrestricted to make it available across every till — no separate setup per store.
How it works
Build the catalog
Add return-reason categories and reasons under POS Configuration, with colors and an optional description for each.
Set the policy
Turn on Require Return Reason where needed and flag any products as Non-Returnable at POS from the product form.
Capture at the till
On refund, the cashier taps a reason (or searches for one), adds an optional note, and confirms — blocked products stop the flow with a message.
Review the analytics
Managers open POS → Reporting → Return Reasons for the audit list, pivot and graph, broken down by reason, category and product.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
No. The module depends only on point_of_sale and installs standalone — no companion return, inventory or all-orders-list add-on is required.
Buy it on the Odoo App Store
Purchase, download and install directly from the official Odoo Apps Store — you'll always get the latest supported build.
POS Product Return Reason
A categorized reason catalog behind a one-tap till popup, with a mandatory-reason toggle, non-returnable product blocking, the reason printed on the receipt and pivot and graph analytics.
Buy on Odoo App Store