Disputes
Learn how to manage payment disputes and chargebacks
Payment disputes occur when customers challenge payments through their bank or card issuer. Disputes can result from suspected fraud, unauthorized transactions, service issues, or billing errors. Understanding how to monitor, respond to, and prevent disputes is essential for maintaining healthy payment operations and minimizing revenue loss.
Disputes are different from payment declines and bank rejects. Declines occur immediately during payment processing. Bank rejects (NSF, invalid accounts) are covered in Bank Rejects. This article focuses on customer-initiated disputes: card chargebacks and disputed bank transactions like payment stopped orders.
Prerequisites
Before handling disputes, it's helpful to learn about the following topics.
Learn about payment processing
Understand how payments are processed, including authorization, settlement, and clearing flows.
Learn about transaction webhooks
Monitor transaction lifecycle events and status changes through webhook notifications.
Understanding Disputes
Disputes occur when customers contest payments after they have been processed and settled. The dispute process varies based on payment method, but all disputes result in temporary or permanent fund reversals.
How Disputes Work
Initial Processing
Payment is processed and marked as processed
Customer Dispute
Customer contacts their bank/card issuer to dispute the charge
Status Update
Transaction status changes from processed to rejected
Fund Reversal
Funds are immediately reversed from your processing account
Evidence Period
You have limited time to submit evidence (typically 7-21 days)
Resolution
Bank/issuer reviews evidence and makes final decision
Outcome
Dispute is won (funds returned) or lost (funds remain reversed) and transaction is set back to
processed
Immediate Impact: When a dispute is filed, funds are reversed immediately from your processing account, even before you have a chance to respond. This can impact cash flow significantly for high-value transactions.
Handling Different Dispute Types
The response process varies between card chargebacks and bank account disputes.
Card Chargebacks
Card chargebacks follow a formal dispute process governed by card network rules (Visa, Mastercard, etc.):
- You have opportunity to provide evidence to the card issuer
- Evidence submission typically has 7-21 day deadline
- Card network makes final decision based on submitted evidence
Bank Account Disputes
Unlike card chargebacks, payment stopped orders don't have a formal evidence submission process through the payment network. Resolution typically involves direct communication with the customer or pursuing collection through other means.
This example handles payment stopped rejections:
- Check if rejection code is
payment_stopped - Record the transaction in your internal dispute tracking system
- Contact customer to determine reason for stop payment
- Consider whether to pursue collection or write off
Querying Disputed Transactions
Monitor disputed transactions by querying for payments with rejected status and appropriate
status codes.
This example demonstrates querying disputed transactions:
- Filter transactions by
status.value='rejected' - Optionally filter by date range using
rejected_date - Check
status.codeto identify dispute type - Card chargebacks will have various codes based on reason
- Payment stopped orders have
payment_stoppedcode - Access
status.messagefor human-readable details
Regular monitoring helps identify dispute patterns, track dispute rates, and respond promptly to new disputes.
Handling Dispute Webhooks
Receive immediate notifications when disputes are filed by registering a webhook.
This example shows webhook handling:
- Register a webhook for the
rejecttrigger - Receive POST request when dispute occurs
- Parse webhook payload to extract transaction details
- Check
status.codeto determine dispute type - Automatically create case in dispute management system
- Notify relevant team members immediately
- Begin evidence gathering process
Webhooks enable immediate response to disputes, maximizing the time available for evidence submission.
Response Timing: For card chargebacks, you typically have 7-21 days to submit evidence, depending on the card network and chargeback reason. Responding quickly increases your chances of winning disputes.
Analyzing Dispute Patterns
Track dispute rates and identify patterns to reduce future disputes.
This example analyzes dispute patterns:
- Query all disputed transactions for a date range
- Calculate dispute rate (disputes / total transactions)
- Group disputes by reason code
- Identify products or services with high dispute rates
- Analyze timing patterns (disputes after X days)
- Generate reports for management
Key Metrics to Track:
- Overall Dispute Rate: Should be less than 1% for most businesses
- Win Rate: Percentage of disputes won with evidence
- Average Dispute Amount: Track financial impact
- Time to First Dispute: Days between transaction and dispute
- Dispute Reason Distribution: Most common dispute types
High Dispute Rates: Consistently high dispute rates (greater than 1%) can result in account reviews, increased processing fees, or account termination. Monitor rates closely and address issues promptly.
Testing Disputes
Test dispute handling in test mode before production deployment.
Simulating Disputes
Use test transactions to trigger dispute scenarios:
In test mode, you can simulate disputes for testing:
- Create test transactions that will automatically dispute
- Test webhook endpoints receive dispute notifications
Test Mode: In test mode, disputes occur same-day for testing purposes. In production, there may be days or weeks between the original transaction and dispute notification.
Dispute Status Codes
Common dispute-related status codes:
payment_stoppedCard chargebacks may have various status codes depending on the specific chargeback reason.
Check the status.message field for detailed information about the dispute reason.
Schema Reference
The following fields are relevant for handling disputes:
Transaction Fields
statuscodeapproved, card_expired, duplicate_attempt, exceeded_limit, general_decline, insufficient_bal, invalid_card_code, invalid_card_number, invalid_zip, invalid_address, invalid_account_number, suspicious_activity, too_many_attempts, processing_issue, issue_reading_card, not_supported, general_reject, general_adjustment, payment_stopped"Undocumented"messagevalueprocessing, authorized, processed, declined, rejected, voided, adjustedrejected_date"Undocumented"For complete transaction field documentation, see the Transaction API Reference.
Next Steps
Enhance dispute handling and payment operations
Prevent Disputes
Manage Payment Methods to validate payment information, implement Payment Method Verification to confirm account ownership, and use clear billing descriptors and customer communication to reduce disputes.
Handle Payment Issues
Respond to Payment Declines for immediate payment failures, manage Bank Rejects for NSF and invalid account rejections, and process Voids and Refunds to cancel and reverse payments.
Monitor Payment Health
Set up Webhook Events for real-time dispute notifications, track metrics with Reporting Overview, and analyze transaction data to identify dispute patterns and improve prevention strategies.
Related articles
- Payment API - Process and manage payment transactions
- Bank Rejects - Handle non-disputed bank rejections
- Transactions API Reference
- Webhooks - Configure dispute notifications