Shopify guide

Shopify shipping rates by postcode: zones, surcharges, delivery areas

Shopify's shipping zones only know country and state or region, so a separate rate for a single postcode or a postcode range like "IV" doesn't exist there. Built-in local delivery can list postcodes, but only as local delivery with a radius or a list of individual codes — no surcharge for remote areas, no tiering by postcode prefix. Merchants who want to price shipping per postcode zone, or apply a Highlands and Islands surcharge automatically, need an app with its own rate logic.

Last updated: · Kevin Metzdorf

In short

Shopify’s regular shipping zones only distinguish country and state or region — there’s no separate shipping rate for a single postcode or a postcode range. The separate “local delivery” feature can list postcodes, but it’s limited to local delivery within the same country, demands every postcode individually, and has no concept of a surcharge for special cases like remote islands. To tier shipping rates by postcode zone, or calculate a Highlands and Islands surcharge automatically, you need an app that supplies its own rates through Shopify’s Carrier Service API.

The problem, in merchants’ words

The topic comes up in several variations. One merchant asks about “Delivery Method/Surcharge by postcode (UK)?” because different postcode areas need different prices. Another asks for “Shipping rates by UK regional postcode on either basic or shopify plan” — the plan question is right there in the title. A third describes the concrete case in “Shipping Charges for the Highlands and Islands in Scotland”.

The background is practical: carriers charge more for the Scottish Highlands, the Scottish islands and Northern Ireland because those deliveries take longer routes or a ferry. The catch is that carrier surcharge boundaries don’t follow Shopify’s regions. Some Aberdeen (AB) postcodes count as mainland UK while others fall into the Highlands band — a distinction Shopify’s zones can’t express, because they stop at country and region level.

The native way in Shopify

Regular shipping zones: Settings › Shipping and delivery › “Manage rates” › create a shipping zone. A zone groups countries, or states and regions inside a country, that share the same shipping price. A single postcode or a postcode prefix can’t be used as a condition here.

Local delivery: Under “Add local delivery” you can set up delivery either by radius (up to 160 km / 100 miles, optionally including neighbouring regions) or by a list of postcodes. Up to 10 such delivery zones are possible per location, with up to 3,000 characters of postcodes per zone and up to 3 extra order-value pricing rules. That’s meant for your own local delivery — not regular carrier shipping — and every postcode has to be listed individually.

Where Shopify stops

  • Regular shipping zones don’t know postcodes. The finest native level is state or region within a country.
  • Local delivery is not a substitute for shipping. It only covers your own local delivery within the same country — no carrier, no cross-border shipping.
  • No prefix or wildcard logic. For a zone covering a whole postcode area you would have to type every individual postcode in it, capped at 3,000 characters per zone.
  • No concept of a surcharge. Neither regular zones nor local delivery understand “standard price plus a surcharge for certain postcodes” — only a fixed price per zone.

How a postcode-zone app solves it

An app with its own rate logic through Shopify’s Carrier Service API can group postcodes into zones by prefix and give each zone its own price:

Goal Zone
One price for mainland delivery Catch-all zone → £4.95
Highlands surcharge Zone “IV” (prefix) → £14.95
Islands with a longer route Zone “HS”, “ZE” (prefixes) → £24.95

What the customer sees: a mainland delivery address shows the standard rate at checkout. An address in a Highlands or islands postcode area automatically shows the higher rate — without the merchant maintaining every individual postcode, because the shared prefix covers the whole area.

Technically, the app registers a Carrier Service with Shopify: on every rate request at checkout, Shopify hands over the delivery address, the app looks for the longest matching postcode zone (or the catch-all zone) and returns the matching rate. That runs inside checkout, without touching the theme, on every plan that supports carrier-calculated shipping.

Things to watch

  • Carrier-calculated shipping is a requirement. Apps that supply their own shipping rates need the “Third-party carrier-calculated shipping” feature — included automatically on the Advanced and Plus plans, available on Grow with annual billing or as a paid add-on, usually not available on Basic.
  • Zones shouldn’t overlap. With prefix zones the longest matching prefix usually wins — so define a surcharge zone with a longer, more specific prefix than the surrounding mainland zone.
  • A catch-all zone prevents gaps. With no matching zone and no catch-all, checkout simply shows no rate for that shipping method.
  • Check the postcode list against your carrier. Surcharge postcode lists differ between carriers, and published lists don’t always agree — confirm the ranges with the carrier you actually use before pricing them.
  • Other shipping methods are unaffected. Manual rates and rates from other apps keep running in parallel; Shopify shows every available option side by side at checkout.

The app from this business supports numeric postcodes such as those in Germany, Austria or France — UK postcodes aren’t covered. If that fits your market: set shipping rates by postcode zone with an app.

Frequently asked questions

Can I set a shipping rate for a specific postcode in Shopify?

Not with the regular shipping zones in a shipping profile — those only work at country and state/region level, never a single postcode. Only the separate "local delivery" feature can list postcodes, and it's restricted to local delivery within the same country.

How do I add a Highlands and Islands surcharge in Shopify?

Not with the native settings. Shopify's zones let you group states and regions, but UK carriers apply surcharges to postcode areas that don't match those boundaries — some Aberdeen (AB) postcodes count as mainland while others don't. An app with its own rate logic can define the affected postcode prefixes as their own zone with a higher price.

What can native local delivery actually do with postcodes?

You can create up to 10 delivery zones per location, enter up to 3,000 characters of postcodes per zone and define up to 3 extra pricing rules per zone. That covers your own local delivery — not regular carrier shipping — and every postcode has to be listed individually; a prefix isn't enough.

Do I need Shopify Plus for shipping rates by postcode?

No — and Plus doesn't help either. There's no native solution on any plan that maps individual postcodes or postcode prefixes to regular shipping rates. On every plan this needs an app that supplies its own rates through Shopify's Carrier Service API.

Do I have to enter every postcode, or is a prefix enough?

In native local delivery every postcode has to appear in the list individually. Apps with prefix logic collapse that: a zone "IV" automatically covers every postcode in that area without you maintaining each one.

Is this the same as restricting the delivery area?

No, even though both work through postcodes. This is about the price of a shipping method per postcode zone. Limiting the delivery area to certain postcodes entirely — not accepting orders from outside at all — is a separate topic with its own solution.

Sources

  1. Shopify Help Center: Setting up shipping zones
  2. Shopify Help Center: Setting up local delivery for online orders (postcodes, limits)
  3. Shopify Community: "Delivery Method/Surcharge by postcode (UK)?"
  4. Shopify Community: "Shipping rates by UK regional postcode on either basic or shopify plan"
  5. Shopify Community: "Shipping Charges for the Highlands and Islands in Scotland"
  6. Shopify App Store: KM Distance Shipping (postcode zone mode with prefix logic)

No off-the-shelf solution fits?

25 minutes, free of charge. We look at your checkout together — afterwards you'll know whether an app is enough or you need a custom solution.