PHPackages                             ionysdev/pkuatia - 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. [API Development](/categories/api)
4. /
5. ionysdev/pkuatia

ActiveLibrary[API Development](/categories/api)

ionysdev/pkuatia
================

Implementacion en PHP de la interfaz con el sistema EKuatia de faturacion electronica de Paraguay

v0.0.2(1mo ago)6123[1 issues](https://github.com/IonysDev/pkuatia/issues)MITPHPPHP ^7.1.3 || ^8.0

Since Dec 17Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/IonysDev/pkuatia)[ Packagist](https://packagist.org/packages/ionysdev/pkuatia)[ RSS](/packages/ionysdev-pkuatia/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (4)Versions (3)Used By (0)

📄 PKuatia
=========

[](#-pkuatia)

[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)[![PHP Version](https://camo.githubusercontent.com/ff3bfbff72db1f740670574a9d16a6fac49fb7401c0a00a76288fac238bb91de/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d253345253344372e312e33253230253743253743253230253545382e302d626c75652e737667)](https://www.php.net/)

**PKuatia** es una biblioteca PHP para interactuar con el **Sistema Integrado de Facturación Electrónica Nacional (SIFEN)** de Paraguay, implementando la especificación técnica del sistema **EKuatia**.

Esta biblioteca permite generar, firmar, enviar y consultar Documentos Tributarios Electrónicos (DTE) según el Manual Técnico Versión 150 del SIFEN.

📋 Tabla de Contenidos
---------------------

[](#-tabla-de-contenidos)

- [Características](#-caracter%C3%ADsticas)
- [Requisitos](#-requisitos)
- [Instalación](#-instalaci%C3%B3n)
- [Configuración](#-configuraci%C3%B3n)
- [Uso Básico](#-uso-b%C3%A1sico)
- [Funcionalidades](#-funcionalidades)
- [Tipos de Documentos Soportados](#-tipos-de-documentos-soportados)
- [Ejemplos](#-ejemplos)
- [Estructura del Proyecto](#-estructura-del-proyecto)
- [Contribución](#-contribuci%C3%B3n)
- [Licencia](#-licencia)
- [Autores](#-autores)

✨ Características
-----------------

[](#-características)

- 🔐 **Firma digital de documentos** usando certificados PEM o P12
- 📤 **Envío de documentos electrónicos** individuales o en lotes (hasta 50 documentos)
- 🔍 **Consultas al SIFEN**:
    - Consulta de RUC (Registro Único del Contribuyente)
    - Consulta de documentos electrónicos por CDC
    - Consulta de lotes de documentos
- 🎫 **Gestión de eventos**:
    - Cancelación de documentos electrónicos
    - Inutilización de números de documentos
- 📱 **Generación automática de códigos QR** para validación de documentos
- 🏗️ **Arquitectura orientada a objetos** con clases tipadas
- ✅ **Validaciones** según especificaciones del Manual Técnico
- 🔄 **Soporte para ambientes** de desarrollo y producción
- 📊 **Mapeos de datos** predefinidos (países, departamentos, monedas, unidades de medida)

📦 Requisitos
------------

[](#-requisitos)

- PHP &gt;= 7.1.3 o PHP &gt;= 8.0
- Composer
- Certificado digital emitido por la SET (Subsecretaría de Estado de Tributación)
- Clave privada correspondiente al certificado
- Credenciales de acceso al SIFEN (ID CSC y CSC)

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

[](#-instalación)

### Instalación mediante Composer

[](#instalación-mediante-composer)

```
composer require ionysdev/pkuatia
```

### Instalación desde el repositorio

[](#instalación-desde-el-repositorio)

```
git clone https://github.com/ionysdev/pkuatia.git
cd pkuatia
composer install
```

⚙️ Configuración
----------------

[](#️-configuración)

Antes de utilizar la biblioteca, es necesario configurar los parámetros de conexión y autenticación:

```
use IonysDev\Pkuatia\Core\Config;
use IonysDev\Pkuatia\Sifen;

$config = new Config();

// Ambiente (dev o prod)
$config->env = Config::ENV_DEV; // o Config::ENV_PROD para producción

// Formato del certificado (pem o p12)
$config->certificateFormat = "pem"; // o "p12"

// Rutas de los archivos de certificado y clave privada
$config->certificateFilePath = "/ruta/a/tu/certificado.crt";
$config->privateKeyFilePath = "/ruta/a/tu/clave_privada.key";
$config->privateKeyPassphrase = "tu_contraseña";

// Credenciales del SIFEN
$config->idCsc = "0001"; // ID CSC proporcionado por el SIFEN
$config->csc = "ABCD0000000000000000000000000000"; // CSC de 32 caracteres

// Ruta para almacenar el archivo de control del dId (opcional)
$config->dIdFilePath = "PKuatiaDId.dat.json";

// Inicializar Sifen
Sifen::Init($config);
```

### Configuración desde archivo JSON

[](#configuración-desde-archivo-json)

También puedes cargar la configuración desde un archivo JSON:

```
$config = Config::ParseJsonFile("config.json");
Sifen::Init($config);
```

Ejemplo de `config.json`:

```
{
    "env": "dev",
    "certificateFormat": "pem",
    "certificateFilePath": "/ruta/a/certificado.crt",
    "privateKeyFilePath": "/ruta/a/clave_privada.key",
    "privateKeyPassphrase": "contraseña",
    "idCsc": "0001",
    "csc": "ABCD0000000000000000000000000000",
    "dIdFilePath": "PKuatiaDId.dat.json"
}
```

📖 Uso Básico
------------

[](#-uso-básico)

### Consultar un RUC

[](#consultar-un-ruc)

```
use IonysDev\Pkuatia\Sifen;

// Consultar información de un contribuyente por su RUC
$respuesta = Sifen::ConsultarRUC("80012345-7");

if ($respuesta->getCodRes() == 0100) {
    echo "RUC encontrado: " . $respuesta->getDRucEm();
} else {
    echo "Error: " . $respuesta->getDsRes();
}
```

### Consultar un Documento Electrónico

[](#consultar-un-documento-electrónico)

```
// Consultar un DE por su CDC (Código de Control)
$cdc = "01800123445001123456701234567890123456789012345678";
$respuesta = Sifen::ConsultarDE($cdc);

if ($respuesta->getCodRes() == 0100) {
    echo "Documento encontrado";
    $respuesta->showData(); // Mostrar información del documento
}
```

🎯 Funcionalidades
-----------------

[](#-funcionalidades)

### 1. Crear y Firmar un Documento Electrónico

[](#1-crear-y-firmar-un-documento-electrónico)

```
use IonysDev\Pkuatia\Core\Fields\DE\AA\RDE;
use IonysDev\Pkuatia\Core\DocumentosElectronicos\DocumentoElectronico;
use IonysDev\Pkuatia\Sifen;
use DateTime;

// Crear un nuevo documento electrónico (RDE)
$rde = new RDE();

// Configurar el documento electrónico según tus necesidades
$de = new DocumentoElectronico();
// ... configurar campos del DE ...

$rde->setDE($de);

// Firmar el documento
$fechaFirma = new DateTime('now', new DateTimeZone('America/Asuncion'));
$xmlFirmado = Sifen::FirmarDE($rde, $fechaFirma);

// El XML está listo para ser enviado al SIFEN
```

### 2. Enviar un Documento Electrónico

[](#2-enviar-un-documento-electrónico)

```
// Enviar el documento firmado al SIFEN
$respuesta = Sifen::EnviarDE($xmlFirmado);

if ($respuesta->getCodRes() == 0100) {
    $cdc = $respuesta->getCDC();
    echo "Documento enviado exitosamente. CDC: " . $cdc;
} else {
    echo "Error al enviar: " . $respuesta->getDsRes();
}
```

### 3. Enviar un Lote de Documentos

[](#3-enviar-un-lote-de-documentos)

```
// Preparar el lote de documentos (máximo 50 documentos)
$lote = [
    $xmlFirmado1,
    $xmlFirmado2,
    // ... más documentos
];

// Enviar el lote
$respuesta = Sifen::EnviarLoteDE($lote);

if ($respuesta->getCodRes() == 0100) {
    $nroLote = $respuesta->getNroLote();
    echo "Lote enviado. Número de lote: " . $nroLote;
}
```

### 4. Consultar un Lote

[](#4-consultar-un-lote)

```
// Consultar el estado de un lote por su número
$nroLote = 123456;
$respuesta = Sifen::ConsultaLote($nroLote);
```

### 5. Cancelar un Documento Electrónico

[](#5-cancelar-un-documento-electrónico)

```
// Cancelar un documento por su CDC
$cdc = "01800123445001123456701234567890123456789012345678";
$motivo = "Error en la información del documento";

$respuesta = Sifen::CancelarDE($cdc, $motivo);

if ($respuesta->getCodRes() == 0100) {
    echo "Documento cancelado exitosamente";
}
```

### 6. Inutilizar Números de Documentos

[](#6-inutilizar-números-de-documentos)

```
use IonysDev\Pkuatia\Core\Constants\TimbTiDE;

// Inutilizar un rango de números de documentos
$respuesta = Sifen::InutilizarNumeros(
    timbrado: 123456,
    nroEstablecimiento: 1,
    nroPuntoEmision: 1,
    nroDocumentoInicial: 1,
    nroDocumentoFinal: 100,
    tipoDE: TimbTiDE::Factura,
    motivo: "Documentos dañados o perdidos"
);
```

📄 Tipos de Documentos Soportados
--------------------------------

[](#-tipos-de-documentos-soportados)

La biblioteca soporta los siguientes tipos de Documentos Tributarios Electrónicos según el Manual Técnico v150:

CódigoTipo de Documento1Factura Electrónica2Factura Electrónica de Exportación3Factura Electrónica de Importación4Autofactura Electrónica5Nota de Crédito Electrónica6Nota de Débito Electrónica7Nota de Remisión Electrónica8Comprobante de Retención ElectrónicoPuedes usar la enumeración `TimbTiDE` para referenciar estos tipos:

```
use IonysDev\Pkuatia\Core\Constants\TimbTiDE;

TimbTiDE::Factura->value; // 1
TimbTiDE::NotaDeCredito->value; // 5
```

📁 Estructura del Proyecto
-------------------------

[](#-estructura-del-proyecto)

```
pkuatia/
├── src/
│   ├── Core/                  # Clases principales
│   │   ├── Config.php        # Configuración del sistema
│   │   ├── Constants/        # Constantes y enumeraciones
│   │   ├── DocumentosElectronicos/  # Clases de documentos
│   │   ├── Fields/           # Campos del DE
│   │   ├── Requests/         # Peticiones al SIFEN
│   │   └── Responses/        # Respuestas del SIFEN
│   ├── DataMappings/         # Mapeos de datos (países, monedas, etc.)
│   ├── Helpers/              # Utilidades auxiliares
│   │   ├── QRHelper.php     # Generación de códigos QR
│   │   ├── SignHelper.php   # Firma digital
│   │   └── ...
│   ├── Utils/                # Utilidades generales
│   └── Sifen.php            # Clase principal
├── test/                     # Ejemplos y pruebas
├── documentation/            # Documentación técnica
└── composer.json

```

🔧 Dependencias
--------------

[](#-dependencias)

- **robrichards/xmlseclibs** (^3.1): Para la firma digital XML
- **krowinski/bcmath-extended** (^7.0): Para operaciones matemáticas de precisión extendida

📚 Ejemplos
----------

[](#-ejemplos)

Puedes encontrar ejemplos de uso en el directorio `test/`:

- `ConsultaDE.php` - Consulta de documentos electrónicos
- `ConsultaLote.php` - Consulta de lotes
- `ConsultaRUC.php` - Consulta de RUC

⚠️ Notas Importantes
--------------------

[](#️-notas-importantes)

1. **Certificados Digitales**: Debes contar con un certificado digital válido emitido por la SET de Paraguay.
2. **Ambiente de Pruebas**: Utiliza `Config::ENV_DEV` para desarrollo y pruebas. Los documentos generados en este ambiente llevarán el texto "DE generado en ambiente de prueba - sin valor comercial ni fiscal".
3. **Credenciales del SIFEN**: El ID CSC y CSC te serán proporcionados por el SIFEN durante el proceso de habilitación.
4. **Límites de Lotes**: Cada lote puede contener un máximo de 50 documentos electrónicos.
5. **Firma Digital**: La biblioteca requiere que el certificado y la clave privada estén disponibles localmente.

🤝 Contribución
--------------

[](#-contribución)

Las contribuciones son bienvenidas. Por favor:

1. Fork el proyecto
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request

📝 Licencia
----------

[](#-licencia)

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo [LICENSE](LICENSE) para más detalles.

👥 Autores
---------

[](#-autores)

- **Abilio Mancuello Petters** -
- **Gabriel Gauto** -

---

🔗 Enlaces Útiles
----------------

[](#-enlaces-útiles)

- [Manual Técnico SIFEN v150](https://www.set.gov.py/)
- [Portal del Contribuyente SET](https://www.set.gov.py/)
- [Documentación del SIFEN](https://ekuatia.set.gov.py/)

---

**Desarrollado especialmente para la comunidad de desarrolladores paraguayos**

###  Health Score

37

—

LowBetter than 83% of packages

Maintenance87

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 93.8% 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 ~105 days

Total

2

Last Release

47d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c352f3839f5f7fbace37df1d7130623ef20615ffbbdbc6393d0cc22c1b4c1c03?d=identicon)[abiliomp](/maintainers/abiliomp)

---

Top Contributors

[![abiliomp](https://avatars.githubusercontent.com/u/11349365?v=4)](https://github.com/abiliomp "abiliomp (137 commits)")[![ggautg](https://avatars.githubusercontent.com/u/98824692?v=4)](https://github.com/ggautg "ggautg (6 commits)")[![fernandomantoan](https://avatars.githubusercontent.com/u/210359?v=4)](https://github.com/fernandomantoan "fernandomantoan (3 commits)")

### Embed Badge

![Health badge](/badges/ionysdev-pkuatia/health.svg)

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

###  Alternatives

[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[facebook/php-business-sdk

PHP SDK for Facebook Business

90821.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

74513.7M114](/packages/meilisearch-meilisearch-php)[google/common-protos

Google API Common Protos for PHP

173103.7M50](/packages/google-common-protos)[hubspot/api-client

Hubspot API client

23914.2M16](/packages/hubspot-api-client)[n1ebieski/ksef-php-client

PHP API client that allows you to interact with the API Krajowego Systemu e-Faktur

7228.4k](/packages/n1ebieski-ksef-php-client)

PHPackages © 2026

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