Merge remote-tracking branch 'ahmed/master'

This commit is contained in:
Nico Schottelius 2020-02-23 17:17:08 +01:00
commit 2900844f63
17 changed files with 841 additions and 20 deletions

55
abk-hacks.py Normal file
View file

@ -0,0 +1,55 @@
"""
investigate into a simple python function that maps an ldap user to a vat percentage. Basically you need to
lookup the customer address, check if she is a business/registered tax number and if not apply the local
vat
"""
import iso3166
import datetime
from csv import DictReader
def get_vat(street_address, city, postal_code, country, vat_number=None):
vat = {
'Austria': [
{'period': '1984-01-01/', 'rate': 0.2},
{'period': '1976-01-01/1984-01-01', 'rate': 0.18},
{'period': '1973-01-01/1976-01-01', 'rate': 0.16},
]
}
return iso3166.countries.get(country)
# return iso3166.countries_by_name[country]
def main():
# vat = get_vat(
# street_address='82 Nasheman-e-Iqbal near Wapda Town',
# city='Lahore',
# postal_code=53700,
# country='Pakistan',
# )
# print(vat)
vat_rates = {}
with open('vat_rates.csv', newline='') as csvfile:
reader = DictReader(csvfile)
for row in reader:
territory_codes = row['territory_codes'].split('\n')
for code in territory_codes:
if code not in vat_rates:
vat_rates[code] = {}
start_date = row['start_date']
stop_data = row['stop_date']
time_period = f'{start_date}|{stop_data}'
r = row.copy()
del r['start_date']
del r['stop_date']
del r['territory_codes']
vat_rates[code][time_period] = r
print(vat_rates)
if __name__ == '__main__':
main()

View file

@ -0,0 +1,46 @@
import importlib
import sys
import os
from os.path import join as join_path
from xmlrpc.client import ServerProxy as RPCClient
root = os.path.dirname(os.getcwd())
sys.path.append(join_path(root, 'uncloud'))
secrets = importlib.import_module('uncloud.secrets')
class OpenNebula:
def __init__(self, url, session_string):
self.session_string = session_string
self.client = RPCClient(secrets.OPENNEBULA_URL)
def create_user(self, username, password, authentication_driver='', group_id=None):
# https://docs.opennebula.org/5.10/integration/system_interfaces/api.html#one-user-allocate
if group_id is None:
group_id = []
return self.client.one.user.allocate(
self.session_string,
username,
password,
authentication_driver,
group_id
)
def chmod(self, vm_id, user_id=-1, group_id=-1):
# https://docs.opennebula.org/5.10/integration/system_interfaces/api.html#one-vm-chown
return self.client.one.vm.chown(self.session_string, vm_id, user_id, group_id)
one = OpenNebula(secrets.OPENNEBULA_URL, secrets.OPENNEBULA_USER_PASS)
# Create User in OpenNebula
# success, response, *_ = one.create_user(username='meow12345', password='hello_world')
# print(success, response)
# Change owner of a VM
# success, response, *_ = one.chmod(vm_id=25589, user_id=706)
# print(success, response)

View file

@ -1,7 +1,3 @@
xmltodict
djangorestframework
django
done
stripe stripe
flask flask
Flask-RESTful Flask-RESTful

View file

