FISCALISTO / API / REFERENCIA
retention.canceled
Se canceló una constancia de retenciones. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).
application/json- body
Algo que pasó en su cuenta: el objeto completo como quedó. Se manda a sus webhooks firmado (Standard Webhooks).
id*stringIdentificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_).
object*stringQué tipo de objeto es («invoice», «customer»…).
type*stringQué 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*stringVersión de la API con que se armó el objeto.
livemode*booleantrue en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT.
created_at*stringCuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00).
date-timedata*Lo que cambió, en data.object: el comprobante (o el lote) completo, como lo contesta su GET.
Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día.
Así llega a su webhook
{ "id": "evt_0PKhIdhYuAGwzmMQYfkc", "object": "event", "type": "retention.canceled", "api_version": "2026-10-24", "livemode": false, "created_at": "2026-10-24T10:15:42-06:00", "data": { "object": { "id": "ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv", "object": "retention", "livemode": false, "issuer": "iss_OufpKqnrvx9p", "status": "canceled", "uuid": "9A6F6BF3-6786-4747-800A-C9964E6509AE", "folio": 1, "internal_folio": "RET1", "date": "2026-10-24T10:15:42", "code": "01", "description": null, "recipient": { "foreign": false, "tax_id": "PEPJ800101AB1", "legal_name": "JUAN PEREZ PEREZ", "zip": "33826", "curp": null }, "period": { "year": 2026, "from_month": 9, "to_month": 9 }, "totals": { "operation": 10000, "taxed": 10000, "exempt": 0, "withheld": 2066.67 }, "taxes": [ { "tax": "isr", "base": 10000, "amount": 1000, "payment_type": "04" }, { "tax": "iva", "base": 10000, "amount": 1066.67, "payment_type": "01" } ], "cancellation": { "status": "canceled", "motive": "02", "canceled_at": "2026-10-24T10:15:42-06:00" }, "email": null, "error": null, "created_at": "2026-10-24T10:15:42-06:00", "metadata": { "proveedor": "42" } } }}retention.failed Webhook
El SAT o el PAC rechazaron una constancia de retenciones. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).
invoice_batch.completed Webhook
Ya no queda ninguna factura del lote por timbrar. data.object es el lote, con cuántas se timbraron y cuántas no. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).