Skip to content

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.

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.

{
"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"
}
}
  • id is unique per event. Use it to de-duplicate.
  • sequence increases across your workspace’s events. Use it to page through the feed.
  • data.object is 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. customer is null unless the key has pii:read.
GET /v1/events

Scope: 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.

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.