PHPackages                             devralint/cuit-cuil-validator - 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. devralint/cuit-cuil-validator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

devralint/cuit-cuil-validator
=============================

Validador y parser de CUIT/CUIL argentinos (dígito verificador módulo 11). Sin dependencias de framework.

v1.0.0(1mo ago)00MITPHPPHP &gt;=8.2CI failing

Since Jun 2Pushed 1mo agoCompare

[ Source](https://github.com/ejadull/devralint-cuit-cuil-validator)[ Packagist](https://packagist.org/packages/devralint/cuit-cuil-validator)[ RSS](/packages/devralint-cuit-cuil-validator/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

[![devralint/cuit-cuil-validator](https://repository-images.githubusercontent.com/1256749390/5e511837-87f1-4ec2-bac3-247391cb4914)](https://repository-images.githubusercontent.com/1256749390/5e511837-87f1-4ec2-bac3-247391cb4914)

devralint/cuit-cuil-validator
=============================

[](#devralintcuit-cuil-validator)

Librería PHP para validar y parsear CUIT/CUIL argentinos. Algoritmo módulo 11 con pesos `[5,4,3,2,7,6,5,4,3,2]`. Sin dependencias de framework.

[![CI](https://github.com/devralint/cuit-cuil-validator/actions/workflows/ci.yml/badge.svg)](https://github.com/devralint/cuit-cuil-validator/actions/workflows/ci.yml)

Instalación
-----------

[](#instalación)

```
composer require devralint/cuit-cuil-validator
```

**Requisitos:** PHP &gt;= 8.2

Uso
---

[](#uso)

### Validación rápida (stateless)

[](#validación-rápida-stateless)

```
use Devralint\Cuit\Validator;

Validator::isValid('20-12345678-6'); // true
Validator::isValid('20-12345678-9'); // false — dígito verificador incorrecto
Validator::isValid('20 12345678 6'); // true — acepta espacios
Validator::isValid('20123456786');   // true — sin separadores
```

### Value object

[](#value-object)

```
use Devralint\Cuit\Cuit;
use Devralint\Cuit\Exception\InvalidCuitException;

// Construcción estricta: lanza InvalidCuitException si inválido
$cuit = Cuit::fromString('20-12345678-6');

echo $cuit->prefix;      // "20"
echo $cuit->body;        // "12345678"
echo $cuit->checkDigit;  // 6
echo $cuit->formatted(); // "20-12345678-6"
echo (string) $cuit;     // "20-12345678-6"

$cuit->isFisica();       // true
$cuit->isJuridica();     // false

// Construcción tolerante: devuelve null si inválido
$cuit = Cuit::tryFrom('invalido'); // null
```

### Tipo de persona

[](#tipo-de-persona)

```
use Devralint\Cuit\PersonaType;

$cuit->type; // PersonaType::Fisica | PersonaType::Juridica | PersonaType::Otro
```

PrefijosTipo20, 23, 24, 25, 26, 27`Fisica`30, 33, 34`Juridica`otros`Otro` (CUIT válido, tipo desconocido)> **Nota:** la inferencia del tipo es orientativa. AFIP/ARCA es la fuente de verdad definitiva.

Integración con Laravel
-----------------------

[](#integración-con-laravel)

```
// En un Form Request
use Devralint\Cuit\Validator as CuitValidator;

$request->validate([
    'cuit' => ['required', 'string', function (string $attr, mixed $value, Closure $fail) {
        if (!CuitValidator::isValid((string) $value)) {
            $fail("El campo $attr no es un CUIT/CUIL válido.");
        }
    }],
]);
```

Para una integración completa (Rule, cast Eloquent, Service Provider), ver el paquete satélite `devralint/laravel-cuit` (próximamente).

Integración con Yii 2
---------------------

[](#integración-con-yii-2)

```
use Devralint\Cuit\Validator as CuitValidator;
use yii\validators\Validator;

class CuitValidator extends Validator
{
    public function validateValue($value): ?array
    {
        return CuitValidator::isValid((string) $value)
            ? null
            : [$this->message ?? 'CUIT/CUIL inválido.', []];
    }
}
```

Caso de borde: dígito verificador = 10
--------------------------------------

[](#caso-de-borde-dígito-verificador--10)

El algoritmo módulo 11 puede producir `dv = 10`. Esta librería usa la convención **permisiva** (la más difundida en Argentina): `10 → 9`. AFIP/ARCA evita emitir CUIT con ese resultado reasignando el prefijo, por lo que en la práctica estos casos son raros.

Desarrollo
----------

[](#desarrollo)

```
composer install
composer test       # PHPUnit 11
composer analyse    # PHPStan level max
```

Licencia
--------

[](#licencia)

MIT — ver [LICENSE](LICENSE).

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance90

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

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

Unknown

Total

1

Last Release

52d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/17858862?v=4)[Edgardo Jadull](/maintainers/ejadull)[@ejadull](https://github.com/ejadull)

---

Tags

validatorafiparcavalidadorargentinaCUITcuilcuit-validator

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/devralint-cuit-cuil-validator/health.svg)

```
[![Health](https://phpackages.com/badges/devralint-cuit-cuil-validator/health.svg)](https://phpackages.com/packages/devralint-cuit-cuil-validator)
```

###  Alternatives

[respect/validation

The most awesome validation engine ever created for PHP

6.0k39.9M418](/packages/respect-validation)[seld/jsonlint

JSON Linter

1.3k228.7M274](/packages/seld-jsonlint)[composer/spdx-licenses

SPDX licenses list and validation library.

1.4k193.5M40](/packages/composer-spdx-licenses)[opis/json-schema

Json Schema Validator for PHP

65543.6M320](/packages/opis-json-schema)[iutrace/laravel-cuit-validator

Argentinian CUIT and CUIL Validator

1113.4k](/packages/iutrace-laravel-cuit-validator)[laminas/laminas-validator

Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria

16048.2M222](/packages/laminas-laminas-validator)

PHPackages © 2026

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