# Factura
La clase Invoice es el corazón de PHP FacturaE. Proporciona una API fluent para construir documentos XML FacturaE conformes con validación automática, cálculo de impuestos y firma digital.
Crear una factura
use PhpFacturae\Invoice;
$invoice = Invoice::create('2024-001') ->date('2024-03-09') ->seller($seller) ->buyer($buyer) ->line('Servicio', price: 100, vat: 21) ->transferPayment('ES12 3456 7890 1234 5678 9012');Configuración básica
Series y fechas:
$invoice->series('A') ->date('2024-03-09') ->operationDate('2024-03-01') ->billingPeriod(from: '2024-03-01', to: '2024-03-31');Esquema y tipo:
use PhpFacturae\Enums\Schema;use PhpFacturae\Enums\InvoiceType;
$invoice->schema(Schema::V3_2_2) ->type(InvoiceType::Full);Versiones de esquema: V3_2, V3_2_1, V3_2_2 (por defecto).
Tipos de factura: Full (FC), Simplified (FA), SimplifiedRectified (AF).
Moneda y descripción:
$invoice->currency('EUR') ->description('Servicios de consultoría mensual');Descuentos y cargos generales
$invoice->generalDiscount('Descuento cliente VIP', rate: 10);$invoice->generalDiscount('Pronto pago', amount: 50.00);$invoice->generalCharge('Gastos de envío', amount: 15.00);Facturas rectificativas
use PhpFacturae\Enums\CorrectionReason;use PhpFacturae\Enums\CorrectionMethod;
$invoice->corrects( invoiceNumber: '2024-001', reason: CorrectionReason::TransactionDetail, method: CorrectionMethod::FullReplacement, series: 'A');Adjuntos
$invoice->attachFile('/ruta/al/contrato.pdf', 'Contrato firmado');Exportar a XML
$xml = $invoice->toXml();$invoice->export('/ruta/a/factura.xml');Firma digital
use PhpFacturae\Signer;
$invoice->sign(Signer::pfx('certificado.pfx', 'password')) ->export('factura-firmada.xml');Referencia de métodos
| Método | Parámetros | Descripción |
|---|---|---|
create() | string $number | Constructor estático |
series() | string $series | Establecer serie |
date() | string|DateTimeImmutable $date | Fecha de emisión |
operationDate() | string|DateTimeImmutable $date | Fecha de operación |
billingPeriod() | $from, $to | Periodo de facturación |
schema() | Schema $schema | Versión FacturaE |
type() | InvoiceType $type | Tipo de factura |
currency() | string $currency | Moneda (ISO 4217) |
description() | string $description | Descripción |
seller() | Party $seller | Vendedor |
buyer() | Party $buyer | Comprador |
line() | Ver Líneas e impuestos | Añadir línea |
exemptLine() | Ver Líneas e impuestos | Línea exenta |
customLine() | Ver Líneas e impuestos | Línea con impuestos custom |
transferPayment() | string $iban, ?string $dueDate, ?float $amount | Pago por transferencia |
cashPayment() | ?string $dueDate, ?float $amount | Pago en efectivo |
cardPayment() | ?string $dueDate, ?float $amount | Pago con tarjeta |
directDebitPayment() | string $iban, ?string $dueDate, ?float $amount | Domiciliación |
splitPayments() | Ver Pagos | Pagos fraccionados |
sign() | InvoiceSigner $signer | Firmar factura |
toXml() | — | Generar XML |
export() | string $path | Exportar a archivo |