How to Update EU VAT Rates Automatically

One of the large hurdles of launching online businesses selling digital products is to determine what VAT rate to charge a customer. Charging a wrong rate will lead to inaccurate invoices.

Grace Teo

Published July 26, 2020

You may be thinking about launching an online business that sells an ebook, an online course or a subscription service.

Such goods and services are called electronically supplied services (ESS), or commonly known as digital products. They are part of a broader category of telecommunication, broadcasting, and electronic services (TBE). The nature is essentially automated and it involves minimal human intervention to sell. In a separate article, you’ll learn much more about what digital products are.

In the European Union, a value-added tax (VAT) is added to the value of digital products. VAT is meant to tax consumption meaning that the consumer at the very end of a supply chain has to bear the cost. Intermediate businesses of a supply chain are exempt from VAT.

You can most certainly count yourself as a business, since you are selling digital products for profit. Depending on what type of customers you target, you may attract both business customers (B2B) and private consumers (B2C). We’ve covered all EU VAT rules and examples of various B2B and B2C scenarios in a dedicated article.

Applying a wrong or outdated VAT rate in customer invoices will lead to confusion and a misaligned VAT remittance to tax offices. If you charged too much VAT, your customer may demand a refund and if you charged too little VAT, you owe the tax office more than you’ve collected from your customer.

VAT Rate Based on Place of Supply

In order to apply the accurate VAT in invoices, you have to determine your customer’s location and charge VAT at the rate applicable to that location, at the point of sale (the legal term for that is the place of supply).

You can use Vatstack’s endpoint for quotes to automatically determine the applicable tax treatment. All VAT rules are centralized in the Quotes API so you don’t have to implement them in your application at all.

We match your business’s information against the information you provide about a customer. The response contains actionable data for a compliant charge, ensuring that the correct VAT rate is applied under all circumstances.

Besides that, customers have to be given the opportunity to provide their VAT number. Customers who are registered for VAT are generally exempt from being surcharged. If their VAT number was validated, you will not charge VAT for digital products. Of course, you can validate VAT numbers with our Validations API and attach it to a quote request.

How to Keep VAT Rates Updated

VAT rates usually do not change often but due to unforeseen circumstances such as a poor economic situation or a change of regulation, new rates may be introduced by governments. This is seen with the current lowering of German standard and reduced rates until December 31, 2020. It is your duty to keep your invoices accurate.

To do so, you should save applicable VAT rates with your payment provider or with your application. Payment providers such as Stripe let you store tax rates that can be attached to a subscription or to an invoice. Stripe’s tax rates are maintained manually but you can set up a process that pulls rates automatically from Vatstack.

Vatstack’s centralized rates are available specifically for this purpose. We maintain rates and keep up with regulatory changes.

You can use our endpoint for rates to fetch VAT rates at a regular interval. Any rate changes announced by governments are published at exactly midnight local time.

Rate changes tend to become effective at the beginning of a month or a quarter. Your safest bet, therefore, is to pull our rates shortly after midnight each month and feed them into your application.

Here is an example if you pull VAT rates for all EU Member States:

{
  "has_more": false,
  "rates": [
    {
      "abbreviation": "UID",
      "categories": {
        "audiobook": 10,
        "broadcasting": 10,
        "ebook": 10,
        "eperiodical": 10,
        "eservice": 20,
        "telecommunication": 20
      },
      "country_code": "AT",
      "country_name": "Austria",
      "currency": "EUR",
      "local_name": "Umsatzsteuer-Identifikationsnummer",
      "member_state": true,
      "reduced_rates": [
        10,
        13
      ],
      "standard_rate": 20,
      "vat_abbreviation": "MwSt.",
      "vat_local_name": "Mehrwertsteuer"
    },
    ...
  ],
  "rates_count": 28
}

Compare each country’s VAT rate iteratively. If there is a difference, you perform an update with your payment provider or with your application. In Stripe, you have to archive the outdated tax rate and create a new tax rate object. We recommend to fill the jurisdiction field and compare with the rate’s country_code. This allows you to identify and compare with Stripe’s tax rate object easily.

Should there be subscriptions attached to the old tax rate, you have to amend the tax rate ID in those subscriptions by linking to the newly created one.

Upcoming invoices for a subscription are then created with the new tax rate ID attached.

Both the rates and the quotes endpoints are free of charge and you can start using them right away. Review our pricing plan to learn about the included features.

Selling  a subscription? an online course? a hosting plan? an ebook?