If you run a grocery store, wholesale outlet, or supermarket, you already know that products rarely sell in just one way. Rice might sell loose by the kilogram, packed by the dozen, or wholesale by the case. Eggs might move by the piece, the dozen, or the crate. This is normal, everyday retail but for most point-of-sale systems, it's a daily headache.
Standard Odoo POS setups are typically built around a single unit of measure per product. So when a customer wants a different quantity format, cashiers are left doing manual price calculations, or businesses end up creating duplicate product entries just to fake multiple units. Both approaches slow down checkout and open the door to costly mistakes. This is exactly the gap that Odoo POS multi UOM functionality is designed to close.
Why Standard POS Setups Struggle With Multiple Units
Most out-of-the-box POS configurations assume a product has one price and one unit. That assumption breaks down quickly in grocery and wholesale environments. Here's where the friction shows up:
- Manual price calculations at checkout — cashiers have to convert loose quantities into per-kg or per-dozen pricing by hand, which is slow and error-prone.
- Checkout delays during peak hours — every manual calculation adds seconds (or minutes) per transaction, and those seconds add up fast during busy periods.
- Pricing mistakes and revenue leakage — a single miscalculation, repeated across dozens of daily transactions, quietly eats into margins.
- Duplicate product records — many businesses create separate product entries (e.g., "Rice 1kg," "Rice 5kg," "Rice Loose") just to simulate multiple units, cluttering the catalog and complicating reporting.
- Inconsistent inventory deduction — when products are duplicated or units are tracked manually, stock levels drift out of sync with what's actually sold, making inventory audits unreliable.
None of these are minor issues. Together, they slow down operations, frustrate staff, and make it harder to trust your own stock data.
What to Look for in a Multi-UOM POS Solution
If you're evaluating a fix for this problem, it's worth being specific about what "solved" actually looks like. A proper Odoo POS flexible unit of measure solution should offer:
- True per-unit pricing — each unit of measure (Kg, Gram, Dozen, Gross, etc.) carries its own defined price, not a manually calculated one.
- Unit-specific barcodes — every UOM variant of a product has a unique, scannable barcode for fast, accurate identification.
- In-cart unit selection — cashiers should be able to choose the correct unit directly within the POS interface, without leaving the sale screen.
- Real-time price accuracy — the price displayed and charged should update instantly based on the unit selected, with zero manual math.
- Correct stock deduction per unit — inventory should reduce accurately based on the specific unit sold, keeping stock counts trustworthy.
If a module or workaround doesn't check all of these boxes, it's likely to just shift the problem somewhere else in your workflow. This is also the checklist we use when advising clients through our POS Solution engagements at Creyox.
Introducing POS Flexible UOM by Creyox Technologies
POS Flexible UOM, developed by Creyox Technologies, is built specifically to handle this challenge inside standard Odoo POS setups without requiring any changes to Odoo's core files.
Here's what the module delivers:
- Sell the same product in multiple units of measure directly from the POS screen no duplicate products, no workarounds.
- UOM-specific pricing and barcodes, so every unit (Kg, Gram, Dozen, Gross, or any custom UOM) has its own accurate price and its own scannable identifier.
- An interactive Select UOM popup that lets cashiers quickly choose the right unit at the point of sale, keeping checkout fast and consistent.
- Real-time price updates the moment a unit is selected, eliminating manual calculation entirely.
- Support for multiple order lines of the same product across different units within a single transaction a customer can buy loose Kg and a packed Dozen of the same item in one sale.
- Accurate stock movements and returns tracked per UOM, so your inventory reflects exactly what was sold or returned, in the correct unit.
- Printable barcode labels for each UOM, making it easy to tag shelves and packaging correctly from day one.
Because the module works natively within the Odoo POS frontend, it fits into existing workflows with minimal disruption your team doesn't need to relearn the system, just use one additional popup step when a product has multiple units. If your catalog needs go beyond what the module covers out of the box, our team also handles Odoo customization services to extend it further.
A Real-World Example: A Grocery Store Selling Rice
To see how this plays out in practice, consider a mid-sized grocery store that sells rice three different ways: loose by the kilogram, in pre-packed 1kg bags, and wholesale by the 25kg sack for restaurant customers.
Without flexible UOM selling, the cashier has three options, none of them good: maintain three separate "Rice" products in the catalog (cluttering search and reporting), manually calculate the sack price by multiplying the per-kg rate on the spot, or keep a cheat sheet taped near the register. During a busy Saturday rush, any of these slows down the line and increases the odds of a pricing slip, especially with a new or part-time cashier.
With POS Flexible UOM, the store sets up a single "Rice" product with three units of measure Kg, 1kg Bag, and 25kg Sack each with its own price and barcode. A loose rice customer gets weighed and rung up in Kg. A customer grabbing a pre-packed bag gets it scanned directly, with the POS auto-detecting the unit from the barcode. A restaurant buyer purchasing sacks gets the correct wholesale rate applied instantly, with no manual multiplication. If one transaction includes both a loose Kg purchase and a packed bag, both lines appear separately on the same receipt, and stock deducts correctly from a single inventory record for each unit sold.
Work Flow Of Odoo Server Monitor
- Navigate to Point of Sale >> Products >> Products and open a product profile. Under the UOM PRICE BARCODE section, you can configure unique prices and barcodes for different Units of Measure (e.g., Dozens or Gross). This enables the POS to recognize specific quantities and prices automatically upon scanning.
- UOM PRICE BARCODE section. Click on Print Labels for a specific entry to generate a barcode label that includes the product name, the unit-specific barcode, and the corresponding UOM price.
- In the Point of Sale interface, when a product with multiple units of measure is selected a Select UOM pop-up appears. This allows the cashier to choose the specific quantity (such as Dozens or Gross) at its predefined price, ensuring accurate billing and inventory tracking during the checkout process.
- Once a specific unit of measure is selected in the Point of Sale, the order line will automatically update to reflect the chosen UOM (e.g., Dozens) and its corresponding price. This ensures that the Total amount and tax calculations are accurately applied based on the bulk unit pricing defined in the product settings.
- In the Point of Sale order view, you can add multiple lines for the same product using different units of measure, such as Dozens and Gross. Each line item independently maintains its specific UOM-based pricing, allowing for flexible bulk transactions and clear itemization on the final receipt.
- After completing the transaction in Point of Sale, the final receipt clearly displays the product items with their selected units of measure, such as Dozens and Gross. The receipt includes the specific price per UOM, the tax breakdown, and the total amount, providing the customer with a transparent and detailed record of their bulk purchase.
- Navigate to Point of Sale >> Orders >> Orders and open a specific order record to view the backend details. In the Products tab, the system accurately records the UoM (Unit of Measure) used during the transaction, such as Dozens or Gross, ensuring that the backend accounting and inventory movements remain perfectly synchronized with the POS sales data.
- Navigate to Inventory >> Operations >> Transfers (or click the Pickings smart button on the POS order) to view the stock movement. In the Operations tab, the Unit column confirms that the inventory is deducted using the specific units sold, such as Dozens and Gross, maintaining precise stock levels across all units of measure.
- In the Point of Sale interface, navigate to Orders and select a past transaction to process a return. When selecting the products to refund, the system preserves the original Unit of Measure (e.g., Dozens) and its specific price, ensuring that the refund amount and inventory restock levels are processed accurately.
- Navigate to Point of Sale >> Orders >> Orders and select the generated Refund Order to review the return details. In the Products tab, you will see a negative quantity assigned to the original UoM (e.g., Dozens), ensuring the credit note and inventory reversal are correctly valued based on the specific bulk unit price.
- In the Point of Sale interface, scanning a product using a unit-specific barcode (as demonstrated in the Debug Window) will automatically add the item to the order with its predefined UoM, such as Dozens. This feature eliminates manual unit selection and ensures the correct price is applied instantly based on the unique barcode scanned.











