PrestaShop Marketing & Promotions

Product Packs & Bundles Module for PrestaShop 8 & 9: Discounted Bundles & Kits

Packs built from real products, with real order lines and real stock.

The pack is a virtual entity made of real products, backed by a showcase product in the catalog: the pack appears in category listings, search and the sitemap with its own photos, crossed out price and promo badge. The pack is shown on a dedicated page or on a real product page of your theme. In the cart, you choose: every pack item on its own line, invoiced at its pack price with its VAT rate, or one single pack line whose VAT is broken down per rate on the invoice. Invoices with the price without pack and the discount amount, credit slips, ERP exports and stock decrements work like any other order.

At a glance
  • Every pack visible in the catalog: category listings, search, photos, crossed out price
  • 4 pricing modes including the proportionally spread fixed price, exact with mixed VAT rates
  • In the cart, one line per product or one single pack line, VAT broken down per rate either way
  • One click import of native PrestaShop packs, images and categories carried over
  • PrestaShop 8.0 to 9.x, multistore, five languages, no override
PrestaShop 8.0 to 9.x 4 pricing modes Real order lines Multistore No override
  • 30-day refund
  • 12 months updates
  • 24h support
www.datafirefly.com/en/
PrestaShop product bundle with pack price and real order lines per component
v2.5.1 · updated 2026-10-02
What it does

The short version.

01

Present across the whole catalog

Every pack generates a synced showcase product: category listings, native search, facets, sitemap, with its photo gallery and crossed out price. The showcase redirects to the pack page and is never invoiced.

02

Four pricing modes

No discount, global percentage discount, per product discount as a percentage or an amount, or a fixed pack price spread proportionally across the lines, exact with mixed VAT rates.

03

Mixed VAT rates preserved

One line per product, each at its own rate, or one single pack line whose VAT is broken down per rate on the invoice: totals stay exact with mixed rates. No duplicated stock, the stock of each product is decremented.

04

The pack sells on product pages

Every component displays a "this product is also available in a pack" block with thumbnails, crossed out price, pack price and savings badge. Position and sorting are configurable.

05

An honest cart

The pack price only covers pack quantities. If the customer adds extra units, they pay the regular price through a weighted average unit price, with no blocking.

06

Detailed invoice

The invoice shows the price without pack and the discount amount per line, plus a per pack recap: total without pack, discount as an amount and a percentage, pack total. Same recap on the confirmation page and the customer order history.

The long version

Everything you'd want to know before you install.

A detailed look at how Product Packs & Bundles Module for PrestaShop 8 & 9: Discounted Bundles & Kits works, why we built it the way we did, and the thinking behind the features above.

§ 01

Why not a native pack product

The native PrestaShop pack creates a separate product with its own stock and a single order line. The result: the pack stock does not follow the components, the invoice does not detail the items, and your accounting or ERP exports see a product that does not exist in your master data. This module does the opposite: the pack is a commercial definition, the products stay yours. You compose, it assembles.

§ 02

Four ways to set the price

No discount, for a pure convenience bundle. A global percentage discount applied to every component. A per product discount, as a percentage or an amount, which lets you give one item away at 100 percent in a machine plus free consumable deal. A fixed pack price, the most persuasive mode: you announce a round 49, the module spreads the gap proportionally across each line, which stays accurate even when components carry different VAT rates.

§ 03

The pack sells where the customer hesitates

The pack page has its own URL, but most sales start from product pages. Every component displays a "this product is also available in a pack" block: item thumbnails, crossed out total, pack price, savings badge and a direct add button. You pick the position (under the buy block, at the bottom of the page, or both), how many packs to show and their sorting.

§ 04

Combinations, options and quantities

Per component, you decide whether the customer picks the combination (size, color) or whether it is locked. A component can be optional: the customer unticks it and the price recalculates live. Quantities can be opened to editing, component by component. Pack availability is computed from real stock: the pack is sellable when every required component is available in the requested quantity.

§ 05

What happens in the cart

On add, every component becomes a real cart line invoiced at its pack price through a specific price scoped to that cart. Every pack line carries a badge with the pack name, a link to its page and a button removing the whole pack. Strict mode goes further: if the customer deletes one component, the whole bundle and its discount are removed, which prevents keeping the discount while returning half the pack.

§ 06

The pack price does not leak

If the customer raises the quantity of a pack product, only the pack units keep the reduced price. The module recomputes a weighted average unit price: pack quantity at the pack price, surplus at the regular price. On a 2 unit pack at 8 against a regular price of 10, moving the line to 5 units totals 46, not 40. The customer buys freely, the discount stays capped at what you decided.

§ 07

Clean orders all the way to accounting

Every pack product lands on its own order line, at its pack price. Invoices, delivery slips, credit slips and partial returns work natively, item by item. The back office shows a pack summary in every order detail, and a per pack sales counter tells you what works. Your ERP and accounting exports only ever see real references from your catalog.

§ 08

Technical integration

The product page block uses displayProductAdditionalInfo and displayFooterProduct, the cart badge uses displayCartExtraProductActions, bundle consistency uses actionCartSave. The pack page uses a dedicated route like /pack/12-winter-box. Front JavaScript is vanilla with no jQuery dependency, CSS is isolated under the dfpackpro prefix with a configurable accent color. No class or controller override is installed.