josemmo / verifactu-php
Librería para la implementación del sistema VERI*FACTU de la AEAT española
Fund package maintenance!
josemmo
Installs: 2 491
Dependents: 0
Suggesters: 0
Security: 0
Stars: 78
Watchers: 12
Forks: 39
Open Issues: 3
pkg:composer/josemmo/verifactu-php
Requires
- php: >=8.2
- guzzlehttp/guzzle: ^7.10
- josemmo/uxml: ^0.1.4
- symfony/validator: ^6.4|^7.4|^8.0
Requires (Dev)
- laravel/pint: ^1.26
- phpdocumentor/shim: ^3.9
- phpstan/phpstan: ^2.1
- phpstan/phpstan-strict-rules: ^2.0
- phpunit/phpunit: ^11.5|^12.4
README
Verifactu-PHP es una librería sencilla escrita en PHP que permite generar registros de facturación según el sistema VERI*FACTU y posteriormente enviarlos telemáticamente a la Agencia Tributaria (AEAT).
Instalación
Asegúrate de que tu entorno de ejecución cumple los siguientes requisitos:
- PHP 8.2 o superior
- libXML
Puedes instalar la librería utilizando el gestor de dependencias Composer:
composer require josemmo/verifactu-php
Ejemplo de uso
use josemmo\Verifactu\Models\ComputerSystem; use josemmo\Verifactu\Models\Records\BreakdownDetails; use josemmo\Verifactu\Models\Records\FiscalIdentifier; use josemmo\Verifactu\Models\Records\InvoiceIdentifier; use josemmo\Verifactu\Models\Records\InvoiceType; use josemmo\Verifactu\Models\Records\OperationType; use josemmo\Verifactu\Models\Records\RegimeType; use josemmo\Verifactu\Models\Records\RegistrationRecord; use josemmo\Verifactu\Models\Records\TaxType; use josemmo\Verifactu\Models\Responses\ResponseStatus; use josemmo\Verifactu\Services\AeatClient; require __DIR__ . '/vendor/autoload.php'; // Genera un registro de facturación $record = new RegistrationRecord(); $record->invoiceId = new InvoiceIdentifier(); $record->invoiceId->issuerId = 'A00000000'; $record->invoiceId->invoiceNumber = 'TICKET-2025-06-001'; $record->invoiceId->issueDate = new DateTimeImmutable('2025-06-10'); $record->issuerName = 'Perico de los Palotes, S.A.'; $record->invoiceType = InvoiceType::Simplificada; $record->description = 'Factura simplificada de prueba'; $record->breakdown[0] = new BreakdownDetails(); $record->breakdown[0]->taxType = TaxType::IVA; $record->breakdown[0]->regimeType = RegimeType::C01; $record->breakdown[0]->operationType = OperationType::Subject; $record->breakdown[0]->baseAmount = '10.00'; $record->breakdown[0]->taxRate = '21.00'; $record->breakdown[0]->taxAmount = '2.10'; $record->totalTaxAmount = '2.10'; $record->totalAmount = '12.10'; $record->previousInvoiceId = null; // primera factura de la cadena $record->previousHash = null; // primera factura de la cadena $record->hashedAt = new DateTimeImmutable(); $record->hash = $record->calculateHash(); $record->validate(); // Define los datos del SIF $system = new ComputerSystem(); $system->vendorName = 'Perico de los Palotes, S.A.'; $system->vendorNif = 'A00000000'; $system->name = 'Sistema Informático de Prueba'; $system->id = 'PA'; $system->version = '0.0.1'; $system->installationNumber = '1234'; $system->onlySupportsVerifactu = true; $system->supportsMultipleTaxpayers = false; $system->hasMultipleTaxpayers = false; $system->validate(); // Crea un cliente para el webservice de la AEAT $taxpayer = new FiscalIdentifier('Perico de los Palotes, S.A.', 'A00000000'); $client = new AeatClient($system, $taxpayer); $client->setCertificate(__DIR__ . '/certificado.pfx', 'contraseña'); $client->setProduction(false); // <-- para usar el entorno de preproducción $aeatResponse = $client->send([$record])->wait(); // Obtiene la respuesta if ($aeatResponse->status === ResponseStatus::Correct) { $csv = $aeatResponse->csv; echo "Registro aceptado sin errores: $csv\n"; } else { $errorDescription = $aeatResponse->items[0]->errorDescription; echo "Registro rechazado o aceptado con errores: $errorDescription\n"; }
Exención de responsabilidad
Esta librería se proporciona sin una declaración responsable al no ser un Sistema Informático de Facturación (SIF). Verifactu-PHP es una herramienta para crear SIFs, es tu responsabilidad auditar su código y usarlo de acuerdo a la normativa vigente.
Para más información, consulta el Artículo 13 del RD 1007/2023.
Licencia
Verifactu-PHP se encuentra bajo licencia MIT. Puedes utilizar este paquete en cualquier proyecto (incluso con fines comerciales), siempre y cuando hagas referencia al uso y autoría de la misma.