Who Should Use This Module
POS Flexible UOM is particularly valuable for:
- Odoo partners looking to offer a reliable, ready-made solution for clients with multi-unit selling needs get in touch to discuss your client's requirements.
- Grocery stores sell loose produce, grains, and staples alongside pre-packed quantities.
- Wholesale distributors who need to move stock in cases, dozens, or gross quantities alongside individual units.
- Supermarkets managing a wide product catalog where weight-based, count-based, and bulk pricing all coexist.
If your business regularly sells anything by weight, dozen, case, or other bulk unit and your current POS makes that harder than it should be this is built for exactly that situation.
Get Started With POS Flexible UOM
Manual quantity math and duplicate product entries shouldn't be the cost of doing business for grocery and wholesale retailers. With Odoo POS flexible unit of measure selling built directly into your checkout flow, your team can move faster, price accurately, and keep inventory data you can actually trust.
Explore POS Flexible UOM on the Odoo Apps Store to see the full feature list and installation details.
Want to see it in action for your specific catalog and workflow? Reach out to Creyox Technologies for a personalized demo, or explore our Odoo support services if you need ongoing help keeping your POS setup running smoothly after installation.
Frequently Asked Questions
Not by default. Standard Odoo POS is built around a single unit of measure per product, which is why many grocery and wholesale businesses either do manual price calculations or create duplicate product entries to work around it. A module like POS Flexible UOM adds native support for selling one product across multiple units directly from the POS screen.
With POS Flexible UOM, pricing is configured on the product record itself; you assign a distinct price and barcode to each unit of measure you want to sell (for example, Kg, Dozen, or Gross). Once set up, the POS automatically applies the correct price whenever that unit is selected or scanned.
Yes, and this is one of the more useful parts of the setup. Assigning a unique barcode per UOM means cashiers can scan a product and have the correct unit and price detected automatically, without needing to manually select anything from a popup.
If a product is added to the cart without scanning a unit-specific barcode for example, selected manually from the POS screen the Select UOM popup appears, letting the cashier choose the correct unit before the price is applied.
Yes. The module supports multiple order lines for the same product across different units within one transaction so a customer buying both loose rice by the kilogram and a packed bag of the same rice in the same visit will see both correctly itemized on one receipt.
It should improve it. Stock movements and returns are tracked per unit of measure, so inventory deductions reflect the actual unit sold rather than relying on manual adjustments or duplicate product records that are easy to lose track of.
POS Flexible UOM is built natively into the Odoo POS frontend without modifying core files, so it's designed to fit into standard Odoo POS setups without disrupting existing workflows or requiring a rebuild of your product catalog.