---
# System prepended metadata

title: Stripe dispute process diagrams

---

# Stripe dispute process diagrams

Can download as SVG using https://bramp.github.io/js-sequence-diagrams/

## New dispute

```sequence
User->Bank: Raises new dispute
Bank->Stripe: Raises dispute
Stripe->Connector: Sends `charge.dispute.created` webhook notification
Connector->Ledger: Emits `DISPUTE_CREATED` event
Connector->Ledger: Emits `PAYMENT_DISPUTED` event (to mark payment as disputed)
Connector->Ledger: Emits `REFUND_AVAILABILITY_UPDATED` event (to mark payment as non-refundable)
Ledger->Ledger: Projects dispute transaction
Ledger->SNS: Sends `DISPUTE_CREATED` event
SNS->Adminusers SQS subscriber: Sends `DISPUTE_CREATED` event
Adminusers SQS subscriber->Adminusers: Process SQS messages
Adminusers-> Service admins: Sends new dispute email
Ledger->Selfservice: Displays dispute info in admin tool
Ledger->PublicAPI: provides dispute info via v1/disputes endpoint
```

## Lost dispute
```sequence
Bank->Stripe: Dispute resolved in users favour
Stripe->Connector: Sends `charge.dispute.closed` webhook notification (with status `lost`)
Connector->Ledger: Emits `DISPUTE_LOST` event
Connector->Stripe: Transfer disputed amount+fee from connect account to platform account
Ledger->Ledger: Update dispute transaction
Ledger->SNS: Sends `DISPUTE_LOST` event
SNS->Adminusers SQS subscriber: Sends `DISPUTE_LOST` event
Adminusers SQS subscriber->Adminusers: Process SQS messages
Adminusers-> Service admins: Sends dispute lost email
Ledger->Selfservice: Displays updated dispute info in admin tool
Ledger->PublicAPI: provides updated dispute info via v1/disputes endpoint
```

### Reconciliation for lost disputes

```sequence
Stripe->Connector: Sends `payout.paid` webhook
Connector->Ledger: Reconciles payout and emits `DISPUTE_INCLUDED_IN_PAYOUT` event for dispute
Ledger->Ledger: Update dispute transaction with settlement info
Ledger->Selfservice: Dispute transaction appears in payments into bank account reports
Ledger->PublicAPI: returns dispute transaction for search by settled_dates
```

## Won dispute
```sequence
Bank->Stripe: Dispute resolved in service favour
Stripe->Connector: Sends `charge.dispute.closed` webhook notification (with status `won`)
Connector->Ledger: Emits `DISPUTE_WON` event
Connector->Ledger: Emits `REFUND_AVAILABILITY_UPDATED` event (to mark payment as refundable)
Ledger->Ledger: Update dispute transaction
Ledger->SNS: Sends `DISPUTE_WON` event
SNS->Adminusers SQS subscriber: Sends `DISPUTE_WON` event
Adminusers SQS subscriber->Adminusers: Process SQS messages
Adminusers-> Service admins: Sends dispute won email
Ledger->Selfservice: Displays updated dispute info in admin tool
Ledger->PublicAPI: provides updated dispute info via v1/disputes endpoint
```

## Evidence submitted

```sequence
Stripe->Connector: Sends `charge.dispute.updated` webhook notification (with status `won`)
Connector->Ledger: Emits `DISPUTE_EVIDENCE_SUBMITTED` event
Ledger->Ledger: Update dispute transaction
Ledger->SNS: Sends `DISPUTE_EVIDENCE_SUBMITTED` event
SNS->Adminusers SQS subscriber: Sends `DISPUTE_EVIDENCE_SUBMITTED` event
Adminusers SQS subscriber->Adminusers: Process SQS messages
Adminusers-> Service admins: Sends dispute evidence submitted email
Ledger->Selfservice: Displays updated dispute info in admin tool
Ledger->PublicAPI: provides updated dispute info via v1/disputes endpoint
```