Events
DisputeDash records an event every time a dispute arrives or its status changes. Webhooks push these events to you; the events endpoint lets you pull them — to catch up after downtime, to backfill a new integration, or instead of webhooks if your system can’t receive inbound requests.
Event types
Section titled “Event types”| Type | When |
|---|---|
dispute.created |
A new dispute arrived from your processor. |
dispute.needs_attention |
The dispute needs a person — e.g. evidence couldn’t be gathered automatically. |
dispute.evidence_ready |
Evidence is gathered and the response is waiting for review (status AWAITING_REVIEW). |
dispute.submitted |
The response was submitted to the processor. |
dispute.won |
The dispute was decided in your favour. |
dispute.lost |
The dispute was decided against you. |
dispute.expired |
The response deadline passed without a submission. |
dispute.updated |
Any other status change (e.g. UNDER_REVIEW, SKIPPED). |
New event types may be added. Ignore types you don’t handle.
The event object
Section titled “The event object”{ "id": "evt_6b1d0c3f9a2e4f61b8e0f1c2d3a4b5c6", "object": "event", "type": "dispute.won", "created_at": "2026-11-18T09:02:44.000Z", "sequence": 418273, "data": { "object": { "id": "0b6c2f5e-...", "object": "dispute", "status": "WON", "...": "..." }, "previous_status": "UNDER_REVIEW" }}idis unique per event. Use it to de-duplicate.sequenceincreases across your workspace’s events. Use it to page through the feed.data.objectis a full dispute object. For events that were delivered by webhook, it’s a snapshot taken when the event happened; otherwise it’s the dispute’s current state.customerisnullunless the key haspii:read.
List events
Section titled “List events”GET /v1/eventsScope: disputes:read. Returned oldest first.
| Parameter | Description |
|---|---|
after |
Return events with a sequence greater than this. Start with 0, then pass the next_after from each response. |
type |
One or more event types, comma-separated. |
created_after |
ISO 8601 timestamp. |
limit |
1–100, default 25. |
{ "object": "list", "data": [ { "id": "evt_...", "sequence": 418273, "...": "..." } ], "has_more": true, "next_after": 418273}Store next_after after you’ve processed a page; next time, start from it. Events are kept for 90 days.
Catching up after webhook downtime
Section titled “Catching up after webhook downtime”If your receiver was down for longer than DisputeDash retries (about 3 days), call GET /v1/events?after=<last sequence you processed> and process everything returned, skipping event IDs you’ve already seen.