Eventos de disputa (dispute.*)
Reclamos abiertos por el deudor (o registrados por el operador). Abrir una disputa pausa la regla de cobranza del cobro al instante. En todos los eventos, data es la disputa completa.
Valores de type: already_paid · not_recognized · wrong_amount · service_not_provided · incorrect_invoice · wrong_recipient · other. Valores de status: open · under_review · resolved_valid · resolved_invalid · canceled. Valores de resolutionEffect: resume_rule · adjust_amount · cancel_charge · write_off.
dispute.created
Se dispara en la apertura del reclamo (un cobro solo puede tener una disputa abierta a la vez).
{
"event": "dispute.created",
"timestamp": "2026-07-23T12:00:00.000Z",
"organizationId": "0f7a3c1e-2b4d-4e6f-8a9b-1c2d3e4f5a6b",
"data": {
"id": "2c4e6a8b-1d3f-4a5c-8e7f-9b1d3f5a7c9e",
"publicId": "e5f6a7b8-c9d0-4e1f-2a3b-4c5d6e7f8091",
"organizationId": "0f7a3c1e-2b4d-4e6f-8a9b-1c2d3e4f5a6b",
"workspaceId": null,
"companyId": null,
"businessUnitId": null,
"chargeId": "4a2b6c8d-1e3f-4a5b-9c7d-2e4f6a8b0c1d",
"personId": "7c1e9f2a-3b4d-4c5e-8f6a-1b2c3d4e5f60",
"type": "wrong_amount",
"reason": "Valor divergente da proposta comercial",
"disputedAmount": "350.00",
"isFullDispute": false,
"documents": null,
"status": "open",
"assignedToId": null,
"slaDueAt": "2026-07-30T12:00:00.000Z",
"resolution": null,
"resolutionEffect": null,
"resolvedById": null,
"openedAt": "2026-07-23T12:00:00.000Z",
"resolvedAt": null,
"deletedAt": null,
"customMetadata": null,
"metadata": {},
"externalId": null,
"createdAt": "2026-07-23T12:00:00.000Z",
"updatedAt": "2026-07-23T12:00:00.000Z"
}
}
dispute.updated
Se dispara cuando la disputa entra en análisis (status: "under_review", opcionalmente con assignedToId). Mismo shape que dispute.created.
dispute.resolved
Se dispara en la decisión. Mismo shape, con status resolved_valid (procedente) o resolved_invalid (improcedente), resolution (texto), resolutionEffect, resolvedById y resolvedAt llenos. El efecto (retomar la regla, ajustar el monto, cancelar el cobro, dar de baja) ya fue aplicado cuando el evento llega.
dispute.cancelled
Se dispara en la cancelación de la disputa. Mismo shape, con status: "canceled", resolution (motivo) y resolvedAt llenos.