Skip to main content
Product Bundle Pack — A build-to-order Odoo module that lets you sell multiple products together as bundles or kits — with co — 1/1Illustrative preview

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.

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

`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
Component-aggregated stock availability from `stock.quant` — bundle reads as unavailable when any single component is short
`@api.constrains` guards against negative quantities, self-referencing bundles, and infinite nesting depth
`ir.model.access.csv` plus record rules scoping bundle edit rights to sales/inventory managers and honoring multi-company boundaries
QWeb report extensions rendering bundle-with-component breakdown on quotations, sale orders and invoices
Backend form/list/kanban views for bundle definition, with an OWL configurator widget where richer UX helps
Optional automated actions to resync bundle prices when a component's standard/sale price changes
Full XML-RPC/JSON-RPC exposure so webshop, POS or external systems can create bundle-backed order lines programmatically
Margin visibility retained per component so profitability is not lost when items are sold as a combo
Configurable behavior for delivery/invoicing — ship as one pack vs deliver and invoice each component line
Built and tested against your exact Odoo target (17.0 / 18.0 / 19.0) with Community vs Enterprise differences confirmed

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 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

CriterionECOSIRECustom BuildCompetitorOdoo Native
Bundle sale priceFixed, sum, or sum-minus-% modes, recomputed on component changeWhatever you build, at full costUsually one fixed pricing behaviorKit BoM has no independent bundle price
Ship as pack vs explodePer-bundle delivery style flagBuildable but must be specifiedOften fixed to one behaviorKit always explodes into components
Stock availabilityAggregated from component `stock.quant`Must be coded from scratchVaries; sometimes component-awareNo unified bundle availability
Margin visibilityPer-component cost/margin retainedDepends on your implementationOften bundle-level onlyNot surfaced for combined sales
Fit to your catalogBuilt to your exact products and rulesFully bespokeGeneric, one-size-fits-allGeneric core behavior
Reports & APIQWeb breakdown + full XML-RPC/JSON-RPCYou build and document itLimited or fixed report formatNo bundle-aware reports
Support & handoverSupport window + git repo + trainingOnly if you staff for itVendor-dependent, often forum-onlyCommunity support only
Cost & timelineFrom $249 indicative, one working week, fixed quoteHigh effort, unpredictable timelineLow upfront, gaps you fill laterFree 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.

Request a quote

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

Request a Quotation

Tell us about your Product Bundle Pack requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.