Saltearse al contenido

Facturar en España

PDF y correo

En cuanto la factura queda registrada, están disponibles su PDF y su URL de verificación:

{
"estado": "registrado",
"urls": {
"detalle": "https://olympus.atharix.com/api/v1/invoices/6f1e…",
"pdf": "https://olympus.atharix.com/api/v1/invoices/6f1e…/pdf",
"xml": null,
"verificacion": "https://prewww2.aeat.es/wlpl/TIKE-CONT/ValidarQR?nif=B12345678&numserie=F2026-0001&…"
}
}

No hace falta esperar a la AEAT: a diferencia de Ecuador, aquí el PDF existe desde el primer momento.

Ventana de terminal
curl https://olympus.atharix.com/api/v1/invoices/6f1e…/pdf \
-H "X-API-Key: $OLYMPUS_API_KEY" \
-o factura.pdf
pdf = client.get(f"/invoices/{factura_id}/pdf")
pdf.raise_for_status()
Path(f"{factura['secuencial']}.pdf").write_bytes(pdf.content)

Lleva el desglose por tipo de IVA, las menciones legales que exija la operación (exención, inversión del sujeto pasivo), la retención y el recargo si los hay, y el código QR de verificación. El diseño —logo, color— sale de la configuración del negocio en Olympus.

urls.verificacion es lo que hay detrás del QR: apunta al validador de la sede electrónica de la AEAT, donde cualquiera puede comprobar que la factura existe y coincide con lo declarado.

Es pública: puedes dársela a tu cliente.

DatoPara qué
idConsultar y descargar por la API
secuencialEl número de la factura (F2026-0001)
huellaIdentifica el registro; es lo que acredita su integridad
referencia_aeatEl CSV del envío, cuando la AEAT lo acepta
El PDFPara tus archivos y para el cliente
def archivar(client, factura_id, carpeta: Path):
factura = client.get(f"/invoices/{factura_id}").json()
carpeta.mkdir(parents=True, exist_ok=True)
pdf = client.get(f"/invoices/{factura_id}/pdf")
pdf.raise_for_status()
(carpeta / f"{factura['secuencial']}.pdf").write_bytes(pdf.content)
return {
"numero": factura["secuencial"],
"huella": factura["huella"],
"csv": factura["referencia_aeat"],
}

Al registrarse la factura, Olympus envía el PDF al comprador si comprador.email venía en el payload. Para desactivarlo en una factura concreta:

{ "enviar_email": false, "comprador": { … }, "items": [ … ] }
Ventana de terminal
curl -X POST https://olympus.atharix.com/api/v1/invoices/6f1e…/send-email \
-H "X-API-Key: $OLYMPUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "destinatarios": ["contabilidad@ejemplo.es"] }'

Sin destinatarios, va al correo del comprador. Hasta 5 por llamada. Requiere que la factura esté registrada y el scope invoices:write.