Skip to content
This repository was archived by the owner on Feb 20, 2023. It is now read-only.

Repository files navigation

ibericode/vat

Build StatusLatest Stable VersionPHP from PackagistTotal DownloadsLicense

This is a simple PHP library to help you deal with Europe's VAT rules.

  • Fetch VAT rates for any EU member state using ibericode/vat-rates.
  • Validate VAT numbers (by format and/or existence)
  • Validate ISO-3316 alpha-2 country codes
  • Determine whether a country is part of the EU
  • Geo-locate IP addresses

Installation

PHP version 7.1 or higher with the CURL and JSON extension is required.

For VAT number existence checking, the PHP SOAP extension is required as well.

To get the latest stable version, install the package using Composer:

composer require ibericode/vat

Usage

This library exposes 4 main classes to interact with: Rates, Countries, Validator and Geolocator.

Retrieving VAT rates.

$rates = newIbericode\Vat\Rates('/path-for-storing-cache-file.txt');
$rates->getRateForCountry('NL'); // 21$rates->getRateForCountry('NL', 'standard'); // 21$rates->getRateForCountry('NL', 'reduced'); // 9$rates->getRateForCountryOnDate('NL', new \Datetime('2010-01-01'), 'standard'); // 19

This fetches rate from ibericode/vat-rates and stores a local copy that is periodically refreshed (once every 12 hours by default).

Validation

Validating a VAT number:

$validator = newIbericode\Vat\Validator();
$validator->validateVatNumberFormat('NL203458239B01'); // true (checks format)$validator->validateVatNumber('NL203458239B01'); // false (checks format + existence)

Validating an IP address:

$validator = newIbericode\Vat\Validator();
$validator->validateIpAddress('256.256.256.256'); // false$validator->validateIpAddress('8.8.8.8'); // true

Validating an ISO-3166-1-alpha2 country code:

$validator = newIbericode\Vat\Validator();
$validator->validateCountryCode('DE'); // true$validator->validateCountryCode('ZZ'); // false

Dealing with ISO-3166-1-alpha2 country codes

$countries = newIbericode\Vat\Countries();
// access country name using array accessecho$countries['NL']; // Netherlands// loop over countriesforeach ($countriesas$code => $name) {
// ...
}
// check if country is in EU$countries->isCountryCodeInEU('NL'); // true$countries->isCountryCodeInEU('US'); // false

Geo-location

This library includes a simple geo-location service using ip2c.org or ip2country.info.

$geolocator = newIbericode\Vat\Geolocator();
$geolocator->locateIpAddress('8.8.8.8'); // US

To use ip2country.info explicitly.

$geolocator = newIbericode\Vat\Geolocator('ip2country.info');
$geolocator->locateIpAddress('8.8.8.8'); // US

Or, to use ip2c.org explicitly.

$geolocator = newIbericode\Vat\Geolocator('ip2c.org');
$geolocator->locateIpAddress('8.8.8.8'); // US

Symfony support

If you need to use this package in a Symfony environment, check out ibericode/vat-bundle.

License

ibericode/vat is licensed under the MIT License.

About

PHP library for dealing with European VAT

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages