FISCALISTO / API / REFERENCIA
quote.viewed
El cliente abrió por primera vez la liga de una cotización enviada. data.object es la cotización. 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": "quote.viewed", "api_version": "2026-10-24", "livemode": false, "created_at": "2026-10-24T10:15:42-06:00", "data": { "object": { "id": "quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx", "object": "quote", "livemode": false, "issuer": "iss_OufpKqnrvx9p", "number": "COT-12", "version": 1, "status": "viewed", "url": "https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq", "customer": { "tax_id": "ICV060329BY0", "name": "INMOBILIARIA CVA", "email": "compras@cva.example", "catalog_id": "cus_OufpKqnrvx9p42" }, "currency": "MXN", "items": [ { "description": "Desarrollo del sitio web", "product_key": "81112103", "quantity": 1, "unit_key": "E48", "unit_price": 45000 } ], "total": 52200, "valid_until": "2026-11-09", "terms": "50% de anticipo, entrega en 4 semanas.", "notes": null, "auto_invoice": true, "customer_comment": null, "sent_at": "2026-10-25T10:12:00-06:00", "viewed_at": "2026-10-24T10:15:42-06:00", "decided_at": null, "decided_by": null, "invoice": null, "created_at": "2026-10-25T10:05:00-06:00" } }}recurring_invoice.failed Webhook
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).
quote.accepted Webhook
Se aceptó una cotización: el cliente en su liga (decided_by customer) o usted (user). Con auto_invoice y los datos fiscales del cliente, también llega invoice.stamped. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).