# Understanding Chargeback Disputes

> What happens when a customer disputes a charge, and how Fidro helps you respond.

**Category:** chargeback-prevention | **Last updated:** March 13, 2026

---

A chargeback dispute happens when a customer contacts their bank to reverse a charge. This guide explains the dispute lifecycle and how Fidro helps you handle them.

## The dispute lifecycle

1. **Customer contacts their bank** — They claim the charge is fraudulent, not as described, or unauthorized
2. **Bank creates a dispute** — The charge amount is immediately deducted from your Stripe balance
3. **Stripe notifies you** — You get a `charge.dispute.created` webhook event
4. **Fidro processes the event** — The transaction is marked as "Disputed" in your dashboard
5. **You respond (or Fidro auto-refunds)** — You have a limited window to submit evidence or accept the dispute
6. **Bank decides** — The bank reviews evidence and rules in your favour or the customer's

## How Fidro handles disputes

When Fidro receives a `charge.dispute.created` event:

1. It finds the matching transaction in your dashboard (by charge ID)
2. It marks the transaction as **Disputed** with the reason, status, and timestamp
3. If you have **auto-refund on dispute** enabled, it issues a refund via the Stripe API
4. If you have **dispute notifications** enabled, it emails you immediately

## Dispute reasons

Stripe categorises disputes by reason. Common ones:

| Reason | What it means |
|--------|--------------|
| `fraudulent` | Customer claims they didn't make the purchase (most common) |
| `duplicate` | Customer claims they were charged twice |
| `product_not_received` | Customer claims they didn't receive what they paid for |
| `product_unacceptable` | Customer received the product but claims it's defective |
| `subscription_canceled` | Customer claims they cancelled but were still charged |
| `unrecognized` | Customer doesn't recognise the charge on their statement |

## Why early detection matters

The best way to handle disputes is to prevent them. Fidro's risk scoring catches high-risk transactions **at payment time**, before the customer has a chance to dispute.

If a transaction scores 85/100 at payment time and you auto-refund it, that's a $0 loss. If you let it through and the customer disputes it 30 days later, you lose the transaction amount plus the $15–$25 dispute fee.

## Viewing disputes in your dashboard

The [Transactions page](/app/transactions) shows dispute status for every transaction:
- **Purple "Disputed" badge** — A dispute has been filed
- **Grey "Refunded" badge** — The transaction was refunded (manually or automatically)

Click any disputed transaction to see the full details: dispute ID, reason, status, and timestamp, along with the original risk score and checks.

## Protecting your chargeback ratio

Stripe monitors your chargeback ratio (disputes / total transactions). If it exceeds 0.75–1%, you risk:
- Higher processing fees
- Mandatory holds on your balance
- Account review or termination

Fidro helps keep your ratio low by:
1. Scoring transactions at payment time to catch fraud early
2. Auto-refunding high-risk payments before disputes are filed
3. Alerting you to disputes so you can respond quickly