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.

Capabilities

Everything a till and a manager need

Every capability below is implemented in the module.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

07

Return audit trail

A searchable list of every return — product, quantity, order, reason, category and note — grouped and filterable for accountability and dispute resolution.

08

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.

09

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.

Workflow

How it works

1

Build the catalog

Add return-reason categories and reasons under POS Configuration, with colors and an optional description for each.

2

Set the policy

Turn on Require Return Reason where needed and flag any products as Non-Returnable at POS from the product form.

3

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.

4

Review the analytics

Managers open POS → Reporting → Return Reasons for the audit list, pivot and graph, broken down by reason, category and product.

Questions

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.

Get the app

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