Shipping in PrestaShop is modelled as carriers with price ranges — a flexible system that covers everything from flat-rate UK delivery to postcode-surcharge bands for Highland Scotland and Northern Ireland. This guide walks through setting up the four shipping patterns every UK merchant needs: flat rate, free over a threshold, table rate with Highland and NI surcharges, and API-based real-time carrier rates.
Carriers and price ranges • Setting shipping origin • Flat-rate UK delivery • Free shipping above a threshold • Table rate by weight and destination • Highland Scotland and Northern Ireland surcharges • Carrier API integrations • EU and international shipping post-Brexit • FAQ
In PrestaShop, every shipping option is a “Carrier” even if it’s a flat rate — the term refers to a shipping method, not a shipping company. Each carrier has:
Carrier creation lives under Improve › Shipping › Carriers.
Under Improve › Shipping › Preferences, set:
Create a “Standard UK Delivery” carrier:
Two approaches:
The dedicated carrier approach gives clearer messaging (“FREE Delivery on orders over £50”) but requires hiding it from orders below £50 — handled automatically if you use price ranges correctly.
Create a carrier with “According to total weight” billing. Ranges:
Ranges apply to the zone the customer is in. For one UK price list, one UK zone works fine. For Highland/NI surcharges, create multiple zones (see next section).
Under International › Localisation › Zones, create additional zones:
PrestaShop’s zones are less postcode-aware than Magento’s. Community modules (UK Shipping Rules by MBEMod, or similar) add robust postcode-range support. For vanilla PrestaShop, manual country split (treating NI-BT as a sub-country) is the pragmatic approach.
Create higher-priced carriers targeting these zones — customers in Highland/NI see the surcharged rates while mainland UK sees the standard carrier.
Real-time carrier quotes via API available through modules:
For small stores, a well-tuned table rate covers 95% of what customers actually pay. Move to API integration when shipping volume justifies the integration cost.
After Brexit, EU shipments are exports:
Create an EU zone and carriers with appropriate rates. Restrict UK VAT from applying to EU orders via tax rules scoped to UK zone only.
PrestaShop hosting with UK shipping modules ready
SmartXHosting PrestaShop plans support Royal Mail, DPD, Evri and multi-carrier platform integrations — UK support when you need help with postcode-band setup.
See PrestaShop plansQ: How do I restrict a carrier to only UK mainland?
A: Under the carrier edit › Shipping locations and costs, tick only the UK zone. Scotland Highlands and Northern Ireland in separate zones are excluded.
Q: Can I offer multiple shipping speeds?
A: Yes. Create separate carriers — “Standard UK Delivery 2–3 days” and “Next Day Delivery” at higher price. Customers pick at checkout.
Q: Shipping shows taxed twice on my orders.
A: Check carrier Tax rule and verify Product Settings › Tax has “Display prices tax included (Front Office)” set correctly. The shipping tax rule should not be duplicated at the product level.
Q: How do I charge shipping by item count instead of weight?
A: Not native in PrestaShop. Modules from the marketplace add per-item shipping cost. Alternatively, set a flat weight per product and use weight-based ranges that indirectly act as item count.
Q: Can I have Saturday delivery?
A: Configure as an additional carrier. “Saturday Delivery” with higher cost, customer-time-sensitive availability via carrier cutoff extensions.
Q: How does PrestaShop handle oversized items?
A: Products have Width, Height, Depth fields. Table rate by volumetric weight is not native but modules add it. For very-large-item shipping (furniture), a dedicated carrier with a single “Contact for quote” rate and follow-up invoicing works well.
Q: Shipping is not showing at checkout.
A: Check (1) customer address country is in an enabled carrier’s zone, (2) cart total/weight falls within a defined range, (3) carrier is active (not just created), (4) module cache is not stale.