VIESAC – Free VAT Validation for WooCommerce

Description

VIESAC is an automated VAT compliance and validation engine for WooCommerce. It provides real-time VAT number verification, local format validation, and an intelligent B2B Reverse-Charge & Place of Supply Decision Engine designed to keep international stores compliant with European and global tax rules.

VIESAC checks VAT numbers locally and connects directly to official registries:
* European Union (EU): Real-time checks via the European Commission’s EU VIES system for all 27 EU member states.
* United Kingdom (GB & XI): Great Britain VAT validation via the official HMRC VAT API; Northern Ireland (XI) validation via EU VIES.
* Switzerland (CH) & Liechtenstein (LI): Support for CHE format and Liechtenstein companies (Liechtenstein and Switzerland form a unified VAT territory; Liechtenstein VAT numbers follow the Swiss registry).
* Norway (NO): 9-digit MVA format & checksum verification; live VAT registration check via the Brønnøysund Register Centre (Enhetsregisteret).
* Serbia (RS): 9-digit PIB format & checksum verification; live company check via the Serbian Tax Administration VAT Register.
* Turkey (TR): 10-digit VKN algorithmic format verification; live taxpayer check via the Turkish Revenue Administration (GİB) e-Fatura registry.

Intelligent B2B Reverse-Charge & Place of Supply Engine

VIESAC automatically determines the correct tax treatment during checkout without complex configuration:
* Physical Goods vs. Digital/Virtual Services: Dynamically resolves the place of supply based on cart contents. Physical shipments evaluate the delivery/shipping destination; digital or purely virtual orders evaluate the customer’s billing country.
* Intra-EU B2B Reverse Charge: 0% VAT is applied automatically only when a buyer enters a valid VAT number from a different EU member state.
* Domestic Sales Protection: Domestic orders (destination matching the store’s base country) always retain standard local VAT, even if a valid local VAT number is provided.
* Unified Swiss-Liechtenstein Territory: Sales between Switzerland and Liechtenstein are recognized as domestic within the customs union, correctly preserving local tax.
* Cross-Border Exports: Cross-border sales to non-EU businesses (e.g. valid Serbian PIB, Turkish VKN, UK GB, Swiss CHE, or Norwegian MVA) qualify for 0% export VAT; unverified or invalid tax numbers retain standard tax.
* Instant Checkout Feedback: Field validation triggers immediately when a customer finishes typing and leaves the VAT input (blur / focusout), eliminating waiting pauses while preserving smart typing debounce.

1-Click Standard VAT Rate Setup

Merchants can import and configure the official standard VAT rate for their store base country in WooCommerce with a single click directly from the VIESAC settings page. Existing rates and custom reduced rates remain completely untouched.

Stored Proof & Audit Certificates

Every verified B2B transaction can be paired with permanent cryptographic proof and an official, downloadable PDF compliance certificate in order details for stress-free tax audits.

Features

  • Automated Reverse-Charge Engine – Dynamic place of supply evaluation for goods vs. virtual services
  • Real-time EU VIES Validation – Live verification for all 27 EU member states and Northern Ireland (XI)
  • UK VAT checks via HMRC – Validate Great Britain (GB) VAT numbers through HMRC’s official API
  • Serbian, Turkish & Norwegian Registries – Live verification of Serbian PIB (Tax Administration), Turkish VKN (GİB e-Fatura), and Norwegian MVA (Brønnøysund Register Centre)
  • Unified CH-LI Territory – Seamless single-tax territory handling for Switzerland and Liechtenstein
  • Instant Checkout Validation – Immediate verification on field blur/focusout with smart typing debounce
  • 1-Click Standard VAT Rate – Easily configure the official standard rate for your store’s country
  • Country-specific Format Checks – Instant client-side syntax and checksum validation without an API key
  • Audit-Ready Certificates – Stored cryptographic proof and downloadable PDF certificates in WooCommerce orders
  • Clear Usage Transparency – Clear distinction between monthly checks, hourly capacity, and stored proof quotas
  • HPOS & Blocks Compatible – Fully compatible with WooCommerce Custom Order Tables and Checkout Blocks
  • Multilingual Ready – Available in 28 languages, compatible with WPML, Polylang, and TranslatePress

VAT number validation by country

