madisvain / vatcomply

VATcomply is a free API service for vat number validation, user ip geolocation and foreign exchange rates.

Home Page:https://vatcomply.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

VATcomply

VATcomply is a free API service for vat number validation, user ip geolocation and foreign exchange rates published by the European Central Bank.

Usage

Lates & specific date rates

Get the latest foreign exchange rates.

GET /rates

Rates are quoted against the Euro by default. Quote against a different currency by setting the base parameter in your request.

GET /rates?base=USD

Request specific exchange rates by setting the symbols parameter.

GET /rates?symbols=USD,GBP

Rates history and query parameters combinations

Get historical rates for a date

GET /rates?date=2018-01-01

Limit results to specific exchange rates to save bandwidth with the symbols parameter.

GET /rates?date=2018-01-01&symbols=ILS,JPY

Quote the historical rates against a different currency.

GET /rates?date=2018-01-01&base=USD

Client side usage

The primary use case is client side. For instance, with money.js in the browser

let demo = () => {
  let rate = fx(1).from("GBP").to("USD");
  alert("£1 = $" + rate.toFixed(4));
};

fetch("https://api.vatcomply.com/rates")
  .then((resp) => resp.json())
  .then((data) => (fx.rates = data.rates))
  .then(demo);

Stack

VATcomply API is built upon Django with asyncronous views, Pydantic and asyncronous ORM queries to achieve high throughput. The current setup can asyncronously handle thousands of requests per second.

Libraries used

Deployment

Virtualenv

pyenv shell 3.x.x

Install packages

virtualenv env
. env/bin/activate
pip install -r requirements.in --upgrade

Load in initial data & Scheduler

The scheduler will keep your database up to date hourly with information from European Central bank. It will download the last 90 days worth of data every hour.

The reference rates are usually updated around 16:00 CET on every working day, except on TARGET closing days. They are based on a regular daily concertation procedure between central banks across Europe, which normally takes place at 14:15 CET.

On initialization it will check the database. If it's empty all the historic rates will be downloaded and records created in the database.

Development

export DEBUG=True; uvicorn vatcomply.asgi:application --reload

or for simplicity a Makefile is provided with all the commands for development.

make run

Migrations

Make migrations

make migrations

Run migrations

make migrate

Tests

make test

Contributing

Thanks for your interest in the project! All pull requests are welcome from developers of all skill levels. To get started, simply fork the master branch on GitHub to your personal account and then clone the fork into your development environment.

Madis Väin (madisvain on Github) is the original creator of the VATcomply API.

License

MIT

About

VATcomply is a free API service for vat number validation, user ip geolocation and foreign exchange rates.

https://vatcomply.com

License:MIT License


Languages

Language:Python 68.5%Language:JavaScript 24.0%Language:SCSS 7.1%Language:Makefile 0.4%