Tipos de eventos de webhook

El catálogo completo de eventos de webhook de Tokeflow para pagos, reembolsos, disputas, métodos de pago y suscripciones, con un payload de ejemplo.

Tokeflow emite un evento cada vez que ocurre algo relevante en una transacción, un reembolso, una disputa, un método de pago almacenado o una suscripción. Suscribe tu endpoint a los eventos que te interesen (puedes filtrar por tipo cuando configuras el endpoint) y luego reacciona a ellos como la fuente de verdad para los resultados asíncronos.

Cada evento se entrega en el sobre estándar descrito en Descripción general de webhooks y se firma como se describe en Verificación de firmas. El campo type contiene uno de los valores siguientes.

Trata los eventos de forma idempotente. Deduplica según el id del evento y, cuando un evento cambie un estado importante, concilia contra la API (por ejemplo, GET /api/v1/transactions/:id) antes de actuar. Los eventos pueden llegar fuera de orden o más de una vez.


Eventos de transacción

EventCuándo se dispara
transaction.createdSe creó una transacción y se aceptó para su procesamiento.
transaction.pendingEl cargo está esperando un resultado asíncrono (por ejemplo, PIX, boleto).
transaction.pre_authorizedSe autorizaron los fondos pero no se capturaron (capture: false).
transaction.authorizedEl cargo tuvo éxito (autorizado y capturado, salvo que sea solo preautorización).
transaction.capture_pendingSe solicitó una captura y se está procesando.
transaction.failedEl cargo fue rechazado o no se pudo completar.
transaction.canceledLa transacción se canceló antes de completarse.
transaction.voidedSe anuló una autorización antes de la captura.
transaction.charged_backSe abrió un contracargo contra la transacción.
transaction.expiredUn cargo pendiente expiró sin completarse (por ejemplo, PIX/boleto no pagado a tiempo).

Eventos de reembolso

EventCuándo se dispara
transaction.refund_createdSe creó un reembolso.
transaction.refund_pendingEl reembolso está siendo procesado por el proveedor.
transaction.refundedLa transacción fue reembolsada por completo.
transaction.partially_refundedSe liquidó un reembolso parcial; queda un saldo capturado.
transaction.refund_failedEl reembolso no se pudo completar.
transaction.refund_cancelledSe canceló un reembolso pendiente.

Eventos de disputa

EventCuándo se dispara
transaction.dispute_createdEl banco del titular de la tarjeta abrió una disputa.
transaction.dispute_updatedNueva información o un cambio de estado en una disputa abierta.
transaction.dispute_wonLa disputa se resolvió a tu favor.
transaction.dispute_lostLa disputa se resolvió en tu contra.
transaction.dispute_closedLa disputa se cerró.

Eventos de método de pago

EventCuándo se dispara
payment_method.action_requiredUn método de pago almacenado requiere atención — por ejemplo, una tarjeta reportada como ya no válida o sin reemplazo disponible en la red. Solicita al cliente que la actualice.

Eventos de suscripción

EventCuándo se dispara
subscription.createdSe creó una suscripción.
subscription.renewedUn cargo de renovación tuvo éxito y la suscripción avanzó al siguiente período.
subscription.dunningUn cargo de renovación falló; la suscripción entró en cobranza (reintentos).
subscription.reactivatedUna suscripción volvió a active tras la cobranza o una pausa.
subscription.upgradedLa suscripción pasó a una oferta de mayor valor.
subscription.downgradedLa suscripción pasó a una oferta de menor valor.
subscription.payment_method_changedSe cambió el instrumento de pago de la suscripción.
subscription.pausedLa suscripción se pausó.
subscription.resumedUna suscripción pausada se reanudó.
subscription.cancelledLa suscripción se canceló.
subscription.expiredLa suscripción llegó al final de su plazo y expiró.

Payload de ejemplo

Un evento transaction.authorized. El recurso reside en data.object:

{
  "id": "evt_3f9a2b1c8d7e",
  "type": "transaction.authorized",
  "created_at": "2026-01-15T12:30:09.000Z",
  "data": {
    "object": {
      "id": "tx_777",
      "organization_id": "org_123",
      "merchant_id": "mrc_123",
      "order_id": "ord_001",
      "external_order_id": "order_888",
      "customer_id": "cust_123",
      "amount_authorized": 15000,
      "amount_captured": 15000,
      "currency": "BRL",
      "payment_method": "credit_card",
      "charge_type": "payment",
      "country": "BR",
      "status": "authorized",
      "created_at": "2026-01-15T12:30:00.000Z",
      "updated_at": "2026-01-15T12:30:09.000Z"
    }
  }
}

La forma de data.object coincide con el recurso de la API correspondiente — una transacción para los eventos transaction.*, un reembolso para los eventos de reembolso, una suscripción para los eventos subscription.*, etc. Consulta la referencia de la API para ver el esquema completo de cada objeto.


Guía de manejo

  • Confirma rápido. Devuelve un 2xx en unos pocos segundos y realiza el trabajo real de forma asíncrona. Las respuestas lentas o fallidas provocan reintentos.
  • Deduplica según el id. El mismo evento puede entregarse más de una vez.
  • No confíes en el orden. Usa el propio status del recurso (o una lectura fresca de la API) en lugar de asumir que los eventos llegan en secuencia.
  • Verifica cada entrega. Rechaza cualquier solicitud cuya firma no se valide — consulta Verificación de firmas.

En esta página