VIESAC includes country-specific VAT number format validation for every jurisdiction below. Live validation uses EU VIES for EU member states and Northern Ireland, HMRC for Great Britain, the Brønnøysund Register Centre for Norway, the Swiss UID register for Switzerland and Liechtenstein, the Serbian Tax Administration VAT Register for Serbia, and the Turkish Revenue Administration (GİB) e-Fatura taxpayer register for Turkey:

  • Austria (AT) – Austrian VAT numbers
  • Belgium (BE) – Belgian VAT numbers
  • Bulgaria (BG) – Bulgarian VAT numbers
  • Croatia (HR) – Croatian VAT numbers
  • Cyprus (CY) – Cypriot VAT numbers
  • Czechia (CZ) – Czech VAT numbers
  • Denmark (DK) – Danish VAT numbers
  • Estonia (EE) – Estonian VAT numbers
  • Finland (FI) – Finnish VAT numbers
  • France (FR) – French VAT numbers
  • Germany (DE) – German VAT numbers
  • Greece (EL/GR) – Greek VAT numbers
  • Hungary (HU) – Hungarian VAT numbers
  • Ireland (IE) – Irish VAT numbers
  • Italy (IT) – Italian VAT numbers
  • Latvia (LV) – Latvian VAT numbers
  • Lithuania (LT) – Lithuanian VAT numbers
  • Luxembourg (LU) – Luxembourg VAT numbers
  • Malta (MT) – Maltese VAT numbers
  • Netherlands (NL) – Dutch VAT numbers
  • Poland (PL) – Polish VAT numbers
  • Portugal (PT) – Portuguese VAT numbers
  • Romania (RO) – Romanian VAT numbers
  • Serbia (RS) – 9-digit PIB with checksum; live registration check through the Serbian Tax Administration with an API key
  • Slovakia (SK) – Slovak VAT numbers
  • Slovenia (SI) – Slovenian VAT numbers
  • Spain (ES) – Spanish VAT numbers
  • Sweden (SE) – Swedish VAT numbers
  • Switzerland (CH/CHE) – CHE format; live UID register check; unified territory with Liechtenstein
  • Turkey (TR) – 10-digit VKN with checksum; live GİB e-Fatura taxpayer register check with an API key
  • Northern Ireland (XI) – Northern Irish VAT numbers through EU VIES (goods destination rules)
  • Great Britain (GB) – UK VAT numbers through HMRC for England, Scotland, and Wales
  • Norway (NO) – 9-digit MVA with checksum; live VAT registration check through the Brønnøysund Register Centre with an API key

Getting started

  1. Install and activate the plugin.
  2. Go to WooCommerce -> VIESAC.
  3. Get your free API key from https://viesac.eu/app/api.
  4. Enter the API key and save.

Languages

VIESAC is available in 28 languages: English, Norwegian Bokmål, German, French, Spanish, Italian, Polish, Dutch, Romanian, Greek, Czech, Swedish, Hungarian, Portuguese, Bulgarian, Danish, Finnish, Slovak, Croatian, Serbian (Cyrillic), Latvian, Estonian, Lithuanian, Slovenian, Russian, Turkish, Arabic, Ukrainian.

Multilingual compatibility

VIESAC uses standard WordPress gettext for its interface and VAT validation messages, so it works with WordPress language packs and the Gettext translation tools in WPML, Polylang, and TranslatePress.

Custom VAT field label and VAT field placeholder values are supported too:

  • WPML: translate them in WPML -> String Translation after saving the VIESAC settings.
  • Polylang: translate them in Languages -> String translations after saving the VIESAC settings.
  • TranslatePress: translate them as regular strings in its translation editor after visiting checkout in the target language.

External services

This plugin connects to the VIESAC API to validate VAT numbers, retrieve account usage information, and optionally create audit records with certificate storage.

It sends data to https://viesac.eu only when a store administrator enters an API key and the plugin performs one of these actions:

  • Live VAT validation via https://viesac.eu/api/v1/validate
  • VAT audit creation via https://viesac.eu/api/v1/audits
  • Account and usage lookup via https://viesac.eu/api/v1/account

Depending on the action, the plugin may send:

  • VAT country code and VAT number
  • Company name
  • Company address
  • Order number
  • Order audit details in XML format for certificate generation

Service provider documentation:

Screenshots

Installation

  1. Upload the plugin files to /wp-content/plugins/viesac/, or install the plugin through the WordPress plugins screen directly.
  2. Activate the plugin through the Plugins screen in WordPress.
  3. Ensure WooCommerce is installed and active.
  4. Go to WooCommerce -> VIESAC and enter your API key from https://viesac.eu/app/api.

