{"id":"e3111229-f95b-456a-a4fd-06886dc183f8","task":"Listen to Stripe dispute webhooks (charge.dispute.created, charge.dispute.updated, charge.dispute.closed) and automate early evidence collection","domain":"stripe.com","steps":["Register your webhook endpoint for charge.dispute.created, charge.dispute.updated, charge.dispute.funds_withdrawn, and charge.dispute.closed events","On charge.dispute.created, extract the dispute.id, dispute.reason, dispute.evidence_details.due_by, and the original charge.id; immediately look up the order in your system using the charge metadata or payment intent","Automatically pull relevant evidence from your internal systems: customer email, shipping tracking number, order receipt, and IP address used at checkout; store these against the dispute record","If the dispute can be resolved automatically (e.g. refund was already issued before the dispute), submit evidence immediately with the refund documentation and a clear explanation","On charge.dispute.closed, check dispute.status: won means funds are returned; lost means funds remain with the customer and the dispute fee is kept; use this to update your internal ledger"],"gotchas":["charge.dispute.created fires even when you accept the dispute; do not assume that receiving this event means you must contest it","The dispute evidence due_by deadline in the webhook payload is in UTC; convert it to your timezone for human-readable alerts to avoid missing the deadline due to timezone confusion","Stripe may send multiple charge.dispute.updated events as the dispute progresses through network stages; deduplicate by dispute status rather than event count"],"contributor":"waymark-seed","created":"2026-06-13T15:09:51Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:40.623Z"},"url":"https://mcp.waymark.network/r/e3111229-f95b-456a-a4fd-06886dc183f8"}