About this plugin
VIESAC helps WooCommerce stores validate VAT and GST numbers and apply B2B reverse-charge and place-of-supply rules at checkout. It combines local format and checksum checks, live registry lookups across 52 VAT/GST jurisdictions, standard VAT/GST rate setup for 115 countries, and a decision engine that chooses tax treatment from cart contents and destination. Free plan includes 50 live validations per month.
Official registries used for live checks:
* European Union (EU-27) & Monaco (MC): Real-time checks via the European Commission’s EU VIES system for all 27 EU member states, plus Monaco ( MC ) through the French VIES route and DGFiP register.
* 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 9-digit CHE UID format and native 5-digit STV MWST register for Liechtenstein companies (Liechtenstein and Switzerland form a unified VAT territory; Liechtenstein VAT numbers follow STV or the Swiss UID registry).
* Norway (NO): 9-digit MVA format & Modulo 11 checksum verification; live VAT registration check via the Brønnøysund Register Centre (Enhetsregisteret).
* Serbia (RS): 9-digit PIB format & ISO 7064 MOD 11,10 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.
* Bosnia and Herzegovina (BA): 12-digit PDV identifier; live check via the Indirect Taxation Authority (UINO). The 13-digit direct-tax JIB is a different identifier.
* North Macedonia (MK): 13-digit EDB tax number with Modulo 11 check digit verification; live check via the Public Revenue Office (UJP).
* Albania (AL): NIPT / NUIS, a letter, eight digits, and a letter; live business registry check via the National Business Center (QKB).
* Iceland (IS): 5–6-digit VSK number or 10-digit kennitala with Modulo 11 checksum; live check via Skatturinn. Kennitala identifies the entity; the registry determines VAT registration.
* Australia (AU): 11-digit ABN with Modulo 89 checksum; live ABN status check via the Australian Business Register (ABR). An active ABN does not itself establish GST registration.
* United Arab Emirates (AE): 15-digit Tax Registration Number (TRN); live VAT registration check via the Federal Tax Authority (FTA) register.
* Armenia (AM): 8-digit Taxpayer Identification Number (TIN / ՀՎՀՀ, including /1 VAT suffix notation); live check via the State Revenue Committee (SRC / Petekamutner).
ge ).
* Egypt (EG): 9-digit Tax Registration Number (TRN); live taxpayer registration check via the Egyptian Tax Authority (ETA).
* Taiwan (TW): 8-digit Unified Business Number (UBN / BAN) with statutory Modulo 5 checksum; live verification via the MOEA GCIS Open Data API and Ministry of Finance (MOF) tax register.
* Japan (JP): Qualified Invoice Issuer Registration Number ( T + 13 digits); live check via the National Tax Agency (NTA) Qualified Invoice Issuer Register.
* Singapore (SG): Unique Entity Number (UEN formats A, B, C) or IRAS M GST number; live verification via the ACRA Open Data API and IRAS GST register.
* India (IN): 15-character Goods and Services Tax Identification Number (GSTIN) with statutory base-36 Modulo 36 check character; instant format and checksum verification at checkout, followed by a live GSTN / IRIS IRP portal lookup when the order audit is created.
* South Africa (ZA): 10-digit VAT reference number (starting with 4 ) with statutory SARS Luhn / Modulo 10 checksum; live verification via the South African Revenue Service (SARS).
* Argentina (AR): 11-digit CUIT (prefixes 20, 23, 24, 27, 30, 33, 34 ) with statutory Modulo 11 checksum; live taxpayer and IVA status verification via ARCA (formerly AFIP).
* Kenya (KE): 11-character KRA PIN ( P or A + 9 digits + letter); live check via Kenya Revenue Authority (KRA) iTax register.
* Oman (OM): 10-character VATIN (optional OM + 9 digits + digit/ X ); live check via Oman Tax Authority (OTA) VATIN register.
* Bangladesh (BD): 13-digit or 9-digit e-BIN; live check via National Board of Revenue (NBR).
* Liechtenstein (LI): 5-digit STV MWST number; live check via the Liechtenstein Tax Administration (STV) register.
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 stay domestic within the customs union and keep local tax.
* Monaco & Isle of Man: Monaco uses French VAT numbers (FR); Isle of Man uses UK VAT numbers (GB). Both stay in the same VAT territory as France and the United Kingdom.
* Places outside the EU VAT area: Canary Islands, Ceuta, Melilla, Åland, Jersey, Guernsey, Heligoland, Büsingen, Livigno, Campione d’Italia, and Mount Athos are treated as outside the EU VAT area for place-of-supply, even when the country code looks EU.
* Cross-Border Exports: Verified non-EU businesses (across all supported national registries including GB, CH, NO, RS, TR, BA, MK, AL, IS, AU, AE, AM, GE, EG, TW, JP, SG, IN, ZA, and AR) can receive 0% export VAT. An invalid number for a supported registry keeps shop tax. For countries without live VIESAC validation, an alphanumeric tax number can remove tax as an unverified export with no API call and no VIESAC audit; the merchant confirms that number later.
* Instant Checkout Feedback: Validation runs when the customer leaves the VAT field ( blur / focusout ), with debounce while typing.
* Official registry unavailable: Checkout still completes if VIES, HMRC, or another official VAT registry does not answer in time. For a qualifying cross-border order, the store can finish checkout without VAT and keep checking in the background. The order shows the result when the registry responds.
In WooCommerce → VIESAC you can instead keep the normal tax until the registry confirms the number. A paid virtual order stays on hold by default, so the download is not sent until the registry confirms the number. Physical orders are fulfilled as usual unless you turn that hold on.
1-Click Standard VAT Rate Setup (115 Countries)
Merchants can import and configure the official standard VAT or GST rate for their store base country in WooCommerce with a single click directly from the VIESAC settings page ( WooCommerce -> VIESAC ). VIESAC covers 115 countries and territories across the EU-27, the UK, Europe, the Caucasus, Central Asia, the Middle East, Asia-Pacific, Africa, and the Americas. Existing rates and custom reduced rates remain completely untouched.
Stored Proof & Audit Certificates
Eligible verified B2B orders can store a timestamped VIESAC audit record, registry evidence, and a downloadable PDF certificate in order details, subject to the stored-proof allowance. This is a VIESAC certificate containing registry evidence; it is not a certificate issued by the tax authority.
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, Northern Ireland (XI), and Monaco (MC)
- UK VAT checks via HMRC – Validate Great Britain (GB) VAT numbers through HMRC’s official API
- 24 Non-EU National Tax & Business Registries – Live validation for Switzerland & Liechtenstein (UID & STV), Norway (Brønnøysund), Serbia (Tax Administration), Turkey (GİB e-Fatura), Bosnia and Herzegovina (UINO), North Macedonia (UJP), Albania (QKB), Iceland (Skatturinn), Australia (ABR), United Arab Emirates (FTA), Armenia (SRC), Georgia (Revenue Service), Egypt (ETA), Taiwan (MOEA GCIS & MOF), Japan (NTA Qualified Invoice Register), Singapore (ACRA & IRAS), India (GSTN), South Africa (SARS), Argentina (ARCA), Kenya (KRA), Oman (OTA), and Bangladesh (NBR)
- VAT Territory Aliases – Switzerland–Liechtenstein, Monaco–France, and Isle of Man–United Kingdom stay in one tax territory where the rules require it
- Developer Hooks – Country-aware VAT/company labels, placeholders, visibility and required fields in Classic Checkout; product/destination exemption restrictions in Classic and Blocks; live checks and audits for supported countries stay on the VIESAC path ( docs )
- Instant Checkout Validation – Checks on field blur/focusout with typing debounce
- 1-Click Standard VAT/GST Rate (115 Countries) – Import the official standard rate for the store country across 115 jurisdictions without touching reduced rates
- Country-specific Format & Checksum Checks – Client-side syntax, domestic prefix normalization ( CHE, ABN, TRN, UBN, BAN, UEN, GST, GSTIN, CUIT, CVR, NIP, OIB, PIB ), and statutory checksum validation ( NO, RS, TR, AU, IS, DK, MK, TW, IN, ZA, AR ) without an API key
- Audit Records & Certificates – Timestamped registry evidence and downloadable VIESAC PDF certificates on eligible WooCommerce orders
- Usage Transparency – Separate views for monthly checks (50/month on Free tier), hourly capacity, and stored proof quotas
- HPOS & Blocks Compatible – Works with WooCommerce Custom Order Tables and Checkout Blocks
- Multilingual Ready – 28 languages; works with WPML, Polylang, and TranslatePress
Country coverage & syntax checks
VIESAC includes client-side syntax, prefix normalization, and statutory checksum checks for all 27 EU member states, Northern Ireland (XI), Monaco (MC), and 24 non-EU jurisdictions:
* EU-27: Austria (AT), Belgium (BE), Bulgaria (BG), Croatia (HR), Cyprus (CY), Czechia (CZ), Denmark (DK), Estonia (EE), Finland (FI), France (FR), Germany (DE), Greece (EL/GR), Hungary (HU), Ireland (IE), Italy (IT), Latvia (LV), Lithuania (LT), Luxembourg (LU), Malta (MT), Netherlands (NL), Poland (PL), Portugal (PT), Romania (RO), Slovakia (SK), Slovenia (SI), Spain (ES), Sweden (SE).
* United Kingdom & Europe: Great Britain (GB), Northern Ireland (XI), Switzerland (CH), Liechtenstein (LI), Norway (NO), Iceland (IS), Serbia (RS), Albania (AL), Bosnia and Herzegovina (BA), North Macedonia (MK).
* Middle East & Africa: United Arab Emirates (AE), Egypt (EG), Oman (OM), South Africa (ZA), Kenya (KE).
* Asia-Pacific & Americas: Australia (AU), Japan (JP), Singapore (SG), India (IN), Taiwan (TW), Bangladesh (BD), Armenia (AM), Georgia (GE), Turkey (TR), Argentina (AR).
Getting started
- Install and activate the plugin.
- Go to WooCommerce -> VIESAC.
- Get your free API key from https://viesac.eu/app/api (includes 50 free live validations per month).
- 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.
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:
- Privacy Policy: https://viesac.eu/privacy-policy
- Terms of Service: https://viesac.eu/terms-of-service
For developers
eu/extensions/woocommerce/developers
Hooks can wrap validation, change checkout text, or keep tax on. They cannot replace a live VIESAC result for a supported country, and they cannot skip the audit when that result removes tax. Countries without live VIESAC checks never create a VIESAC audit.