> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guía de Eventos de Webhook

> Comprenda los diferentes eventos de webhook activados por Dodo Payments durante actividades de pago, reembolso, suscripción, disputa, clave de licencia, concesión de derechos, crédito, recuperación y cobro de morosidad

Dodo Payments proporciona notificaciones de webhook en tiempo real para mantenerte informado sobre eventos críticos relacionados con transacciones, suscripciones, reembolsos, disputas y gestión de claves de licencia. A continuación, se presenta una guía detallada de estos eventos, categorizados para mayor claridad, junto con consejos y consideraciones de implementación.

## **Eventos de Pago**

| **Nombre del evento**        | **Tipo de evento**   | **Descripción**                                                                                 |
| ---------------------------- | -------------------- | ----------------------------------------------------------------------------------------------- |
| **Pago realizado con éxito** | `payment.succeeded`  | Se activa cuando un pago se procesa correctamente.                                              |
| **Pago fallido**             | `payment.failed`     | Ocurre cuando un intento de pago falla debido a errores, tarjetas rechazadas u otros problemas. |
| **Pago en proceso**          | `payment.processing` | Indica que un pago se está procesando actualmente.                                              |
| **Pago cancelado**           | `payment.cancelled`  | Se activa cuando un pago se cancela antes de completarse.                                       |

## **Eventos de Reembolso**

| **Nombre del evento**             | **Tipo de evento** | **Descripción**                                                                                  |
| --------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------ |
| **Reembolso realizado con éxito** | `refund.succeeded` | Se activa cuando un reembolso se procesa correctamente.                                          |
| **Reembolso fallido**             | `refund.failed`    | Ocurre cuando un intento de reembolso falla debido a errores de procesamiento u otros problemas. |

## **Eventos de Disputa**

| **Nombre del evento** | **Tipo de evento**   | **Descripción**                                             |
| --------------------- | -------------------- | ----------------------------------------------------------- |
| **Disputa abierta**   | `dispute.opened`     | Se activa cuando un cliente inicia una disputa.             |
| **Disputa expirada**  | `dispute.expired`    | Indica que una disputa expiró sin resolución.               |
| **Disputa aceptada**  | `dispute.accepted`   | Se activa cuando un comerciante acepta la disputa.          |
| **Disputa cancelada** | `dispute.cancelled`  | Ocurre cuando el cliente o el sistema cancelan una disputa. |
| **Disputa impugnada** | `dispute.challenged` | Se activa cuando un comerciante impugna una disputa.        |
| **Disputa ganada**    | `dispute.won`        | Indica que el comerciante ha ganado con éxito una disputa.  |
| **Disputa perdida**   | `dispute.lost`       | Ocurre cuando el comerciante pierde una disputa.            |

## **Eventos de Suscripción**

| **Nombre del evento**            | **Tipo de evento**          | **Descripción**                                                                                                          |
| -------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Suscripción activa**           | `subscription.active`       | Indica que una suscripción está activa y se han programado cargos recurrentes.                                           |
| **Suscripción actualizada**      | `subscription.updated`      | Se activa cuando se actualiza cualquier campo de la suscripción (sincronización en tiempo real sin sondeo).              |
| **Suscripción en espera**        | `subscription.on_hold`      | Se activa cuando una suscripción se pone temporalmente en espera debido a una renovación fallida.                        |
| **Suscripción renovada**         | `subscription.renewed`      | Ocurre cuando una suscripción se renueva con éxito.                                                                      |
| **Plan de suscripción cambiado** | `subscription.plan_changed` | Se activa cuando una suscripción se actualiza a una versión superior, inferior o se modifica con complementos distintos. |
| **Suscripción cancelada**        | `subscription.cancelled`    | Se activa cuando el comerciante o el cliente cancelan una suscripción.                                                   |
| **Suscripción fallida**          | `subscription.failed`       | Indica una suscripción fallida. Esto significa que no pudimos crear un mandato.                                          |
| **Suscripción expirada**         | `subscription.expired`      | Se activa cuando una suscripción alcanza el final de su período y expira.                                                |

## **Eventos de Clave de Licencia**

| **Nombre del evento**        | **Tipo de evento**    | **Descripción**                                                        |
| ---------------------------- | --------------------- | ---------------------------------------------------------------------- |
| **Clave de licencia creada** | `license_key.created` | Se activa cuando se crea una nueva clave de licencia para un producto. |

