Back to all terms
Payment
Paymentsadvanced

Dispute/Chargeback Handling

Managing the process when a customer contests a charge with their bank, including automated evidence collection, response submission, and prevention strategies to minimize dispute rates.

Also known as: chargebacks, payment disputes, dispute resolution, chargeback management

Description

A dispute (chargeback) occurs when a cardholder contacts their bank to contest a charge on their statement. The bank forcibly reverses the payment and debits the merchant's Stripe account for the disputed amount plus a $15 dispute fee. The merchant then has a limited window (typically 7-21 days depending on the card network) to submit evidence proving the charge was legitimate. Stripe notifies your application of disputes via the charge.dispute.created webhook event, and you submit evidence through the Stripe API or Dashboard.

Effective dispute handling requires automated evidence collection. When you receive a dispute webhook, your system should immediately gather relevant evidence: the customer's name and email, IP address and device fingerprint from the original purchase session, delivery/access logs proving the service was provided, any customer communications acknowledging the purchase, your terms of service and refund policy, and prior successful charges from the same customer. Stripe's Dispute object accepts structured evidence fields (customer_name, customer_email_address, product_description, service_documentation_url, etc.) that should be populated programmatically where possible.

Prevention is more cost-effective than fighting disputes. Implement recognizable statement descriptors (set via stripe.charges.create or account settings) so customers recognize the charge, send immediate receipt emails after every payment, provide easy self-service refund and cancellation options, and use Stripe Radar rules to block suspicious transactions before they become disputes. Monitor your dispute rate carefully: card networks flag merchants with dispute rates above 0.75% (Visa) or 1% (Mastercard), and excessive disputes can result in monitoring programs, fines, or loss of processing ability.

Prompt Snippet

Handle charge.dispute.created webhooks by immediately querying your database for evidence: the order record, customer email/IP from the session, access/delivery logs, and prior charge history. Submit evidence programmatically via stripe.disputes.update(disputeId, { evidence: { customer_name, customer_email_address, customer_purchase_ip, product_description, service_date, access_activity_log, customer_communication } }) within 24 hours of creation. Set a recognizable dynamic statement descriptor with stripe.paymentIntents.create({ statement_descriptor_suffix: 'YOURAPP ORDER123' }) to reduce friendly fraud. Track your dispute rate as a key metric (disputes / successful_charges over rolling 30 days) with alerting at 0.5% to stay below Visa's 0.75% threshold.

Tags

disputeschargebacksfraudpaymentsevidencestripe