From first install to your trickiest delivery rule.
Setup instructions, worked examples and the details that make your rules behave as intended.
No matching answers. Try a shorter term or browse the topics.
Installation & first setup
How do I install the extension?
- Back up your store files and database. Install on a staging copy first.
- Upload the supplied
.ocmod.zipthrough OpenCart’s Extensions → Installer. - Go to Extensions → Modifications and refresh the modification cache. Check that the modification applied without errors.
- In Extensions → Extensions, select Order Totals. Install/open Courier Surcharge. The technical admin name remains Courier Surcharge for upgrade continuity.
- Enable the extension, select your tax class if needed and choose an appropriate total sort order for your existing total modules.
- Add and save a simple rule. Use Test Rules, then verify the actual storefront basket, delivery choices, tax and total before live use.
What should I check before updating an existing installation?
Keep a copy of the installed ZIP, store files, settings and database. Record your rules and any site-specific language changes. Test the update on staging, refresh modifications and theme caches, then repeat representative baskets and checkout refreshes. Do not uninstall and discard settings merely to change the marketing name.
Surcharge rules
Which charge mode should I choose?
Use Once per matching rule for one fixed charge when a rule qualifies. Use Per matched item quantity when every unit adds a cost. Use Once per different product when multiple quantities or option variants of the same product should count once. Several independent matching rules may each add a charge.
Illustration: with a £5 fixed rule, two units of Product A and one unit of Product B cost £5 per matching rule, £15 per quantity or £10 per different product. These are example amounts before tax.
How do percentage charges work?
A percentage charge is calculated from the subtotal of the product lines matched by that rule, rounded to two decimal places. It is not a percentage of the shipping provider’s base price. Earlier rules can claim product lines first, so check rule order when reviewing the matched subtotal.
How do products, categories and options combine?
A line qualifies if it matches a selected product OR a selected directly assigned category. If option values are selected, one must also match on that same line. A product elsewhere in the basket cannot supply the option match. With only option values selected, any product using those values can qualify. With no catalogue filters, all lines are eligible.
Are child categories included?
No. Select the child categories separately, or directly assign the relevant products to the selected category. Hidden categories can be useful as internal shipping groups, but their product assignments still need maintaining.
How do shipping-method selections work?
Select the services that should incur the charge. A restricted surcharge applies to the customer’s selected service, not merely because the service is offered somewhere in the quote list. Leave the method selection empty for an unrestricted surcharge. Manual method codes are available when a service is missing from the selector; use the actual quote code from the installed shipping module.
Can two rules charge the same item?
The first matching rule claims each basket line. Later rules cannot charge that line again. Distinct-product rules also track product identity across matching rules. Keep more specific rules above broader ones and verify the result in Test Rules.
What will customers see?
Set a Checkout Display Name independently of the Admin Rule Name. Matched display names are combined in the surcharge total. Qualifying shipping quotes can also show an extra-charge annotation beside the original delivery price. The annotation and total are two views of the same surcharge, not two separate charges.
How is tax handled?
The extension uses your chosen OpenCart tax class to calculate tax on surcharge totals. The quote annotation includes the calculated tax when a class is selected. Configure the class for your store’s actual tax requirements and check rounding and total-module order on staging.
Delivery restrictions
Hide selected methods or allow only selected methods?
Hide removes the named services when the rule matches. Allow only removes every other service. If several allow-only rules match a mixed basket, the remaining service must be allowed by every matching rule. Conflicting rules can leave no methods; test mixed baskets as well as single products.
How do postcode conditions work?
Restrictions can use exact UK outward codes or comma-separated numeric ranges sharing a prefix, for example AB10-AB16, IV2. Case and spaces are normalised. A blank postcode condition applies without a destination filter; a configured condition does not match an empty checkout postcode. This is not a general international postcode or wildcard engine.
Check addresses just inside and outside each boundary in your staging checkout. The current admin tester does not evaluate postcode conditions.
Does this create a service or change a carrier’s rate table?
No. Your shipping module supplies available quotes and base rates. Shipping Control filters those quotes and calculates qualifying extras. A method listed in the admin tester is not a guarantee that its carrier will offer it for every address, weight or basket.
Delivery notices
How do I add a notice?
In Delivery Notes, add an internal label, choose the shipping methods, select a Plain, Information or Warning template and write the customer-facing heading and content. Preview the result at desktop, tablet and mobile widths, enable it and save. Check it in the actual checkout.
When and where does a notice appear?
Notices follow the selected delivery method and apply regardless of the basket products. The first enabled matching notice with content is displayed. Placement is normally below the order-comments panel, falling back to the shipping-method area where needed. The script responds to supported checkout changes and AJAX refreshes.
Can I use formatting or HTML?
Use the visual editor for headings, emphasis, lists and useful links. Allowed presentational HTML and inline styles are sanitised. Scripts, forms, embedded frames and dangerous URL/CSS content are not supported. Keep the notice short and check it on a phone.
Test before customers do
How do I use Test Rules?
- Save your configuration first; the tester uses saved settings.
- Add products, relevant options and quantities to its temporary basket.
- Use Show Shipping Methods to inspect the extension’s visibility rules without selecting a method.
- Choose a method and run the full test to inspect charge matches, reasons, rule priority and delivery notices.
- Repeat the scenario in staging checkout, including address and tax behaviour.
The test basket does not create an order or modify a customer’s basket.
What does the tester not simulate?
It does not obtain complete live carrier quotes or evaluate all provider rules, address restrictions, external APIs or destination postcode conditions. It does not prove that a particular checkout theme renders a surcharge or notice correctly. It helps diagnose this extension’s saved rules; storefront testing completes the check.
Compatibility & integrations
Which OpenCart versions and checkouts are covered?
This package targets OpenCart 3. OpenCart 4 is not included. Integration handling exists for Ultimate Shipping, standard checkout and Xtensions AJAX checkout. Journal and custom checkout installations should be checked against their exact versions and customisations before purchase or deployment.
ViralMESH reports testing across OpenCart 3 releases and use with Journal and custom checkouts. The documentation does not provide an exhaustive independently recorded version matrix. The admin screenshots shown were captured on an OpenCart 3.0.3.8 installation.
Do I need Ultimate Shipping?
Core surcharge rules can target standard shipping method codes. The supplier-direct weight/value split specifically integrates with Ultimate Shipping, which is a separate third-party extension. Its underlying rate configuration remains your responsibility.
How does manufacturer-direct delivery work?
Matching supplier-direct product lines are separated from the normal Ultimate Shipping basket calculation. In a mixed basket, ordinary carrier calculations use the remaining products and the direct product value is removed from the applicable cumulative value calculation. The supplier-direct rule supplies its charge separately.
The current direct-only integration is UK-oriented and checks OpenCart country ID 222. Confirm suitability for your store, destinations and Ultimate Shipping version. It is not a general multi-vendor shipping or worldwide split-fulfilment system.
Troubleshooting
Why is my surcharge missing?
Check extension and rule status, positive amount, chosen shipping method and actual product/category/option assignments. Save before testing. Look for an earlier matching rule claiming the line. Check Order Totals installation and sort order, then inspect modification logs and checkout refresh behaviour.
Why are no shipping methods available?
First confirm the provider returns rates for the address, basket and weight without the relevant restriction on staging. Then inspect hide rules and the intersection of allow-only rules. Check the destination postcode and mixed-product conditions. Avoid changing live carrier settings as a diagnostic shortcut.
Why is a delivery note missing or duplicated?
Check that the note is enabled, has content and includes the selected method. An earlier matching note takes precedence. Confirm the modification hooks applied to your checkout and that its shipping controls/refresh events are supported. Clear the relevant theme cache on staging and retest a service change.
Why does the quote label differ from my rule name?
Checkout total labels and per-quote annotation text are separate. The quote uses the supplied language strings; the total uses the matched rule’s customer-facing name. Site-specific language customisations are not universal extension defaults.
Purchase & support
What does the licence include?
Your £20 direct purchase covers use on one store, with 12 months of updates and email support. You may continue using the purchased version after those 12 months. A separate licence is needed for another store.
How much is it, and how do I receive it?
The direct price is £20 total with no VAT added. ViralMESH is not VAT registered. Payment is through Stripe and the extension is emailed manually to the checkout email address after purchase. It is not an instant download. The OpenCart Marketplace listing price is US$30.
What should I include with a compatibility or support question?
Include your OpenCart version, PHP version, theme and checkout names/versions, shipping module/version, a description of the intended rule and a redacted screenshot of the result. For an existing purchase, include its reference. Never post passwords, API keys, customer information or admin session URLs in public comments.