All Projects → kdeldycke → vat-rates

kdeldycke / vat-rates

Licence: other
💸 {Digital,Cloud,Electronic,Online} Services VAT Rate Database

Projects that are alternatives of or similar to vat-rates

AvaTax-REST-V2-Ruby-SDK
Sales Tax API SDK for Ruby and AvaTax REST
Stars: ✭ 34 (-58.02%)
Mutual labels:  tax, tax-rate
SAF-T-AO
Official XSD from the Government of Angola for use in SAF-T AO
Stars: ✭ 42 (-48.15%)
Mutual labels:  tax, vat
taxjar-php
Sales Tax API Client for PHP 5.5+
Stars: ✭ 66 (-18.52%)
Mutual labels:  tax, tax-rate
taxjar-woocommerce-plugin
WooCommerce Sales Tax Plugin by TaxJar
Stars: ✭ 26 (-67.9%)
Mutual labels:  tax, tax-rate
taxjar.net
Sales Tax API Client for .NET / C#
Stars: ✭ 21 (-74.07%)
Mutual labels:  tax, tax-rate
taxjar-magento2-extension
Magento 2 Sales Tax Extension by TaxJar
Stars: ✭ 23 (-71.6%)
Mutual labels:  tax, tax-rate
vat
EU VAT number validation in Go using VIES SOAP service
Stars: ✭ 23 (-71.6%)
Mutual labels:  tax, vat-number
quaderno-api
API documentation and wrappers for Quaderno.
Stars: ✭ 19 (-76.54%)
Mutual labels:  vat-number, vat
simple-search-service
A faceted search engine and content API.
Stars: ✭ 38 (-53.09%)
Mutual labels:  csv
transferdb
TransferDB 支持异构数据库 schema 转换、全量数据导出导入以及增量数据同步功能( Oracle 数据库 -> MySQL/TiDB 数据库)
Stars: ✭ 30 (-62.96%)
Mutual labels:  csv
sheet2dict
Simple XLSX and CSV to dictionary converter
Stars: ✭ 206 (+154.32%)
Mutual labels:  csv
CSV2RDF
Streaming, transforming, SPARQL-based CSV to RDF converter. Apache license.
Stars: ✭ 48 (-40.74%)
Mutual labels:  csv
odin
Data-structure definition/validation/traversal, mapping and serialisation toolkit for Python
Stars: ✭ 24 (-70.37%)
Mutual labels:  csv
JsObjExporter
A little JavaScript plugin to generate PDF, XLS, CSV and DOC from JavaScript Object or DOM element only from the frontend!
Stars: ✭ 58 (-28.4%)
Mutual labels:  csv
swift-csv
Fast and memory-efficient CSV library in Swift.
Stars: ✭ 73 (-9.88%)
Mutual labels:  csv
apple-slicer
Parses App Store Connect (formerly iTunes Connect) financial reports and splits sales by their legally accountable Apple subsidiaries
Stars: ✭ 34 (-58.02%)
Mutual labels:  tax
php-csv-exporter
A fast and tiny PHP library to export data to CSV based on Generator. Export millions of data seamlessly without memory exception.
Stars: ✭ 15 (-81.48%)
Mutual labels:  csv
carsBase
База автомобилей с марками и моделями JSON, CSV, XLSX и MySQL
Stars: ✭ 49 (-39.51%)
Mutual labels:  csv
company-admin
Filling annual returns (through ACRA) and tax (through IRAS) for Singapore based small company
Stars: ✭ 23 (-71.6%)
Mutual labels:  tax
midi degradation toolkit
A toolkit for generating datasets of midi files which have been degraded to be 'un-musical'.
Stars: ✭ 29 (-64.2%)
Mutual labels:  csv

💸 {Digital,Cloud,Electronic,Online} Services VAT Rate Database

Some countries requires businesses to apply, for any sales of online/electronic/digital/cloud services to consumers (B2C), a value-added tax (VAT) on all purchases made by their citizen. This impose all foreign companies to track the residency of all their customers, to apply the right tax.

