
Option Combinations for OpenCart — stock, price and SKU of every option combination
A combination grid for OpenCart 4, 3 and 2.3: "red × M" gets its own stock and availability, and in Pro its own surcharge, weight, SKU and photo. Combinations you do not sell are greyed out on the product page, conditional options appear only when needed, and drop-downs turn into colour dots and buttons. The base version is free; the Pro licence is lifetime.
- Compatibility
- OpenCart 4.0.2 – 4.1.x, 3.0.x and 2.3.0.2 (tested on 4.1.0.3, 4.0.2.3, 3.0.5.0, 2.3.0.2) · PHP as your OpenCart version requires (tested on 7.0, 8.1, 8.2, 8.3) · mysqli and PDO database drivers
- Version
-
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3) - Licence
- one site, lifetime
- Trial
- 7 days, no card, one per site
- Updated
- September 2026
What Free has,
and what Pro adds
The free version works with no time limit. Pro adds the rest of the features in the table.
What it looks like

The trial starts when you ask
A fresh install is the free version, nothing switches on by itself. The “Try Pro for 7 days” button → e-mail → the key right in the window and by e-mail.

One key — one site
Moving the store? Unbind the licence on the old domain and activate it on the new one yourself. If our server is unreachable, Pro keeps working for 14 more days. For studios — keys for 5 or 25 sites, or unlimited.
Technical requirements
OpenCart 4.0.2 – 4.1.x (tested on 4.1.0.3 and 4.0.2.3), 3.0.x (tested on 3.0.5.0) or 2.3.0.2.
PHP — whatever your OpenCart version needs: the 2.3 build is tested on PHP 7.0, 3.x on 8.2, 4.x on 8.1 and 8.3.
Database: MySQL/MariaDB with the mysqli or PDO driver (both tested).
Grid options are of the “select” and “radio” types. Other options (checkboxes, text, date, file) work as always and can be conditional.
Cart. The module builds OpenCart’s own cart and can sit under a wrapper that passes cart calls on (that is how Size Price Calculator works). If another extension replaced the cart class entirely with its own, the module leaves the cart alone: the product page and the add-to-cart check work, but the combination price and SKU do not reach the cart.
Theme. Tested on the default themes of 4.x, 3.x and 2.3; for other themes there are settings for the CSS selectors of the price and the main photo. OpenCart 4.1 product variants (master/variant) are not supported.
Version history
First public release for OpenCart 4.x, 3.x and 2.3.
Frequently bought with Option Combinations for OpenCart
4 modules in one order — 40% cheaper than separately


Nova Poshta Premium — a Nova Poshta module for OpenCart 2.3, 3.x and 4.x

LiqPay — Card Payments for OpenCart 2.3, 3.x and 4.x

