{"id":1754,"date":"2026-05-18T14:04:21","date_gmt":"2026-05-18T12:04:21","guid":{"rendered":"https:\/\/newcraft.dev\/posts\/canary-islands-vat-exemption-in-shopify-checkout-remove-vat-by-postcode\/"},"modified":"2026-05-18T15:10:10","modified_gmt":"2026-05-18T13:10:10","slug":"canary-islands-vat-exemption-in-shopify-checkout-remove-vat-by-postcode","status":"publish","type":"marketing-post","link":"https:\/\/newcraft.dev\/nl\/posts\/canary-islands-vat-exemption-in-shopify-checkout-remove-vat-by-postcode\/","title":{"rendered":"Canary Islands VAT Exemption in Shopify Checkout: Remove VAT by Postcode"},"content":{"rendered":"\n<p><strong>TL;DR:<\/strong> Shopify often treats the Canary Islands, Ceuta and Melilla like the rest of Spain because the checkout country is still <strong>Spain<\/strong>. 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: <strong>35xxx<\/strong>, <strong>38xxx<\/strong>, <strong>51xxx<\/strong> or <strong>52xxx<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Shopify Problem With Spanish VAT-Excluded Territories<\/h2>\n\n\n\n<p>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 <strong>ES<\/strong>.<\/p>\n\n\n\n<p>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 <a href=\"https:\/\/taxation-customs.ec.europa.eu\/taxation\/vat\/vat-directive\/how-does-vat-work\/territorial-scope_en\" target=\"_blank\" rel=\"noopener\">European Commission lists the Canary Islands separately from Spain for VAT rules<\/a>, and the <a href=\"https:\/\/sede.agenciatributaria.gob.es\/Sede\/en_gb\/ayuda\/manuales-videos-folletos\/manuales-practicos\/manual-iva-2021\/capitulo-2-introduccion\/territorio-que-se-aplica-impuesto.html\" target=\"_blank\" rel=\"noopener\">Spanish Tax Agency explains that Spanish VAT applies to the Peninsula and Balearic Islands<\/a>, excluding the Canary Islands, Ceuta and Melilla.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Which Spanish Postcodes Should Remove VAT?<\/h2>\n\n\n\n<p>The app detects Spanish VAT-excluded territory delivery addresses by postcode. These are the postcode ranges used:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n  <thead>\n    <tr>\n      <th>Postcode range<\/th>\n      <th>Territory or province<\/th>\n      <th>Main area covered<\/th>\n      <th>VAT handling<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>35000-35999<\/strong><\/td>\n      <td>Las Palmas<\/td>\n      <td>Gran Canaria, Lanzarote, Fuerteventura<\/td>\n      <td>Remove Spanish VAT<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>38000-38999<\/strong><\/td>\n      <td>Santa Cruz de Tenerife<\/td>\n      <td>Tenerife, La Palma, La Gomera, El Hierro<\/td>\n      <td>Remove Spanish VAT<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>51000-51999<\/strong><\/td>\n      <td>Ceuta<\/td>\n      <td>Ceuta<\/td>\n      <td>Remove Spanish VAT<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>52000-52999<\/strong><\/td>\n      <td>Melilla<\/td>\n      <td>Melilla<\/td>\n      <td>Remove Spanish VAT<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table><\/figure>\n\n\n\n<p>In short: if the checkout delivery country is <strong>Spain<\/strong> and the postcode starts with <strong>35<\/strong>, <strong>38<\/strong>, <strong>51<\/strong> or <strong>52<\/strong> and has five digits, it is treated as a Spanish VAT-excluded territory delivery.<\/p>\n\n\n\n<p>Example postcodes that trigger the exemption:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li><strong>35000<\/strong> &#8211; Las Palmas province<\/li>\n\n  \n<li><strong>35001<\/strong> &#8211; Las Palmas de Gran Canaria area<\/li>\n\n  \n<li><strong>35510<\/strong> &#8211; Lanzarote area<\/li>\n\n  \n<li><strong>35600<\/strong> &#8211; Fuerteventura area<\/li>\n\n  \n<li><strong>38000<\/strong> &#8211; Santa Cruz de Tenerife province<\/li>\n\n  \n<li><strong>38660<\/strong> &#8211; Tenerife area<\/li>\n\n  \n<li><strong>38700<\/strong> &#8211; La Palma area<\/li>\n\n  \n<li><strong>38900<\/strong> &#8211; El Hierro area<\/li>\n\n  \n<li><strong>51001<\/strong> &#8211; Ceuta<\/li>\n\n  \n<li><strong>52001<\/strong> &#8211; Melilla<\/li>\n\n<\/ul>\n\n\n\n<p>Example mainland Spain postcodes that do <strong>not<\/strong> trigger the exemption:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li><strong>28013<\/strong> &#8211; Madrid<\/li>\n\n  \n<li><strong>08001<\/strong> &#8211; Barcelona<\/li>\n\n  \n<li><strong>46001<\/strong> &#8211; Valencia<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What Province Is 35000?<\/h2>\n\n\n\n<p><strong>35000<\/strong> falls under the province of <strong>Las Palmas<\/strong>. In practice, the exact city can depend on the full address and street, but for VAT detection the important part is the postcode prefix: <strong>35xxx<\/strong> means Canary Islands, province Las Palmas.<\/p>\n\n\n\n<p>The matching western province range is <strong>38xxx<\/strong>, which belongs to <strong>Santa Cruz de Tenerife<\/strong>.<\/p>\n\n\n\n<p>Ceuta uses the <strong>51xxx<\/strong> postcode range. Melilla uses the <strong>52xxx<\/strong> postcode range.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why We Do Not Use IP Detection for Checkout VAT<\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How the EU Tax Exemption App Handles This<\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>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.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n  \n<li>The buyer enters Spain as the delivery country.<\/li>\n\n  \n<li>The buyer enters a postcode starting with 35, 38, 51 or 52.<\/li>\n\n  \n<li>The app recognizes the delivery as a Canary Islands, Ceuta or Melilla address.<\/li>\n\n  \n<li>The checkout price is updated so Spanish VAT is not charged.<\/li>\n\n  \n<li>If enabled, the order keeps a note and tag as evidence that VAT was removed based on the delivery postcode.<\/li>\n\n<\/ol>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What You Need to Enable in Shopify<\/h2>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Setup checklist:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li>Install <a href=\"https:\/\/apps.shopify.com\/tax-exemption\" target=\"_blank\" rel=\"noopener\">EU Tax Exemption<\/a>.<\/li>\n\n  \n<li>Add the EU Tax Exemption checkout block to your Shopify checkout.<\/li>\n\n  \n<li>Enable checkout VAT removal in the app.<\/li>\n\n  \n<li>Enable <strong>Auto-exempt Spanish VAT-excluded territories<\/strong> in the app settings.<\/li>\n\n  \n<li>Optional: enable the order note and tag setting to add evidence to the order.<\/li>\n\n  \n<li>Test with a Spain delivery address and postcode <strong>38660<\/strong>, <strong>35001<\/strong>, <strong>51001<\/strong> or <strong>52001<\/strong>.<\/li>\n\n<\/ul>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What About Ceuta and Melilla?<\/h2>\n\n\n\n<p>Ceuta and Melilla are included in the checkout postcode rule. Ceuta uses <strong>51xxx<\/strong>. Melilla uses <strong>52xxx<\/strong>.<\/p>\n\n\n\n<p>The order tag is intentionally general: <strong>spanish-vat-excluded-territory<\/strong>. That keeps the evidence simple while still making these orders easy to find in Shopify Admin.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Does every Spanish postcode starting with 35, 38, 51 or 52 remove VAT?<\/h3>\n\n\n\n<p>Yes, when the delivery country is Spain and the postcode is a five-digit postcode starting with <strong>35<\/strong>, <strong>38<\/strong>, <strong>51<\/strong> or <strong>52<\/strong>, the app treats it as a Spanish VAT-excluded territory delivery.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does the customer need a VAT number?<\/h3>\n\n\n\n<p>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.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Does this work for a Dutch Shopify store?<\/h3>\n\n\n\n<p>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.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can Shopify do this automatically?<\/h3>\n\n\n\n<p>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.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Should I ask my accountant?<\/h3>\n\n\n\n<p>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.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Related Reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n  \n<li><a href=\"\/posts\/canary-islands-vat-exemption-for-shopify-show-widget-to-canarian-b2b-customers\/\">Show the VAT widget to Canary Islands visitors<\/a><\/li>\n\n  \n<li><a href=\"\/posts\/shopify-checkout-remove-vat\/\">How to remove VAT in Shopify checkout<\/a><\/li>\n\n  \n<li><a href=\"\/posts\/shopify-vat-exemption-eu-businesses\/\">Shopify VAT exemption for EU businesses<\/a><\/li>\n\n  \n<li><a href=\"\/posts\/shopify-tax-exempt-customers-still-getting-charged-vat-common-fixes\/\">Why tax-exempt Shopify customers still get charged VAT<\/a><\/li>\n\n<\/ul>\n\n\n\n<p>Need help setting this up? Install <a href=\"https:\/\/apps.shopify.com\/tax-exemption\" target=\"_blank\" rel=\"noopener\">EU Tax Exemption<\/a> or <a href=\"\/contact\">contact us<\/a> and we can help you test Spanish VAT-excluded territory checkout behavior with real postcodes.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Remove VAT in Shopify checkout for Canary Islands, Ceuta and Melilla delivery addresses using Spanish postcode ranges.<\/p>\n","protected":false},"featured_media":1755,"template":"","meta":{"_acf_changed":false,"_breakdance_hide_in_design_set":false,"_breakdance_tags":""},"class_list":["post-1754","marketing-post","type-marketing-post","status-publish","has-post-thumbnail","hentry"],"acf":{"related_apps":""},"_links":{"self":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/marketing-post\/1754","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/marketing-post"}],"about":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/types\/marketing-post"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/media\/1755"}],"wp:attachment":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/media?parent=1754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}