This trend started January 1st 2015 with all European country, and is about to be implemented by others too.

As the rate depends on the locality of the customer, this project aims to centralize, in a machine-readable format (currently a plain CSV file), the list of applicable rates for each country of residence, and all their territorial exceptions.

This is a painful job, worth sharing with a community, so please help me keep this database up to date! :)

Testimonials

I'm impressed with your BFPO detail. -- Tim Whitlock

I'm glad to see independently researched data confirming mine! -- Will Bond

VAT Application Rules

All B2C customers matching the locality in that file are subject to the corresponding tax.

Your B2B customers are exempted of VAT, as long as they provide a registered VAT number. You can check their validity on the VAT Information Exchange System (VIES). I recommend using a third-party library to automate the process, like pyvat for Python. A B2B customer without VAT number is considered as a simple B2C customer, so local rate applies.

Note that starting January 1st, 2015, these rules applies to all non-European SaaS businesses with European customers.

Status

This matrix expose the current completeness of the database:

Administrative family EU member states Special territories, states, countries, collectivities, islands, departments, towns, …
Number 28 / 28 57 / (?)
Standard rates All All
Reduced rates None None
Increased rates None None
Parking rates None None
Currency codes All All
Historical standard rates All None
Historical reduced rates None None
Historical increased rates None None
Historical parking rates None None
Historical currency codes ⚠️ Wrongly aligned to current one ⚠️ Wrongly aligned to current one

Schema

start_date is an inclusive ISO 8601 calendar date from which the rate starts to apply.

stop_date is an inclusive ISO 8601 calendar date from which the rate is no longer valid.

territory_codes is a list of (eventually mixed):

currency_code is the de jure ISO 4217 currency code (a.k.a. legal tender), not de facto's one.

rate is the decimal rate.

rate_type is the kind of rate. Either:

  • standard
  • increased
  • reduced
  • parking

description human-readable description of the territory the rate applies to, and eventual rationale behind the application.

Rows are sorted by territory_codes, then start_date.

Interpretation

Starting from this database, your next step is to interpret the data.

By looking at the dates, you can compute if a rate is either current, historical or future. Beware, some rates changes in the middle of a month. That means on theory, your billing system should support pro-rata application of several rates on a monthly invoice.

To choose the right rate, you then need to guess the location of your customer. I advise you to derive this data from the billing address, as it's the most common element with the necessary administrative granularity. An address that is properly normalized is precise enough, down to the postal code, to select the right VAT rule, including territorial exceptions. To solve the territory complex, I wrote a Python module to parse and normalize postal addresses.

Sources

The process of building up this database is somewhat fuzzy.

This database is unequivocally founded on the latest official VAT Rates document from the EC portal. It provides all member states' rates and their historical values. You'll also find there a description of regions and territories where special or no VAT rates applies.

Still, the hardest part of establishing this database lies in the characterization of locality. Member states and some regions are easy: they have a dedicated country code. For these we rely on ISO 3166-1 alpha-2, with an extra compatibility layer for European Commission country codes (i.e. the GB/UK and GR/EL pairs).

When this is not enough, we go down to a lower administrative level and leverage subdivision codes from ISO 3166-2.

Things get messy once VAT rules only applies to areas as small as a town. In which case I guesstimated the geographic zone with postal codes fetched from individual Wikipedia pages.

Finally, for completeness, I compiled the catalog of member's states special territories and restarted the locality characterization process for these. I was able to add the missing entries based on the list of included and excluded zones of the EU VAT area.

Other resources

History

I decided to create this database because all the current VAT libs were quite naive about the territory definition. Most of the time it's only based on the country, while the territory a tax applies to, in a fiscal context, is a much more insidious concept carrying administrative, political and historical weight.

To match the place the supply takes place against the VAT database, I created a Python module to normalize and parse postal addressed of my customers.

License

The content of this repository is licensed under a BSD 2-Clause License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].