Telegram notifications and Viber/SMS for customers for OpenCart
Full module description
Option Combinations for OpenCart counts not separate option values but their combinations. A “red × M” T-shirt has its own stock, “blue × L” has its own, and “green × S” is not sold at all. Plain OpenCart cannot do that: stock and surcharges exist only per value, so the shop keeps selling “red M” after red M is gone, as long as there are some red ones and some M ones.
The module gives a product a combination grid built from “select” and “radio” options. Every combination has its availability and stock, and in Pro a surcharge, weight, its own SKU and photo. On the product page unavailable combinations are greyed out, conditional options show up only when needed (“engraving text” only after “Engraving: yes”), and drop-downs become colour dots and buttons. No OpenCart core file is changed. One licence, three builds: OpenCart 4.x, 3.x and 2.3.
What the customer sees
- What is there is visible. A value no combination is sold with is greyed out and cannot be clicked. A value that only conflicts with the current pick (blue exists, just not in S) is dimmed — clicking it clears the conflicting pick instead of showing an error.
- The variant price at once. The page asks the shop for the price of the picked combination — the one the cart will charge, with specials, discounts and tax — and puts it into the theme price together with the “Ex Tax” line.
- SKU, availability, photo. Under the options — SKU and availability of the combination (or the exact quantity, if you choose so), and the combination photo replaces the main one.
- Nothing extra. A conditional option stays hidden until needed and is not required while hidden.
What the admin gets
Extensions → Modules → Option Combinations, four tabs: Products, Swatches, Settings and Licence.
- A grid in a minute. Pick a product, tick the options the variants are made of and press “Add missing combinations” — the module creates every combination and leaves existing rows as they are. Bulk changes for all rows — one line above the grid.
- Product policy: what to do with a combination missing from the grid (do not sell, or sell as an ordinary product) and with a sold-out one (grey it out, hide it or take backorders).
- Conditional options: “show option B when A has one of the ticked values”, chains of conditions; a condition that loops back on itself is not saved.
- Checks before saving: a non-numeric stock, a negative surcharge without a sign, a photo outside the shop folders — the module names the combination with the mistake and saves nothing.
- Per-value stock of the grid options is switched off by the module itself, and it says how many values it switched off.
Pro: surcharge, weight, SKU and photo of every combination
- Surcharge with a + or − sign on top of the product price and other options; specials and taxes work as always.
- Weight of the combination — for shipping that counts weight.
- SKU of the combination becomes the model of the order line: it shows in the cart, the order, the invoice and the waybill.
- Photo — one of the product photos, replaces the main one on the page and in the cart.
- No cap on products.
How it works, step by step
- You build the grid in the admin: product, options, stock, and in Pro prices, SKUs and photos.
- On the product page the module hands the grid to a script that draws swatches, greyed-out values and conditional options over the ordinary OpenCart form — the pick goes to the cart through the same fields.
- On “add to cart” the module checks the combination and the stock and answers with OpenCart’s own option error when it cannot be sold.
- The cart is built with OpenCart’s own cart class a second time, and lines with a combination get its surcharge, weight, SKU, photo and stock. Everything else is counted by OpenCart itself, so the cart, the mini-cart, the checkout and One Page Checkout show the same amounts.
- When an order enters a processing or complete status, the module takes the combination stock (once per line) and returns it when the order leaves those statuses.
Under the hood
- No core edits. OpenCart events and a startup action (on 3.x and 2.3 — an event before the first controller). Core files and option prices in the catalogue are not changed.
- Own tables: product settings, combinations, conditions, swatch looks, value colours and a journal of stock taken per order line (so a cancellation returns exactly what was taken).
- Compatibility. Option Specials builds its cart under ours, so a special on a value and the combination surcharge apply together; Size Price Calculator wraps our cart whichever of the modules starts first.
- Load. Products without a grid are not touched; with a grid the cart is counted by OpenCart’s class once more — unnoticeable on a normal cart.
- Feeds see the product as before — there is no separate integration with combinations.
- Multi-store: grids and swatches are shared by all stores of one installation.
- Removal. The uninstall removes the events and the startup row and drops the module tables unless “Keep the data when the module is uninstalled” is on in the settings. On OpenCart 2.3 the settings go too, the licence key with them — activate it again after a reinstall.
How to install
- OpenCart 4: Extensions → Installer → upload
cc_optcomb.ocmod.zip(do not rename the archive) and press Install. OpenCart 3: Extensions → Installer →cc_optcomb-oc3.ocmod.zip, then Extensions → Modifications → Refresh. OpenCart 2.3: the 2.3 installer copies nothing without a configured FTP, so upload the contents of theupload/folder fromcc_optcomb-oc2.ocmod.zipto the shop root through your hosting file manager — no FTP setup in OpenCart needed. - Extensions → Extensions → Modules → Option Combinations → Install, then Edit.
- Settings tab: Status on; optionally how to show stock and whether to swap the photo. Save.
- Products tab: pick a product, tick the grid options, press “Add missing combinations”, fill in the stock and press “Save product”.
- Swatches tab: for “Colour” choose “colours” and a colour per value, for “Size” — “buttons”.
- For Pro: paste the licence key from the e-mail after payment or start the 7-day trial on the Licence tab.
Questions
about the module
Didn't find the answer? Message us on Telegram and we'll reply within a business day.
How is this different from ordinary OpenCart options?
In plain OpenCart stock and surcharges belong to each value separately: "red" and "M" live their own lives, and the shop cannot know that red M is sold out while blue M is still there. Option Combinations counts the combination itself: "red × M" has its own stock and availability, and in Pro its own price, weight, SKU and photo.
Will stock be taken twice — from the option value and from the combination?
No. OpenCart itself takes stock of every option value with "Subtract Stock" on. For the options in the grid the module switches that off automatically: when the grid is saved, before every order takes stock, and on the product page if an import switched it back on. Only the combination keeps the count; options outside the grid (gift wrap, say) are taken as always.
Can a customer order a combination that does not exist?
No. The product page shows it greyed out, and if a request goes around the page, the cart answers with OpenCart's own option error. The stock limit counts what is already in the cart. Per product you can choose otherwise: sell combinations missing from the grid as an ordinary product and take orders for sold-out ones (backorder).
What happens when the Pro trial ends?
Surcharges, weights, SKUs and photos of combinations stop applying but stay in the admin — buy a licence and everything works again without re-entering anything. Availability and stock of combinations, conditional options and swatches keep working on 3 products.
Does it work with my theme?
The grid, the cart and the order do not depend on the theme. On the product page the module finds the price and the main photo by the markup of the default theme; if your theme draws them differently, you can set your own CSS selectors in the settings. Tested on the default themes of 4.x, 3.x and 2.3, not on Journal, Unishop or others — try it in the 7-day trial first.
What about feeds for Google, Rozetka, Prom?
Honestly: there is no separate feed integration — feeds see the product as before, without splitting it into combinations.
Are OpenCart 4.1 product variants (master/variant) supported?
No, the grid works for the product it is set up on. An OpenCart 4.1 variant is a separate product and needs its own grid.
What happens to the data if I remove the module?
By default the uninstall removes the module tables: grids, conditions, swatches and the stock journal. If you plan to reinstall, turn on "Keep the data when the module is uninstalled" in the settings. Products and their options are never touched.
How much is it, and is there a yearly fee?
The base version is free. Pro is 1290 UAH once, a lifetime licence for OpenCart, no yearly payments. One licence for one domain covers all three builds.
No reviews yet. Be the first.
No questions yet. Ask one — we answer within 24 hours.
Not quite what you are looking for?
We build custom modules for WordPress, WooCommerce, OpenCart and Shopify. Tell us about the task and we'll prepare an estimate.
Order a custom module
Buying the module
—