Rex
Librería PHP open-source para generar, firmar y exportar facturas electrónicas FacturaE con API fluent y firma XAdES-EPES.
6 líneas. Una factura firmada.
Invoice::create('FAC-001') ->seller(Party::company('B12345678', 'Mi Empresa S.L.')) ->buyer(Party::person('12345678Z', 'Laura', 'Gómez', 'Ruiz')) ->line('Diseño logotipo', price: 450.00, vat: 21) ->sign(Signer::pfx('certificado.pfx', 'password')) ->export('factura.xsig');Eso es Rex. Facturación electrónica FacturaE en PHP, sin complicaciones.
Sin configuraciones interminables. Sin dependencias externas. Sin semanas de desarrollo.
El problema
Las empresas españolas están obligadas a emitir facturas electrónicas para la AEAT y FACe. Pero integrar eso en una aplicación web suele costar semanas de trabajo: especificaciones densas, certificados digitales, y XML que nadie quiere escribir a mano.
Rex lo reduce a una tarde.
Todo tipo de impuestos
IVA, IGIC para Canarias, retenciones de IRPF, recargo de equivalencia, exenciones… Cada caso fiscal tiene su método claro:
->line('Producto', price: 100, vat: 21)->line('Servicio profesional', price: 500, vat: 21, irpf: 15)->line('Producto canario', price: 100, igic: 7)->line('Joyería', price: 200, vat: 21, surcharge: 5.2)->exemptLine('Formación', price: 2000, reason: 'Art. 20.Uno.9')Empresas, autónomos y extranjeros
// EmpresaParty::company('B12345678', 'Empresa S.L.') ->address('C/ Mayor 10', '28013', 'Madrid', 'Madrid')
// AutónomoParty::person('12345678Z', 'Laura', 'Gómez', 'Ruiz') ->address('C/ Sol 3', '28012', 'Madrid', 'Madrid')
// Empresa extranjeraParty::company('FR12345678901', 'Entreprise SAS') ->address('12 Rue de la Paix', '75002', 'Paris', 'Île-de-France', 'FRA')También soporta facturación a la Administración Pública con centros FACe.
Pagos flexibles
Transferencia, tarjeta, domiciliación, efectivo… y pagos a plazos con un solo método:
->splitPayments( method: PaymentMethod::Transfer, installments: 3, firstDueDate: '2025-04-01', intervalDays: 30, iban: 'ES91 2100 0418 4502 0005 1332',)Rex calcula los importes, reparte los céntimos sobrantes en el último plazo y genera las fechas automáticamente.
Firma digital en una línea
Firmar facturas electrónicamente es la parte más compleja de FacturaE. Rex la simplifica al máximo:
->sign(Signer::pfx('certificado.pfx', 'password'))Compatible con los certificados más comunes (PKCS#12 y PEM), con opción de sellado de tiempo oficial.
Rectificativas
Facturas de corrección con motivo legal y periodo fiscal, todo tipado:
->corrects( invoiceNumber: 'FAC-001', reason: CorrectionReason::TaxableBase, method: CorrectionMethod::FullReplacement, periodStart: '2025-01-01', periodEnd: '2025-03-31',)Lo que incluye
| 29 impuestos | IVA, IGIC, IRPF, recargo de equivalencia, exenciones… |
| 19 métodos de pago | Transferencia, tarjeta, domiciliación, efectivo, pagos a plazos… |
| Firma digital | Certificados PKCS#12 y PEM, con sellado de tiempo |
| Rectificativas | 22 motivos de corrección + periodo fiscal |
| Adjuntos | PDFs, contratos o cualquier documento embebido en la factura |
| Validación oficial | Contra el estándar FacturaE 3.2, 3.2.1 y 3.2.2 |
| Facturación a AAPP | Centros administrativos FACe incluidos |
Rápido y ligero
| 1 factura | ~0.2 ms |
| 100 facturas | ~22 ms |
Cero dependencias externas. Solo PHP estándar.
composer require mariodevv/rexRoadmap
Completado
- FacturaE 3.2, 3.2.1 y 3.2.2
- 29 impuestos · 19 métodos de pago · 36 unidades de medida
- Firma digital con sellado de tiempo
- Facturas rectificativas
- Pagos fraccionados
- Descuentos y cargos generales
- Adjuntos embebidos
- Empresas, autónomos, extranjeros y centros FACe
Próximamente
- Envío directo a FACe
- Envío a FACeB2B
- Suplidos y cesionarios
Open Source
Rex es código abierto con licencia MIT. Úsalo, modifícalo, contribuye.
git clone https://github.com/MarioDevv/rex.git¿Encontraste un bug? Abre un issue. Los PRs son bienvenidos.