Dispute evidence

Dispute evidence is what you send the card issuer to overturn a chargeback. See which Stripe fields matter, the file limits, and how to match the reason.

Updated October 1, 2026

Dispute evidence is the documentation you send the cardholder's bank to show that a disputed payment was valid. When you counter a dispute, the issuer compares your response with the cardholder's claim and decides who keeps the money. Stripe passes your evidence on but has no say in the outcome. What you submit, and how well it answers the claim, decides the case.

How dispute evidence works in Stripe

Evidence lives in the evidence hash on the Dispute object. It mixes text fields and uploaded files, including:

  • customer_communication, receipt and product_description
  • shipping_documentation, shipping_tracking_number, shipping_carrier, shipping_date and shipping_address
  • access_activity_log, customer_purchase_ip, service_date and service_documentation
  • refund_policy, cancellation_policy, their _disclosure fields, refund_refusal_explanation and cancellation_rebuttal
  • uncategorized_file and uncategorized_text for anything else

In the Dashboard, click Counter dispute. Stripe shows a form that suggests evidence based on the dispute reason and your product type. Through the API, you update the dispute's evidence. Setting submit to false saves the evidence for review, and the default of true sends it to the bank. The evidence_details object holds the deadline (due_by), whether evidence exists (has_evidence) and the submission_count.

Stripe fills in some evidence for you when your integration has the data, such as AVS and CVC results and the purchase IP address. The more customer details you pass at checkout, the less you assemble by hand.

Match the evidence to the dispute reason

Issuers review a large number of responses and won't search for your argument. Evidence that doesn't answer the stated reason is the most common way to lose a case you could have won.

  • `fraudulent`. Prove the real cardholder made the payment. AVS and CVC matches, an IP address near the billing address, 3D Secure authentication, and earlier undisputed payments from the same customer all help. For Visa card-absent fraud disputes, Stripe checks eligibility for Visa Compelling Evidence 3.0 and flags eligible disputes, which Stripe says usually means a much better chance of winning.
  • `product_not_received`. Show shipment and delivery, with the full delivery address, carrier and tracking number. For digital products, use access_activity_log to show downloads or logins after purchase.
  • `subscription_canceled`. Show the cancellation policy the customer agreed to, when they accepted it, and that they didn't follow it or kept using the service.
  • `credit_not_processed`. Show your refund policy and explain why the customer isn't owed a refund, or prove you already refunded them.
  • Partly refunded payments. If a customer disputes the full amount after a partial refund, always respond. Include the refund amount and date so the issuer can correct the dispute.

File rules for dispute evidence

  • You get one submission. Once it goes to the issuer, you can't edit it or add files.
  • Files must be PDF, JPEG or PNG, with a combined size of 4.5 MB. Mastercard responses are limited to 19 pages.
  • Upload one file per evidence type. Combine several emails into one customer_communication PDF.
  • Issuers won't follow links, play audio or video, or call you. Put everything in the files.
  • Upload only the relevant part of your terms, with the key clause marked.
  • Keep the written explanation short, factual and in date order.

Who does what, and when

  1. On day 0, triage. The owner, often the founder or an ops lead, reads the reason and due_by and decides whether the amount is worth the countered fee. See dispute fee.
  2. In the first few days, gather. Support exports customer conversations. Whoever handles fulfillment pulls tracking or usage logs. Engineering helps with IP and access logs.
  3. Before the deadline, submit. Put everything into the Dashboard form in one sitting and submit with time to spare.
  4. After submitting, wait. The issuer usually has 60 to 75 days to decide. charge.dispute.closed tells you whether you won or lost.

Be realistic about the odds. Stripe's win likelihood predictions top out at about a 60% chance, even for the strongest cases. Good evidence improves your odds but guarantees nothing, so preventing chargebacks matters as much as fighting them. The Stripe dispute evidence checklist helps you plan what to gather for each reason.

Start gathering evidence the day the dispute opens

Evidence takes time to collect, and every day you don't know about a dispute comes off your response window. ChargeBell's dispute alert posts to Slack when charge.dispute.created fires, with the disputed amount, the reason and the customer. The right person can start on the matching evidence the same day. It is a critical alert, so it skips quiet hours and can @channel. Send it to #disputes or wherever support and the founder both look. You still submit the evidence in Stripe, because ChargeBell's Stripe access is read-only. For a walkthrough, read how to send Stripe dispute alerts to Slack.

Get alerted in Slack

Stripe events: charge.dispute.created, charge.dispute.updated, charge.dispute.closed

# disputes

ChargeBellAPP

🚨 A $312.00 charge was disputed

@channel

a customer · "product not received"

Respond by: Fri, Jul 3, 9:00 AM

Disputes have hard deadlines. Respond in Stripe as soon as you can.

Related terms