PHPackages                             ricardonavarrom/vatin-validator-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. ricardonavarrom/vatin-validator-bundle

ActiveSymfony-bundle[Validation &amp; Sanitization](/categories/validation)

ricardonavarrom/vatin-validator-bundle
======================================

A Symfony bundle for for validating VAT identification numbers (VATINs).

1.2.5(9y ago)234MITPHPPHP &gt;=5.5.9

Since Sep 11Pushed 9y ago1 watchersCompare

[ Source](https://github.com/ricardonavarrom/VATINValidatorBundle)[ Packagist](https://packagist.org/packages/ricardonavarrom/vatin-validator-bundle)[ Docs](https://github.com/ricardonavarrom/VATINValidatorBundle)[ RSS](/packages/ricardonavarrom-vatin-validator-bundle/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (11)Versions (10)Used By (0)

VATINValidatorBundle
====================

[](#vatinvalidatorbundle)

[![Build Status](https://camo.githubusercontent.com/db114eb0ab166ab9bc9e278325a5bcf0c4503b1503663ecb2d3b12ea02b523c3/68747470733a2f2f7472617669732d63692e6f72672f7269636172646f6e61766172726f6d2f564154494e56616c696461746f7242756e646c652e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/ricardonavarrom/VATINValidatorBundle)[![Coverage Status](https://camo.githubusercontent.com/9d34a17df3ba0d285f3709984b780855d30203a368cf996b41c9d5d020db28a0/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f7269636172646f6e61766172726f6d2f564154494e56616c696461746f7242756e646c652f62616467652e7376673f6272616e63683d6d6173746572)](https://coveralls.io/github/ricardonavarrom/VATINValidatorBundle?branch=master)[![Total Downloads](https://camo.githubusercontent.com/25d33ddc840f82f28c8ec5b2dec28faf4985aead435cabae9d64e17747635ba4/68747470733a2f2f706f7365722e707567782e6f72672f7269636172646f6e61766172726f6d2f766174696e2d76616c696461746f722d62756e646c652f646f776e6c6f616473)](https://packagist.org/packages/ricardonavarrom/vatin-validator-bundle)[![SensioLabsInsight](https://camo.githubusercontent.com/b4bb8368d28704ec90344baf03a64e6569085c68c4167ca56a3eb61a110fc75a/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f66386436343433622d373063362d346565662d383331302d6532356537313136323239372f6d696e692e706e67)](https://insight.sensiolabs.com/projects/f8d6443b-70c6-4eef-8310-e25e71162297)

A Symfony bundle for for validating VAT identification numbers (VATINs) based on [VATINValidator PHP library](https://github.com/ricardonavarrom/VATINValidator).

Installation
------------

[](#installation)

This bundle is available on [Packagist](https://packagist.org/packages/ricardonavarrom/vatin-validator-bundle).

You can install this bundle using composer

```
$ composer require ricardonavarrom/vatin-validator-bundle
```

or add the package to your composer.json file directly.

After you have installed the package, you just need to add the bundle to your AppKernel.php file:

```
// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new ricardonavarrom\VATINValidatorBundle\VATINValidatorBundle(),
    // ...
);
```

Configuration
-------------

[](#configuration)

VATINValidatorBundle requires no initial configuration to get you started.

Basic usage
-----------

[](#basic-usage)

The configured validator is available as ***ricardonavarrom.vatin\_validator*** service. You must assign a valid locale (view availables locales section).

```
$locale = 'es';
$vatin = '56475114V';
$validator = $container->get('ricardonavarrom.vatin_validator');
$vatinIsValid = $validator->validate($vatin, $locale);
```

Another option is to use a located validator service as ***ricardonavarrom.vatin\_validator.es*** (view availables locales section).

```
$vatin = '56475114V';
$locatedValidator = $container->get('ricardonavarrom.vatin_validator.es');
$vatinIsValid = $locatedValidator->validate($vatin);
```

Availables locales
------------------

[](#availables-locales)

LocaleCountryLocal name**es**SpainNúmero de Identificación Fiscal (for freelancers or singular persons), Número de Identidad de Extranjero (for foreigners) or Código de Identificación Fiscal (for companies)**pt**PortugalNúmero de identificação fiscal (for freelancers or singular persons) or Número de Identificação de Pessoa Colectiva (for companies)*We are working to implement more availables locales.*Constraints
-----------

[](#constraints)

VATINValidatorBundle provides the following constraints:

ConstraintCountryOptions**VATINEsConstraint**Spain**message**: string (default: 'The VATIN "%vatin%" is not a valid "%validationModality%".'). **allowLowerCase**: boolean (default: true). **validationModality**: 'NIF', 'NIE' or 'CIF' (by default checks in all validation modalities).**VATINPtConstraint**Portugal**message**: string (default: 'The VATIN "%vatin%" is not a valid "%validationModality%".'). **validationModality**: 'NIF' or 'NIPC' (by default checks in all validation modalities).For example:```
// src/AppBundle/Entity/Customer.php
namespace AppBundle\Entity;

use ricardonavarrom\VATINValidatorBundle\Validator\Constraints\VATINEsConstraint;

class Customer
{
    /**
     * @VATINEsConstraint(
     *  allowLowerCase = false,
     *  validationModality = "NIF"
     * )
     */
    private $vatin;
}
```

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

9

Last Release

3494d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9ade85ff003d2fb93db78622c5f714972a06955252e79bacf38f44c6a16df8f7?d=identicon)[ricardonavarrom](/maintainers/ricardonavarrom)

---

Top Contributors

[![ricardonavarrom](https://avatars.githubusercontent.com/u/2845589?v=4)](https://github.com/ricardonavarrom "ricardonavarrom (35 commits)")

---

Tags

validationvatvat validationvat identification numbers

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/ricardonavarrom-vatin-validator-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/ricardonavarrom-vatin-validator-bundle/health.svg)](https://phpackages.com/packages/ricardonavarrom-vatin-validator-bundle)
```

###  Alternatives

[composer/semver

Version comparison library that offers utilities, version constraint parsing and validation.

3.3k489.6M671](/packages/composer-semver)[giggsey/libphonenumber-for-php

A library for parsing, formatting, storing and validating international phone numbers, a PHP Port of Google's libphonenumber.

5.0k148.7M415](/packages/giggsey-libphonenumber-for-php)[respect/validation

The most awesome validation engine ever created for PHP

5.9k37.4M381](/packages/respect-validation)[propaganistas/laravel-phone

Adds phone number functionality to Laravel based on Google's libphonenumber API.

3.0k35.7M106](/packages/propaganistas-laravel-phone)[opis/json-schema

Json Schema Validator for PHP

64236.9M185](/packages/opis-json-schema)[ph-7/eu-vat-validator

A simple and clean PHP class that validates EU VAT numbers against the central ec.europa.eu database (using the official europa API).

95464.2k1](/packages/ph-7-eu-vat-validator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
