Cart Discounts (Amount-Based and N+1) for OpenCart
What each licence includes
| Feature | Free | Pro |
|---|---|---|
| Tiered order-amount discount: "5% off from 2,000 UAH, 10% off from 5,000 UAH" | ✔ | ✔ |
| Discount as a percentage or a fixed amount | ✔ | ✔ |
| N+M deals: "buy 2, get the third free" or "third at 50% off" | ✔ | ✔ |
| In N+M deals, the cheapest units in each group get the discount | ✔ | ✔ |
| Limit on how many times a deal can fire in one order | ✔ | ✔ |
| Rule scope: whole catalogue, categories (with subcategories), or individual products | ✔ | ✔ |
| Products on an OpenCart special price can be excluded from a rule | ✔ | ✔ |
| "X more to your next discount" line with a progress bar in the cart | ✔ | ✔ |
| Cart shows the discount the customer has already earned | ✔ | ✔ |
| Each rule is a separate named line in the totals, the email and the order | ✔ | ✔ |
| Tax is recalculated with the discount, just like the core coupon | ✔ | ✔ |
| Combination mode: stack N+M deals and the amount-based discount, or apply only the best one | ✔ | ✔ |
| Multi-store: rule limited to selected stores | ✔ | ✔ |
| A rule is disabled, not deleted — saved for the next promotion | ✔ | ✔ |
| 1 amount-based discount rule and 2 N+M deals at once | ✔ | ✔ |
| Unlimited active rules | — | ✔ |
| Scheduled rule activity: from date to date | — | ✔ |
| Rules for specific customer groups | — | ✔ |
| Promotion badge on the product page | — | ✔ |
Cart Discounts (Amount-Based and N+1) is a module for OpenCart 2.3, 3.x and 4.x that gives the customer an automatic discount: tiered discounts based on order amount (“5% off from 5,000 UAH, 10% off from 15,000 UAH”) and quantity-based deals (“buy 2, get the third free”). No coupons, no editing prices on product pages, and no code the customer has to find somewhere.
The cart itself shows the customer which discount they’ve already earned and how much more they need to add to reach the next threshold. In the order, each discount is a separate line with its own name, so both the manager and the accountant can see exactly what reduced the total.
Why a store needs this
The simplest way to raise the average order value is to promise more for a bigger purchase. “10% off from 3,000 UAH” only works if the customer knows about it at the exact moment they’re deciding whether to add one more item. They’ve long since scrolled past the banner on the homepage, and nothing in the cart reminds them of the offer.
“2+1” promotions are just as popular in clothing, cosmetics and home goods. In stock OpenCart these are done with a coupon or by manually setting a price — and both break the moment the customer puts different products at different prices into the cart.
The module covers both scenarios. Rules are set up once, and the discount is calculated in the cart automatically for every customer.
Live demo
The module is installed on the demo store oc.catcode.com.ua running OpenCart 4.1. Two rules are active there: an amount-based discount (5% off from 5,000 UAH, 10% off from 15,000 UAH) and a “buy 2, get the third free” deal on the Brown Leather Belt Watch. Add three watches to the cart to see both discounts and the progress bar toward the next threshold.
What the customer sees
Above the cart table, the module displays discounts already in effect and a line reading “Add … more to your cart to get … off” with a progress bar. Change the quantity, and the line updates along with the cart. In the totals, each rule appears as its own line, and tax is recalculated with the discount already applied.

What the admin gets
One page under Extensions → Modules: the list of rules, settings and licence. The list shows the rule type, its condition in one line (“5,000 UAH → 5% · 15,000 UAH → 10%” or “Buy 2, get 1 more at 100% off”), which products it applies to, its active period and a toggle. A disabled rule isn’t deleted — next season you only need to switch it back on.

Amount-based order discount
A rule consists of thresholds: from which amount, and what discount applies. The highest threshold reached is the one that fires; lower ones aren’t added on top. The discount is set as a percentage or a fixed amount, and the amount is calculated excluding tax and shipping — the same way “Sub-Total” is calculated in the cart totals.
A rule can be limited to categories (subcategories are included automatically) or to specific products, and products already on an OpenCart special price can be excluded so you don’t stack a discount on a discount.

N+M deals: “buy 2, get the third free”
The condition is set with three numbers: how many to buy, how many to get, and at what discount — 100% means free, 50% means half price. You can also limit how many times the deal can fire in a single order.
If the products in the deal have different prices, the module sorts them from most to least expensive and splits them into groups. In each complete group, the cheapest units get the discount. This way the deal can’t be gamed by putting an expensive item next to a cheap one in the cart.

How rules combine
By default, N+M deals fire first, and the amount-based discount is calculated on what’s left. A single unit of a product never gets two discounts: an item given away in an N+M deal doesn’t count toward the amount threshold.
If deals shouldn’t stack, the mode can be switched to “only one rule — whichever gives the largest discount.”
How it works, step by step
1. You create a rule: an amount-based discount with thresholds, or an N+M deal, and choose the products or categories.
2. The customer adds products to the cart. The module checks which rules apply to this store and this cart.
3. N+M deals are calculated first, then the best available amount-based threshold on the rest of the cart.
4. Each discount is added to the totals as a separate line, and tax is reduced proportionally to the products it applied to.
5. At checkout, the same lines are recorded in the order, the customer’s email and the invoice.
Pricing
The free version keeps one amount-based discount rule and two N+M deals active — enough for most stores running one ongoing promotion. Further rules can be created and saved, waiting for a licence.
Pro costs 990 UAH per domain: unlimited rules, scheduled activity periods, rules for specific customer groups, and a promotion badge on the product page. For OpenCart the licence is perpetual: you pay once, with no annual payments. Pro can be tried free for 7 days right from the admin panel.
Technical requirements
OpenCart 4.x, 3.x and 2.3 are supported, along with ocStore on these versions — separate archives for each branch. PHP 7.0 or later for 2.3; for 3.x and 4.x, whatever version your OpenCart runs on. The module has been tested on OpenCart 4.1.0.3, 4.0.2.3, 3.0.5.0 and 2.3.0.2.
The module works with the stock OpenCart cart. If you use a third-party checkout module, discounts will appear in the totals as long as it calculates totals through OpenCart’s own mechanism.
Under the hood
A discount is a separate Order Total with sort order 4, i.e. before tax — the same way the core coupon works. The module doesn’t change product prices in the cart and doesn’t modify core files: no OCMOD modifications, no template overrides.
The block in the cart and the badge on the product page are added via OpenCart events on top of whatever the theme already renders. Rules are stored in their own tables; uninstalling the module doesn’t erase them, so an accidental click doesn’t wipe out all of the store’s promotions.
How to install
1. Download the archive for your version: on OpenCart 4.x and 3.x, via Extensions → Extension Installer. On OpenCart 2.3 the installer only works over FTP, so the contents of the upload folder are uploaded to the store’s root.
2. Extensions → Modules → “CatCode Cart Discounts (Amount-Based and N+1)” → Install. The discount line in the order totals is installed together with the module.
3. Open the module, enable it on the Settings tab and save.
4. On the Rules tab, create an amount-based discount or an N+M deal and check it in the cart.
Version history
1.0.0 — first release. Tiered order-amount discount (percentage or fixed amount), N+M deals with distribution to the cheapest units, a limit on how many times a deal can fire, rules for the whole catalogue, categories with subcategories, or products, exclusion of products on special price, progress toward the discount and applied discounts shown in the cart, separate lines in the order, tax recalculation, rule-combination modes, multi-store support, builds for OpenCart 4.x, 3.x and 2.3. Pro adds unlimited rules, scheduling, customer groups and a promotion badge on the product page.
Frequently asked questions
How is this different from a coupon or OpenCart's core discounts?
OpenCart's core discounts are tied to a single product and the quantity of that same product, and a coupon has to be entered by the customer. The module gives a discount automatically: based on the whole cart's amount or on the quantity of products from a category, with no code and no editing prices on product pages.
How is "buy 2, get the third free" calculated if the products have different prices?
Products are sorted from most to least expensive and split into groups of three. In each complete group, the cheapest item becomes free. This way the deal can't be gamed by putting an expensive item in the cart next to a cheap one.
Do the amount-based discount and an N+M deal stack?
By default, yes, but a single unit of a product never gets two discounts: an item that already went into an N+M deal doesn't count toward the amount threshold. You can switch the mode to "only the best rule."
Is VAT calculated correctly?
Yes. Tax is reduced along with the discount, proportionally to the products it applied to, the same way the core coupon works. Fixed fees such as an eco-tax are unaffected.
Does the manager see the discount in the order?
Yes. Every rule that fired is recorded in the order as a separate named line — in the email, the invoice and the admin panel, it's clear exactly what caused the discount.
What happens to the rules if I uninstall the module?
The rules stay in the database. After reinstalling, they're still there — you only need to enable the module again.
Which OpenCart versions are supported?
4.x, 3.x and 2.3, as well as ocStore on these versions.
Is the licence annual or perpetual?
For OpenCart it's perpetual: one payment, no annual fees.
Questions about the module?
Message us on Telegram — we reply within the working day. We will help with setup, compatibility and key activation.
No reviews yet. Be the first — right below.
Leave a review
Reviews are moderated before publication, which usually takes up to 24 hours.
No questions yet. Ask one — we answer within 24 hours.
Ask a question
We usually reply within 24 hours during working hours.
Buying the module
—