PHPackages                             esolutions/peru - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. esolutions/peru

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

esolutions/peru
===============

Peru-specific utilities: RUC/DNI validators and number to letters

1.0.0(2mo ago)00proprietaryPHPPHP ^8.2

Since May 13Pushed 1mo agoCompare

[ Source](https://github.com/eriquegasparcarlos/esolutions-peru)[ Packagist](https://packagist.org/packages/esolutions/peru)[ RSS](/packages/esolutions-peru/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (2)Used By (0)

esolutions/peru
===============

[](#esolutionsperu)

Utilidades específicas para el mercado peruano: validación de documentos de identidad y conversión de números a letras para comprobantes electrónicos.

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

[](#instalación)

```
composer require esolutions/peru
```

Namespace
---------

[](#namespace)

```
Esolutions\Peru\

```

---

Validators — `RucValidator`
---------------------------

[](#validators--rucvalidator)

Valida el RUC peruano usando el algoritmo oficial del dígito verificador de SUNAT.

```
use Esolutions\Peru\Validators\RucValidator;

$result = RucValidator::validate('20100070970');
// → ['success' => true]

$result = RucValidator::validate('12345678901');
// → ['success' => false, 'message' => 'El RUC es incorrecto']
```

**Validaciones aplicadas:**

1. Longitud exacta de 11 dígitos
2. Solo caracteres numéricos
3. Dígito verificador correcto (algoritmo módulo 11 de SUNAT)

---

Validators — `DniValidator`
---------------------------

[](#validators--dnivalidator)

Valida el formato del DNI peruano.

```
use Esolutions\Peru\Validators\DniValidator;

DniValidator::validate('12345678');        // → ['success' => true]
DniValidator::validate('12345678-1234');   // → ['success' => true]
DniValidator::validate('12345678 1234');   // → ['success' => true]
DniValidator::validate('1234');            // → ['success' => false, 'message' => 'El DNI es incorrecto']
```

**Formatos aceptados:**

FormatoEjemploDescripción8 dígitos`12345678`DNI estándar8 + guion + 4`12345678-1234`Con código de verificación8 + espacio + 4`12345678 1234`Con código de verificación---

Support — `NumberToLetterHelper`
--------------------------------

[](#support--numbertoletterhelper)

Convierte valores numéricos a su representación en letras en español. Requerido por SUNAT para comprobantes electrónicos (el monto debe expresarse en letras).

```
use Esolutions\Peru\Support\NumberToLetterHelper;

// Formato estándar (letras)
NumberToLetterHelper::convertToLetter(1234.56, 'SOLES');
// → "Mil doscientos treinta y cuatro con 56/100 SOLES"

// Formato con número (para comprobantes)
NumberToLetterHelper::convertToLetter(1234.56, 'SOLES', format: true);
// → "1.234,56 (Mil doscientos treinta y cuatro con 56/100 SOLES)"

// Sin moneda
NumberToLetterHelper::convertToLetter(100.00);
// → "Cien con 00/100 "

// Dólares
NumberToLetterHelper::convertToLetter(999999999.99, 'DÓLARES');
// → "Novecientos noventa y nueve millones novecientos noventa y nueve mil novecientos noventa y nueve con 99/100 DÓLARES"
```

**Parámetros:**

ParámetroTipoDefaultDescripción`$number``float|int|string`—Número a convertir`$currency``string``''`Texto de moneda (`SOLES`, `DÓLARES`)`$format``bool``false``true` incluye el número formateado al inicio**Formatos de entrada aceptados:**

EntradaInterpretación`1234.56`Punto como decimal`"1,234.56"`Coma como miles, punto como decimal`"1.234,56"`Punto como miles, coma como decimal`"1234,56"`Coma como decimal**Rango soportado:** `0` a `999,999,999.99`

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance88

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 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

Unknown

Total

1

Last Release

74d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/57302658?v=4)[eriquegasparcarlos](/maintainers/eriquegasparcarlos)[@eriquegasparcarlos](https://github.com/eriquegasparcarlos)

---

Top Contributors

[![eriquegasparcarlos](https://avatars.githubusercontent.com/u/57302658?v=4)](https://github.com/eriquegasparcarlos "eriquegasparcarlos (3 commits)")

### Embed Badge

![Health badge](/badges/esolutions-peru/health.svg)

```
[![Health](https://phpackages.com/badges/esolutions-peru/health.svg)](https://phpackages.com/packages/esolutions-peru)
```

###  Alternatives

[robicch/jquery-gantt

Twproject Gantt editor is a free online tool for creating and sharing Gantts

2.2k169.0k](/packages/robicch-jquery-gantt)[spatie/lighthouse-php

Run Google Lighthouse using PHP

26861.5k2](/packages/spatie-lighthouse-php)

PHPackages © 2026

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