FAQ

Do I need to pay?

Local VAT format validation is unlimited and works without an API key. Live VAT validation and stored audit proof follow your VIESAC plan:

  • Free: 100 live VAT validations per month (10/hour) and 5 stored audits total
  • Starter: 1,000 live VAT validations per month (100/hour) and 100 stored audits per month
  • Pro: 10,000 live VAT validations per month (500/hour) and 500 stored audits per month
  • Business: 30,000 live VAT validations per month (1,000/hour) and 3,000 stored audits per month
  • Enterprise: custom/unlimited validation and audit capacity

What is an audit?

An audit is a full validation record that stores technical proof and makes the certificate available for the order. Checkout format checks are unlimited; live VAT validation uses monthly and hourly limits, while stored proof uses a separate audit allowance.

What happens when my stored-proof allowance is exhausted?

Checkout still performs live VAT validation while validation capacity is available. The WooCommerce order keeps the VALID or INVALID status, shows “No proof stored,” and displays an upgrade notice. No audit record or certificate is stored for that order.

What happens with LIMITED VALID and PENDING?

These statuses can be returned when a full audit is created and VIES is temporarily unavailable. WooCommerce stores the audit reference and displays LIMITED VALID or PENDING without a certificate; VIESAC retries the saved audit automatically. When the audit allowance is already exhausted, no audit exists to retry, so the plugin records only the available live VALID/INVALID result and clearly marks it as “No proof stored.”

Does it work with WooCommerce Blocks?

Yes. VIESAC is compatible with WooCommerce Blocks checkout.

Reviews

Read all 1 review

Contributors & Developers

“VIESAC – Free VAT Validation for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“VIESAC – Free VAT Validation for WooCommerce” has been translated into 4 locales. Thank you to the translators for their contributions.

Translate “VIESAC – Free VAT Validation for WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.1.0 – 2026-09-30

  • Automated Reverse-Charge Decision Engine: Dynamic place-of-supply resolution distinguishing physical goods (destination country) from digital/virtual services (billing country).
  • Unified VAT Territory Handling: Integrated Liechtenstein (LI) and Switzerland (CH) single customs/tax territory rules; cross-border sales between CH and LI retain local tax, with LI numbers validated against the Swiss CHE registry.
  • Cross-Border Validation for Serbia & Turkey: Live Serbian PIB (Tax Administration) and Turkish VKN (GİB e-Fatura) validation; qualified cross-border B2B supplies to verified businesses receive 0% export VAT, while invalid numbers retain local tax.
  • Instant Checkout Feedback: Added immediate validation on field blur / focusout for VAT and B2B inputs, eliminating checkout delay while maintaining debounce during active typing.
  • Checkout Address Evaluation Fix: Fixed destination country resolution when “Ship to a different address” is dynamically toggled.
  • Standard VAT Rate 1-Click Import: Store administrators can import and configure official national standard VAT rates directly into WooCommerce settings without overwriting custom or reduced rates.
  • Serbian Language Support: Added full Serbian Cyrillic translation (sr_RS).
  • Tested up to WooCommerce 9.x and WordPress 7.2.

1.0.18 – 2026-09-23

  • Add Serbian PIB format and checksum checks with live Serbian VAT registration checks through VIESAC
  • Add Turkish VKN format and checksum checks with live Turkish GİB e-Fatura taxpayer register checks through VIESAC
  • Keep tax unchanged for Serbian and Turkish numbers; a tax number alone does not establish a reverse-charge outcome
  • Clarify country coverage and verification levels in the WordPress.org description

1.0.17 – 2026-09-23

  • Tested with WordPress 7.2

1.0.16 – 2026-09-12

  • Prevent repeated quota-limited live VAT checks for the same normalized country and VAT number during checkout
  • Reuse definitive VALID and INVALID results for 10 minutes while allowing transient validation failures to retry
  • Debounce live validation until typing pauses and keep incomplete or invalid local formats away from the API
  • Run a single live validator in Checkout Blocks while preserving immediate local format feedback
  • Keep order audit creation separate so eligible orders still receive stored compliance proof

