Smart Cheapest Product Discount for POS
by Odoo DevHouse https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse$ 50.00
In-App PurchasesSmart Cheapest Product Discount for Point of Sale
Run real Buy-N-Get-M promotions - "Buy 3, get the cheapest 1 free" - automatically applied to every POS order. No manual discounts, no cashier guesswork, no per-product setup.
Odoo's native Loyalty & Promotions app ships a "Cheapest Product" discount - but it only ever discounts exactly one unit, no matter how large the cart is. Retailers who run genuine Buy-N-Get-M promotions (buy 3, get the cheapest one free; buy 6, get 2 free) have no built-in way to configure that.
- Core "Cheapest Product" reward is hard-limited to 1 free/discounted unit per order
- No native "Buy Quantity" / "Free Quantity" configuration on any loyalty reward
- Cashiers end up manually applying discounts line by line - slow and error-prone
- Manual discounts can accidentally target the wrong (not cheapest) item
- No indication on the payment screen of how much was actually discounted
- Receipts don't clearly show which specific product was given for free
This module adds a new "Multi Cheapest Product" option directly inside the standard Loyalty Reward form, alongside two new fields - Buy Quantity and Free Quantity. Configure it once (e.g. buy 3, get 1 free) and the discount is applied automatically in the POS: the cart is scanned, the cheapest unit(s) are identified, and the discount repeats for every full "buy quantity" batch in the order - all with zero cashier intervention.
- Multi Cheapest Product Reward - a new discount applicability option on the standard Loyalty Reward form
- Buy Quantity / Free Quantity - configure any ratio: buy 2 get 1, buy 3 get 1, buy 6 get 2, and so on
- Repeats Automatically - 6 items at "buy 3 get 1" gives 2 free units, not just 1
- Always Targets the Cheapest Units - sorts every eligible unit in the cart by price and discounts the lowest first
- Percent or Fixed Discounts - works with the same discount modes as any other loyalty reward
- Live Payment Screen Banner - shows the exact amount discounted off the lowest-priced product before validating
- Per-Item Receipt Labelling - the printed receipt names the specific product that was discounted (e.g. "100% on - USB-C Cable")
- Fully Automatic Trigger - no reward button to click, no code to enter; applies the moment the cart qualifies
- Tax-Aware - sorts by tax-inclusive unit price and carries the correct taxes onto the discount line
- Native Loyalty Engine - built entirely on Odoo 19's own Loyalty & Promotions / POS Loyalty framework, no core overrides
- OWL-Powered - lightweight POS frontend patches, no extra network calls
1. Configure the Reward - "Multi Cheapest Product"
Open any Loyalty Reward, set Discount Applicability to Multi Cheapest Product, then set the Buy Quantity and Free Quantity in the new "Buy X Get Y" section. Here: buy 3, get the cheapest 1 free at 100% off.
2. Ring Up Products Normally in the POS
No special button, no code to type. Cashiers use the Point of Sale exactly as before - the reward evaluates automatically as items are added.
3. The Cheapest Item Is Discounted Automatically
As soon as 3 units are in the cart (Wireless Mouse $12.50, USB-C Cable $8.00, Laptop Stand $24.90), the cheapest one - the $8.00 USB-C Cable - is instantly discounted 100% and shown as its own order line, with no cashier action required.
4. Payment Screen Shows the Exact Discount Amount
A clear green banner on the payment screen confirms exactly how much was taken off the lowest-priced product, before the cashier validates - full transparency for both staff and customer.
5. The Receipt Names the Exact Product Discounted
The printed receipt doesn't just show a generic "discount" line - it clearly labels which product was given away, e.g. "100% on - USB-C Cable", so customers immediately understand their receipt.
Grocery & Convenience
"Buy 3, get the cheapest free" promotions on snacks, drinks, or household items - the classic multi-buy deal, fully automated.
Electronics & Accessories
Bundle cables, cases, and small accessories - buy several, get your cheapest accessory free automatically.
Restaurants & Cafes
Combo-style promotions where the least expensive item in a multi-item order is discounted or comped.
Clearance & Seasonal Sales
Drive volume during clearance events with a guaranteed free cheapest item for every qualifying batch purchased.
Multi-Branch Retail
Configure the promotion once at the loyalty-program level and roll it out identically across every POS terminal and store.
New Cashier Training
Since the discount is fully automatic, new staff never need to learn which promotion to apply or how to apply it manually.
Zero Manual Discount Errors
The system always identifies the true cheapest unit - no cashier has to judge which item qualifies.
Faster Checkout
No pausing to apply a manual discount line - the promotion appears the instant the cart qualifies.
Transparent for Customers
The payment screen banner and the named receipt line both make it obvious exactly what was discounted and why.
Configure Once, Scale Everywhere
One reward configuration drives the promotion consistently across every POS session and terminal.
Step 1 - Open or Create a Loyalty Program
Go to Point of Sale -> Loyalty Programs (or Sales -> Promotions). Create a new Promotions program with an automatic trigger, or open an existing one.
Step 2 - Add a Reward and Select "Multi Cheapest Product"
Add a Discount reward. Under Discount Applicability, choose Multi Cheapest Product. A new "BUY X GET Y" section appears.
Step 3 - Set Buy Quantity, Free Quantity, and Discount %
Set Buy Quantity (e.g. 3) and Free Quantity (e.g. 1), and set the discount percentage (100% for a fully free item, or any lower percentage for a partial discount).
Step 4 - Link the Program to Your POS Configuration
Make sure Available On -> Point of Sale is enabled and your POS configuration(s) are selected on the program.
Step 5 - Sell as Usual
Open a POS session and ring up products normally. Once the cart reaches the configured Buy Quantity, the cheapest eligible unit(s) are discounted automatically, the payment screen shows the exact amount, and the receipt names the discounted product.
Pro Tip - It Repeats Automatically
The reward isn't limited to one application per order. With "buy 3 get 1", a cart of 6 eligible units automatically gets 2 free items - the two cheapest units in the cart.
Need Help or Want a Custom Feature?
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Point of Sale (point_of_sale)
• Invoicing (account) • Discuss (mail) • Inventory (stock) |
| Lines of code | 202 |
| Technical Name |
pos_product_cheapest_disc |
| License | OPL-1 |
| Website | https://apps.odoo.com/apps/modules/browse?author=Odoo%20DevHouse |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module