Ir al contenido
Eventos

FISCALISTO / API / REFERENCIA

retention.failed

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).

Cuerpo de la solicitud

application/json
  1. body

Algo que pasó en su cuenta: el objeto completo como quedó. Se manda a sus webhooks firmado (Standard Webhooks).

id*string

Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_).

object*string

Qué tipo de objeto es («invoice», «customer»…).

type*string

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

Versión de la API con que se armó el objeto.

livemode*boolean

true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT.

created_at*string

Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00).

Formatodate-time
data*

Lo que cambió, en data.object: el comprobante (o el lote) completo, como lo contesta su GET.

Cuerpo de la respuesta

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.failed",  "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": "rejected",      "uuid": null,      "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": null,      "email": null,      "error": {        "message": "El SAT no reconoce el nombre del cliente.",        "sat_code": "CFDI40145",        "raw": "CFDI40145 - El campo Nombre del receptor no corresponde con el RFC."      },      "created_at": "2026-10-24T10:15:42-06:00",      "metadata": {        "proveedor": "42"      }    }  }}