Catálogo de eventos
Todos los eventos de webhook que envía Tonder, agrupados como en el dashboard, con el formato de payload de cada grupo.
Cada evento se llama <operación>_<estado> y viaja en el campo event_type del payload. Los
grupos de abajo coinciden con el formulario de endpoint de Desarrolladores › Webhooks, y cada
grupo tiene un formato de payload fijo. Qué grupos te aplican depende de cómo integraste Tonder; el
formato no se elige por endpoint. El modelo conceptual está en el
Modelo de webhooks.
Formatos
| Característica | Short (API Direct · Lite SDK 2.0 · Frictionless · Hosted Checkout 2.0) | Long (SDK móvil · Legacy) |
|---|---|---|
| Estructura raíz | Campos de nivel superior | Todo dentro de data{} |
| Estado | status: Pending / Success | transaction_status: Pending / Success |
| Indicador de evento | event_type: payment_Pending | event: created / confirmed |
| Referencia de orden | client_reference | metadata.external_id / order_id |
Pagos — API Direct (Short)
Pagos y reembolsos de API Direct. Hosted Checkout 2.0 procesa los pagos a través de API Direct, así que un pago hecho en la página alojada también envía estos eventos.
event_type | Significado |
|---|---|
payment_Pending | Un pago de API Direct cambió a Pending. |
payment_Processing | Un pago de API Direct cambió a Processing. |
payment_Authorized | Un pago de API Direct cambió a Authorized. |
payment_Captured | Un pago de API Direct cambió a Captured. |
payment_Completed | Un pago de API Direct cambió a Completed. |
payment_Success | Un pago de API Direct cambió a Success. |
payment_Declined | Un pago de API Direct cambió a Declined. |
payment_Failed | Un pago de API Direct cambió a Failed. |
payment_Cancelled | Un pago de API Direct cambió a Cancelled. |
payment_Expired | Un pago de API Direct cambió a Expired. |
payment_Returned | Un pago de API Direct cambió a Returned. |
refund_Pending | Un reembolso de API Direct cambió a Pending. |
refund_Success | Un reembolso de API Direct cambió a Success. |
refund_Declined | Un reembolso de API Direct cambió a Declined. |
refund_Failed | Un reembolso de API Direct cambió a Failed. |
refund_Cancelled | Un reembolso de API Direct cambió a Cancelled. |
Un pago pasa solo por los estados que usa su método y su flujo, así que suscríbete a los que tu
integración atiende. En SPEI Success, el payload añade datos del remitente: sender_name,
sender_clabe, sender_bank, entre otros. Los pagos con QR y por transferencia bancaria de
Argentina usan estos mismos eventos; sus datos del pagador están en
Argentina.
Un evento payment_Success:
{
"id": "bf370a48-ffcf-4fbe-bab9-ecb791b0b684",
"event_type": "payment_Success",
"operation_type": "payment",
"status": "Success",
"amount": "500.00",
"currency": "MXN",
"country": "MX",
"client_reference": "ORD-001",
"transaction_id": "1464",
"payment_method_type": "card",
"decline_code": null,
"decline_reason": null,
"created": "2026-10-20T18:52:10Z",
"metadata": { "external_id": "ORD-001" },
"action": "MODIFY"
}ides el identificador de la transacción que te devolvió la API al crear el pago (/process/); úsalo para relacionar el webhook con tu pedido.client_referenceymetadatason los datos que enviaste al crear la transacción.- El payload también puede traer campos que identifican a la institución que procesó la transacción. No construyas lógica sobre ellos.
No hay webhooks a nivel de sesión: session.created, session.completed y session.expired no
se envían. Da seguimiento a una sesión con los eventos de pago o con
Consultar una sesión.
Sesiones de checkout — Hosted y SDK (Long)
Eventos de integraciones anteriores —SDK 1.0, el flujo anterior de Hosted Checkout y la API de
retiros v1/v2. El prefijo legacy_ los identifica, y los payloads están en
Webhooks legacy.
event_type | Significado |
|---|---|
legacy_payment_Pending | Un pago Hosted / SDK cambió a Pending. |
legacy_payment_Success | Un pago Hosted / SDK cambió a Success. |
legacy_payment_Declined | Un pago Hosted / SDK cambió a Declined. |
legacy_payment_Expired | Un pago Hosted / SDK cambió a Expired. |
legacy_payment_Failed | Un pago Hosted / SDK cambió a Failed. |
legacy_deposit_created | Se creó un depósito SPEI. |
legacy_deposit_confirmed | Se confirmó un depósito SPEI. |
legacy_deposit_expired | Un depósito SPEI expiró. |
legacy_refund_Pending | Un reembolso cambió a Pending. |
legacy_refund_Success | Un reembolso cambió a Success. |
legacy_refund_Failed | Un reembolso cambió a Failed. |
legacy_withdrawal_Pending | Un retiro cambió a Pending. |
legacy_withdrawal_Processing | Un retiro cambió a Processing. |
legacy_withdrawal_SentToProvider | Un retiro se envió a la institución que lo ejecuta. |
legacy_withdrawal_OnHold | Un retiro cambió a OnHold. |
legacy_withdrawal_Success | Un retiro cambió a Success. |
legacy_withdrawal_Failed | Un retiro cambió a Failed. |
legacy_withdrawal_Declined | Un retiro cambió a Declined. |
legacy_withdrawal_Returned | Un retiro cambió a Returned. |
legacy_withdrawal_Canceled | Un retiro cambió a Canceled. |
Retiros (Long)
event_type | Significado |
|---|---|
withdrawal_Pending | Un retiro cambió a Pending. |
withdrawal_Success | Un retiro cambió a Success. |
withdrawal_Declined | Un retiro cambió a Declined. |
withdrawal_Failed | Un retiro cambió a Failed. |
withdrawal_Canceled | Un retiro cambió a Canceled. |
withdrawal_Returned | Un retiro cambió a Returned. |
withdrawal_Canceled se escribe con una sola L, a diferencia de payment_Cancelled y
refund_Cancelled. Compara los nombres de evento exactamente. Sin Webhooks 2.0, los retiros emiten
cinco eventos y ninguno por cancelación.
Un retiro envía el evento pendiente y después el terminal; withdrawal_Returned llega además,
cuando el banco receptor devuelve los fondos después del Success. El payload viene en uno de dos
formatos, definido por la configuración de tu comercio: un payload
plano con la misma forma que el formato Short de pagos (status: Pending,
transfer_method_type en lugar de payment_method_type), o un payload extendido que anida el
registro completo del retiro bajo withdrawal{} con el estado en los nombres internos
(PAID_FULL). Los dos, con ejemplos, en Retiros.
Otros
event_type | Significado |
|---|---|
endpoint.test | Un evento de prueba enviado desde el dashboard con Enviar prueba. Llega aunque el endpoint no esté suscrito a él. |
El catálogo por API
GET /v1/event-types devuelve el catálogo con la descripción de cada evento, además de la política
de reintentos —ver API de webhooks.
Usa metadata.external_id como clave de correlación —está presente en ambos formatos y en todos los
eventos.
