Taxpayer Identification Number (TIN) Validator
Description
A library to validate TIN numbers for individuals. This is based on a Java library, this is why the code does not reflect best practices in php (yet).
Supported countries:
- Austria (AT)
- Belgium (BE)
- Bulgaria (BG)
- Croatia (HR)
- Cyprus (CY)
- Czech Republic (CZ)
- Denmark (DK)
- Estonia (EE)
- Finland (FI)
- France (FR)
- Germany (DE)
- Greece (GR) - only size
- Hungary (HU)
- Ireland (IE)
- Italy (IT)
- Latvia (LV) - no check digit
- Lithuania (LT)
- Luxembourg (LU)
- Malta (MT) - no check digit
- Netherlands (NL)
- Poland (PL)
- Portugal (PT)
- Romania (RO) - no check digit
- Slovakia (SK) - only structure
- Slovenia (SI)
- Spain (ES)
- Sweden (SE)
- United Kingdom (UK) - only structure
If your country is not there, feel free to open an issue with your country code, and a link to the specification. Ideally, you can provide a pull request with the algorithm and the tests.
Requirements
- PHP >= 7.1
Usage & API
To simply check the validity of a TIN number:
<?php
include __DIR__ . '/vendor/autoload.php';
use loophp\Tin\TIN;
$bool = TIN::fromSlug('be71102512345')->isValid();If you want to get the reason why a number is invalid, you can use
<?php
include __DIR__ . '/vendor/autoload.php';
use loophp\Tin\TIN;
use loophp\Tin\Exception\TINException;
try {
TIN::fromSlug('be71102512345')->check();
} catch (TINException $e) {
// do something with the exception.
}Installation
composer require loophp/tin
Code quality, tests and benchmarks
Every time changes are introduced into the library, Github run the tests and the benchmarks.
The library has tests written with PHPSpec.
Feel free to check them out in the spec directory. Run composer phpspec to trigger the tests.
Before each commit some inspections are executed with GrumPHP, run ./vendor/bin/grumphp run to check manually.
PHPInfection is used to ensure that your code is properly tested, run composer infection to test your code.
Links
European Commission TIN serviceTIN Algorithms - Public - Functional SpecificationTaxpayer Identification Number
Authors
Contributing
Feel free to contribute to this library by sending Github pull requests. I'm quite reactive :-)

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
