{"id":298109,"date":"2026-04-23T15:59:44","date_gmt":"2026-04-23T15:59:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/vatify-eu-vat-validator\/"},"modified":"2026-09-28T17:00:36","modified_gmt":"2026-09-28T17:00:36","slug":"vatigo-eu-vat-validator","status":"publish","type":"plugin","link":"https:\/\/nl-be.wordpress.org\/plugins\/vatigo-eu-vat-validator\/","author":12495480,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.7","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"Vatigo \u2013 EU VAT Validator","header_author":"Stephan Lenhart","header_description":"Validates EU VAT IDs (UIDs) in WordPress forms. Supports Contact Form 7, WPForms, Fluent Forms and more.","assets_banners_color":"fcf8f8","last_updated":"2026-09-28 17:00:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/uidesign.at\/work\/vatigo","header_author_uri":"https:\/\/uidesign.at","rating":0,"author_block_rating":0,"active_installs":0,"downloads":374,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"deb_ugger","date":"2026-04-23 15:59:25","revision":3513984},"1.0.1":{"tag":"1.0.1","author":"deb_ugger","date":"2026-09-27 06:12:19","revision":3715041},"1.0.2":{"tag":"1.0.2","author":"deb_ugger","date":"2026-09-28 17:00:36","revision":3717632}},"upgrade_notice":{"1.0.2":"<p>Fixes validation of Belgian VAT numbers starting with BE1.<\/p>","1.0.1":"<p>Compatibility with WordPress 7.0 and improved documentation. No functional changes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3725765,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3725765,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3725766,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3725765,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3725765,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3715041,"resolution":"1","location":"assets","locale":"","width":2052,"height":1416},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3715041,"resolution":"2","location":"assets","locale":"","width":2052,"height":1384},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3715041,"resolution":"3","location":"assets","locale":"","width":2028,"height":1386},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3715041,"resolution":"4","location":"assets","locale":"","width":2022,"height":1380}},"screenshots":{"1":"Settings page \u2013 enable the EU VAT validation for Contact Form 7, WPForms and Fluent Forms","2":"EU VAT ID field in a WPForms contact form","3":"Required field validation for the VAT ID field","4":"Format validation \u2013 clear error message with an example of the expected VAT ID format"}},"plugin_section":[],"plugin_tags":[1152,260936,19126,66415,130711],"plugin_category":[],"plugin_contributors":[260937],"plugin_business_model":[],"class_list":["post-298109","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-uid","plugin_tags-vat","plugin_tags-vat-number","plugin_tags-wpforms","plugin_contributors-deb_ugger","plugin_committers-deb_ugger"],"banners":{"banner":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/banner-772x250.png?rev=3725765","banner_2x":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/banner-1544x500.png?rev=3725765","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/icon.svg?rev=3725766","icon":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/icon.svg?rev=3725766","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/screenshot-1.png?rev=3715041","caption":"Settings page \u2013 enable the EU VAT validation for Contact Form 7, WPForms and Fluent Forms"},{"src":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/screenshot-2.png?rev=3715041","caption":"EU VAT ID field in a WPForms contact form"},{"src":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/screenshot-3.png?rev=3715041","caption":"Required field validation for the VAT ID field"},{"src":"https:\/\/ps.w.org\/vatigo-eu-vat-validator\/assets\/screenshot-4.png?rev=3715041","caption":"Format validation \u2013 clear error message with an example of the expected VAT ID format"}],"raw_content":"<!--section=description-->\n<p><strong>Vatigo<\/strong> checks EU VAT identification numbers directly in your WordPress forms \u2013 no coding, no API key, no configuration. Install, activate, add the field. Done.<\/p>\n\n<p>Built for <strong>B2B forms<\/strong>: contact and quote requests, dealer and partner registrations, wholesale sign-ups, event registrations with company invoicing \u2013 anywhere you need a correctly formatted VAT ID before the form is submitted.<\/p>\n\n<p>Works with <strong>Contact Form 7<\/strong>, <strong>WPForms<\/strong> and <strong>Fluent Forms<\/strong>.<\/p>\n\n<h4>Why Vatigo?<\/h4>\n\n<ul>\n<li><strong>Catches typos before they reach your inbox<\/strong> \u2013 no more \"ATU1234567\" (one digit short) or \"DE 123 456 78\" in your invoices<\/li>\n<li><strong>All 27 EU member states<\/strong> with country-specific format rules<\/li>\n<li><strong>Tolerant input<\/strong> \u2013 spaces, dots, dashes and lowercase letters are normalized automatically (<code>atu 1234-5678<\/code> \u2192 <code>ATU12345678<\/code>)<\/li>\n<li><strong>Helpful error messages<\/strong> \u2013 the user sees exactly which country format is expected, including an example<\/li>\n<li><strong>Real-time inline feedback<\/strong> while typing (WPForms)<\/li>\n<li><strong>Server-side validation<\/strong> on every submission \u2013 works even with JavaScript disabled<\/li>\n<li><strong>100 % offline<\/strong> \u2013 no external requests, no tracking, nothing leaves your server<\/li>\n<li><strong>GDPR-friendly<\/strong> \u2013 VAT IDs are validated in memory and never stored<\/li>\n<li><strong>Custom error messages<\/strong> via the settings page<\/li>\n<li><strong>Developer-friendly<\/strong> \u2013 add any other form plugin through a simple integration API<\/li>\n<\/ul>\n\n<h4>Supported countries and VAT ID formats<\/h4>\n\n<ul>\n<li><strong>Austria<\/strong> \u2013 UID-Nummer \u2013 <code>ATU12345678<\/code><\/li>\n<li><strong>Belgium<\/strong> \u2013 BTW \/ n\u00b0 TVA \u2013 <code>BE0123456789<\/code> or <code>BE1123456789<\/code><\/li>\n<li><strong>Bulgaria<\/strong> \u2013 \u0414\u0414\u0421 \u043d\u043e\u043c\u0435\u0440 \u2013 <code>BG123456789<\/code><\/li>\n<li><strong>Croatia<\/strong> \u2013 PDV ID \u2013 <code>HR12345678901<\/code><\/li>\n<li><strong>Cyprus<\/strong> \u2013 \u03a6\u03a0\u0391 \u2013 <code>CY12345678A<\/code><\/li>\n<li><strong>Czech Republic<\/strong> \u2013 DI\u010c \u2013 <code>CZ12345678<\/code><\/li>\n<li><strong>Denmark<\/strong> \u2013 CVR \/ moms \u2013 <code>DK12345678<\/code><\/li>\n<li><strong>Estonia<\/strong> \u2013 KMKR \u2013 <code>EE123456789<\/code><\/li>\n<li><strong>Finland<\/strong> \u2013 ALV-numero \u2013 <code>FI12345678<\/code><\/li>\n<li><strong>France<\/strong> \u2013 num\u00e9ro de TVA intracommunautaire \u2013 <code>FRXX123456789<\/code><\/li>\n<li><strong>Germany<\/strong> \u2013 USt-IdNr. \u2013 <code>DE123456789<\/code><\/li>\n<li><strong>Greece<\/strong> \u2013 \u0391\u03a6\u039c \u2013 <code>EL123456789<\/code><\/li>\n<li><strong>Hungary<\/strong> \u2013 k\u00f6z\u00f6ss\u00e9gi ad\u00f3sz\u00e1m \u2013 <code>HU12345678<\/code><\/li>\n<li><strong>Ireland<\/strong> \u2013 VAT number \u2013 <code>IE1234567A<\/code><\/li>\n<li><strong>Italy<\/strong> \u2013 Partita IVA \u2013 <code>IT12345678901<\/code><\/li>\n<li><strong>Latvia<\/strong> \u2013 PVN \u2013 <code>LV12345678901<\/code><\/li>\n<li><strong>Lithuania<\/strong> \u2013 PVM kodas \u2013 <code>LT123456789<\/code><\/li>\n<li><strong>Luxembourg<\/strong> \u2013 n\u00b0 TVA \u2013 <code>LU12345678<\/code><\/li>\n<li><strong>Malta<\/strong> \u2013 VAT number \u2013 <code>MT12345678<\/code><\/li>\n<li><strong>Netherlands<\/strong> \u2013 btw-id \u2013 <code>NL123456789B01<\/code><\/li>\n<li><strong>Poland<\/strong> \u2013 NIP \u2013 <code>PL1234567890<\/code><\/li>\n<li><strong>Portugal<\/strong> \u2013 NIF \u2013 <code>PT123456789<\/code><\/li>\n<li><strong>Romania<\/strong> \u2013 CIF \/ CUI \u2013 <code>RO12345678<\/code><\/li>\n<li><strong>Slovakia<\/strong> \u2013 I\u010c DPH \u2013 <code>SK1234567890<\/code><\/li>\n<li><strong>Slovenia<\/strong> \u2013 ID za DDV \u2013 <code>SI12345678<\/code><\/li>\n<li><strong>Spain<\/strong> \u2013 NIF \/ CIF \u2013 <code>ESA12345678<\/code><\/li>\n<li><strong>Sweden<\/strong> \u2013 momsregistreringsnummer \u2013 <code>SE123456789012<\/code><\/li>\n<\/ul>\n\n<h4>Contact Form 7: EU VAT ID field<\/h4>\n\n<p>Add the <code>uid_vat<\/code> form tag to your form template:<\/p>\n\n<pre><code>[uid_vat uid-field] \u2013 optional field\n[uid_vat* uid-field] \u2013 required field\n<\/code><\/pre>\n\n<p>With placeholder:<\/p>\n\n<pre><code>[uid_vat* eu-vat-id placeholder \"e.g. ATU12345678\"]\n<\/code><\/pre>\n\n<p>Required validation uses the Contact Form 7 Schema-Woven Validation (CF7 5.6+).<\/p>\n\n<h4>WPForms: EU VAT ID field<\/h4>\n\n<p>Drag the <strong>EU VAT ID<\/strong> field from the field panel into your form. It supports required validation, custom labels, placeholder text and real-time inline feedback while the user types.<\/p>\n\n<h4>Fluent Forms: EU VAT ID field<\/h4>\n\n<p>Drag the <strong>EU VAT ID<\/strong> field from the <em>General Fields<\/em> section into your form.<\/p>\n\n<h4>Styling the inline feedback<\/h4>\n\n<p>The real-time feedback (WPForms) uses the class <code>.vatigo-feedback<\/code>. To hide it, add this to your theme's CSS:<\/p>\n\n<pre><code>.vatigo-feedback { display: none; }\n<\/code><\/pre>\n\n<h4>For developers<\/h4>\n\n<p>Register an integration for any other form plugin:<\/p>\n\n<pre><code>add_action( 'vatigo_register_integrations', function( $manager ) {\n    $manager-&gt;register( new My_Custom_Integration() );\n} );\n<\/code><\/pre>\n\n<p>Your class must extend <code>Vatigo_Integration_Base<\/code> and implement all abstract methods. The settings page shows a complete example.<\/p>\n\n<h4>Coming in Vatigo Pro<\/h4>\n\n<ul>\n<li>Live validation against the official EU <strong>VIES<\/strong> database (checks whether the VAT number actually exists)<\/li>\n<li>More features for B2B workflows<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to <strong>Plugins \u2192 Add New<\/strong> and search for \"Vatigo\".<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<li>Go to <strong>Settings \u2192 EU VAT Validator<\/strong> and enable the integrations for the form plugins you use.<\/li>\n<li>Add the <strong>EU VAT ID<\/strong> field to your form (see the instructions for your form plugin above).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20exactly%20does%20vatigo%20check%3F\"><h3>What exactly does Vatigo check?<\/h3><\/dt>\n<dd><p>Vatigo checks whether a VAT ID has a valid format for its EU country: correct country prefix, correct length and the right mix of digits and letters. This catches the vast majority of typos and incomplete entries before the form is submitted.<\/p><\/dd>\n<dt id=\"does%20vatigo%20check%20whether%20the%20vat%20number%20really%20exists%20%28vies%29%3F\"><h3>Does Vatigo check whether the VAT number really exists (VIES)?<\/h3><\/dt>\n<dd><p>Not in the free version. The free version validates the format only, entirely offline. A live check against the official EU VIES database is planned for Vatigo Pro.<\/p><\/dd>\n<dt id=\"which%20form%20plugins%20are%20supported%3F\"><h3>Which form plugins are supported?<\/h3><\/dt>\n<dd><p>Contact Form 7, WPForms (Lite and Pro) and Fluent Forms. Other form plugins can be connected through the developer API.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20austrian%20uid%20and%20the%20german%20ust-idnr.%3F\"><h3>Does it work with the Austrian UID and the German USt-IdNr.?<\/h3><\/dt>\n<dd><p>Yes. \"UID-Nummer\" (Austria), \"USt-IdNr.\" (Germany), \"BTW-nummer\" (Netherlands, Belgium), \"num\u00e9ro de TVA\" (France), \"Partita IVA\" (Italy) and \"NIF\/CIF\" (Spain) are all national names for the EU VAT identification number. Vatigo supports all 27 EU member states.<\/p><\/dd>\n<dt id=\"what%20about%20swiss%2C%20uk%20or%20norwegian%20vat%20numbers%3F\"><h3>What about Swiss, UK or Norwegian VAT numbers?<\/h3><\/dt>\n<dd><p>Vatigo validates EU VAT IDs only. Switzerland (CHE\u2026), the United Kingdom (GB\u2026, since Brexit) and Norway are not EU member states and are not supported.<\/p><\/dd>\n<dt id=\"can%20users%20type%20the%20vat%20id%20with%20spaces%20or%20lowercase%20letters%3F\"><h3>Can users type the VAT ID with spaces or lowercase letters?<\/h3><\/dt>\n<dd><p>Yes. Spaces, dots and dashes are removed and letters are converted to uppercase before validation, so <code>atu 1234 5678<\/code> is accepted as <code>ATU12345678<\/code>.<\/p><\/dd>\n<dt id=\"does%20this%20call%20an%20external%20api%3F\"><h3>Does this call an external API?<\/h3><\/dt>\n<dd><p>No. All validation happens on your server. No data is sent to third parties.<\/p><\/dd>\n<dt id=\"is%20this%20gdpr%20compliant%3F\"><h3>Is this GDPR compliant?<\/h3><\/dt>\n<dd><p>Yes. Vatigo does not store or transmit any personal data. VAT IDs are validated in memory and discarded. What happens with the submitted form data is up to your form plugin.<\/p><\/dd>\n<dt id=\"can%20i%20customise%20the%20error%20messages%3F\"><h3>Can I customise the error messages?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Settings \u2192 EU VAT Validator<\/strong> and enter a custom error message. Leave the field empty to use the default country-specific messages, which include an example of the expected format.<\/p><\/dd>\n<dt id=\"the%20inline%20feedback%20looks%20different%20from%20my%20theme%20%E2%80%93%20can%20i%20style%20it%3F\"><h3>The inline feedback looks different from my theme \u2013 can I style it?<\/h3><\/dt>\n<dd><p>Yes. The feedback element uses the class <code>.vatigo-feedback<\/code>. You can hide or restyle it via your theme's CSS.<\/p><\/dd>\n<dt id=\"can%20i%20add%20support%20for%20another%20form%20plugin%3F\"><h3>Can I add support for another form plugin?<\/h3><\/dt>\n<dd><p>Yes. Extend <code>Vatigo_Integration_Base<\/code> and register your class via the <code>vatigo_register_integrations<\/code> action hook. See the settings page for a code example.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fix: Belgian VAT numbers starting with 1 (issued since 2023) are now accepted<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.0<\/li>\n<li>Improved plugin description and documentation<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Contact Form 7 integration with SWV required validation support (CF7 5.6+)<\/li>\n<li>WPForms integration with real-time inline feedback<\/li>\n<li>Fluent Forms integration<\/li>\n<li>Pattern validation for all 27 EU member states<\/li>\n<li>Admin settings page with integration toggle and hook reference<\/li>\n<li>Custom error message override<\/li>\n<li>Extensible integration API<\/li>\n<\/ul>","raw_excerpt":"Validate EU VAT numbers (UID, USt-IdNr., BTW, TVA) in Contact Form 7, WPForms and Fluent Forms. All 27 EU states, offline, GDPR-friendly.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/298109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=298109"}],"author":[{"embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/deb_ugger"}],"wp:attachment":[{"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=298109"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=298109"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=298109"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=298109"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=298109"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nl-be.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=298109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}