1.0.15 – 2026-09-11

  • Correct Irish-store VAT handling for deliveries to Great Britain versus Northern Ireland
  • Remove Irish VAT from England, Scotland, and Wales exports without requiring a VIESAC API key
  • Validate GB VAT numbers through HMRC and XI VAT numbers through EU VIES when an API key is configured
  • Clear stale VAT exemptions when the checkout postcode moves between Great Britain and Northern Ireland
  • Apply the same GB/XI rules in Classic Checkout, Checkout Blocks, and order audit records

1.0.14 – 2026-09-03

  • Clarify existing United Kingdom VAT support: GB checks use the HMRC VAT API and XI checks use EU VIES
  • Add monthly VAT validation usage and capacity to the settings table
  • Separate monthly validation, hourly validation, and stored audit proof into clear usage rows
  • Preserve VALID/INVALID order status when the audit/certificate allowance is exhausted
  • Display saved LIMITED VALID and PENDING audits as amber states without a certificate
  • Show “No proof stored” and a translated upgrade notice on affected orders
  • Update plan limits and plugin descriptions for the new VIESAC allowances

1.0.13

  • Keep VAT in the total until a separate shipping country is selected

1.0.12

  • Ignore stale shipping fields when Ship to a different address is unchecked

1.0.11

  • Keep VAT in the total when a valid foreign VAT number is paired with delivery to the store’s base country

1.0.10

  • Add editable VAT field label and placeholder in WooCommerce -> VIESAC settings
  • Apply configured VAT field text to Classic Checkout, Checkout Block, and My Account address forms
  • Register custom field text with WPML String Translation and Polylang String translations
  • Add Norwegian Bokmål translation

1.0.9

  • Pre-fill VAT numbers saved in My Account billing and shipping profiles in Classic and Block Checkout
  • Synchronize VAT values between Classic profile meta and Block Checkout address fields
  • Respect an explicitly cleared optional VAT number instead of restoring an older saved value

1.0.8

  • Block checkout submission when a non-empty VAT number has an invalid format or VIESAC confirms it is invalid
  • Show the validation error in the standard WooCommerce notice area for classic checkout and as a Store API error for Block Checkout
  • Keep VAT optional: customers can remove a VAT number and complete checkout with regular VAT

1.0.7

  • Redesign the VIESAC settings account summary to separate live VAT validation limits from monthly audit/certificate usage
  • Show a checkout success state when VIESAC live VAT validation succeeds
  • Show a dedicated country mismatch error when the VAT number prefix does not match the selected checkout country
  • Improve WooCommerce-origin VAT checker logs in the VIESAC app
  • Tested with WordPress 7.0 and WooCommerce 10.9.4

1.0.6

  • Show live VAT validation usage for the current hour on the VIESAC settings page
  • Fix billing/shipping country matching for VAT format checks in classic and block checkout

1.0.5

  • Require complete B2B checkout fields and live VIESAC API validation before applying 0% VAT
  • Add country-specific VAT format validation for EU countries, Norway, and Switzerland
  • Show inline VAT errors for invalid formats, invalid VAT numbers, and hourly validation limits
  • Show format-only mode and live validation hourly limits on the VIESAC settings page

1.0.4

  • Add Norway and Switzerland VAT validation support
  • Add WordPress.org plugin icons, banner, and screenshots
  • Sharpen readme copy around free VAT validation, VAT number checkout fields, B2B tax exemption, and certificate storage

1.0.3

  • Clean up WordPress.org scanner issues without changing checkout behavior
  • Add missing plugin translations for Company name fields across all bundled locales
  • Rebuild translation files for verified runtime loading in WordPress
  • Harden admin output escaping and checkout/order input sanitization
  • Normalize plugin file line endings and refine PHPCS-safe request handling in checkout/order flows

1.0.2

  • Add best-effort fallback VAT field injection for custom WooCommerce checkout themes
  • Re-inject VAT field after checkout AJAX updates and DOM re-renders
  • Improve compatibility with custom theme checkout wrappers such as Avada-style layouts
  • Keep WooCommerce Blocks behavior separate from classic/custom theme fallback logic

1.0.1

  • Update text domain and WordPress compatibility metadata
  • Add WooCommerce dependency header
  • Document external API service usage for WordPress.org review
  • Clean plugin copy for UTF-8 safe packaging

1.0.0

  • Initial release
  • VAT validation at checkout
  • Free VIESAC audit allowance
  • VIES certificate download
  • Admin settings page
  • 25+ language translations