mariodevv.com
Proyectos
Open Source Producción

Rex

Librería PHP open-source para generar, firmar y exportar facturas electrónicas FacturaE con API fluent y firma XAdES-EPES.

PHP 8.2FacturaEXAdES-EPESXML/XSDOpenSSLPHPUnit
Ver repositorio →

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:

Cada caso de uso cubierto
->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

Emisor y receptor
// Empresa
Party::company('B12345678', 'Empresa S.L.')
->address('C/ Mayor 10', '28013', 'Madrid', 'Madrid')
// Autónomo
Party::person('12345678Z', 'Laura', 'Gómez', 'Ruiz')
->address('C/ Sol 3', '28012', 'Madrid', 'Madrid')
// Empresa extranjera
Party::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:

3 plazos, ajuste automático de céntimos
->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:

Firma con certificado digital
->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:

Factura rectificativa
->corrects(
invoiceNumber: 'FAC-001',
reason: CorrectionReason::TaxableBase,
method: CorrectionMethod::FullReplacement,
periodStart: '2025-01-01',
periodEnd: '2025-03-31',
)

Lo que incluye

29 impuestosIVA, IGIC, IRPF, recargo de equivalencia, exenciones…
19 métodos de pagoTransferencia, tarjeta, domiciliación, efectivo, pagos a plazos…
Firma digitalCertificados PKCS#12 y PEM, con sellado de tiempo
Rectificativas22 motivos de corrección + periodo fiscal
AdjuntosPDFs, contratos o cualquier documento embebido en la factura
Validación oficialContra el estándar FacturaE 3.2, 3.2.1 y 3.2.2
Facturación a AAPPCentros administrativos FACe incluidos

Rápido y ligero

1 factura~0.2 ms
100 facturas~22 ms

Cero dependencias externas. Solo PHP estándar.

Instalación
composer require mariodevv/rex

Roadmap

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.

Terminal window
git clone https://github.com/MarioDevv/rex.git

¿Encontraste un bug? Abre un issue. Los PRs son bienvenidos.