
Remove VAT in Shopify checkout for Canary Islands, Ceuta and Melilla delivery addresses using Spanish postcode ranges.
TL;DR: Shopify often treats the Canary Islands, Ceuta and Melilla like the rest of Spain because the checkout country is still Spain. For VAT, that is not always enough. These Spanish territories sit outside the normal Spanish VAT area, so stores may need to remove Spanish VAT when the delivery address matches their postcode ranges: 35xxx, 38xxx, 51xxx or 52xxx.
For many Shopify stores, the Canary Islands, Ceuta and Melilla look like normal Spanish addresses in checkout. The buyer selects Spain, enters a Spanish postcode, and Shopify sees the country code as ES.
That is fine for shipping, but it can be wrong for VAT. Mainland Spain is part of the EU VAT area. The Canary Islands are part of Spain, but they are not part of the EU VAT area. The European Commission lists the Canary Islands separately from Spain for VAT rules, and the Spanish Tax Agency explains that Spanish VAT applies to the Peninsula and Balearic Islands, excluding the Canary Islands, Ceuta and Melilla.
So if you sell from a Dutch, Spanish, German, Belgian or other EU Shopify store to customers in the Canary Islands, Ceuta or Melilla, you may need a way to distinguish those orders from normal mainland Spain orders.
The app detects Spanish VAT-excluded territory delivery addresses by postcode. These are the postcode ranges used:
| Postcode range | Territory or province | Main area covered | VAT handling |
|---|---|---|---|
| 35000-35999 | Las Palmas | Gran Canaria, Lanzarote, Fuerteventura | Remove Spanish VAT |
| 38000-38999 | Santa Cruz de Tenerife | Tenerife, La Palma, La Gomera, El Hierro | Remove Spanish VAT |
| 51000-51999 | Ceuta | Ceuta | Remove Spanish VAT |
| 52000-52999 | Melilla | Melilla | Remove Spanish VAT |
In short: if the checkout delivery country is Spain and the postcode starts with 35, 38, 51 or 52 and has five digits, it is treated as a Spanish VAT-excluded territory delivery.
Example postcodes that trigger the exemption:
Example mainland Spain postcodes that do not trigger the exemption:
35000 falls under the province of Las Palmas. In practice, the exact city can depend on the full address and street, but for VAT detection the important part is the postcode prefix: 35xxx means Canary Islands, province Las Palmas.
The matching western province range is 38xxx, which belongs to Santa Cruz de Tenerife.
Ceuta uses the 51xxx postcode range. Melilla uses the 52xxx postcode range.
IP detection can be useful for deciding whether to show a widget in the storefront, but it is not strong enough for checkout tax decisions. A customer can browse from one location and ship to another. Someone may use mobile internet, a VPN, a company network or a hotel connection.
For VAT removal in checkout, the delivery address is the better signal. The buyer enters their country and postcode in checkout, and that address ends up on the order. That gives the merchant a cleaner audit trail than an IP guess.
With the Spanish VAT-excluded territories checkout option enabled, the EU Tax Exemption app can automatically remove VAT when checkout detects a Spanish delivery address with one of these supported postcode ranges.
The buyer does not need to enter a VAT number for this specific case. The exemption is based on the delivery territory, not on VIES validation.
This is different from normal EU B2B VAT exemption. For a French, German or Belgian business customer, you normally validate the VAT number through VIES. For Spanish VAT-excluded territory delivery addresses, the key signal is the destination postcode.
To make this work in checkout, the EU Tax Exemption checkout block must be active. A backend setting alone is not enough, because the app needs to read the delivery postcode while the buyer completes checkout and update the price before the order is placed.
Setup checklist:
If you only use the storefront widget, the app can still validate VAT numbers and help B2B customers. But automatic VAT removal by Spanish special-territory postcode happens in checkout, so the checkout block is required for this specific flow.
Ceuta and Melilla are included in the checkout postcode rule. Ceuta uses 51xxx. Melilla uses 52xxx.
The order tag is intentionally general: spanish-vat-excluded-territory. That keeps the evidence simple while still making these orders easy to find in Shopify Admin.
Yes, when the delivery country is Spain and the postcode is a five-digit postcode starting with 35, 38, 51 or 52, the app treats it as a Spanish VAT-excluded territory delivery.
Not for this specific postcode-based checkout exemption. The exemption is based on where the goods are delivered. For regular EU B2B reverse-charge orders, VAT number validation still matters.
Yes. A Dutch Shopify store can sell to mainland Spain, the Canary Islands, Ceuta and Melilla. Mainland Spain should normally remain taxable where applicable, while these VAT-excluded delivery territories can be handled separately by postcode.
Shopify tax behavior depends on your market, tax settings and checkout setup. Many merchants still run into the practical issue that these territories are entered as Spain in checkout. A postcode-based rule gives you explicit control for this edge case.
Yes. This article explains the Shopify implementation pattern, not legal or tax advice. Your accountant should confirm the correct VAT treatment for your products, customer type and shipping flow.
Need help setting this up? Install EU Tax Exemption or contact us and we can help you test Spanish VAT-excluded territory checkout behavior with real postcodes.