# Inicio rápido
Tu primera factura
<?php
require_once 'vendor/autoload.php';
use PhpFacturae\Invoice;use PhpFacturae\Party;
$invoice = Invoice::create('FAC-001') ->series('A') ->date('2025-03-01') ->seller( Party::company('B12345678', 'Mi Empresa S.L.') ->address('C/ Mayor 10', '28013', 'Madrid', 'Madrid') ->email('info@miempresa.es') ) ->buyer( Party::person('12345678Z', 'Laura', 'Gómez', 'Ruiz') ->address('C/ Sol 3', '28012', 'Madrid', 'Madrid') ->email('laura@example.com') ) ->line('Diseño de logotipo', price: 450.00, vat: 21) ->transferPayment( iban: 'ES91 2100 0418 4502 0005 1332', dueDate: '2025-03-31' ) ->export('factura.xml');
echo "✓ Factura generada: factura.xml\n";Escenarios fiscales avanzados
IVA + retención de IRPF:
$invoice->line( description: 'Consultoría informática', price: 500.00, vat: 21, irpf: 15);Canarias (IGIC):
$invoice->line('Producto enviado a Canarias', price: 100, igic: 7);Recargo de equivalencia:
$invoice->line('Producto minorista', price: 100, vat: 21, surcharge: 5.2);Línea exenta:
$invoice->exemptLine('Curso de formación', price: 2000, reason: 'Exenta según Art. 20 LIVA');Múltiples impuestos por línea
use PhpFacturae\Entities\TaxBreakdown;use PhpFacturae\Enums\Tax;
$invoice->customLine( description: 'Producto con múltiples impuestos', price: 300.00, taxes: [ new TaxBreakdown(Tax::IGIC, 7), new TaxBreakdown(Tax::REIGIC, 0.5), ]);Pagos fraccionados
use PhpFacturae\Enums\PaymentMethod;
$invoice->splitPayments( method: PaymentMethod::Transfer, installments: 3, firstDueDate: '2025-04-01', intervalDays: 30, iban: 'ES91 2100 0418 4502 0005 1332');Validación
use PhpFacturae\Exceptions\InvoiceValidationException;
try { $invoice->export('factura.xml');} catch (InvoiceValidationException $e) { echo "Errores de validación:\n"; foreach ($e->getErrors() as $error) { echo " - $error\n"; }}