EU VAT Number

Overview

↑ Back to top

In this support document for the EU VAT Number extension, the abbreviation EU means European Union.

EU VAT Number for WooCommerce allows you to:

  • Collect and validate EU VAT numbers at Checkout
  • Exempt businesses from paying VAT (Value Added Tax), if necessary
  • Collect and validate user location in B2C transactions
  • Handle EU Tax requirements for digital goods

This documentation is meant to help with setting up tax rates in the WooCommerce settings and how the platform handles taxes/VAT/GST based on these settings, but not when or what to charge.

We’re not tax professionals so our advice is how to use our software. For specific advice when it comes to what or when to charge tax/VAT/GST etc, we recommend consulting with a tax professional or an accountant on what may be your best options.

Each business is unique, and there’s no way we can cover every possibility.

Requirements

↑ Back to top
  • WooCommerce version 8.5 or higher
  • WordPress version 6.3 or higher
  • PHP version 7.2 or higher

Installation

↑ Back to top
  1. Purchase the product from WooCommerce.com
  2. Download the ZIP file from your WooCommerce.com dashboard
  3. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
  4. Click Install Now and then Activate.
  5. Read on to learn how to set up and configure the product.

More information at: Install and Activate Plugins/Extensions.

Setup and Configuration

↑ Back to top
  1. Go to WooCommerce > Settings > Tax and scroll down the page.
WooCommerce > Settings > Tax > Tax options settings with EU VAT Number extension active

EU VAT Number Handling

↑ Back to top
  • VAT Number Field Label – Shown to customers at checkout. The default is VAT Number.
  • VAT Number Field Description – Shown below the VAT field on the checkout page when the field is in focus. The default is blank.
  • Remove VAT for Businesses in Your Base Country – If enabled, businesses with a valid number in your base country will be VAT exempt.
  • Failed Validation Handling – Tell the plugin what to do if a VAT number fails validation.
    • Reject the order and show an error
    • Accept the order without removing VAT
    • Accept the order and remove VAT as normal
  • Enable B2B Transactions –  This will force users to check out with a VAT Number, useful for sites that transact purely from B2B.

EU VAT Digital Goods Handling

↑ Back to top

EU VAT laws for digital goods changed on January 1, 2015, affecting B2C transactions only. VAT on digital goods must be calculated based on customer location, and store owners need to collect evidence of this via IP address and Billing Address.

There are two settings:

  • Tax Classes for Digital Goods – Select which of your Tax Classes is specifically for digital goods. This ensures the user is charged tax based on their Billing Address and not the base or shipping address that physical good taxes are often calculated with.
  • Collect and Validate Evidence – Tick the box to validate the user’s IP address against their billing country. If they mismatch, the user is required to confirm their address is correct (self-declaration). Data is stored in the order.

4. Save changes.

Set up EU VAT rates for digital goods

↑ Back to top

For EU VAT on digital goods, you need to input VAT rates into WooCommerce. We have a guide for this at: Setting up EU VAT Rates for Digital Products.

Manage VAT number

↑ Back to top

Customers can add their VAT number on their My account page. The number will populate on Checkout page if the Checkout shortcode is used but not with the Checkout block at this time.

Checkout Process

↑ Back to top

The checkout process varies depending on the type of customer. Customers located outside the EU will not see any VAT fields because they are out of scope for EU VAT.

EU Based B2B Transactions

↑ Back to top

Businesses fill out the VAT Number field that appears in the billing section of checkout:

The standard WooCommerce checkout fields now has the EU VAT Number added field at the bottom of the Billing details. The field label and description can be edited in the settings. The description becomes visible when the field is focused.

The system then validates the number via our EU VAT Number Validation API, which takes data from VIES. If it matches, a VAT exemption is done automatically. If it fails to validate, the user sees an error:

An error message is shown when Failed Validation Handling is set to Reject

For UK based numbers: if you get the “invalid VAT number” error, please add the prefix GB and try again (example: GB00000000190).

EU Based B2C Transactions

↑ Back to top

If you configured the plugin to handle EU VAT Digital Goods for rules implemented in January 2015, the checkout process differs slightly if the cart contains a digital (non-shippable, virtual) product.

First, the IP address is validated against the billing country behind the scenes.

  • If this matches, it is stored as evidence of the user’s location.
  • If it doesn’t match, a checkbox to confirm location appears.
