duplicate dispute evidence rejected: how to fix
Handles rejected duplicate dispute evidence on Stripe: reading the existing evidence object before submitting, updating only on real changes, and deduplicating by dispute id. Use when the API rejects an evidence POST as a duplicate. Not for evidence rejected on content, or closed-dispute deadline problems.
TL;DR
Stripe rejects a second evidence submission that matches what is already attached. Fetch the dispute first and read its evidence object; only submit when something actually changed, and keep one submission per dispute id on your side. The fix is read-before-write: check what is attached before you post.
duplicate dispute evidence rejected: how to fixUse this when
- An evidence POST is rejected as a duplicate.
- A retry loop submits the same pack twice.
- Two workers race to submit evidence for one dispute.
Not for this skill when
- The dispute is closed. That is a deadline problem.
- Evidence is rejected on content, not on duplication.
Steps
- Retrieve the dispute and read the evidence object with its submitted timestamps. Verify: you can see exactly what is already attached.
- Compare your new pack against the attached evidence field by field. Verify: you can name what changed, or admit nothing did.
- If nothing changed, stop. The rejection is correct and resubmitting will not help. Verify: no second POST is sent.
- If something changed, submit once and record the submission against the dispute id in your own store. Verify: your store shows one submission row for the dispute.
- Put a lock or queue on evidence submission per dispute id so retries and workers cannot race. Verify: a simulated double-submit produces one API call.
Variant phrasings
stripe evidence already submitted
Common error-adjacent search.
dispute evidence duplicate submission
Noun-form search.
stripe evidence update rejected duplicate
Update-path wording.
Compatibility: Stripe Disputes API. The evidence object is readable on the dispute; submission is a single update call.
Why it happens
Evidence submission is effectively an upsert with duplicate detection. A retried request, a double-clicked button, or two workers processing the same queue message all look like the same pack arriving twice, and Stripe says no to the second copy.
Edge cases / pitfalls
- Retrying on timeout is the top cause. Make the submit call idempotent instead of blindly retrying.
- Updating evidence after submission replaces the pack. Know which fields you overwrote.
- Two different people submitting final packs is an org problem. One owner per dispute.
- If your queue redelivers the same job, the dedupe key must survive restarts. Keep it in a real store, not in memory.
- Log the dispute id with every submission attempt. Without it, dedupe is guesswork.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_NZ-s6-nhZTi67Jbjzt7jsg