# recurring_invoice.failed

Una factura recurrente no pudo timbrar su periodo (sin timbres, el cliente se borró del catálogo, el SAT la rechazó…). data.object es la factura recurrente, con el motivo en last_error. Se intenta de nuevo cada día a su hora; llega una vez hasta que vuelva a timbrar. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).

El cuerpo es un objeto `Event`; `data.object` es el comprobante como lo contesta su GET. Cómo verificar la firma y responder: https://fiscalisto.com/docs/api/webhooks.md.

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `object` | `"event"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `type` | string | sí | Qué pasó: invoice.stamped, invoice.failed, invoice.canceled, invoice.cancellation_pending, invoice.cancellation_rejected, invoice.paid, invoice.partially_paid, retention.stamped, retention.failed, retention.canceled, invoice_batch.completed, customer_data_request.completed, sat_download.completed, sat_download.failed, sat_declaration.created, sat_declaration.updated, ticket.invoiced, ticket.included_in_global, recurring_invoice.failed, quote.viewed, quote.accepted, quote.changes_requested, quote.rejected, issuer.ready, balance.low o test_clock.ready. |
| `api_version` | string | sí | Versión de la API con que se armó el objeto. |
| `livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `created_at` | string (date-time) | sí | Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00). |
| `data` | objeto | sí | Lo que cambió, en data.object: el comprobante (o el lote) completo, como lo contesta su GET. |
| `data.object` | objeto | sí | El objeto como quedó: una factura, una constancia o un lote. |
