- Home
- Apps
- SaaS Tools
- Product Bundle Pack
Illustrative previewA build-to-order Odoo module that lets you sell multiple products together as bundles or kits
— with correct component-level stock, margin, and invoicing.
ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow.
What is Product Bundle Pack?
A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with correct component-level stock, margin, and invoicing. ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $249.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Most teams that run Odoo eventually want to sell things in combinations: a starter pack, a seasonal gift set, a "buy the machine plus consumables" combo, or a service-plus-hardware kit. Out of the box, Odoo gives you two partial answers — a Bill of Materials with a phantom (kit) BoM that explodes into components on delivery, and optional-product suggestions on quotations. Neither is a real bundling engine. Kit BoMs don't carry their own sale price independent of the sum of components, they don't let you flip a bundle between "ship as one pack" and "explode into components" per order, and they give sales reps no clean way to pick a bundle on a quote line and have pricing, discounts, and stock availability resolve automatically. Teams end up hand-adding component lines, mispricing combos, and losing per-component margin visibility.
We build a dedicated Product Bundle Pack module that turns bundling into a first-class object in Odoo. A new product.bundle model (extending or relating to product.template) defines a bundle header plus product.bundle.line children that reference component products, quantities, and an optional per-line unit or discount. The bundle carries its own configurable sale price with three pricing modes — fixed bundle price, sum-of-components, or sum-minus-percentage — computed through @api.depends so the price recalculates whenever a component or its cost changes. On the sales side we extend sale.order.line so a rep picks one bundle and the module either keeps it as a single priced line with an expandable component breakdown, or explodes it into individually tracked component lines, controlled by a per-bundle "delivery style" flag. Stock availability is aggregated from the components (respecting each component's on-hand and reserved quantity via stock.quant), so a bundle shows as unavailable the moment any one component runs short.
Technically the module ships as a clean addon: a versioned __manifest__.py declaring dependencies on sale_management, stock, and account; ORM models with proper @api.depends/@api.constrains guards (no negative quantities, no self-referencing bundles, no infinite nesting); ir.model.access.csv plus record rules so bundle definitions respect multi-company boundaries and are editable only by inventory/sales managers; backend form/list/kanban views (XML, with OWL where the bundle configurator benefits from a richer widget); a QWeb extension so quotations and invoices print the bundle with its component breakdown; and optional automated actions to keep bundle prices in sync on cost changes. Everything is reachable over the standard XML-RPC/JSON-RPC API, so your webshop, POS, or external order source can create bundle-backed sale lines programmatically. We build against your target — Odoo 17.0, 18.0, or 19.0 — and confirm Community vs Enterprise behavior up front, since kit/MRP and some invoicing options differ between editions.
Delivery is build-to-order: nothing is downloaded from an app marketplace. We start with a short scoping call, agree the exact pricing modes, delivery styles, and reporting you need, then build on a staging copy of your database, run UAT with you, and deploy with a rollback plan. Typical delivery is one working week from confirmed scope. Pricing starts from $249 (indicative, single-company base scope); multi-company bundle rules, POS/eCommerce integration, deeper margin reporting, and data migration of existing kit records increase the quoted scope. You get a fixed quote after the scoping call — never a surprise invoice.
What you get
- Installable source code for your version of the module (Odoo 17.0, 18.0 or 19.0)
- Installation and configuration on your staging then production environment
- Technical documentation: models, fields, pricing modes, security rules and API usage
- End-user guide plus a live training session for your sales and inventory teams
- Post-go-live support window for defect fixes and configuration questions
- UAT on a staging copy of your database with an agreed rollback plan
- Git repository handover with tagged release and commit history
- Data migration script for any existing kit/BoM bundle records where in scope
Who this is for
Sales operations lead
Wants reps to pick a bundle on a quote and have price, discount and stock resolve automatically, instead of hand-adding component lines and mispricing combos.
Inventory / warehouse manager
Needs bundle availability tied to real component on-hand and reserved stock, and control over whether a pack ships as one unit or as exploded component picks.
Finance / margin owner
Requires per-component cost and margin visibility on bundled sales so combined offers do not hide profitability, and correct invoicing per component or per pack.
eCommerce / channel manager
Sells kits and combos across webshop and POS and needs bundles that behave consistently via the JSON-RPC/XML-RPC API and printed component breakdowns.
How Product Bundle Pack Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Bundle sale price | Fixed, sum, or sum-minus-% modes, recomputed on component change | Whatever you build, at full cost | Usually one fixed pricing behavior | Kit BoM has no independent bundle price |
| Ship as pack vs explode | Per-bundle delivery style flag | Buildable but must be specified | Often fixed to one behavior | Kit always explodes into components |
| Stock availability | Aggregated from component `stock.quant` | Must be coded from scratch | Varies; sometimes component-aware | No unified bundle availability |
| Margin visibility | Per-component cost/margin retained | Depends on your implementation | Often bundle-level only | Not surfaced for combined sales |
| Fit to your catalog | Built to your exact products and rules | Fully bespoke | Generic, one-size-fits-all | Generic core behavior |
| Reports & API | QWeb breakdown + full XML-RPC/JSON-RPC | You build and document it | Limited or fixed report format | No bundle-aware reports |
| Support & handover | Support window + git repo + training | Only if you staff for it | Vendor-dependent, often forum-only | Community support only |
| Cost & timeline | From $249 indicative, one working week, fixed quote | High effort, unpredictable timeline | Low upfront, gaps you fill later | Free but limited capability |
Frequently Asked Questions about Product Bundle Pack
How long does delivery take?
This is build-to-order, not an instant download. Typical delivery is one working week from confirmed scope. We build on a staging copy of your database, run UAT with you, and deploy with a rollback plan. Larger scopes (multi-company, POS/eCommerce, data migration) extend the timeline, which we confirm in your quote.
How does pricing and scoping work?
Pricing starts from $249 as an indicative single-company base figure. After a short scoping call we give you a fixed written quote covering your exact pricing modes, delivery styles, integrations and reporting. Drivers like multi-company rules, POS/eCommerce integration, deeper margin reporting, and migrating existing kit records increase the quoted scope.
What support and updates do I get?
Every build includes a post-go-live support window for defect fixes and configuration questions. We hand over the git repository with a tagged release so your team or ours can maintain it. Version upgrades to a newer Odoo release, or new features beyond the original scope, are handled as a separate quoted engagement.
How is this different from Odoo's kit Bill of Materials?
A phantom/kit BoM explodes into components on delivery but has no independent bundle sale price, no per-order choice between shipping as a pack or exploding into lines, and limited pricing logic. Our module makes the bundle a first-class object with configurable pricing modes, delivery styles, aggregated stock availability, and clean sales-line selection.
Does it work on Odoo Community or only Enterprise?
We build for both. Core bundling — models, pricing, sales-line integration, stock aggregation, QWeb reports and API access — works on Community. Some kit/MRP and invoicing options differ between editions, so we confirm your edition and target version (17.0/18.0/19.0) during scoping and build accordingly.
Can bundles be created from our webshop or an external system?
Yes. The module exposes bundle selection through the standard XML-RPC/JSON-RPC API, so your webshop, POS, or an external order source can create bundle-backed `sale.order.line` records programmatically with correct pricing and component resolution.
Will bundling break my existing stock and accounting?
No. We build additively on a staging clone first, guard the models with `@api.constrains`, respect `ir.model.access.csv` and record rules, and run UAT before touching production. Stock availability reads real component `stock.quant` data, and invoicing can be configured per pack or per component to match your accounting.
Related Modules

Project Analysis
A build-to-order Odoo module that models true project hierarchies — parent projects with nested subprojects — and rolls timesheet effort, budget, and progress up the tree into one analytical reporting view. ECOSIRE scopes, builds, installs, and supports it for you.

Project Dashboard
A made-to-order Odoo Project Dashboard that turns your project data into a single visual command center — live KPIs, progress rollups, budget-vs-actual, and drill-down analytics. ECOSIRE builds, installs, and supports it for Odoo 17.0/18.0/19.0.
Product Bundle Pack
A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with correct component-level stock, margin, and invoicing. ECOSIRE scopes, builds, installs, and supports it for your exact catalog and workflow.
- `product.bundle` header model with `product.bundle.line` children referencing component products, quantities and optional per-line discount
- Three pricing modes — fixed bundle price, sum-of-components, or sum-minus-percentage — recomputed via `@api.depends` on component price/cost changes
- Per-bundle delivery style flag: keep as one priced sale line with expandable breakdown, or explode into individually tracked component lines
- `sale.order.line` extension so a rep selects one bundle and pricing, taxes and discounts resolve automatically

