{"id":366033,"date":"2026-09-13T09:52:48","date_gmt":"2026-09-13T09:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gatemi-eu-vat-number\/"},"modified":"2026-09-13T09:52:25","modified_gmt":"2026-09-13T09:52:25","slug":"gatemi-eu-vat-number","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/gatemi-eu-vat-number\/","author":23559004,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Gatemi EU VAT Number","header_author":"Gatemi","header_description":"A VAT number field at the checkout, checked against the European Commission's VIES service, with reverse charge applied when \u2014 and only when \u2014 it should be.","assets_banners_color":"6b80b3","last_updated":"2026-09-13 09:52:25","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/gatemi-eu-vat-number\/","header_author_uri":"https:\/\/gatemi.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":52,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"gatemi","date":"2026-09-13 09:52:25","revision":3693497}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3693497,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3693497,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3693497,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3693497,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3693497,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3693497,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3693497,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3693497,"resolution":"4","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"The VAT number field in the checkout's billing section \u2014 before a number\nis given, VAT is charged as normal.","2":"Reverse charge applied: the number checked against VIES, and the VAT\nremoved from the same order.","3":"What was checked, on the order \u2014 the number, the verdict, the moment, the\nname VIES returned, and whether the tax came off.","4":"The settings screen."}},"plugin_section":[],"plugin_tags":[26362,191627,19126,158755,286],"plugin_category":[45],"plugin_contributors":[279530],"plugin_business_model":[],"class_list":["post-366033","plugin","type-plugin","status-publish","hentry","plugin_tags-eu-vat","plugin_tags-reverse-charge","plugin_tags-vat","plugin_tags-vies","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-gatemi","plugin_committers-gatemi"],"banners":{"banner":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/banner-772x250.png?rev=3693497","banner_2x":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/banner-1544x500.png?rev=3693497","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/icon-128x128.png?rev=3693497","icon_2x":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/icon-256x256.png?rev=3693497","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/screenshot-1.png?rev=3693497","caption":"The VAT number field in the checkout's billing section \u2014 before a number\nis given, VAT is charged as normal."},{"src":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/screenshot-2.png?rev=3693497","caption":"Reverse charge applied: the number checked against VIES, and the VAT\nremoved from the same order."},{"src":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/screenshot-3.png?rev=3693497","caption":"What was checked, on the order \u2014 the number, the verdict, the moment, the\nname VIES returned, and whether the tax came off."},{"src":"https:\/\/ps.w.org\/gatemi-eu-vat-number\/assets\/screenshot-4.png?rev=3693497","caption":"The settings screen."}],"raw_content":"<!--section=description-->\n<p>A VAT number box in your checkout's billing section, validated against the\nEuropean Commission's own VIES service, and the tax taken off for business\ncustomers in other member states.<\/p>\n\n<p><strong>A valid VAT number is not by itself an exemption<\/strong>, and that is the thing\nplugins in this category get wrong. Reverse charge applies when the customer\nis a business <strong>in another member state<\/strong>, so all four of these have to hold\nbefore a penny comes off:<\/p>\n\n<ol>\n<li>The number was actually checked and found <strong>valid<\/strong> \u2014 not merely typed.<\/li>\n<li>Its country prefix <strong>matches the billing country<\/strong>. A German customer\ncannot claim an exemption with a French number.<\/li>\n<li>The customer is <strong>not in your own country<\/strong>. Domestic business sales are\nstill taxed everywhere reverse charge exists.<\/li>\n<li>You have not switched the whole thing off.<\/li>\n<\/ol>\n\n<p><strong>An unreachable VIES is not a yes.<\/strong> The service is down often, and on those\nafternoons the difference between charging tax you can refund later and\ngiving away tax you will still owe is one decision. This plugin fails closed.<\/p>\n\n<p><strong>What is recorded is evidence, not an opinion.<\/strong> The order keeps the number\nas it was checked, the verdict VIES gave, the moment it gave it, the name and\naddress the service returned, and whether the tax actually came off.<\/p>\n\n<p><strong>The tax comes off through WooCommerce's own exemption<\/strong>, which is the seam\nthe classic cart, the block cart, the Store API and every total read through.\nThere is no tax rate this plugin has to know about, and no surface it has to\nbe told about.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li>A VAT number field in the checkout's billing section, optional or required,\ncalled whatever you want to call it<\/li>\n<li>Live validation against VIES, with the answer remembered for the checkout\nrather than asked again on every keystroke, and a timeout you choose<\/li>\n<li>Reverse charge applied under all four rules above<\/li>\n<li>The evidence recorded on the order<\/li>\n<li>Everything that was checked, on the order screen \u2014 the number, the verdict,\nthe moment, the name and address VIES returned, and whether the tax came off<\/li>\n<li>Your own wording for the message shown when VIES cannot be reached<\/li>\n<li>No database tables and no storefront JavaScript<\/li>\n<\/ul>\n\n<h4>The full edition<\/h4>\n\n<p><a href=\"https:\/\/gatemi.com\/plugins\/vat-number-for-woocommerce\/\">Gatemi VAT Number for WooCommerce<\/a>\nis a separate plugin, sold on gatemi.com, that sends your own VAT number to\nVIES as the requester \u2014 which is what makes the service return a consultation\nnumber with every check \u2014 and adds a test lookup that asks VIES for real from\nthe settings screen.<\/p>\n\n<p>Both editions store their settings the same way and write the same order\nmeta, so upgrading keeps everything.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on one external service and contacts nothing else \u2014 in\nparticular, it never contacts gatemi.com.<\/p>\n\n<p><strong>VIES (the VAT Information Exchange System)<\/strong>, operated by the European\nCommission, is what a VAT number is checked against. Your server posts to\n    https:\/\/ec.europa.eu\/taxation_customs\/vies\/rest-api\/check-vat-number.<\/p>\n\n<p><em>What is sent, and when:<\/em> one request each time a customer types a VAT number\nat your checkout, carrying that number and its country prefix \u2014 and nothing\nelse. No name, address, email address, order or total is sent, and no request\nis made at all unless a number has been typed. Nothing is sent from a\nvisitor's browser; the request is made by your site.<\/p>\n\n<p>Service: <a href=\"https:\/\/ec.europa.eu\/taxation_customs\/vies\/\">https:\/\/ec.europa.eu\/taxation_customs\/vies\/<\/a><\/p>\n\n<p>Terms of use: <a href=\"https:\/\/commission.europa.eu\/legal-notice_en\">https:\/\/commission.europa.eu\/legal-notice_en<\/a><\/p>\n\n<p>Privacy policy: <a href=\"https:\/\/commission.europa.eu\/privacy-policy-websites-managed-european-commission_en\">https:\/\/commission.europa.eu\/privacy-policy-websites-managed-european-commission_en<\/a><\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20tax%20advice%3F\"><h3>Is this tax advice?<\/h3><\/dt>\n<dd><p>No. It checks numbers and applies the rule you configure. What you owe and\nwhere you file it is between you and your accountant.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20vies%20is%20down%3F\"><h3>What happens when VIES is down?<\/h3><\/dt>\n<dd><p>The number is not confirmed and the tax is charged. You can refund tax you\ncharged; you cannot easily collect tax you gave away.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20checkout%3F\"><h3>Does it work with the block checkout?<\/h3><\/dt>\n<dd><p>The exemption goes through WooCommerce's own <code>set_is_vat_exempt()<\/code>, so the\ntotals are right in the classic cart, the block cart and the Store API alike.<\/p><\/dd>\n<dt id=\"will%20upgrading%20lose%20anything%3F\"><h3>Will upgrading lose anything?<\/h3><\/dt>\n<dd><p>No. The full edition reads the same settings and the same order meta, so\nevery past order still reads and nothing needs setting up again.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"A VAT number field at the checkout, checked against VIES, with reverse charge applied when \u2014 and only when \u2014 it should be.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/366033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=366033"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/gatemi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=366033"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=366033"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=366033"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=366033"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=366033"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=366033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}