Popularity
3.8
Growing
Activity
4.6
-
300
12
28

Description

vat.php is a simple PHP library which helps you to deal with European VAT rules. It helps you...

Code Quality Rank: L5
Monthly Downloads: 2,064
Programming language: PHP
License: MIT License
Tags: Miscellaneous     Vat     Finance     Europe     Accounting    
Latest version: v2.0.2

vat.php alternatives and similar libraries

Based on the "Miscellaneous" category

Do you think we are missing an alternative of vat.php or a related project?

Add another 'Miscellaneous' Library

README

ibericode/vat

Build Status Latest Stable Version PHP from Packagist Total Downloads License

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 or jsonvat.com
  • 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 = new Ibericode\Rates\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 = new Ibericode\Vat\Validator();
$validator->validateVatNumberFormat('NL203458239B01'); // true (checks format)
$validator->validateVatNumber('NL203458239B01'); // false (checks format + existence)

Validating an IP address:

$validator = new Ibericode\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 = new Ibericode\Vat\Validator();
$validator->validateCountryCode('DE'); // true
$validator->validateCountryCode('ZZ'); // false

Dealing with ISO-3166-1-alpha2 country codes

$countries = new Ibericode\Vat\Countries();

// access country name using array access
echo $countries['NL']; // Netherlands

// loop over countries
foreach ($countries as $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 = new Ibericode\Vat\Geolocator();
$geolocator->locateIpAddress('8.8.8.8'); // US

To use ip2country.info explicitly.

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

Or, to use ip2c.org explicitly.

$geolocator = new Ibericode\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](LICENSE).


*Note that all licence references and agreements mentioned in the vat.php README section above are relevant to that project's source code only.