Charge handling, service or packaging fees only when your rules match. Conditional Order Fees adds automatic cart-line surcharges in PrestaShop with policy rules, nested AND/OR conditions on cart value, customer, country, carrier and products. Custom labels per cart, simulator, audit log and analytics. For PrestaShop 1.7, 8 and 9.
Conditional Order Fees for PrestaShop empowers merchants to implement highly flexible surcharges. Its robust policy engine enables creation of fees based on comprehensive criteria, including cart value, customer group, carrier, payment method, and product catalogue. Fees appear transparently as distinct cart line items, each with customizable multilingual labels. Merchants can define fixed or percentage amounts, set minimum/maximum caps, and assign specific tax rules. The module features a powerful visual condition builder, a cart simulator for thorough testing, and detailed audit logs, ensuring precise control over handling, service, and packaging fees to enhance profitability and customer clarity.
Not every order costs the same to fulfil. Conditional Order Fees is a full policy engine for cart-line surcharges: build nested AND/OR conditions on cart value, customer, carrier, payment and catalogue, add fees as a transparent product line, show a custom multilingual label per cart, simulate outcomes before go-live, and trace every decision in an audit log. One module. Total control over when handling, service and packaging fees appear.
These are the capabilities that turn flat surcharges and manual workarounds into real business rules. Built for shops that need precise fee logic at checkout — without touching code.
Create multiple named policies, order them by priority, activate or pause individually. Each policy holds its own condition tree and fee rules.
Fees materialise as a real cart product line with correct tax rules. Customers see the surcharge in cart, checkout summary and order confirmation — not a hidden total tweak.
Nested AND/OR groups with 32 cart, customer, delivery, payment and catalogue fields. Quick presets for common scenarios. Raw JSON escape hatch when you need it.
Write a customer-facing label per fee rule and language — "COD handling fee", "Gift wrapping", "Bulky goods surcharge". Labels are stored per cart, not on the shared fee product, so concurrent checkouts never overwrite each other.
Charge a flat fee or a percentage of cart total, products total, shipping cost or weight. Set min and max caps per rule. Assign tax rules group per fee line.
Stack all matching fees, first fee wins, priority cascade, highest fee only, or unique fee codes — pick how conflicting rules inside a policy combine.
Pick a real shopping cart and customer from your store. See exactly which fees would apply and for how much — before a single order is placed.
KPI cards, Chart.js trend charts and fee revenue breakdowns over selectable periods. See which policies drive the most surcharge income.
Support sees the applied fee label and amount directly on the order page in back office. No digging through raw product rows.
Flat surcharge plugins stop at one threshold. PrestaShop cart rules cannot express nested fee logic per payment method, carrier and catalogue. Conditional Order Fees gives you a visual condition builder with 32 fields, 14 operators and unlimited AND/OR nesting — at policy level and on every individual fee rule.
Cart, customer, delivery, payment, catalogue
=, ≠, ranges, in, regex, contains
AND/OR groups inside groups
Gate + sub-conditions per fee rule
One rule — if cart > €50, add €2 — cannot tell COD from card, wholesale from retail, or bulky furniture from digital downloads. Real pricing needs context, not a single number.
Stack nested AND/OR groups in the back office. Combine payment module, customer group, cart weight and catalogue in one tree — then add sub-conditions on each fee rule inside the same policy.
No cap on policies or fee rules. Order by position, stop on first match, pick a merge strategy. Duplicate, export JSON, simulate on real carts — publish a model as precise as your contracts.
Combination space
Why this is unbeatable: The combination space is practically infinite. Cart rules and manual products cannot get there. Only Conditional Order Fees turns that complexity into one clear fee line your customer understands.
Every feature explained in plain language for shop owners. No technical jargon. One by one, so you know exactly what Conditional Order Fees does for your store.
When cart contents change — product added, quantity updated, carrier or address switched — the module re-evaluates active policies and syncs the fee line automatically. No manual refresh. No theme JavaScript hacks.
If no policy matches anymore, the fee product is removed cleanly. If the amount changes, the line updates through PrestaShop's native cart mechanics with price override hooks.
Each cart stores its own customer-facing label in conorderfee_cart — not on the shared hidden fee product. Cart #1042 can show "COD handling fee" while Cart #1043 shows "Gift wrapping surcharge" at the same time, with no label leaking between sessions.
Presentation hooks inject the correct text per cart through PrestaShop's native product listing and cart product presenters. The fee product stays generic in the catalogue; concurrent checkouts and AJAX cart updates remain safe at scale.
A policy is a named bundle of conditions plus one or more fee rules. Create as many as you need — COD surcharges, small-order fees, packaging for bulky goods, payment-method handling.
Each fee rule defines amount type (fixed or percent), calculation base, min/max caps, tax rules group, priority, optional date window and its own sub-conditions. Write a multilingual cart line label customers actually see.
Policies run in position order. Enable Stop on first match when the first matching policy should decide everything.
Products total — sum of merchandise lines only, fee product excluded from the base automatically.
Cart total — full basket value including shipping, still excluding the fee line itself to avoid circular math.
Shipping cost and cart weight bases let you charge packaging or handling proportional to delivery size — not just order value.
When multiple fee rules inside one policy match, the merge strategy decides the outcome:
Set a default merge strategy globally in Settings, then override per policy when needed.
The Simulator tab lets you test rules against real carts from your shop. Search baskets, optionally attach a customer, then run the evaluation.
Results show matched policies, fee lines with amounts and labels, and the total surcharge — no test order required.
Use the simulator after every policy change to confirm fees behave exactly as intended before customers see them.
The Dashboard tab is your fee revenue control room. KPI cards summarise applied fees, active policies and evaluation volume over a selectable period.
Chart.js trend charts break down fee activity daily, weekly or monthly. Recent audit entries appear at the bottom for quick access to the latest decisions.
Every significant event is recorded: fee applied or cleared, policy create/update/delete, imports, exports, duplicates, settings changes and simulation runs.
The dedicated Audit log admin menu gives you filters by date and event type. Click preview on any row to see the full detail payload.
Export the log to CSV when compliance or internal review requires a complete history.
Download any policy as portable JSON from the policy editor or policies list. Upload JSON to create a new policy on the same shop or a staging environment.
The duplicate action copies the full policy — conditions, fee rules, merge strategy and multilingual labels — under a new name. Ideal for seasonal variants or safe testing.
Everything is organised in clear sections. Open the module configuration and jump straight to where you need to be. Two additional native admin menus give you full list views for policies and audit history.
Native menus Order fee policies and Audit log provide HelperList views with quick active toggles, condition summaries and bulk management.
Real policy setups you can build in minutes — each one combines a condition tree with one or more fee rules. Copy the logic, adjust amounts, publish.
Policy conditions (AND)
Payment module in [cashondelivery, codpro] AND Products total ≥ 1 EUR
| Fee rule | Amount | Cart line label |
|---|---|---|
| COD handling | Fixed 4.99 EUR | "Cash on delivery fee" |
| COD percent (large orders) | 2% of products total, min 4.99, max 29.99 | "COD service charge" |
Customers paying on delivery see a transparent surcharge in the cart — before they confirm the order. No surprise at the door.
Policy conditions
Products total < 30 EUR AND Cart requires shipping = Yes
| Fee rule | Amount | Extra rule conditions |
|---|---|---|
| Minimum order surcharge | Fixed 2.50 EUR | Products total < 15 EUR |
| Low basket fee | Fixed 1.50 EUR | Products total between 15–29.99 EUR |
First fee wins ensures only one small-order charge applies — tiered by basket size without stacking both rules.
Policy conditions (OR)
Category in cart in [Furniture, Oversized] OR Cart weight > 30 kg
| Fee rule | Amount | Cart line label |
|---|---|---|
| Standard packaging | Fixed 8.00 EUR | "Bulky item packaging" |
| Heavy freight prep | 5% of cart weight base, min 12.00 | "Heavy goods handling" |
| Pallet surcharge | Fixed 25.00 EUR | "Pallet preparation fee" |
Highest fee keeps only the largest matching charge — so a pallet order gets the pallet fee, not packaging plus weight plus pallet stacked together.
Policy conditions
Customer logged in = Yes AND Customer group in [Wholesale, VIP B2B]
| Fee rule | Priority | Amount |
|---|---|---|
| VIP waived | 1 | Fixed 0.00 EUR — Customer group in [VIP B2B] |
| Wholesale admin | 5 | Fixed 5.00 EUR — Products total < 500 EUR |
Policy conditions (AND)
Day of week in [6, 7] AND Selected carrier in [Express overnight]
| Fee rule | Amount | Date window |
|---|---|---|
| Weekend dispatch | Fixed 6.50 EUR | Always active |
Combine datetime fields with carrier selection to charge weekend handling only when express delivery is actually chosen.
Use any field below at policy level or on individual fee rules. Pair with fourteen comparison operators and unlimited nested AND/OR groups.
| Field | Evaluates against | Typical operators |
|---|---|---|
| Cart total (tax incl.) | Full basket value including shipping | =, ≠, >, ≥, <, ≤, between |
| Products total | Merchandise lines only — fee product excluded | =, ≠, >, ≥, <, ≤, between |
| Shipping cost | Selected carrier delivery price | =, ≠, >, ≥, <, ≤, between |
| Total product quantity | Sum of units across all cart lines | =, ≠, >, ≥, <, ≤, between |
| Unique products in cart | Count of distinct product IDs | =, ≠, >, ≥, <, ≤, between |
| Cart weight (kg) | Total physical weight of the basket | =, ≠, >, ≥, <, ≤, between |
| Virtual / physical flags | Has virtual, all virtual, has physical, requires shipping, has customization, has voucher | presence (yes/no) |
| Number of cart rules | How many vouchers are applied | =, ≠, >, ≥, <, ≤, between |
| Product / category quantity | Minimum qty for a specific product or category (id:qty) | =, ≥, > |
| Product line total | Minimum line amount for a product (id:amount) | =, ≥, >, between |
| Currency | Active checkout currency | =, ≠, in, not in |
| Delivery / invoice country | Country on shipping or billing address | =, ≠, in, not in |
| Delivery zone | PrestaShop zone for the delivery address | =, ≠, in, not in |
| Delivery postcode | Postcode string on shipping address | =, contains, starts with, regex |
| Customer group | Group membership at evaluation time | =, ≠, in, not in |
| Selected carrier | Carrier reference in the current basket | =, ≠, in, not in |
| Payment module | Payment method module name at checkout | =, ≠, in, not in |
| Customer logged in / guest | Authentication state of the shopper | =, ≠ (yes/no) |
| Customer orders / lifetime spent | Completed order count and total revenue | =, ≠, >, ≥, <, ≤, between |
| Product / category / brand / supplier | Catalog membership in the current basket | in, not in |
| Day of week / hour / date | Server datetime at evaluation — for time-based fees | =, in, between |
32 fields. 14 operators. Trees as deep as you need.
Stack as many policies as your business requires. Add as many fee rules per policy as your pricing model demands — each with its own sub-conditions, priority, date window and multilingual cart line label. Multiply that by five merge strategies, cross-policy ordering and stop-on-first-match…
The combination space is practically infinite. Your customers see one clear fee line. You control exactly when it appears and how much it costs.
Conditional Order Fees adapts to how your pricing actually works — not the other way around.
Charge a fixed or percentage COD fee when the customer selects pay-on-delivery. Label it clearly in the cart so the surcharge is never a surprise at the door.
When the merchandise subtotal falls below your profitable threshold, add a small handling charge. Use Products total so shipping discounts do not accidentally waive the fee.
Target the payment module field to add fees for invoice, bank transfer reconciliation or high-risk gateways — without editing each payment module separately.
When furniture, oversized categories or cart weight cross your limits, add a packaging or pallet preparation fee proportional to weight or as a fixed surcharge.
Wholesale buyers below a contract minimum get an admin fee; VIP groups get zero. Priority cascade picks the right rule automatically.
Blend delivery country, zone and postcode with regex matching to add export documentation or remote-area handling fees only where regulations require them.
Use day-of-week and date fields to charge weekend handling or peak-season surcharges. Duplicate the policy, set date windows on fee rules, toggle off when the season ends.
Guests pay a small account-setup fee; logged-in customers with order history do not. Combine logged-in, guest and customer orders fields in one policy tree.
Per-cart labels stored in the database. Fee amounts overridden at calculation time. Every decision traced in audit rows. Here is the engineering behind the cart line your customers see.
PHP, JavaScript, Smarty templates, CSS and SQL powering the evaluation engine, condition builder, dashboard analytics, simulator and audit logging.
Engine, condition evaluator, tree repository, policy duplicator, dashboard, audit log, cart state, fee product, compatibility layer and admin renderer.
Dashboard, Policies, Settings, Simulator, Audit log and Updates — plus native Order fee policies and Audit log admin menus.
Controllers, models, hooks, upgrade scripts, mail templates, browser demo simulator and full back-office asset stack.
conorderfee_cart.cart_line_label keeps the customer-facing text isolated per session — no catalogue name pollution.One hidden fee product. Per-cart labels at presentation time. Amounts synced on every cart save. Decisions traced on every order. That is the engineering contract behind Conditional Order Fees. Your customer sees one honest line item. You control exactly when it appears, what it says and how much it costs.
Conditional Order Fees optimizes your pricing strategy by automating dynamic surcharges. Its policy engine and visual builder allow precise fee application based on varied conditions, eliminating manual adjustments and ensuring seamless, error-free checkout processes for greater operational efficiency.
Conditional Order Fees directly boosts sales through transparent, context-aware pricing. Clear, multilingual fee labels build customer trust, minimizing cart abandonment. It enables profitable offering of diverse products and services, ultimately increasing conversions and revenue.
With 15 years of PrestaShop expertise, Conditional Order Fees is engineered for precision. It leverages 13+ core hooks across versions 1.7-9.x for transparent cart line surcharges, mastering complex conditions, and providing deep, stable platform integration.
The 'Conditional Order Fees' module delivers extensive customization for your pricing. Craft detailed policies with nested AND/OR conditions using 32 fields like cart value, customer, and payment. Set fixed or percentage fees with various merge strategies, perfectly fitting your store's unique needs.
Conditional Order Fees provides unrestricted access to its PHP, JavaScript, and Smarty source code. This ensures full transparency and enables advanced modifications or custom integrations, free from hidden functions or obfuscation, giving total control over your fee logic.
Conditional Order Fees offers a perpetual license, ensuring your precise fee logic always functions seamlessly. Enjoy free updates for one full year, keeping your surcharge policies current across PrestaShop versions. Access renewals for future enhancements and compliance at up to 90% off.