FISCALISTO / API / REFERENCIA
sat_declaration.updated
Llegó el PDF, el acuse, los estados financieros o las cifras de una declaración. data.object es la declaración como queda. 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": "sat_declaration.updated", "api_version": "2026-10-24", "livemode": false, "created_at": "2026-10-24T10:15:42-06:00", "data": { "object": { "id": "dcl_OufpKqnrvx9p1F", "object": "sat_declaration", "livemode": false, "issuer": "iss_OufpKqnrvx9p", "source": "monthly", "year": 2026, "month": 9, "period": "Septiembre", "type": "normal", "complementary_type": null, "operation_number": "92026090000001", "payment_line": "0426TEST2026090001", "filed_on": "2026-10-15", "profit_coefficient": 0.0219, "isr_due": 7718.53, "vat_due": 16520, "total_due": 24238.53, "sections": [ { "tax": "ISR personas morales", "fields": [ { "label": "INGRESOS NOMINALES DEL PERIODO", "value": 292500 }, { "label": "COEFICIENTE DE UTILIDAD", "value": 0.0219 }, { "label": "IMPUESTO A CARGO", "value": 7718.53 } ] } ], "receipt": { "concepts": [ { "concept": "ISR personas morales", "due": 7718.53, "amount_due": 7718.53, "amount_to_pay": 7718.53 }, { "concept": "IVA personas morales", "due": 16520, "amount_due": 16520, "amount_to_pay": 16520 } ], "total": 24238.53, "payment_line": "0426TEST2026090001", "valid_until": null }, "summary": { "obligations": [ { "obligation": "isr", "name": "ISR personas morales", "read": true, "amount_due": 7718.53, "amount_to_pay": 7718.53, "figures": { "income": 292500, "invoiced_income": 292500, "income_ytd": 2632500, "deductions": null, "profit_coefficient": 0.0219, "taxable_profit": 57651.75, "losses_applied": 0, "tax_base": 57651.75, "tax_caused": 17295.53, "prior_payments": 9577, "withheld": 0, "surcharges": null, "inflation": null, "paid_before": null, "due": 7718.53, "in_favor": null, "to_pay": 7718.53 } }, { "obligation": "vat", "name": "IVA personas morales", "read": false, "amount_due": 16520, "amount_to_pay": 16520, "figures": { "taxable_16": null, "taxable_0": null, "exempt": null, "charged": null, "paid_16": null, "creditable": null, "withheld": null, "balance_applied": null, "surcharges": null, "inflation": null, "paid_before": null, "due": null, "in_favor": null, "to_pay": null } } ], "total_to_pay": 24238.53 }, "files": { "pdf": true, "receipt": true, "financial_statements": false }, "files_error": null, "created_at": "2026-10-26T09:12:00-06:00", "updated_at": "2026-10-26T09:12:04-06:00" } }}sat_declaration.created Webhook
Una consulta encontró una declaración nueva del emisor en el SAT. data.object es la declaración; sus archivos y cifras pueden llegar después (sat_declaration.updated). Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).
ticket.invoiced Webhook
Su comprador facturó un ticket en el portal. data.object es el ticket, con la factura en invoice (también llega invoice.stamped). Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).