WooCommerce checkout showing IP address validation checkbox

This is required to place the order. Failure to confirm returns an error:

An error message is shown when the self-declare box isn’t checked

Customers can view and modify their VAT number on their My Accounts page. The VAT number country must match the country in the billing address.

Viewing Collected Data

↑ Back to top

Collected data displays in several locations in Admin.

Order list – viewing collected data

↑ Back to top

In the order list, it shows an overview of the collected data:

Order view showing a Processing order with a validated EU VAT number

Individual order view metabox – viewing collected data

↑ Back to top

In the order view, it shows a meta box with the information:

Order view widget showing Non-B2B validated customer order
Order view widget showing B2B validated customer order

Individual order view customer billing details – viewing collected data

↑ Back to top

In the order addresses, VAT Numbers are automatically appended to the end of formatted addresses:

Billing address in the order view showing the VAT Number.
The label is defined in the “VAT Number Field Label” setting

Reports

↑ Back to top

EU VAT Number adds two reports to the reporting section at WooCommerce > Reports that may be useful.

  • Reports > Taxes > EC Sales List – Lists countries and order amounts from EU-based B2B customers grouped by VAT number.
  • Reports > Taxes > EU VAT by State – Shows taxes collected and order amounts grouped by Country.

Each report has pre-set ranges to view data by quarter.

Brexit

↑ Back to top

Now that the United Kingdom (UK) has officially left the European Union (EU), we’ve assembled some resources for businesses using WooCommerce and trading into or out of the UK, to help navigate some of the changes that you’ll encounter from now on.

For UK based numbers: if you get the “invalid VAT number” error, you may need to add the prefix GB and try again (example: GB00000000190).

EU VAT July 2021 changes, eCommerce, and WooCommerce

↑ Back to top

The European Union (EU) introduced new regulations related to Value Added Tax (VAT) on July 1, 2021. Merchants selling across borders within the EU or importing to the EU need to comply with the new regulations.

Troubleshooting

↑ Back to top
  • Ensure the latest version is installed.
  • If you are seeing an error message saying that you have entered an invalid VAT number, enter it and the country it is from on the VIES database to confirm it is valid.
  • If VAT numbers from a specific country are not working – check the Vies Self Monitoring tool(sometimes specific countries are down).
  • Confirm there isn’t a theme or plugin conflict.
  • Check for any other security or firewall plugins that may be blocking the extension from validating the VAT number with VIES.
  • If only one number fails while others validate, try clearing transients from under WP Admin > WooCommerce > Status > Tools.

Customization

↑ Back to top
Note: We are unable to provide support for customizations under our Support Policy. If you are unfamiliar with code/templates and resolving potential conflicts, select a WooExpert or Developer for assistance.

VAT Numbers meta field

↑ Back to top

VAT Numbers are stored in a meta field named _billing_vat_number (and _vat_number for backward compatibility). The function wc_eu_vat_get_vat_from_order($order) takes care of retrieving the VAT regardless of how it is stored.

Choosing what countries will see the VAT number field

↑ Back to top

You can use the woocommerce_eu_vat_number_country_codes filter to choose what countries the VAT number field should be shown for
— here’s a working example in which the field will only be shown to customers with a billing address in Belgium:

add_filter( 'woocommerce_eu_vat_number_country_codes', 'woo_custom_eu_vat_number_country_codes' );
function woo_custom_eu_vat_number_country_codes( $vat_countries ) {
// only show field for users in BE
return array( 'BE' );
}

This can also be used for the reverse, to remove select countries from the list— here’s a working example for removing Sweden and United Kingdom:

add_filter( 'woocommerce_eu_vat_number_country_codes', 'woo_custom_eu_vat_number_country_codes' );
function woo_custom_eu_vat_number_country_codes( $vat_countries ) {
$display_vat = array_diff($vat_countries, ['SE', 'GB']); // remove countries in second array
return array_values($display_vat); // reindex array
}

Reorder EU VAT field on checkout page

↑ Back to top

By default, the EU VAT field is placed at the bottom of the normal billing fields. If you’d prefer to move it to a new location see the tutorial linked to for a walkthrough of how to do so.

Questions and Support

↑ Back to top

Something missing from this documentation? Do you still have questions and need assistance?

  • Have a question before you buy this extension? Please fill out this pre-sales form – please include the name of this extension in your query.
  • Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown