ddeboer/vatin-bundle

Symfony bundle for the VATIN library

Maintainers

👁 ddeboer

Package info

github.com/ddeboer/vatin-bundle

Type:symfony-bundle

pkg:composer/ddeboer/vatin-bundle

Statistics

Installs: 931 646

Dependents: 0

Suggesters: 0

Stars: 29

Open Issues: 1

4.1.0 2026-03-12 18:30 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 99d1d7c80e80ca459c5083a0306eaf0d362a2d60

  • David de Boer <david.woop@ddeboer.nl>

vattaxbtw

This package is auto-updated.

Last update: 2026-06-12 19:04:26 UTC


README

👁 Packagist Version

A Symfony bundle for the VATIN library.

Installation

This library is available on Packagist:

composer require ddeboer/vatin-bundle

Then add the bundle to your application:

// app/AppKernel.php
public function registerBundles()
{
 return [
 ...
 new Ddeboer\VatinBundle\DdeboerVatinBundle(),
 ...
 ];
}

Usage

Validate number format

Use the validator to validate a property on your models.

use Ddeboer\VatinBundle\Validator\Constraints\Vatin;

class Company
{
 #[Vatin]
 protected string $vatNumber;

Symfony’s validator will now check whether $vatNumber has a valid VAT number format. For more information, see Symfony’s documentation.

Validate number existence

Additionally, you can check whether the VAT number is in use:

 use Ddeboer\VatinBundle\Validator\Constraints\Vatin;

 #[Vatin(checkExistence=true)]
 protected string $vatNumber;

The validator will now check the VAT number against the VAT Information Exchange System (VIES) SOAP web service. This service’s availability is rather unreliable, so it’s a good idea to catch the case where it’s unreachable:

use Symfony\Component\Validator\Exception\ValidatorException;

try {
 if ($validator->isValid()) {
 // Happy flow
 }
} catch (ValidatorException $e) {
 // VAT could not be validated because VIES service is unreachable
}

Using the services directly

You can also use this bundle’s services directly. Validate a VAT number’s format:

$validator = $container->get('ddeboer_vatin.vatin_validator');
$bool = $validator->isValid('NL123456789B01');

Additionally, check whether the VAT number is in use:

$bool = $validator->isValid('NL123456789B01', true);

To interact with the VIES webservice:

$vies = $container->get('ddeboer_vatin.vies.client');
$checkVatResponse = $vies->checkVat('NL', '123456789B01');

More information

For more information, see the VATIN library’s documentation.