Facturar en España
Estados de un comprobante
En España la factura nace expedida. Cuando la API responde, el comprobante ya está registrado en la cadena VERI*FACTU y tiene validez legal; lo que queda es comunicarlo a la AEAT.
registrado; la AEAT solo confirma la recepción del registro.Qué significa cada uno
Sección titulada «Qué significa cada uno»registrado
Sección titulada «registrado»La factura está expedida, numerada y su registro forma parte de la cadena VERI*FACTU. Tiene validez legal. Está pendiente de enviarse a la AEAT, lo que ocurre en menos de un minuto.
Es el estado con el que responde POST /invoices/issue, con código 201.
Qué hacer: nada. Puedes entregar la factura al cliente y descargar el PDF.
autorizado ✅
Sección titulada «autorizado ✅»La AEAT aceptó el registro. Llega referencia_aeat (el CSV del envío) y fecha_envio.
Qué hacer: guardar el CSV si tu sistema lleva ese control. Has terminado.
autorizado_con_avisos ⚠️
Sección titulada «autorizado_con_avisos ⚠️»La AEAT lo aceptó pero señaló algo. El registro es válido; el aviso está en mensajes[].
Qué hacer: revisar el aviso. Suele indicar un dato mejorable que conviene corregir en las siguientes facturas, no en esta.
no_autorizado ❌
Sección titulada «no_autorizado ❌»La AEAT rechazó el registro. mensajes[] dice por qué, con el código de error de la AEAT.
Qué hacer: corregir la factura desde Olympus, que genera la subsanación correspondiente. No hay reintento por la API: el registro ya existe y reenviarlo daría el mismo rechazo.
anulado
Sección titulada «anulado»La factura se anuló en Olympus.
Cuánto tarda
Sección titulada «Cuánto tarda»El envío a la AEAT se agrupa y sale cada minuto. Lo normal es ver autorizado en menos de dos
minutos desde la emisión.
Como la factura ya es válida en registrado, el retraso no bloquea nada: no hay motivo para
esperar al estado final antes de entregar la factura o cerrar la venta.
Cómo consultar
Sección titulada «Cómo consultar»factura = client.get(f"/invoices/{factura_id}").json()
if factura["estado"] == "no_autorizado": avisar_al_equipo(factura["mensajes"])No hace falta consultar en bucle: con revisar una vez al día lo que quedó en no_autorizado basta.
# Rechazadas de la última semana: requieren una subsanación.client.get("/invoices", params={"estado": "no_autorizado", "desde": hace_una_semana})Diferencias con Ecuador
Sección titulada «Diferencias con Ecuador»Si integras los dos países, esto es lo que cambia:
| Ecuador | España | |
|---|---|---|
| Respuesta de la emisión | 202 | 201 |
| Estado inicial | pendiente | registrado |
| ¿Válida al responder? | No, falta que el SRI autorice | Sí |
| Esperar antes de entregarla | Conviene | No hace falta |
| Estados posibles | pendiente, enviado, autorizado, no_autorizado, error_envio, anulado | registrado, autorizado, autorizado_con_avisos, no_autorizado, anulado |
| Reintento manual | Sí, POST /retry | No hace falta |
Filtrar el listado por un estado del otro país da 400: cada negocio solo conoce los suyos.