## **Eventos de Concesión de Derechos**

| **Nombre del Evento** | **Tipo de Evento**            | **Descripción**                                                                                                                                                                                |
| --------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Grant Created**     | `entitlement_grant.created`   | Se crea una nueva concesión de derechos para un cliente. Las concesiones de clave de licencia llegan `delivered`; las concesiones basadas en OAuth (Discord, GitHub, Notion) llegan `pending`. |
| **Grant Delivered**   | `entitlement_grant.delivered` | La entrega de la concesión se completa: se emite la clave de licencia, se resuelven los enlaces de archivo o se concede acceso a la plataforma.                                                |
| **Grant Failed**      | `entitlement_grant.failed`    | Fallo en la entrega de la concesión; inspecciona `error_code` y `error_message`.                                                                                                               |
| **Grant Revoked**     | `entitlement_grant.revoked`   | Se retira el acceso; inspecciona `revocation_reason` (estado de suscripción, reembolso, cambio de plan o manual).                                                                              |

Para esquemas de carga útil detallados, eventos de muestra y la referencia completa `revocation_reason`, consulta [Entitlement Grant Webhooks](/developer-resources/webhooks/intents/entitlement-grant).

## **Eventos de Crédito**

| **Nombre del Evento**       | **Tipo de Evento**          | **Descripción**                                                                                                           |
| --------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Crédito Añadido**         | `credit.added`              | Se activa cuando se otorgan créditos a un cliente (suscripción, único, complemento o API).                                |
| **Crédito Deducido**        | `credit.deducted`           | Ocurre cuando se consumen créditos a través de uso o débito manual.                                                       |
| **Crédito Expirado**        | `credit.expired`            | Se activa cuando los créditos no utilizados expiran después del período de vencimiento configurado.                       |
| **Crédito Acumulado**       | `credit.rolled_over`        | Ocurre cuando créditos no utilizados se transfieren a un nuevo otorgamiento al final del ciclo.                           |
| **Renuncia de Acumulación** | `credit.rollover_forfeited` | Se activa cuando se pierden créditos porque se alcanzó el máximo de acumulación.                                          |
| **Cargo por Exceso**        | `credit.overage_charged`    | Ocurre cuando se aplican cargos por exceso para uso más allá de saldo cero.                                               |
| **Reinicio de Exceso**      | `credit.overage_reset`      | Se activa cuando se reinician los cargos acumulados por exceso (por ejemplo, al inicio de un nuevo ciclo de facturación). |
| **Ajuste Manual**           | `credit.manual_adjustment`  | Se activa cuando se realiza un ajuste manual de crédito o débito.                                                         |
| **Saldo Bajo**              | `credit.balance_low`        | Se activa cuando el saldo de crédito cae por debajo del umbral configurado.                                               |

## **Eventos de Recuperación**

| **Nombre del Evento**            | **Tipo de Evento**             | **Descripción**                                                                     |
| -------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------- |
| **Abandoned Checkout Detected**  | `abandoned_checkout.detected`  | Se activa cuando se detecta un checkout incompleto o fallido después de 60 minutos. |
| **Abandoned Checkout Recovered** | `abandoned_checkout.recovered` | Ocurre cuando un cliente completa el pago a través de un enlace de recuperación.    |

Para esquemas de carga útil detallados, descripciones de campos y ejemplos de controladores, consulta [Webhooks de Recuperación](/developer-resources/webhooks/intents/recovery).

## **Eventos de Cobro de Morosidad**

| **Nombre del Evento** | **Tipo de Evento**  | **Descripción**                                                                                                       |
| --------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Dunning Started**   | `dunning.started`   | Se activa cuando comienza un intento de cobro de morosidad para una suscripción que estuvo en espera o fue cancelada. |
| **Dunning Recovered** | `dunning.recovered` | Ocurre cuando un cliente actualiza su método de pago y el cargo resultante tiene éxito.                               |

Para esquemas de carga útil detallados, descripciones de campos y ejemplos de controladores, consulta [Recovery Webhooks](/developer-resources/webhooks/intents/recovery).

Estos eventos de webhook están diseñados para proporcionar a los comerciantes actualizaciones críticas para gestionar sus operaciones de manera efectiva. Implementa controladores robustos para cada evento relevante en tu integración de webhook para asegurar una funcionalidad fluida y confiable.
