Product Packs / Bundles for Odoo 19 Community documentation
A guide to the packs: creating one, the two ways to price it, selling it, the delivery and the invoice, and the printed quotation.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: A desk, a chair, a lamp and a monitor arm: the customer wants them together at one price, and your warehouse wants to pick four products. Product Packs sells them as one pack in Odoo Community: the pack is one line at one price on the quotation and the invoice, its components are added to the order and delivered from your stock, and the stock tells you how many packs you can still sell.
Tip: The pack is invoiced as one line; the components never show on the invoice.
What you get
| Feature | What it does |
|---|---|
| Packs | Tick Is a pack on a product and list its components with their quantities. |
| Two ways to price | Give the pack its own price, or make it the sum of its components with a discount. |
| Components on the order | Adding the pack adds its components; changing the quantity of the pack changes them. |
| Delivery | The components are delivered from your stock; the pack itself is not a stock move. |
| Invoice | One line: the pack at its price. The components have nothing to invoice. |
| Packs available | How many packs your stock of components allows. |
| Saving | How much the customer saves against the components. |
| Hide on the quotation | Show or hide the components on the printed quotation. |
| Checks | A pack needs components, cannot contain itself or another pack, and lists a component once. |
| Arabic | Everything is translated and works right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Sales and Inventory (sale_stock) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_product_pack.zip; unzip it to get the foldertaqnix_product_pack. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Product Packs / Bundles and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_product_pack --stop-after-init
Create a pack
In plain words: Open Sales → Products → Packs and click New (or tick Is a pack on any product). Open the Pack tab, add the components with their quantities, and choose how the pack is priced.
| Setting | Meaning |
|---|---|
| The price of the pack | The sales price of the product is the price of the pack. |
| The sum of the components, with a discount | The price follows the components: their prices times their quantities, minus the discount. |
| Hide the components on the quotation | The components stay on the order and the delivery, but not on the printed quotation. |
| Total of the components / Saving | What the components cost separately, and what the customer saves. |
| Packs available | The number of packs your stock of components allows. |
Tip: Packs are invoiced when the order is confirmed (invoice policy: ordered quantities), because the pack itself is not delivered.
Sell a pack
In plain words: Add the pack to a quotation like any product. Its components appear under it at price zero; if you change the quantity of the pack, the components follow. Delete the pack line and its components go with it.
Delivery and invoice
In plain words: When the order is confirmed the delivery lists the components: the warehouse picks the real products. The invoice has one line for each pack at its price: the components have nothing to invoice, and the order is invoiced when the packs are.
The printed quotation
In plain words: For a pack with Hide the components on the quotation the customer sees one line. For the others the components are listed under the pack at zero.
Who can do what
| Who | Can |
|---|---|
| Sales managers and inventory managers | Create and change the packs and their components. |
| Salespeople | Sell the packs. |
Arabic and right to left
Limits
| Limit | Detail |
|---|---|
| No nested packs | A pack cannot contain another pack. |
| Stock cost | The cost of a pack is the cost of what is delivered: its components. |
| Confirmed orders | The components are added while the order is a quotation. |
| Variants | Packs are made of product variants and sold as one product. |
For developers
In plain words: Skip this chapter if you only use the module.
pack = env['product.template'].create({'name': 'Starter Pack', 'type': 'consu', 'is_pack': True, 'list_price': 569.0,
'pack_line_ids': [(0, 0, {'product_id': desk.id, 'quantity': 1}), (0, 0, {'product_id': chair.id, 'quantity': 1})]})
order = env['sale.order'].create({'partner_id': customer.id, 'order_line': [(0, 0, {'product_id': pack.product_variant_id.id, 'product_uom_qty': 2})]})
order.order_line.mapped('product_uom_qty') # the pack line and its componentsTroubleshooting
| Problem | What to do |
|---|---|
| The pack needs at least one component | Add a component on the Pack tab before saving. |
| The components are missing on the order | Add the pack again: they are added when the pack line is created, on a quotation. |
| Packs available is zero | A component is out of stock, or is not a storable product. |
| The pack price did not change | With the sum price the pack follows its components when you save them. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_product_pack. Your packs and their components are kept.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.