@ -0,0 +1,11 @@
import uuid
from django.db import models
from django.contrib.auth import get_user_model
class VM(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
vmid = models.IntegerField()
owner = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
data = models.CharField(max_length=65536, null=True)

View file

@ -0,0 +1,59 @@
import json
from rest_framework import generics
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from .models import VM
from .serializers import VMSerializer
class VMList(generics.ListAPIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
permission_classes = [IsAuthenticated, IsAdminUser]
queryset = VM.objects.all()
serializer_class = VMSerializer
class VMDetail(generics.RetrieveAPIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
permission_classes = [IsAuthenticated, IsAdminUser]
lookup_field = 'uuid'
queryset = VM.objects.all()
serializer_class = VMSerializer
class UserVMList(generics.ListAPIView):
authentication_classes = [SessionAuthentication, BasicAuthentication]
permission_classes = [IsAuthenticated]
serializer_class = VMSerializer
def get_queryset(self):
user_email = self.request.user.ldap_user.attrs.data['mail']
vms = []
for mail in user_email:
vms += VM.objects.filter(owner__username=mail)
for vm in vms:
data = json.loads(vm.data)
vm_template = data['TEMPLATE']
vm.data = {
'cpu': vm_template['VCPU'],
'ram': vm_template['MEMORY'],
'nic': vm_template['NIC'],
'disks': vm_template['DISK']
}
return vms
#######################################
# Following for quick experimentation #
#######################################
# from django.http import HttpResponse
#
# def test(request):
# user_email = request.user.ldap_user.attrs.data['mail']
# vms = []
# for mail in user_email:
# vms += VM.objects.filter(owner__username=mail)
# return HttpResponse("Hello World")

View file

@ -0,0 +1,125 @@
import uuid
from django.db import models
from django.contrib.auth import get_user_model
# Product in DB vs. product in code
# DB:
# - need to define params (+param types) in db -> messy?
# - get /products/ is easy / automatic
#
# code
# - can have serializer/verification of fields easily in DRF
# - can have per product side effects / extra code running
# - might (??) make features easier??
# - how to setup / query the recurring period (?)
# - could get products list via getattr() + re ...Product() classes
# -> this could include the url for ordering => /order/vm_snapshot (params)
# ---> this would work with urlpatterns
# Combination: create specific product in DB (?)
# - a table per product (?) with 1 entry?
# Orders
# define state in DB
# select a price from a product => product might change, order stays
# params:
# - the product uuid or name (?) => productuuid
# - the product parameters => for each feature
#
# logs
# Should have a log = ... => 1:n field for most models!
class Product(models.Model):
# override these fields by default
description = ""
recurring_period = "not_recurring"
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
status = models.CharField(
max_length=256, choices=(
('pending', 'Pending'),
('being_created', 'Being created'),
('created_active', 'Created'),
('deleted', 'Deleted')
),
default='pending'
)
def __str__(self):
return "{}".format(self.name)
class VMSnapshotProduct(Product):
price_per_gb_ssd = 0.35
price_per_gb_hdd = 1.5/100
sample_ssd = 10
sample_hdd = 100
def recurring_price(self):
return 0
def one_time_price(self):
return 0
@classmethod
def sample_price(cls):
return cls.sample_ssd * cls.price_per_gb_ssd + cls.sample_hdd * cls.price_per_gb_hdd
description = "Create snapshot of a VM"
recurring_period = "monthly"
@classmethod
def pricing_model(cls):
return """
Pricing is on monthly basis and storage prices are equivalent to the storage
price in the VM.
Price per GB SSD is: {}
Price per GB HDD is: {}
Sample price for a VM with {} GB SSD and {} GB HDD VM is: {}.
""".format(cls.price_per_gb_ssd, cls.price_per_gb_hdd,
cls.sample_ssd, cls.sample_hdd, cls.sample_price())
gb_ssd = models.FloatField()
gb_hdd = models.FloatField()
class Feature(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=256)
recurring_price = models.FloatField(default=0)
one_time_price = models.FloatField()
product = models.ForeignKey(Product, on_delete=models.CASCADE)
# params for "cpu": cpu_count -> int
# each feature can only have one parameters
# could call this "value" and set whether it is user usable
# has_value = True/False
# value = string -> int (?)
# value_int
# value_str
# value_float
def __str__(self):
return "'{}' - '{}'".format(self.product, self.name)
class Order(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
owner = models.ForeignKey(get_user_model(),
on_delete=models.CASCADE)
product = models.ForeignKey(Product,
on_delete=models.CASCADE)
class VMSnapshotOrder(Order):
pass

View file

@ -0,0 +1,83 @@
from django.shortcuts import render
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from rest_framework import viewsets, permissions, generics
from .serializers import UserSerializer, GroupSerializer
from rest_framework.views import APIView
from rest_framework.response import Response
class CreditCardViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows credit cards to be listed
"""
queryset = get_user_model().objects.all().order_by('-date_joined')
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated]
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = get_user_model().objects.all().order_by('-date_joined')
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated]
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
permission_classes = [permissions.IsAuthenticated]
class GroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows groups to be viewed or edited.
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
permission_classes = [permissions.IsAuthenticated]
# POST /vm/snapshot/ vmuuid=... => create snapshot, returns snapshot uuid
# GET /vm/snapshot => list
# DEL /vm/snapshot/<uuid:uuid> => delete
# create-list -> get, post => ListCreateAPIView
# del on other!
class VMSnapshotView(generics.ListCreateAPIView):
#lookup_field = 'uuid'
permission_classes = [permissions.IsAuthenticated]
import inspect
import sys
import re
# Next: create /order/<productname> urls
# Next: strip off "Product" at the end
class ProductsView(APIView):
def get(self, request, format=None):
clsmembers = inspect.getmembers(sys.modules['uncloud_api.models'], inspect.isclass)
products = []
for name, c in clsmembers:
# Include everything that ends in Product, but not Product itself
m = re.match(r'(?P<pname>.+)Product$', name)
if m:
products.append({
'name': m.group('pname'),
'description': c.description,
'recurring_period': c.recurring_period,
'pricing_model': c.pricing_model()
}
)
return Response(products)

11
notes-abk.md Normal file
View file

@ -0,0 +1,11 @@
## TODO 2020-02-22
* ~~move the current rest api to /opennebula~~
* ~~make the /opennebula api only accessible by an admin account~~
* ~~create a new filtered api on /vm/list that~~
* ~~a) requires authentication~~
* ~~b) only shows the VMs of the current user~~
* ~~the new api should not contain all details, but: cpus (as read by the vcpu field), ram, ips, disks~~
* ~~also make a (random) uuid the primary key for VMs - everything in this uncloud hack will use uuids as the id~~
* ~~still expose the opennebula id as opennebula_id~~
* ~~note put all secrets/configs into uncloud.secrets - I added a sample file into the repo~~

6
plan.org Normal file
View file

@ -0,0 +1,6 @@
* TODO register CC
* TODO list products
* ahmed
** schemas
*** field: is_valid? - used by schemas
*** definition of a "schema"

2
uncloud/.gitignore vendored
View file

@ -1 +1,3 @@
db.sqlite3 db.sqlite3
uncloud/secrets.py
debug.log

View file

@ -0,0 +1,23 @@
# Generated by Django 3.0.3 on 2020-02-22 07:13
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('opennebula', '0003_auto_20200221_1113'),
]
operations = [
migrations.RemoveField(
model_name='vm',
name='id',
),
migrations.AddField(
model_name='vm',
name='uuid',
field=models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False),
),
]

View file

@ -3,4 +3,3 @@ djangorestframework
django-auth-ldap django-auth-ldap
stripe stripe
xmltodict xmltodict
psycopg2

View file

@ -1,15 +1,14 @@
# Live/test key from stripe # Live/test key from stripe
STRIPE_KEY="" STRIPE_KEY = ''
# XML-RPC interface of opennebula # XML-RPC interface of opennebula
OPENNEBULA_URL='https://opennebula.ungleich.ch:2634/RPC2' OPENNEBULA_URL = 'https://opennebula.ungleich.ch:2634/RPC2'
# user:pass for accessing opennebula # user:pass for accessing opennebula
OPENNEBULA_USER_PASS='user:password' OPENNEBULA_USER_PASS = 'user:password'
POSTGRESQL_DB_NAME="uncloud" POSTGRESQL_DB_NAME="uncloud"
# See https://django-auth-ldap.readthedocs.io/en/latest/authentication.html # See https://django-auth-ldap.readthedocs.io/en/latest/authentication.html
LDAP_ADMIN_DN="" LDAP_ADMIN_DN=""
LDAP_ADMIN_PASSWORD="" LDAP_ADMIN_PASSWORD=""

View file

@ -12,9 +12,19 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
import os import os
# Uncommitted file with secrets # Uncommitted file with secrets
import uncloud.secrets import uncloud.secrets
import stripe
import ldap
import uncloud.secrets as secrets
from django_auth_ldap.config import LDAPSearch
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@ -101,10 +111,14 @@ AUTH_PASSWORD_VALIDATORS = [
################################################################################ ################################################################################
# AUTH/LDAP # AUTH/LDAP
<<<<<<< HEAD
import ldap import ldap
from django_auth_ldap.config import LDAPSearch from django_auth_ldap.config import LDAPSearch
AUTH_LDAP_SERVER_URI = uncloud.secrets.LDAP_SERVER_URI AUTH_LDAP_SERVER_URI = uncloud.secrets.LDAP_SERVER_URI
=======
AUTH_LDAP_SERVER_URI = "ldaps://ldap1.ungleich.ch,ldaps://ldap2.ungleich.ch"
>>>>>>> ahmed/master
AUTH_LDAP_USER_ATTR_MAP = { AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName", "first_name": "givenName",
@ -112,8 +126,15 @@ AUTH_LDAP_USER_ATTR_MAP = {
"email": "mail" "email": "mail"
} }
<<<<<<< HEAD
AUTH_LDAP_BIND_DN = uncloud.secrets.LDAP_ADMIN_DN AUTH_LDAP_BIND_DN = uncloud.secrets.LDAP_ADMIN_DN
AUTH_LDAP_BIND_PASSWORD = uncloud.secrets.LDAP_ADMIN_PASSWORD AUTH_LDAP_BIND_PASSWORD = uncloud.secrets.LDAP_ADMIN_PASSWORD
=======
AUTH_LDAP_BIND_DN = secrets.AUTH_LDAP_BIND_DN
AUTH_LDAP_BIND_PASSWORD = secrets.AUTH_LDAP_BIND_PASSWORD
>>>>>>> ahmed/master
AUTH_LDAP_USER_SEARCH = LDAPSearch( AUTH_LDAP_USER_SEARCH = LDAPSearch(
"dc=ungleich,dc=ch", ldap.SCOPE_SUBTREE, "(uid=%(user)s)" "dc=ungleich,dc=ch", ldap.SCOPE_SUBTREE, "(uid=%(user)s)"
) )
@ -133,7 +154,6 @@ AUTH_USER_MODEL = 'uncloud_auth.User'
# AUTH/REST # AUTH/REST
REST_FRAMEWORK = { REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [ 'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.SessionAuthentication',
] ]
} }
@ -159,12 +179,34 @@ USE_TZ = True
STATIC_URL = '/static/' STATIC_URL = '/static/'
stripe.api_key = secrets.STRIPE_KEY
# FIXME: not sure if we really need this
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'debug.log',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'django_auth_ldap': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True
}
},
}
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases # https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.postgresql', 'ENGINE': 'django.db.backends.postgresql',

View file

@ -16,13 +16,6 @@ class Command(BaseCommand):
print("Snapshotting") print("Snapshotting")
#getattr(self, options['command'])(**options) #getattr(self, options['command'])(**options)
def get_disks_of_vm(self, vmuuid):
""" Returns the disks used by a VM in the format
( ceph_name, size )
"""
pass
@classmethod @classmethod
def monitor(cls, **_): def monitor(cls, **_):
while True: while True:

View file

@ -0,0 +1,46 @@
# Generated by Django 3.0.3 on 2020-02-22 07:19
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('uncloud_api', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='VMSnapshotOrder',
fields=[
('order_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='uncloud_api.Order')),
],
bases=('uncloud_api.order',),
),
migrations.CreateModel(
name='VMSnapshotProduct',
fields=[
('product_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='uncloud_api.Product')),
('gb_ssd', models.FloatField()),
('gb_hdd', models.FloatField()),
],
bases=('uncloud_api.product',),
),
migrations.DeleteModel(
name='OrderReference',
),
migrations.RemoveField(
model_name='product',
name='name',
),
migrations.RemoveField(
model_name='product',
name='recurring_period',
),
migrations.AddField(
model_name='product',
name='status',
field=models.CharField(choices=[('pending', 'Pending'), ('being_created', 'Being created'), ('created_active', 'Created'), ('deleted', 'Deleted')], default='pending', max_length=256),
),
]

325
vat_rates.csv Normal file
View file

@ -0,0 +1,325 @@
start_date,stop_date,territory_codes,currency_code,rate,rate_type,description
2011-01-04,,AI,XCD,0,standard,Anguilla (British overseas territory) is exempted of VAT.
1984-01-01,,AT,EUR,0.2,standard,Austria (member state) standard VAT rate.
1976-01-01,1984-01-01,AT,EUR,0.18,standard,
1973-01-01,1976-01-01,AT,EUR,0.16,standard,
1984-01-01,,"AT-6691
DE-87491",EUR,0.19,standard,Jungholz (Austrian town) special VAT rate.
1984-01-01,,"AT-6991
AT-6992
AT-6993
DE-87567
DE-87568
DE-87569",EUR,0.19,standard,Mittelberg (Austrian town) special VAT rate.
1996-01-01,,BE,EUR,0.21,standard,Belgium (member state) standard VAT rate.
1994-01-01,1996-01-01,BE,EUR,0.205,standard,
1992-04-01,1994-01-01,BE,EUR,0.195,standard,
1983-01-01,1992-04-01,BE,EUR,0.19,standard,
1981-07-01,1983-01-01,BE,EUR,0.17,standard,
1978-07-01,1981-07-01,BE,EUR,0.16,standard,
1971-07-01,1978-07-01,BE,EUR,0.18,standard,
1999-01-01,,BG,BGN,0.2,standard,Bulgaria (member state) standard VAT rate.
1996-07-01,1999-01-01,BG,BGN,0.22,standard,
1994-04-01,1996-07-01,BG,BGN,0.18,standard,
2011-01-04,,BM,BMD,0,standard,Bermuda (British overseas territory) is exempted of VAT.
2014-01-13,,"CY
GB-BFPO 57
GB-BFPO 58
GB-BFPO 59
UK-BFPO 57
UK-BFPO 58
UK-BFPO 59",EUR,0.19,standard,"Cyprus (member state) standard VAT rate.
Akrotiri and Dhekelia (British overseas territory) is subjected to Cyprus' standard VAT rate."
2013-01-14,2014-01-13,CY,EUR,0.18,standard,
2012-03-01,2013-01-14,CY,EUR,0.17,standard,
2003-01-01,2012-03-01,CY,EUR,0.15,standard,
2002-07-01,2003-01-01,CY,EUR,0.13,standard,
2000-07-01,2002-07-01,CY,EUR,0.1,standard,
1993-10-01,2000-07-01,CY,EUR,0.08,standard,
1992-07-01,1993-10-01,CY,EUR,0.05,standard,
2013-01-01,,CZ,CZK,0.21,standard,Czech Republic (member state) standard VAT rate.
2010-01-01,2013-01-01,CZ,CZK,0.2,standard,
2004-05-01,2010-01-01,CZ,CZK,0.19,standard,
1995-01-01,2004-05-01,CZ,CZK,0.22,standard,
1993-01-01,1995-01-01,CZ,CZK,0.23,standard,
2007-01-01,,DE,EUR,0.19,standard,Germany (member state) standard VAT rate.
1998-04-01,2007-01-01,DE,EUR,0.16,standard,
1993-01-01,1998-04-01,DE,EUR,0.15,standard,
1983-07-01,1993-01-01,DE,EUR,0.14,standard,
1979-07-01,1983-07-01,DE,EUR,0.13,standard,
1978-01-01,1979-07-01,DE,EUR,0.12,standard,
1968-07-01,1978-01-01,DE,EUR,0.11,standard,
1968-01-01,1968-07-01,DE,EUR,0.1,standard,
2007-01-01,,DE-27498,EUR,0,standard,Heligoland (German island) is exempted of VAT.
2007-01-01,,"DE-78266
CH-8238",EUR,0,standard,Busingen am Hochrhein (German territory) is exempted of VAT.
1992-01-01,,DK,DKK,0.25,standard,Denmark (member state) standard VAT rate.
1980-06-30,1992-01-01,DK,DKK,0.22,standard,
1978-10-30,1980-06-30,DK,DKK,0.2025,standard,
1977-10-03,1978-10-30,DK,DKK,0.18,standard,
1970-06-29,1977-10-03,DK,DKK,0.15,standard,
1968-04-01,1970-06-29,DK,DKK,0.125,standard,
1967-07-03,1968-04-01,DK,DKK,0.1,standard,
2009-07-01,,EE,EUR,0.2,standard,Estonia (member state) standard VAT rate.
1993-01-01,2009-07-01,EE,EUR,0.18,standard,
1991-01-01,1993-01-01,EE,EUR,0.1,standard,
2016-06-01,,"GR
EL",EUR,0.24,standard,Greece (member state) standard VAT rate.
2010-07-01,2016-06-01,"GR
EL",EUR,0.23,standard,
2010-03-15,2010-07-01,"GR
EL",EUR,0.21,standard,
2005-04-01,2010-03-15,"GR
EL",EUR,0.19,standard,
1990-04-28,2005-04-01,"GR
EL",EUR,0.18,standard,
1988-01-01,1990-04-28,"GR
EL",EUR,0.16,standard,
1987-01-01,1988-01-01,"GR
EL",EUR,0.18,standard,
2012-09-01,,ES,EUR,0.21,standard,Spain (member state) standard VAT rate.
2010-07-01,2012-09-01,ES,EUR,0.18,standard,
1995-01-01,2010-07-01,ES,EUR,0.16,standard,
1992-08-01,1995-01-01,ES,EUR,0.15,standard,
1992-01-01,1992-08-01,ES,EUR,0.13,standard,
1986-01-01,1992-01-01,ES,EUR,0.12,standard,
2012-09-01,,"ES-CN
ES-GC
ES-TF
IC",EUR,0,standard,Canary Islands (Spanish autonomous community) is exempted of VAT.
2012-09-01,,"ES-ML
ES-CE
EA",EUR,0,standard,Ceuta and Melilla (Spanish autonomous cities) is exempted of VAT.
2013-01-01,,FI,EUR,0.24,standard,Finland (member state) standard VAT rate.
2010-07-01,2013-01-01,FI,EUR,0.23,standard,
1994-06-01,2010-07-01,FI,EUR,0.22,standard,
2013-01-01,,"FI-01
AX",EUR,0,standard,Aland Islands (Finish autonomous region) is exempted of VAT.
2011-01-04,,FK,FKP,0,standard,Falkland Islands (British overseas territory) is exempted of VAT.
1992-01-01,,FO,DKK,0,standard,Faroe Islands (Danish autonomous country) is exempted of VAT.
2014-01-01,,"FR
MC",EUR,0.2,standard,"France (member state) standard VAT rate.
Monaco (sovereign city-state) is member of the EU VAT area and subjected to France's standard VAT rate."
2000-04-01,2014-01-01,"FR
MC",EUR,0.196,standard,
1995-08-01,2000-04-01,"FR
MC",EUR,0.206,standard,
1982-07-01,1995-08-01,"FR
MC",EUR,0.186,standard,
1977-01-01,1982-07-01,"FR
MC",EUR,0.176,standard,
1973-01-01,1977-01-01,"FR
MC",EUR,0.2,standard,
1970-01-01,1973-01-01,"FR
MC",EUR,0.23,standard,
1968-12-01,1970-01-01,"FR
MC",EUR,0.19,standard,
1968-01-01,1968-12-01,"FR
MC",EUR,0.1666,standard,
2014-01-01,,"FR-BL
BL",EUR,0,standard,Saint Barthelemy (French overseas collectivity) is exempted of VAT.
2014-01-01,,"FR-GF
GF",EUR,0,standard,Guiana (French overseas department) is exempted of VAT.
2014-01-01,,"FR-GP
GP",EUR,0.085,standard,Guadeloupe (French overseas department) special VAT rate.
2014-01-01,,"FR-MF
MF",EUR,0,standard,Saint Martin (French overseas collectivity) is subjected to France's standard VAT rate.
2014-01-01,,"FR-MQ
MQ",EUR,0.085,standard,Martinique (French overseas department) special VAT rate.
2014-01-01,,"FR-NC
NC",XPF,0,standard,New Caledonia (French special collectivity) is exempted of VAT.
2014-01-01,,"FR-PF
PF",XPF,0,standard,French Polynesia (French overseas collectivity) is exempted of VAT.
2014-01-01,,"FR-PM
PM",EUR,0,standard,Saint Pierre and Miquelon (French overseas collectivity) is exempted of VAT.
2014-01-01,,"FR-RE
RE",EUR,0.085,standard,Reunion (French overseas department) special VAT rate.
2014-01-01,,"FR-TF
TF",EUR,0,standard,French Southern and Antarctic Lands (French overseas territory) is exempted of VAT.
2014-01-01,,"FR-WF
WF",XPF,0,standard,Wallis and Futuna (French overseas collectivity) is exempted of VAT.
2014-01-01,,"FR-YT
YT",EUR,0,standard,Mayotte (French overseas department) is exempted of VAT.
2011-01-04,,GG,GBP,0,standard,Guernsey (British Crown dependency) is exempted of VAT.
2011-01-04,,GI,GIP,0,standard,Gibraltar (British overseas territory) is exempted of VAT.
1992-01-01,,GL,DKK,0,standard,Greenland (Danish autonomous country) is exempted of VAT.
2010-07-01,2016-06-01,"GR-34007
EL-34007",EUR,0.16,standard,Skyros (Greek island) special VAT rate.
2010-07-01,2016-06-01,"GR-37002
GR-37003
GR-37005
EL-37002
EL-37003
EL-37005",EUR,0.16,standard,Northern Sporades (Greek islands) special VAT rate.
2010-07-01,2016-06-01,"GR-64004
EL-64004",EUR,0.16,standard,Thasos (Greek island) special VAT rate.
2010-07-01,2016-06-01,"GR-68002
EL-68002",EUR,0.16,standard,Samothrace (Greek island) special VAT rate.
2010-07-01,,"GR-69
EL-69",EUR,0,standard,Mount Athos (Greek self-governed part) is exempted of VAT.
2010-07-01,2016-06-01,"GR-81
EL-81",EUR,0.16,standard,Dodecanese (Greek department) special VAT rate.
2010-07-01,2016-06-01,"GR-82
EL-82",EUR,0.16,standard,Cyclades (Greek department) special VAT rate.
2010-07-01,2016-06-01,"GR-83
EL-83",EUR,0.16,standard,Lesbos (Greek department) special VAT rate.
2010-07-01,2016-06-01,"GR-84
EL-84",EUR,0.16,standard,Samos (Greek department) special VAT rate.
2010-07-01,2016-06-01,"GR-85
EL-85",EUR,0.16,standard,Chios (Greek department) special VAT rate.
2011-01-04,,GS,GBP,0,standard,South Georgia and the South Sandwich Islands (British overseas territory) is exempted of VAT.
2012-03-01,,HR,HRK,0.25,standard,Croatia (member state) standard VAT rate.
2009-08-01,2012-03-01,HR,HRK,0.23,standard,
1998-08-01,2009-08-01,HR,HRK,0.22,standard,
2012-01-01,,HU,HUF,0.27,standard,Hungary (member state) standard VAT rate.
2009-07-01,2012-01-01,HU,HUF,0.25,standard,
2006-01-01,2009-07-01,HU,HUF,0.2,standard,
1988-01-01,2006-01-01,HU,HUF,0.25,standard,
2012-01-01,,IE,EUR,0.23,standard,Republic of Ireland (member state) standard VAT rate.
2010-01-01,2012-01-01,IE,EUR,0.21,standard,
2008-12-01,2010-01-01,IE,EUR,0.215,standard,
2002-03-01,2008-12-01,IE,EUR,0.21,standard,
2001-01-01,2002-03-01,IE,EUR,0.2,standard,
1991-03-01,2001-01-01,IE,EUR,0.21,standard,
1990-03-01,1991-03-01,IE,EUR,0.23,standard,
1986-03-01,1990-03-01,IE,EUR,0.25,standard,
1983-05-01,1986-03-01,IE,EUR,0.23,standard,
1983-03-01,1983-05-01,IE,EUR,0.35,standard,
1982-05-01,1983-03-01,IE,EUR,0.3,standard,
1980-05-01,1982-05-01,IE,EUR,0.25,standard,
1976-03-01,1980-05-01,IE,EUR,0.2,standard,
1973-09-03,1976-03-01,IE,EUR,0.195,standard,
1972-11-01,1973-09-03,IE,EUR,0.1637,standard,
2011-01-04,,IO,GBP,0,standard,British Indian Ocean Territory (British overseas territory) is exempted of VAT.
2013-10-01,,IT,EUR,0.22,standard,Italy (member state) standard VAT rate.
2011-09-17,2013-10-01,IT,EUR,0.21,standard,
1997-10-01,2011-09-17,IT,EUR,0.2,standard,
1988-08-01,1997-10-01,IT,EUR,0.19,standard,
1982-08-05,1988-08-01,IT,EUR,0.18,standard,
1981-01-01,1982-08-05,IT,EUR,0.15,standard,
1980-11-01,1981-01-01,IT,EUR,0.14,standard,
1980-07-03,1980-11-01,IT,EUR,0.15,standard,
1977-02-08,1980-07-03,IT,EUR,0.14,standard,
1973-01-01,1977-02-08,IT,EUR,0.12,standard,
2013-10-01,,"IT-22060
CH-6911",CHF,0,standard,Campione (Italian town) is exempted of VAT.
2013-10-01,,IT-23030,EUR,0,standard,Livigno (Italian town) is exempted of VAT.
2011-01-04,,JE,GBP,0,standard,Jersey (British Crown dependency) is exempted of VAT.
2011-01-04,,KY,KYD,0,standard,Cayman Islands (British overseas territory) is exempted of VAT.
2009-09-01,,LT,EUR,0.21,standard,Lithuania (member state) standard VAT rate.
2009-01-01,2009-09-01,LT,EUR,0.19,standard,
1994-05-01,2009-01-01,LT,EUR,0.18,standard,
2015-01-01,,LU,EUR,0.17,standard,Luxembourg (member state) standard VAT rate.
1992-01-01,2015-01-01,LU,EUR,0.15,standard,
1983-07-01,1992-01-01,LU,EUR,0.12,standard,
1971-01-01,1983-07-01,LU,EUR,0.1,standard,
1970-01-01,1971-01-01,LU,EUR,0.8,standard,
2012-07-01,,LV,EUR,0.21,standard,Latvia (member state) standard VAT rate.
2011-01-01,2012-07-01,LV,EUR,0.22,standard,
2009-01-01,2011-01-01,LV,EUR,0.21,standard,
1995-05-01,2009-01-01,LV,EUR,0.18,standard,
2011-01-04,,MS,XCD,0,standard,Montserrat (British overseas territory) is exempted of VAT.
2004-01-01,,MT,EUR,0.18,standard,Malta (member state) standard VAT rate.
1995-01-01,2004-01-01,MT,EUR,0.15,standard,
2012-10-01,,NL,EUR,0.21,standard,Netherlands (member state) standard VAT rate.
2001-01-01,2012-10-01,NL,EUR,0.19,standard,
1992-10-01,2001-01-01,NL,EUR,0.175,standard,
1989-01-01,1992-10-01,NL,EUR,0.185,standard,
1986-10-01,1989-01-01,NL,EUR,0.2,standard,
1984-01-01,1986-10-01,NL,EUR,0.19,standard,
1976-01-01,1984-01-01,NL,EUR,0.18,standard,
1973-01-01,1976-01-01,NL,EUR,0.16,standard,
1971-01-01,1973-01-01,NL,EUR,0.14,standard,
1969-01-01,1971-01-01,NL,EUR,0.12,standard,
2012-10-01,,"NL-AW
AW",AWG,0,standard,Aruba (Dutch country) are exempted of VAT.
2012-10-01,,"NL-CW
NL-SX
CW
SX",ANG,0,standard,Curacao and Sint Maarten (Dutch countries) are exempted of VAT.
2012-10-01,,"NL-BQ1
NL-BQ2
NL-BQ3
BQ
BQ-BO
BQ-SA
BQ-SE",USD,0,standard,"Bonaire, Saba and Sint Eustatius (Dutch special municipalities) are exempted of VAT."
2011-01-01,,PL,PLN,0.23,standard,Poland (member state) standard VAT rate.
1993-01-08,2011-01-01,PL,PLN,0.22,standard,
2011-01-04,,PN,NZD,0,standard,Pitcairn Islands (British overseas territory) is exempted of VAT.
2011-01-01,,PT,EUR,0.23,standard,Portugal (member state) standard VAT rate.
2010-07-01,2011-01-01,PT,EUR,0.21,standard,
2008-07-01,2010-07-01,PT,EUR,0.2,standard,
2005-07-01,2008-07-01,PT,EUR,0.21,standard,
2002-06-05,2005-07-01,PT,EUR,0.19,standard,
1995-01-01,2002-06-05,PT,EUR,0.17,standard,
1992-03-24,1995-01-01,PT,EUR,0.16,standard,
1988-02-01,1992-03-24,PT,EUR,0.17,standard,
1986-01-01,1988-02-01,PT,EUR,0.16,standard,
2011-01-01,,PT-20,EUR,0.18,standard,Azores (Portuguese autonomous region) special VAT rate.
2011-01-01,,PT-30,EUR,0.22,standard,Madeira (Portuguese autonomous region) special VAT rate.
2017-01-01,,RO,RON,0.19,standard,Romania (member state) standard VAT rate.
2016-01-01,2017-01-01,RO,RON,0.2,standard,Romania (member state) standard VAT rate.
2010-07-01,2016-01-01,RO,RON,0.24,standard,
2000-01-01,2010-07-01,RO,RON,0.19,standard,
1998-02-01,2000-01-01,RO,RON,0.22,standard,
1993-07-01,1998-02-01,RO,RON,0.18,standard,
1990-07-01,,SE,SEK,0.25,standard,Sweden (member state) standard VAT rate.
1983-01-01,1990-07-01,SE,SEK,0.2346,standard,
1981-11-16,1983-01-01,SE,SEK,0.2151,standard,
1980-09-08,1981-11-16,SE,SEK,0.2346,standard,
1977-06-01,1980-09-08,SE,SEK,0.2063,standard,
1971-01-01,1977-06-01,SE,SEK,0.1765,standard,
1969-01-01,1971-01-01,SE,SEK,0.1111,standard,
2011-01-04,,"AC
SH
SH-AC
SH-HL",SHP,0,standard,Ascension and Saint Helena (British overseas territory) is exempted of VAT.
2011-01-04,,"TA
SH-TA",GBP,0,standard,Tristan da Cunha (British oversea territory) is exempted of VAT.
2013-07-01,,SI,EUR,0.22,standard,Slovenia (member state) standard VAT rate.
2002-01-01,2013-07-01,SI,EUR,0.2,standard,
1999-07-01,2002-01-01,SI,EUR,0.19,standard,
2011-01-01,,SK,EUR,0.2,standard,Slovakia (member state) standard VAT rate.
2004-01-01,2011-01-01,SK,EUR,0.19,standard,
2003-01-01,2004-01-01,SK,EUR,0.2,standard,
1996-01-01,2003-01-01,SK,EUR,0.23,standard,
1993-08-01,1996-01-01,SK,EUR,0.25,standard,
1993-01-01,1993-08-01,SK,EUR,0.23,standard,
2011-01-04,,TC,USD,0,standard,Turks and Caicos Islands (British overseas territory) is exempted of VAT.
2011-01-04,,"GB
UK
IM",GBP,0.2,standard,"United Kingdom (member state) standard VAT rate.
Isle of Man (British self-governing dependency) is member of the EU VAT area and subjected to UK's standard VAT rate."
2010-01-01,2011-01-04,"GB
UK
IM",GBP,0.175,standard,
2008-12-01,2010-01-01,"GB
UK
IM",GBP,0.15,standard,
1991-04-01,2008-12-01,"GB
UK
IM",GBP,0.175,standard,
1979-06-18,1991-04-01,"GB
UK
IM",GBP,0.15,standard,
1974-07-29,1979-06-18,"GB
UK
IM",GBP,0.08,standard,
1973-04-01,1974-07-29,"GB
UK
IM",GBP,0.1,standard,
2011-01-04,,VG,USD,0,standard,British Virgin Islands (British overseas territory) is exempted of VAT.
2014-01-01,,CP,EUR,0,standard,Clipperton Island (French overseas possession) is exempted of VAT.
2019-11-15,,CH,CHF,0.077,standard,Switzerland standard VAT (added manually)
2019-11-15,,MC,EUR,0.196,standard,Monaco standard VAT (added manually)
2019-11-15,,FR,EUR,0.2,standard,France standard VAT (added manually)
2019-11-15,,GR,EUR,0.24,standard,Greece standard VAT (added manually)
2019-11-15,,GB,EUR,0.2,standard,UK standard VAT (added manually)
2019-12-17,,AD,EUR,0.045,standard,Andorra standard VAT (added manually)
2019-12-17,,TK,EUR,0.18,standard,Turkey standard VAT (added manually)
2019-12-17,,IS,EUR,0.24,standard,Iceland standard VAT (added manually)
2019-12-17,,FX,EUR,0.20,standard,France metropolitan standard VAT (added manually)
2020-01-04,,CY,EUR,0.19,standard,Cyprus standard VAT (added manually)
2019-01-04,,IL,EUR,0.23,standard,Ireland standard VAT (added manually)
2019-01-04,,LI,EUR,0.077,standard,Liechtenstein standard VAT (added manually)
1 start_date stop_date territory_codes currency_code rate rate_type description
2 2011-01-04 AI XCD 0 standard Anguilla (British overseas territory) is exempted of VAT.
3 1984-01-01 AT EUR 0.2 standard Austria (member state) standard VAT rate.
4 1976-01-01 1984-01-01 AT EUR 0.18 standard
5 1973-01-01 1976-01-01 AT EUR 0.16 standard
6 1984-01-01 AT-6691 DE-87491 EUR 0.19 standard Jungholz (Austrian town) special VAT rate.
7 1984-01-01 AT-6991 AT-6992 AT-6993 DE-87567 DE-87568 DE-87569 EUR 0.19 standard Mittelberg (Austrian town) special VAT rate.
8 1996-01-01 BE EUR 0.21 standard Belgium (member state) standard VAT rate.
9 1994-01-01 1996-01-01 BE EUR 0.205 standard
10 1992-04-01 1994-01-01 BE EUR 0.195 standard
11 1983-01-01 1992-04-01 BE EUR 0.19 standard
12 1981-07-01 1983-01-01 BE EUR 0.17 standard
13 1978-07-01 1981-07-01 BE EUR 0.16 standard
14 1971-07-01 1978-07-01 BE EUR 0.18 standard
15 1999-01-01 BG BGN 0.2 standard Bulgaria (member state) standard VAT rate.
16 1996-07-01 1999-01-01 BG BGN 0.22 standard
17 1994-04-01 1996-07-01 BG BGN 0.18 standard
18 2011-01-04 BM BMD 0 standard Bermuda (British overseas territory) is exempted of VAT.
19 2014-01-13 CY GB-BFPO 57 GB-BFPO 58 GB-BFPO 59 UK-BFPO 57 UK-BFPO 58 UK-BFPO 59 EUR 0.19 standard Cyprus (member state) standard VAT rate. Akrotiri and Dhekelia (British overseas territory) is subjected to Cyprus' standard VAT rate.
20 2013-01-14 2014-01-13 CY EUR 0.18 standard
21 2012-03-01 2013-01-14 CY EUR 0.17 standard
22 2003-01-01 2012-03-01 CY EUR 0.15 standard
23 2002-07-01 2003-01-01 CY EUR 0.13 standard
24 2000-07-01 2002-07-01 CY EUR 0.1 standard
25 1993-10-01 2000-07-01 CY EUR 0.08 standard
26 1992-07-01 1993-10-01 CY EUR 0.05 standard
27 2013-01-01 CZ CZK 0.21 standard Czech Republic (member state) standard VAT rate.
28 2010-01-01 2013-01-01 CZ CZK 0.2 standard
29 2004-05-01 2010-01-01 CZ CZK 0.19 standard
30 1995-01-01 2004-05-01 CZ CZK 0.22 standard
31 1993-01-01 1995-01-01 CZ CZK 0.23 standard
32 2007-01-01 DE EUR 0.19 standard Germany (member state) standard VAT rate.
33 1998-04-01 2007-01-01 DE EUR 0.16 standard
34 1993-01-01 1998-04-01 DE EUR 0.15 standard
35 1983-07-01 1993-01-01 DE EUR 0.14 standard
36 1979-07-01 1983-07-01 DE EUR 0.13 standard
37 1978-01-01 1979-07-01 DE EUR 0.12 standard
38 1968-07-01 1978-01-01 DE EUR 0.11 standard
39 1968-01-01 1968-07-01 DE EUR 0.1 standard
40 2007-01-01 DE-27498 EUR 0 standard Heligoland (German island) is exempted of VAT.
41 2007-01-01 DE-78266 CH-8238 EUR 0 standard Busingen am Hochrhein (German territory) is exempted of VAT.
42 1992-01-01 DK DKK 0.25 standard Denmark (member state) standard VAT rate.
43 1980-06-30 1992-01-01 DK DKK 0.22 standard
44 1978-10-30 1980-06-30 DK DKK 0.2025 standard
45 1977-10-03 1978-10-30 DK DKK 0.18 standard
46 1970-06-29 1977-10-03 DK DKK 0.15 standard
47 1968-04-01 1970-06-29 DK DKK 0.125 standard
48 1967-07-03 1968-04-01 DK DKK 0.1 standard
49 2009-07-01 EE EUR 0.2 standard Estonia (member state) standard VAT rate.
50 1993-01-01 2009-07-01 EE EUR 0.18 standard
51 1991-01-01 1993-01-01 EE EUR 0.1 standard
52 2016-06-01 GR EL EUR 0.24 standard Greece (member state) standard VAT rate.
53 2010-07-01 2016-06-01 GR EL EUR 0.23 standard
54 2010-03-15 2010-07-01 GR EL EUR 0.21 standard
55 2005-04-01 2010-03-15 GR EL EUR 0.19 standard
56 1990-04-28 2005-04-01 GR EL EUR 0.18 standard
57 1988-01-01 1990-04-28 GR EL EUR 0.16 standard
58 1987-01-01 1988-01-01 GR EL EUR 0.18 standard
59 2012-09-01 ES EUR 0.21 standard Spain (member state) standard VAT rate.
60 2010-07-01 2012-09-01 ES EUR 0.18 standard
61 1995-01-01 2010-07-01 ES EUR 0.16 standard
62 1992-08-01 1995-01-01 ES EUR 0.15 standard
63 1992-01-01 1992-08-01 ES EUR 0.13 standard
64 1986-01-01 1992-01-01 ES EUR 0.12 standard
65 2012-09-01 ES-CN ES-GC ES-TF IC EUR 0 standard Canary Islands (Spanish autonomous community) is exempted of VAT.
66 2012-09-01 ES-ML ES-CE EA EUR 0 standard Ceuta and Melilla (Spanish autonomous cities) is exempted of VAT.
67 2013-01-01 FI EUR 0.24 standard Finland (member state) standard VAT rate.
68 2010-07-01 2013-01-01 FI EUR 0.23 standard
69 1994-06-01 2010-07-01 FI EUR 0.22 standard
70 2013-01-01 FI-01 AX EUR 0 standard Aland Islands (Finish autonomous region) is exempted of VAT.
71 2011-01-04 FK FKP 0 standard Falkland Islands (British overseas territory) is exempted of VAT.
72 1992-01-01 FO DKK 0 standard Faroe Islands (Danish autonomous country) is exempted of VAT.
73 2014-01-01 FR MC EUR 0.2 standard France (member state) standard VAT rate. Monaco (sovereign city-state) is member of the EU VAT area and subjected to France's standard VAT rate.
74 2000-04-01 2014-01-01 FR MC EUR 0.196 standard
75 1995-08-01 2000-04-01 FR MC EUR 0.206 standard
76 1982-07-01 1995-08-01 FR MC EUR 0.186 standard
77 1977-01-01 1982-07-01 FR MC EUR 0.176 standard
78 1973-01-01 1977-01-01 FR MC EUR 0.2 standard
79 1970-01-01 1973-01-01 FR MC EUR 0.23 standard
80 1968-12-01 1970-01-01 FR MC EUR 0.19 standard
81 1968-01-01 1968-12-01 FR MC EUR 0.1666 standard
82 2014-01-01 FR-BL BL EUR 0 standard Saint Barthelemy (French overseas collectivity) is exempted of VAT.
83 2014-01-01 FR-GF GF EUR 0 standard Guiana (French overseas department) is exempted of VAT.
84 2014-01-01 FR-GP GP EUR 0.085 standard Guadeloupe (French overseas department) special VAT rate.
85 2014-01-01 FR-MF MF EUR 0 standard Saint Martin (French overseas collectivity) is subjected to France's standard VAT rate.
86 2014-01-01 FR-MQ MQ EUR 0.085 standard Martinique (French overseas department) special VAT rate.
87 2014-01-01 FR-NC NC XPF 0 standard New Caledonia (French special collectivity) is exempted of VAT.
88 2014-01-01 FR-PF PF XPF 0 standard French Polynesia (French overseas collectivity) is exempted of VAT.
89 2014-01-01 FR-PM PM EUR 0 standard Saint Pierre and Miquelon (French overseas collectivity) is exempted of VAT.
90 2014-01-01 FR-RE RE EUR 0.085 standard Reunion (French overseas department) special VAT rate.
91 2014-01-01 FR-TF TF EUR 0 standard French Southern and Antarctic Lands (French overseas territory) is exempted of VAT.
92 2014-01-01 FR-WF WF XPF 0 standard Wallis and Futuna (French overseas collectivity) is exempted of VAT.
93 2014-01-01 FR-YT YT EUR 0 standard Mayotte (French overseas department) is exempted of VAT.
94 2011-01-04 GG GBP 0 standard Guernsey (British Crown dependency) is exempted of VAT.
95 2011-01-04 GI GIP 0 standard Gibraltar (British overseas territory) is exempted of VAT.
96 1992-01-01 GL DKK 0 standard Greenland (Danish autonomous country) is exempted of VAT.
97 2010-07-01 2016-06-01 GR-34007 EL-34007 EUR 0.16 standard Skyros (Greek island) special VAT rate.
98 2010-07-01 2016-06-01 GR-37002 GR-37003 GR-37005 EL-37002 EL-37003 EL-37005 EUR 0.16 standard Northern Sporades (Greek islands) special VAT rate.
99 2010-07-01 2016-06-01 GR-64004 EL-64004 EUR 0.16 standard Thasos (Greek island) special VAT rate.
100 2010-07-01 2016-06-01 GR-68002 EL-68002 EUR 0.16 standard Samothrace (Greek island) special VAT rate.
101 2010-07-01 GR-69 EL-69 EUR 0 standard Mount Athos (Greek self-governed part) is exempted of VAT.
102 2010-07-01 2016-06-01 GR-81 EL-81 EUR 0.16 standard Dodecanese (Greek department) special VAT rate.
103 2010-07-01 2016-06-01 GR-82 EL-82 EUR 0.16 standard Cyclades (Greek department) special VAT rate.
104 2010-07-01 2016-06-01 GR-83 EL-83 EUR 0.16 standard Lesbos (Greek department) special VAT rate.
105 2010-07-01 2016-06-01 GR-84 EL-84 EUR 0.16 standard Samos (Greek department) special VAT rate.
106 2010-07-01 2016-06-01 GR-85 EL-85 EUR 0.16 standard Chios (Greek department) special VAT rate.
107 2011-01-04 GS GBP 0 standard South Georgia and the South Sandwich Islands (British overseas territory) is exempted of VAT.
108 2012-03-01 HR HRK 0.25 standard Croatia (member state) standard VAT rate.
109 2009-08-01 2012-03-01 HR HRK 0.23 standard
110 1998-08-01 2009-08-01 HR HRK 0.22 standard
111 2012-01-01 HU HUF 0.27 standard Hungary (member state) standard VAT rate.
112 2009-07-01 2012-01-01 HU HUF 0.25 standard
113 2006-01-01 2009-07-01 HU HUF 0.2 standard
114 1988-01-01 2006-01-01 HU HUF 0.25 standard
115 2012-01-01 IE EUR 0.23 standard Republic of Ireland (member state) standard VAT rate.
116 2010-01-01 2012-01-01 IE EUR 0.21 standard
117 2008-12-01 2010-01-01 IE EUR 0.215 standard
118 2002-03-01 2008-12-01 IE EUR 0.21 standard
119 2001-01-01 2002-03-01 IE EUR 0.2 standard
120 1991-03-01 2001-01-01 IE EUR 0.21 standard
121 1990-03-01 1991-03-01 IE EUR 0.23 standard
122 1986-03-01 1990-03-01 IE EUR 0.25 standard
123 1983-05-01 1986-03-01 IE EUR 0.23 standard
124 1983-03-01 1983-05-01 IE EUR 0.35 standard
125 1982-05-01 1983-03-01 IE EUR 0.3 standard
126 1980-05-01 1982-05-01 IE EUR 0.25 standard
127 1976-03-01 1980-05-01 IE EUR 0.2 standard
128 1973-09-03 1976-03-01 IE EUR 0.195 standard
129 1972-11-01 1973-09-03 IE EUR 0.1637 standard
130 2011-01-04 IO GBP 0 standard British Indian Ocean Territory (British overseas territory) is exempted of VAT.
131 2013-10-01 IT EUR 0.22 standard Italy (member state) standard VAT rate.
132 2011-09-17 2013-10-01 IT EUR 0.21 standard
133 1997-10-01 2011-09-17 IT EUR 0.2 standard
134 1988-08-01 1997-10-01 IT EUR 0.19 standard
135 1982-08-05 1988-08-01 IT EUR 0.18 standard
136 1981-01-01 1982-08-05 IT EUR 0.15 standard
137 1980-11-01 1981-01-01 IT EUR 0.14 standard
138 1980-07-03 1980-11-01 IT EUR 0.15 standard
139 1977-02-08 1980-07-03 IT EUR 0.14 standard
140 1973-01-01 1977-02-08 IT EUR 0.12 standard
141 2013-10-01 IT-22060 CH-6911 CHF 0 standard Campione (Italian town) is exempted of VAT.
142 2013-10-01 IT-23030 EUR 0 standard Livigno (Italian town) is exempted of VAT.
143 2011-01-04 JE GBP 0 standard Jersey (British Crown dependency) is exempted of VAT.
144 2011-01-04 KY KYD 0 standard Cayman Islands (British overseas territory) is exempted of VAT.
145 2009-09-01 LT EUR 0.21 standard Lithuania (member state) standard VAT rate.
146 2009-01-01 2009-09-01 LT EUR 0.19 standard
147 1994-05-01 2009-01-01 LT EUR 0.18 standard
148 2015-01-01 LU EUR 0.17 standard Luxembourg (member state) standard VAT rate.
149 1992-01-01 2015-01-01 LU EUR 0.15 standard
150 1983-07-01 1992-01-01 LU EUR 0.12 standard
151 1971-01-01 1983-07-01 LU EUR 0.1 standard
152 1970-01-01 1971-01-01 LU EUR 0.8 standard
153 2012-07-01 LV EUR 0.21 standard Latvia (member state) standard VAT rate.
154 2011-01-01 2012-07-01 LV EUR 0.22 standard
155 2009-01-01 2011-01-01 LV EUR 0.21 standard
156 1995-05-01 2009-01-01 LV EUR 0.18 standard
157 2011-01-04 MS XCD 0 standard Montserrat (British overseas territory) is exempted of VAT.
158 2004-01-01 MT EUR 0.18 standard Malta (member state) standard VAT rate.
159 1995-01-01 2004-01-01 MT EUR 0.15 standard
160 2012-10-01 NL EUR 0.21 standard Netherlands (member state) standard VAT rate.
161 2001-01-01 2012-10-01 NL EUR 0.19 standard
162 1992-10-01 2001-01-01 NL EUR 0.175 standard
163 1989-01-01 1992-10-01 NL EUR 0.185 standard
164 1986-10-01 1989-01-01 NL EUR 0.2 standard
165 1984-01-01 1986-10-01 NL EUR 0.19 standard
166 1976-01-01 1984-01-01 NL EUR 0.18 standard
167 1973-01-01 1976-01-01 NL EUR 0.16 standard
168 1971-01-01 1973-01-01 NL EUR 0.14 standard
169 1969-01-01 1971-01-01 NL EUR 0.12 standard
170 2012-10-01 NL-AW AW AWG 0 standard Aruba (Dutch country) are exempted of VAT.
171 2012-10-01 NL-CW NL-SX CW SX ANG 0 standard Curacao and Sint Maarten (Dutch countries) are exempted of VAT.
172 2012-10-01 NL-BQ1 NL-BQ2 NL-BQ3 BQ BQ-BO BQ-SA BQ-SE USD 0 standard Bonaire, Saba and Sint Eustatius (Dutch special municipalities) are exempted of VAT.
173 2011-01-01 PL PLN 0.23 standard Poland (member state) standard VAT rate.
174 1993-01-08 2011-01-01 PL PLN 0.22 standard
175 2011-01-04 PN NZD 0 standard Pitcairn Islands (British overseas territory) is exempted of VAT.
176 2011-01-01 PT EUR 0.23 standard Portugal (member state) standard VAT rate.
177 2010-07-01 2011-01-01 PT EUR 0.21 standard
178 2008-07-01 2010-07-01 PT EUR 0.2 standard
179 2005-07-01 2008-07-01 PT EUR 0.21 standard
180 2002-06-05 2005-07-01 PT EUR 0.19 standard
181 1995-01-01 2002-06-05 PT EUR 0.17 standard
182 1992-03-24 1995-01-01 PT EUR 0.16 standard
183 1988-02-01 1992-03-24 PT EUR 0.17 standard
184 1986-01-01 1988-02-01 PT EUR 0.16 standard
185 2011-01-01 PT-20 EUR 0.18 standard Azores (Portuguese autonomous region) special VAT rate.
186 2011-01-01 PT-30 EUR 0.22 standard Madeira (Portuguese autonomous region) special VAT rate.
187 2017-01-01 RO RON 0.19 standard Romania (member state) standard VAT rate.
188 2016-01-01 2017-01-01 RO RON 0.2 standard Romania (member state) standard VAT rate.
189 2010-07-01 2016-01-01 RO RON 0.24 standard
190 2000-01-01 2010-07-01 RO RON 0.19 standard
191 1998-02-01 2000-01-01 RO RON 0.22 standard
192 1993-07-01 1998-02-01 RO RON 0.18 standard
193 1990-07-01 SE SEK 0.25 standard Sweden (member state) standard VAT rate.
194 1983-01-01 1990-07-01 SE SEK 0.2346 standard
195 1981-11-16 1983-01-01 SE SEK 0.2151 standard
196 1980-09-08 1981-11-16 SE SEK 0.2346 standard
197 1977-06-01 1980-09-08 SE SEK 0.2063 standard
198 1971-01-01 1977-06-01 SE SEK 0.1765 standard
199 1969-01-01 1971-01-01 SE SEK 0.1111 standard
200 2011-01-04 AC SH SH-AC SH-HL SHP 0 standard Ascension and Saint Helena (British overseas territory) is exempted of VAT.
201 2011-01-04 TA SH-TA GBP 0 standard Tristan da Cunha (British oversea territory) is exempted of VAT.
202 2013-07-01 SI EUR 0.22 standard Slovenia (member state) standard VAT rate.
203 2002-01-01 2013-07-01 SI EUR 0.2 standard
204 1999-07-01 2002-01-01 SI EUR 0.19 standard
205 2011-01-01 SK EUR 0.2 standard Slovakia (member state) standard VAT rate.
206 2004-01-01 2011-01-01 SK EUR 0.19 standard
207 2003-01-01 2004-01-01 SK EUR 0.2 standard
208 1996-01-01 2003-01-01 SK EUR 0.23 standard
209 1993-08-01 1996-01-01 SK EUR 0.25 standard
210 1993-01-01 1993-08-01 SK EUR 0.23 standard
211 2011-01-04 TC USD 0 standard Turks and Caicos Islands (British overseas territory) is exempted of VAT.
212 2011-01-04 GB UK IM GBP 0.2 standard United Kingdom (member state) standard VAT rate. Isle of Man (British self-governing dependency) is member of the EU VAT area and subjected to UK's standard VAT rate.
213 2010-01-01 2011-01-04 GB UK IM GBP 0.175 standard
214 2008-12-01 2010-01-01 GB UK IM GBP 0.15 standard
215 1991-04-01 2008-12-01 GB UK IM GBP 0.175 standard
216 1979-06-18 1991-04-01 GB UK IM GBP 0.15 standard
217 1974-07-29 1979-06-18 GB UK IM GBP 0.08 standard
218 1973-04-01 1974-07-29 GB UK IM GBP 0.1 standard
219 2011-01-04 VG USD 0 standard British Virgin Islands (British overseas territory) is exempted of VAT.
220 2014-01-01 CP EUR 0 standard Clipperton Island (French overseas possession) is exempted of VAT.
221 2019-11-15 CH CHF 0.077 standard Switzerland standard VAT (added manually)
222 2019-11-15 MC EUR 0.196 standard Monaco standard VAT (added manually)
223 2019-11-15 FR EUR 0.2 standard France standard VAT (added manually)
224 2019-11-15 GR EUR 0.24 standard Greece standard VAT (added manually)
225 2019-11-15 GB EUR 0.2 standard UK standard VAT (added manually)
226 2019-12-17 AD EUR 0.045 standard Andorra standard VAT (added manually)
227 2019-12-17 TK EUR 0.18 standard Turkey standard VAT (added manually)
228 2019-12-17 IS EUR 0.24 standard Iceland standard VAT (added manually)
229 2019-12-17 FX EUR 0.20 standard France metropolitan standard VAT (added manually)
230 2020-01-04 CY EUR 0.19 standard Cyprus standard VAT (added manually)
231 2019-01-04 IL EUR 0.23 standard Ireland standard VAT (added manually)
232 2019-01-04 LI EUR 0.077 standard Liechtenstein standard VAT (added manually)