# 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";
}
}