Worth knowing up front: I build Rural Shipping & RD Rates NZ, which handles these islands as a specific case. That is why I know this much about it, and it is also a commercial interest you should factor in.
Of all the ways a New Zealand Shopify store loses money on freight, this is the fastest. A mainland rural order costs you a few dollars more than you charged. A Great Barrier order can cost you forty dollars more than you charged, on a single parcel, and you find out at label time.
The cause is a mismatch between how Shopify models geography and how freight actually works.
The postcodes
Start here, because everything else depends on knowing which codes you are dealing with.
| Postcode | Covers | Notes |
|---|---|---|
| 1081 | Waiheke Island | The main island code, covering Oneroa, Ostend, Surfdale, Palm Beach and the rest |
| 1971 | Waiheke Island, rural delivery | The RD addresses on Waiheke. Rural, and on an island |
| 0960 | Great Barrier Island | Okiwi |
| 0961 | Great Barrier Island | Claris |
| 0962 | Great Barrier Island | Tryphena |
| 0963 | Great Barrier Island | Port Fitzroy |
| 0991 | Great Barrier Island | The island's PO Box code |
Every one of those sits in the Auckland region.
Waiheke's 1971 is worth pausing on. It is a rural delivery code, so any rule that treats rural codes as a group will pick it up and apply your mainland rural rate. That is better than applying your urban rate and still wrong, because the parcel is going on a boat. Waiheke RD needs to be island-first and rural second, in that order, or you undercharge it every time.
Why Shopify cannot help you here
Shopify builds shipping zones from countries and regions. For New Zealand, the region is the smallest unit available: Auckland, Waikato, Canterbury and so on. There is no tier below it, and no concept of an island.
So when a Great Barrier customer reaches your checkout, Shopify matches the Auckland region, finds every rate in the zone covering Auckland, and shows all of them. Your $8.50 Auckland courier rate is one of them. The customer takes it, because of course they do, and you are now committed to shipping a parcel to Port Fitzroy for $8.50.
This is the same underlying limitation behind rural addresses generally, but the financial consequence is an order of magnitude larger.
What island freight actually costs
Numbers, so the scale is concrete. These are published retail figures as at August 2026 and your account rates may differ.
Aramex publishes a remote island surcharge on its additional fees and charges page, effective 1 July 2026:
| Destination | Surcharge |
|---|---|
| Waiheke Island | $5.90 |
| Stewart Island | $9.22 |
| Chatham Islands | from $25.80 |
| Great Barrier Island | from $43.41 |
That is a surcharge on top of the freight, not the total. Aramex notes final pricing varies with dead weight, cubic weight and destination, which is what "from" is signalling on the larger two. And their combined fuel and road user charge percentage, 16.33% in August 2026, applies on top of that again.
Two things to take from the table.
Waiheke and Great Barrier are not the same problem. Waiheke at $5.90 is comparable to a mainland rural surcharge. Great Barrier starting at $43.41 is seven times that. Lumping them into one "islands" rate means either overcharging Waiheke enough to lose those sales, or undercharging Great Barrier enough to lose money on them. They need separate rates.
Great Barrier can exceed your order value. If your average order is $60 and freight is $45, the economics of that order are not marginal, they are broken. That is a legitimate reason to charge the real number and let the customer decide, which many will, because they know what island freight costs better than you do.
Freight to both islands crosses the Hauraki Gulf by barge, with SeaLink running dedicated freight services to Waiheke and Aotea Great Barrier. Courier pricing to the islands reflects that sea leg rather than a road run, which is why the numbers do not scale like distance on the mainland.
The zone trap, and why your island rate is invisible
This is the part that generates the most confused support emails, so it is worth being explicit.
The intuitive move is to create a new shipping zone called "Waiheke" and put a $35 barge rate in it. Then you test with a Waiheke address and the rate does not appear.
It cannot appear. When you created that zone, Shopify asked you to select countries and regions. There is no "Waiheke" to select. If you selected Auckland, you have either created a second Auckland zone or pulled Auckland out of your main zone, and neither is what you meant. If you selected nothing meaningful, the zone covers nothing and matches nobody.
The rule underneath is simple and worth committing to memory:
An app or a Function can hide rates that Shopify already offered. It cannot conjure a rate that was never offered in the first place.
So your island rates have to live in the zone that already covers Auckland, sitting alongside your ordinary Auckland rates. Only then can a rule decide which of them a given postcode sees.
Setting it up
Concretely, in the zone covering Auckland:
| Rate name | Price | Shown to |
|---|---|---|
| Standard courier | $8.50 | Auckland urban addresses |
| Standard courier (Rural delivery) | $14.50 | Auckland rural addresses |
| Waiheke Island delivery | $18.00 | 1081 and 1971 only |
| Great Barrier Island delivery | $55.00 | 0960 to 0963 and 0991 only |
All four in one zone. Then rules narrow them down per postcode. Prices are illustrative, use your own.
The ordering of those rules matters more than it looks, because the categories overlap. Waiheke's 1971 is both an island code and a rural code. Getting this wrong is how island orders end up on mainland rural rates.
A precedence chain that holds up:
- Per-address exceptions first. A specific address you have manually overridden wins over everything, because you set it deliberately and you had a reason.
- Waiheke RD (1971). More specific than plain Waiheke, so it gets first refusal on its own rate if you offer one.
- Waiheke (1081 and 1971). Island rates before rural rates, always.
- Great Barrier (0960 to 0963, 0991). Its own rates, because its costs are nothing like Waiheke's.
- Mainland rural or urban. Everything else, split by postcode as normal.
One more constraint that is easy to miss: island rates must never leak to the mainland. If your $55.00 Great Barrier rate shows up for a customer in Ellerslie, you have not lost money but you have probably lost the sale, and you will not know why. Any rule that shows an island rate to island codes needs a matching rule hiding it from everyone else.
Testing
Put these through a real checkout, at the shipping step, not a settings preview:
| Postcode | Expect |
|---|---|
| 1010 | Auckland urban rate only. No island rates. |
| 0981 | Rural rate only. No island rates. |
| 1081 | Waiheke rate only. |
| 1971 | Waiheke rate, not the mainland rural rate. |
| 0962 | Great Barrier rate only. |
Check for zero rates as carefully as you check for wrong ones. An island postcode showing no shipping options at all is a customer who cannot buy from you, and they will not email to tell you. They will just leave.
If you would rather not ship there
Deciding not to ship to Great Barrier is a reasonable business decision, particularly for heavy or low margin goods.
The better way to do it is usually not a hard exclusion. Set a rate that reflects the actual cost, name it plainly, and let the customer choose. A Great Barrier resident looking at $55.00 for delivery is not offended. They pay island freight on everything and they already know. What frustrates them is a checkout that silently refuses their address with no explanation, or worse, one that accepts the order at $8.50 and then emails a week later asking for another forty dollars.
If you genuinely cannot ship there, say so on your shipping page in plain words, so it is found before the cart rather than at checkout.