Scrap it at the register, not after the shift ends.
Point of Sale Scrap Orders lets cashiers record damaged, expired, broken or returned products the moment they spot them — with quantity, reason, location and customer captured for real backend traceability and shrinkage analytics.
The problem
Cashiers who spot a damaged, expired or broken product mid-shift have no way to act on it from the POS. The item gets sold at a loss, quietly disappears from stock accuracy, or waits for a supervisor to enter it in the backend after close — leaving persistent shrinkage with no record of who scrapped what, or why.
The solution
Point of Sale Scrap Orders adds a Scrap action directly to the POS screen. Cashiers pick the product, set a partial quantity, choose a reason and a destination location, and confirm — the app creates and validates a real stock.scrap record in the backend instantly, with full POS traceability and reporting.
Everything you need to control POS shrinkage
Every capability below is implemented in the module.
Scrap directly from the POS
A dedicated Scrap action on the product screen lets cashiers record damaged, expired or broken items the moment they see them, without leaving the register.
Partial-quantity scrapping
Scrap the exact quantity affected — three of twelve units broken — instead of writing off the whole line.
Scrap reason tags
Tag every scrap with a reason — damaged, expired, breakage, theft, customer return — so shrinkage becomes analysable loss data, not a mystery.
Scrap destination location
Choose the correct scrap or loss location for each item instead of relying on a single assumed default.
Batch review before confirming
Review every scrapped line on one screen and confirm them together in a single pass, with no repeating the flow per item.
Per-POS scrap mode
Configure each point of sale independently: disable scrap, validate only when stock is available, or always create a record.
Automatic in-stock / out-of-stock handling
Scraps validate immediately when stock exists and fall back to draft when it doesn't, so the cashier is never blocked.
In-POS scrap status
See every scrap created this session, with live state badges, right inside the POS — no trip to the backend needed.
Customer linkage & backend analytics
Optionally tag a scrap to a customer for defective returns, and track every POS scrap in the backend with a dedicated list, pivot and graph on value by reason and location.
How it works
Spot it
A cashier notices a damaged, expired or broken product during service.
Scrap it
They open the Scrap action from the POS screen, pick the product and set quantity, reason and location.
Confirm
The app creates the scrap record in the backend instantly — validated if stock allows, held in draft if not.
Track it
Managers review every POS scrap in the backend list, pivot and graph to quantify shrinkage by reason, location and point of sale.
Frequently asked
No sales fog. If your question isn't here, email us and we'll answer it the same way.
Yes. Every POS scrap creates an actual stock.scrap record in the backend under the standard Odoo scrap workflow, so it shows up in your existing stock and traceability reports.
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.
Point of Sale Scrap Orders
Scrap damaged, expired or returned stock from the register with partial quantities, reason tags, a destination location, batch review and per-POS modes — plus customer linkage, backend traceability and shrinkage analytics.
Buy on Odoo App Store