{"id":853,"date":"2025-11-21T14:52:17","date_gmt":"2025-11-21T14:52:17","guid":{"rendered":"http:\/\/wordpress-newcraft-wordpress-c65f4c-91-98-137-5.traefik.me\/?post_type=marketing-post&#038;p=853"},"modified":"2026-02-28T10:56:11","modified_gmt":"2026-02-28T09:56:11","slug":"automatic-vat-validation-shopify","status":"publish","type":"marketing-post","link":"https:\/\/newcraft.dev\/nl\/posts\/automatic-vat-validation-shopify\/","title":{"rendered":"Automatic VAT Number Validation in Shopify - Stop Manual Work"},"content":{"rendered":"\n<p>Manually checking EU VAT numbers is slow, error-prone, and completely unnecessary. Automatic VAT number validation in Shopify verifies every B2B customer&#8217;s VAT number against the EU VIES database in real time, so you never sell tax-free to an invalid number again. The <a href=\"https:\/\/newcraft.dev\/apps\/eu-vat-b2b-exemptions\/\">EU Tax Exemption app<\/a> handles this automatically for every order.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"you-recognize-this\">You Recognize This<\/h2>\n\n\n\n<p>Monday morning, 9:15. You open your Shopify admin. 14 new orders since Friday. Nice.<\/p>\n\n\n\n<p>You scroll through the orders. Order #2847: German company, \u20ac1,850. In the order notes it says: \u201cVAT number: DE123456789. Please invoice without VAT.\u201d<\/p>\n\n\n\n<p>Sh*t.<\/p>\n\n\n\n<p>You open a new tab. Type: \u201cVIES Europa\u201d. Click the link. Wait for the site to load (it\u2019s always slow). Select \u201cGermany\u201d from the dropdown menu. Copy the VAT number. Paste it in the field. Click \u201cVerify\u201d. Wait. Wait. Green checkmark.<\/p>\n\n\n\n<p>Okay, valid.<\/p>\n\n\n\n<p>You take a screenshot. Save as \u201cvies-check-de123456789-2025-10-31.png\u201d in your \u201cVAT validations 2025\u201d folder.<\/p>\n\n\n\n<p>You open Shopify. Create a credit note. Calculate the VAT back: \u20ac1,850 \/ 1.21 = \u20ac1,528.93. VAT = \u20ac321.07. Make credit note for \u20ac321.07.<\/p>\n\n\n\n<p>You open your email. Write to the customer: \u201cDear, your VAT number has been validated. See attached credit note\u2026\u201d<\/p>\n\n\n\n<p>You look at the clock. 9:28. 13 minutes for one order.<\/p>\n\n\n\n<p>You have 6 other orders with VAT numbers this week.<\/p>\n\n\n\n<p><strong>There must be a better way.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-youre-doing-now-costs-ridiculous-amounts-of-time\">What You\u2019re Doing Now Costs Ridiculous Amounts of Time<\/h2>\n\n\n\n<p>Let\u2019s calculate:<\/p>\n\n\n\n<p><strong>Per order with VAT number:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open VIES website: 30 sec<\/li>\n\n\n\n<li>Enter and check number: 60 sec<\/li>\n\n\n\n<li>Take and save screenshot: 45 sec<\/li>\n\n\n\n<li>Create credit note: 3 min<\/li>\n\n\n\n<li>Email to customer: 2 min<\/li>\n\n\n\n<li>Update order notes: 30 sec<\/li>\n\n\n\n<li><strong>Total: 7-8 minutes<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Per week:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>10 B2B orders with VAT numbers<\/li>\n\n\n\n<li>10 \u00d7 8 min = 80 minutes<\/li>\n\n\n\n<li><strong>1 hour 20 minutes per week<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Per month:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>4 weeks \u00d7 80 min = 320 minutes<\/li>\n\n\n\n<li><strong>5 hours and 20 minutes per month<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Per year:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>5.3 hours \u00d7 12 = 64 hours<\/li>\n\n\n\n<li><strong>8 working days per year<\/strong><\/li>\n<\/ul>\n\n\n\n<p>You spend more than a work week per year manually checking VAT numbers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-things-that-go-wrong\">The Things That Go Wrong<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"screenshots-get-lost\">Screenshots Get Lost<\/h3>\n\n\n\n<p>Your computer has 847 screenshots in the Downloads folder. Which one was for order #2431 from March again? You don\u2019t remember.<\/p>\n\n\n\n<p>Tax authorities audit. They ask for proof. You search. You can\u2019t find it. You\u2019re screwed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"typos\">Typos<\/h3>\n\n\n\n<p>Customer writes: <code>BE 0123 456 789<\/code> (with spaces) You copy: <code>BE0123456789<\/code> (without spaces) VIES says: Invalid<\/p>\n\n\n\n<p>But the number IS valid. You just don\u2019t know that VIES doesn\u2019t accept spaces. Now you\u2019ve told the customer their number is invalid. They\u2019re angry. They cancel the order.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"vies-is-offline\">VIES is Offline<\/h3>\n\n\n\n<p>It\u2019s Friday afternoon 4:30 PM. You check a VAT number. VIES website doesn\u2019t load. \u201cService temporarily unavailable.\u201d<\/p>\n\n\n\n<p>What now? The customer is waiting for confirmation. You need to ship this weekend. Check Monday morning? Give VAT exemption now? Take a guess?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"customer-already-paid\">Customer Already Paid<\/h3>\n\n\n\n<p>Customer orders. Pays \u20ac2,420 (incl. VAT). Order is in.<\/p>\n\n\n\n<p>Then he emails: \u201cI\u2019m business, here\u2019s my VAT number.\u201d<\/p>\n\n\n\n<p>You check. Valid. You now have to refund \u20ac420. Create credit note. Transfer money. Send email.<\/p>\n\n\n\n<p>Customer asks: \u201cWhen do I get my money back?\u201d<\/p>\n\n\n\n<p>This all feels unprofessional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-automatic-validation-works\">How Automatic Validation Works<\/h2>\n\n\n\n<p>At checkout your customer sees a field: <strong>\u201cVAT number (optional for business customers)\u201d<\/strong> <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"704\" src=\"http:\/\/wordpress-newcraft-wordpress-c65f4c-91-98-137-5.traefik.me\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-1024x704.png\" alt=\"\" class=\"wp-image-861\" srcset=\"https:\/\/newcraft.dev\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-1024x704.png 1024w, https:\/\/newcraft.dev\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-300x206.png 300w, https:\/\/newcraft.dev\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-768x528.png 768w, https:\/\/newcraft.dev\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-1536x1056.png 1536w, https:\/\/newcraft.dev\/wp-content\/uploads\/2025\/11\/dqQ0zH8-1-2048x1408.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>He enters: <code>DE123456789<\/code><\/p>\n\n\n\n<p>He clicks outside the field. Something happens:<\/p>\n\n\n\n<p><strong>Second 1:<\/strong> The number is sent to the EU Tax Exemption App <strong>Second 2:<\/strong> The app checks the number in the VIES database <strong>Second 3:<\/strong> The app gets response: Valid or Invalid<\/p>\n\n\n\n<p><strong>If Valid:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Green message: \u2713 Valid VAT number<\/li>\n\n\n\n<li>VAT disappears from total amount<\/li>\n\n\n\n<li>\u20ac2,000 (was \u20ac2,420) \u2190 customer sees this<\/li>\n\n\n\n<li>Customer pays \u20ac2,000<\/li>\n\n\n\n<li>Validation automatically logged with timestamp, order number, customer name<\/li>\n<\/ul>\n\n\n\n<p><strong>If Invalid:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Red message: \u2717 VAT number not valid &#8211; check your input<\/li>\n\n\n\n<li>VAT remains<\/li>\n\n\n\n<li>\u20ac2,420 \u2190 customer sees this<\/li>\n\n\n\n<li>Customer can try again or pay with VAT<\/li>\n<\/ul>\n\n\n\n<p><strong>You do:<\/strong> Nothing. Order comes in. Correct amount. Validation documented. Done.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-happens-behind-the-scenes\">What Happens Behind the Scenes<\/h2>\n\n\n\n<p>For clarity &#8211; technical but simple:<\/p>\n\n\n\n<p><strong>Step 1:<\/strong> App receives number <code>DE 123 456 789<\/code><\/p>\n\n\n\n<p><strong>Step 2:<\/strong> Cleanup<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Removes spaces<\/li>\n\n\n\n<li>Makes uppercase<\/li>\n\n\n\n<li>Result: <code>DE123456789<\/code><\/li>\n<\/ul>\n\n\n\n<p><strong>Step 3:<\/strong> Format check<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Is this a German number?<\/li>\n\n\n\n<li>Does it have 9 digits after DE?<\/li>\n\n\n\n<li>Yes \u2192 continue<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 4:<\/strong> VIES API call<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>App sends request to EU database<\/li>\n\n\n\n<li>Asks: Is <code>DE123456789<\/code> valid?<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 5:<\/strong> VIES responds<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Valid: true\nCountry: DE\nName: BEISPIEL GMBH<\/code><\/pre>\n\n\n\n<p><strong>Step 6:<\/strong> App handles<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Valid \u2192 VAT off in Shopify checkout<\/li>\n\n\n\n<li>Invalid \u2192 VAT stays on<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 7:<\/strong> Logging<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Database record: order #, VAT number, timestamp, status, customer name, country<\/li>\n\n\n\n<li>Saved 7+ years<\/li>\n\n\n\n<li>Exportable to CSV<\/li>\n<\/ul>\n\n\n\n<p><strong>Time:<\/strong> 2 seconds. You do nothing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"why-this-is-better-than-manual\">Why This is Better Than Manual<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"you-save-5-hours-per-month\">You Save 5 Hours Per Month<\/h3>\n\n\n\n<p>At 10 validations per week:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Was: 80 min\/week = 5.3 hours\/month<\/li>\n\n\n\n<li>Now: 0 min\/week = 0 hours\/month<\/li>\n<\/ul>\n\n\n\n<p>Those 5 hours you can spend on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sourcing new products<\/li>\n\n\n\n<li>Marketing<\/li>\n\n\n\n<li>Helping customers<\/li>\n\n\n\n<li>Stopping Friday afternoon earlier<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"customers-pay-correct-price-directly\">Customers Pay Correct Price Directly<\/h3>\n\n\n\n<p>No more hassle with refunds. No credit notes. No \u201cwhen do I get my money back?\u201d emails.<\/p>\n\n\n\n<p>Customer sees in checkout: \u20ac2,000. Customer pays: \u20ac2,000. Done.<\/p>\n\n\n\n<p>Much more professional.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"you-always-have-proof\">You Always Have Proof<\/h3>\n\n\n\n<p>Tax authorities call: \u201cWe want proof of VAT validations for 2024.\u201d<\/p>\n\n\n\n<p>You: \u201cOne moment.\u201d<\/p>\n\n\n\n<p>You open EU Tax Exemption App dashboard. Click \u201cExport 2024\u201d. Download CSV file. Send to inspector.<\/p>\n\n\n\n<p>CSV contains:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Order number<\/li>\n\n\n\n<li>VAT number<\/li>\n\n\n\n<li>Validation date &amp; time<\/li>\n\n\n\n<li>Status (Valid\/Invalid)<\/li>\n\n\n\n<li>Customer name<\/li>\n\n\n\n<li>Country<\/li>\n<\/ul>\n\n\n\n<p>Inspector: \u201cThanks, this is fine.\u201d<\/p>\n\n\n\n<p>Conversation takes 5 minutes. You\u2019re compliant. No stress.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-it-costs-vs-what-you-save\">What It Costs vs What You Save<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"manual-your-current-situation\">Manual (your current situation)<\/h3>\n\n\n\n<p><strong>Time:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>5.3 hours per month<\/li>\n\n\n\n<li>\u00d7 \u20ac30\/hour (your time)<\/li>\n\n\n\n<li>= <strong>\u20ac159 per month<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Missed conversions:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Customers who drop off at high price (VAT on)<\/li>\n\n\n\n<li>Estimated: 2 orders\/month \u00d7 \u20ac100 margin<\/li>\n\n\n\n<li>= <strong>\u20ac200 per month<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Stress &amp; compliance risk:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Lost screenshots<\/li>\n\n\n\n<li>Typos<\/li>\n\n\n\n<li>During audit: searching for proof<\/li>\n\n\n\n<li>= <strong>Priceless<\/strong><\/li>\n<\/ul>\n\n\n\n<p><strong>Total: \u20ac359+ per month loss<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"automatic-eu-tax-exemption-app\">Automatic (EU Tax Exemption App)<\/h3>\n\n\n\n<p><strong>Costs:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u20ac9.99 per month<\/li>\n\n\n\n<li>Setup: 0 hours<\/li>\n\n\n\n<li>Maintenance: 0 hours<\/li>\n<\/ul>\n\n\n\n<p><strong>Savings:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Time: +5.3 hours<\/li>\n\n\n\n<li>Money: +\u20ac159<\/li>\n\n\n\n<li>Extra conversions: +\u20ac200<\/li>\n\n\n\n<li>Stress: -100%<\/li>\n<\/ul>\n\n\n\n<p><strong>Total: \u20ac349 profit per month<\/strong><\/p>\n\n\n\n<p><strong>Break-even: At 2 validations per month.<\/strong><\/p>\n\n\n\n<p>If you have more than 2 B2B orders per month with VAT numbers \u2192 automation pays off.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-start-today\">How to Start Today<\/h2>\n\n\n\n<p><strong>Step 1: Install EU Tax Exemption App<\/strong> (2 minutes)<\/p>\n\n\n\n<p>Go to <a href=\"https:\/\/apps.shopify.com\/tax-exemption\" target=\"_blank\" rel=\"noopener\">Tax Exemption App<\/a>. Click \u201cAdd app\u201d. Log in with your Shopify account. Click \u201cInstall\u201d.<\/p>\n\n\n\n<p><strong>Step 2: Configure widget<\/strong> (3 minutes)<\/p>\n\n\n\n<p>In the dashboard:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose position (above\/below cart items)<\/li>\n\n\n\n<li>Adjust colors to your branding<\/li>\n\n\n\n<li>Set texts<\/li>\n\n\n\n<li>Done<\/li>\n<\/ul>\n\n\n\n<p><strong>Step 3: Test<\/strong> (2 minutes)<\/p>\n\n\n\n<p>Open your webshop in incognito. Add product. Go to checkout. Test with a valid number (for example: <code>NL806768289B01<\/code>). Check if VAT disappears. Test with invalid number. Check if error message appears.<\/p>\n\n\n\n<p><strong>Step 4: Live<\/strong><\/p>\n\n\n\n<p>You\u2019re done. From now on: automatic validations. No more manual work.<\/p>\n\n\n\n<p><strong>Total setup time: 7 minutes.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently Asked Questions<\/h2>\n\n\n\n<p><strong>Does this work for all EU countries?<\/strong> Yes. EU Tax Exemption App recognizes all 27 EU VAT formats and validates via the official VIES database.<\/p>\n\n\n\n<p><strong>What if a customer enters a wrong number?<\/strong> The app shows a clear error message. The customer can enter the correct number or pay with VAT.<\/p>\n\n\n\n<p><strong>Do I have to validate each order again?<\/strong> No. Returning customers are automatically recognized. Their VAT number is remembered.<\/p>\n\n\n\n<p><strong>How long does a validation take?<\/strong> 1-2 seconds. The customer barely notices.<\/p>\n\n\n\n<p><strong>Can I view old validations?<\/strong> Yes. In the dashboard you see all validations with filter options. You can export everything to CSV.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"stop-manual-work\">Stop Manual Work<\/h2>\n\n\n\n<p>You have better things to do than manually checking VAT numbers on a slow website, taking screenshots and sending credit notes.<\/p>\n\n\n\n<p>Automate it. Save 5 hours per month. Give customers a better experience. Stay compliant without stress.<\/p>\n\n\n\n<p>For \u20ac9.99 per month.<\/p>\n\n\n\n<p><strong>Start today:<\/strong> <a href=\"https:\/\/apps.shopify.com\/tax-exemption\" target=\"_blank\" rel=\"noopener\">Install EU Tax Exemption App \u2192<\/a><\/p>\n\n\n\n<p><strong>More guides:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/newcraft.dev\/posts\/shopify-vat-exemption-eu-businesses\/\">Complete VAT exemption setup guide<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/newcraft.dev\/posts\/shopify-checkout-remove-vat\/\">Remove VAT from checkout<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/newcraft.dev\/posts\/shopify-business-customer-no-vat\/\">When not to charge VAT<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions: Automatic VAT Number Validation in Shopify<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Stop manually checking VAT numbers on VIES. Automate validation, save 5 hours per week and stay compliant without hassle.<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_acf_changed":false,"_breakdance_hide_in_design_set":false,"_breakdance_tags":""},"class_list":["post-853","marketing-post","type-marketing-post","status-publish","hentry"],"acf":{"related_apps":""},"_links":{"self":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/marketing-post\/853","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:attachment":[{"href":"https:\/\/newcraft.dev\/nl\/wp-json\/wp\/v2\/media?parent=853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}