Skip to main content
Como tu Merchant of Record, Dodo Payments gestiona el proceso de disputas y contracargos con las redes de tarjetas en tu nombre. Estos webhooks mantienen tus sistemas sincronizados a medida que una disputa avanza en su ciclo de vida, para que puedas revocar el acceso, recopilar evidencia y conciliar tus registros.

Eventos de Webhook de Disputa

Una disputa emite un evento en cada etapa de su ciclo de vida:
Las disputas resueltas automáticamente a través de Visa Rapid Dispute Resolution (RDR) aparecen como dispute.lost con is_resolved_by_rdr: true. Esto es esperado: el reembolso se emitió automáticamente para prevenir un contracargo formal.
Las alertas de Ethoca y las desviaciones nunca crean una disputa, por lo que no emiten eventos dispute.*. Un reembolso por una alerta de Ethoca activa el evento estándar refund.succeeded, y cualquier cancelación de suscripción vinculada activa el evento habitual de suscripción. Una desviación no activa ningún evento.

Gestión de eventos de disputa

Cuando se activa dispute.opened, el importe disputado se retiene de inmediato. Usa el evento para actualizar tus registros y, si tienes la intención de impugnarlo, recopila pruebas en el dashboard.
Handling dispute events
Verifica siempre la firma del webhook antes de procesarlo; consulta la guía de Webhooks para configurarlo. El controlador anterior omite la verificación por brevedad.
Tienes 10 días para responder a una disputa después de que se cree. Consulta las Prácticas recomendadas para responder a disputas para conocer las pruebas que debes recopilar y cómo darles formato.

Estado y etapa de la disputa

El objeto de disputa informa de su progreso mediante dos campos:

Relacionado

Managing Disputes

Cómo responder a las disputas, enviar pruebas y cómo RDR protege tu tasa de disputas.

Handle Payment Failures

Detecta y recupera los pagos fallidos antes de que se conviertan en disputas.

Esquema de carga útil del webhook

amount
string
requerido

The amount involved in the dispute, represented as a string to accommodate precision.

brand_id
string
requerido

Brand id this dispute belongs to

business_id
string
requerido

The unique identifier of the business involved in the dispute.

created_at
string<date-time>
requerido

The timestamp of when the dispute was created, in UTC.

currency
string
requerido

The currency of the disputed amount, represented as an ISO 4217 currency code.

customer
object
requerido

The customer who filed the dispute

dispute_id
string
requerido

The unique identifier of the dispute.

dispute_stage
enum<string>
requerido

The current stage of the dispute process.

Opciones disponibles:
pre_dispute,
dispute,
pre_arbitration
dispute_status
enum<string>
requerido

The current status of the dispute.

Opciones disponibles:
dispute_opened,
dispute_expired,
dispute_accepted,
dispute_cancelled,
dispute_challenged,
dispute_won,
dispute_lost
payment_id
string
requerido

The unique identifier of the payment associated with the dispute.

payment_provider
enum<string>
requerido

Which processor handled the underlying payment. stripe / adyen for BYOP routes (the merchant's own payment connector); dodo for everything Dodo processed itself.

Opciones disponibles:
stripe,
adyen,
dodo
is_resolved_by_rdr
boolean | null

Whether the dispute was resolved by Rapid Dispute Resolution

reason
string | null

Reason for the dispute

remarks
string | null

Remarks

Última modificación el 26 de septiembre de 2026