Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Point of Sale
  3. POS Expiry v 19.0
  4. Sales Conditions FAQ

POS Expiry

by Crowe Maldives LLP https://www.crowe.mv
Odoo

$ 4.99

In-App Purchases
v 19.0 Third Party
Apps purchases are linked to your Odoo account, please sign in or sign up first.
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Point of Sale (point_of_sale)
• Discuss (mail)
• Inventory (stock)
• Invoicing (account)
Lines of code 234
Technical Name crowe_pos_expiry
LicenseLGPL-3
Websitehttps://www.crowe.mv

POS Expiry

Automatic expiry discounts, FEFO lot selection, and expiry on the receipt

Sell perishable stock with confidence. When a cashier selects a lot for a tracked product, POS Expiry applies a tiered discount based on days remaining until expiry, prints the expiration date on the customer receipt when within 30 days, and automatically picks the soonest-expiring lot when several batches are on the shelf.

Key Features

Expiry Discount Rules

Configure tiered markdowns by days remaining (e.g. 20% within 7 days, 10% within 14 days, 5% within 30 days). The tightest matching rule is applied automatically when a lot is selected at the POS.

Receipt Expiry Line

When the selected lot expires within 30 days, the expiration date is printed on the POS receipt under the order line so customers can see freshness at a glance.

FEFO Lot Selection

If multiple lots are in stock, the POS automatically selects the batch expiring soonest (first-expired, first-out) instead of prompting the cashier on every sale.

How It Works

Setup in the back office, then lot selection, discount, and receipt at the till

1. Configure discount tiers

Go to Point of Sale → Configuration → Expiry Discount Rules and set your markdown tiers. Defaults are created on install (20% / 7 days, 10% / 14 days, 5% / 30 days). Edit or add rows at any time — no code changes required.

Expiry Discount Rules configuration
Fresh Yogurt 500ml with lot tracking enabled

2. Prepare lot-tracked products

On the product form, set the product type to Goods and enable Track Inventory → By Lots. Make the product available in Point of Sale, then receive stock into lots — each batch can expire on a different day.

3. Enable expiration dates

On the Inventory tab, check Expiration Date under Traceability. Expiration is stored on each lot/serial number when stock is received.

POS Expiry builds on Odoo’s standard product_expiry app. Discounts and receipt expiry apply once a lot with an expiration date is selected at the POS.
Expiration Date enabled on product
Lot picker showing expiration dates

4. Select a lot at the POS

When a lot-tracked product is added, the soonest-expiring batch is chosen automatically (FEFO). Cashiers can open the lot picker to choose a different batch — each option shows its expiration date (e.g. LT/026/1506 — Exp: 2026-07-12).

5. Discounts apply on the order

The matching tier is applied to the order line as soon as the lot is set. In this example, three lines of Fresh Yogurt 500ml carry 20%, 10%, and 5% off based on each lot’s days remaining.

POS order lines with expiry discounts

6. Expiry prints on the receipt

After payment, the receipt shows the lot number and an Exp: line under each product whose lot expires within 30 days — alongside the discount that was applied at the till.

POS receipt with lot numbers and expiration dates

Configuration

Discount rules in one menu — products use standard lot tracking

  1. Install POS Expiry (requires point_of_sale and product_expiry).
  2. Open Point of Sale → Configuration → Expiry Discount Rules and adjust the default tiers or add your own.
  3. On each perishable product: enable By Lots tracking and Expiration Date on the Inventory tab.
  4. Create lots with expiration dates and receive stock into the POS warehouse location.
  5. Open a POS session, sell a tracked product, and confirm the discount and receipt output.
Discounts and receipt expiry require a lot to be assigned on the order line. Products without lot tracking or without an expiration date on the selected lot are unaffected.

Benefits

Reduce waste

Move stock before it expires with consistent, rule-based markdowns at the till instead of ad-hoc cashier discounts.

FEFO without friction

The soonest-expiring lot is selected automatically when multiple batches are in stock, keeping rotation disciplined without extra cashier steps.

Transparent receipts

Customers see the expiration date on the receipt when a product is within 30 days of expiry — clear freshness information at checkout.

Configurable tiers

Discount rules are editable lists in the back office. Change percentages and day thresholds without touching code or redeploying custom POS logic.

Feature Summary

At the POS

Automatic discount when a lot is selected or changed.

FEFO auto-selection when multiple lots are in stock.

Expiration dates shown in the lot/serial picker.

Expiry line on the customer receipt (within 30 days).

In the back office

Editable expiry discount rule list under Point of Sale configuration.

Default tiers loaded on install (7 / 14 / 30 days).

Works with standard Odoo lot tracking and product expiry.

No separate POS product setup beyond lot-tracked inventory.

Technical Details

Server side

  • expiry.discount.rule — stores discount tiers by days remaining; get_discount_for_days() resolves the matching percentage for a lot.
  • stock.lot — get_pos_lot_info() returns expiration date, receipt visibility, and discount for a product/lot pair at the POS.
  • pos.order.line — extends get_existing_lots() with expiration dates and adds lot_expiration_date for receipt sync.

Front end (OWL)

  • Patches PosStore for FEFO auto-selection and discount on add-to-cart.
  • Patches OrderSummary to re-apply rules when lots are edited on a line.
  • Patches SelectLotPopup to show expiration dates in lot labels.
  • Extends the OrderReceipt template with an expiry line per order line.

Compatibility & Dependencies

Version

Built for Odoo 19.0, compatible with both Community and Enterprise editions.

Dependencies

Requires point_of_sale and product_expiry.

Support

Brought to you by Crowe Maldives LLP

Author

Crowe Maldives LLP

Website

www.crowe.mv

Support

info@exponent.mv

Licensed under LGPL-3. Maintained by Exponent Pvt Ltd.

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author or have a question related to your purchase, please use the support page.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with