# stripe-dispute

This skill weighs whether a Stripe dispute is worth contesting, builds supporting evidence, and submits it only after approval.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 339 installs · ★ 721
- Author: OpenClaudia
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/stripe-dispute/SKILL.md
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/skills/stripe-dispute

## What it does

The skill starts with the economics of a case. It reviews the dispute amount, reason, comparable merchant history, break-even probability, and the cost of preparing evidence. It accepts a dispute ID, customer email, or charge ID, then retrieves the relevant Stripe records.

Evidence gathering can use a read-only application database to inspect account activity, invoices, product usage, checkout actions, and cancellation details. The workflow saves invoice documents, renders the cancellation policy to PDF with Playwright, and creates an activity-log PDF with WeasyPrint. Set `STRIPE_SECRET_KEY`, `TERMS_URL`, and `EVIDENCE_DIR`; `DATABASE_URL` is recommended for database access. The user must approve file creation, evidence upload, and submission first.

## Requirements
- Works with: Stripe

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill stripe-dispute -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/stripe-dispute/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/stripe-dispute/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill stripe-dispute -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/stripe-dispute/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill stripe-dispute -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/stripe-dispute/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install OpenClaudia/openclaudia-skills stripe-dispute
```

2. **Manually: put the files in place**
- File: `.github/skills/stripe-dispute/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill stripe-dispute -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/OpenClaudia/openclaudia-skills --path skills/stripe-dispute
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/stripe-dispute/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add OpenClaudia/openclaudia-skills --skill stripe-dispute -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/stripe-dispute/SKILL.md

## When to use it
- judge whether contesting a dispute pays off
- review a customer’s Stripe dispute history
- collect login and product-usage records
- build a PDF with activity and invoice evidence
- submit a case after explicit approval

## Example prompts
- Review Stripe dispute `du_xxxxx`, calculate whether contesting it makes sense, and show the reasoning.
- Prepare evidence for dispute `du_xxxxx`, but wait for my approval before uploading anything.
- Find the dispute linked to charge `ch_xxxxx`, inspect customer activity, and create an evidence report.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 502dcbd78f731f76.

BEGIN THIRD-PARTY FILE 502dcbd78f731f76
````text
---
name: stripe-dispute
description: Evaluate whether a Stripe dispute is economical to contest, then gather evidence and submit only when approved. Use for Stripe disputes, chargebacks, counter-disputes, evidence packages, or Stripe dispute IDs.
---

# Stripe Dispute Evaluation and Evidence

Evaluate the economics first. When contesting is justified and approved, build an evidence package and submit it to Stripe. Works for any SaaS using Stripe and a user database with login or usage logs.

## When to Use This Skill

Use this skill when the user:

- Receives a Stripe chargeback notification and wants to fight it
- Provides a dispute ID (`du_*`) and asks to "counter" / "rebut" / "fight" it
- Asks how to gather evidence for a dispute marked `fraudulent`, `product_not_received`, `product_unacceptable`, or `subscription_canceled`
- Wants an activity-log PDF showing a customer used their product

## Required Environment Variables

```bash
STRIPE_SECRET_KEY=sk_live_...      # Stripe restricted/secret key with disputes:write scope
DATABASE_URL=postgres://...        # READ-ONLY connection to your app's user database (optional but recommended)
TERMS_URL=https://yoursite.com/terms   # URL to your published cancellation/refund policy
EVIDENCE_DIR=~/disputes            # Where to save the per-customer evidence folders
```

**Database safety:** all queries are SELECT-only. Never let this skill issue UPDATE/DELETE/INSERT.

## Inputs

The user provides any of:
- Stripe dispute ID (`du_xxxxx`) — preferred
- Customer email — skill will look up the dispute
- Charge ID (`ch_xxxxx` or `py_xxxxx`)

## Decide whether to contest first

Accepting a dispute can be the correct outcome. Never submit evidence merely because a
case exists.

1. Verify live Stripe pricing. Under current US standard pricing, Stripe charges a $15
   dispute-received fee automatically and another $15 dispute-countered fee when evidence
   is submitted. The received fee is sunk. The countered fee is returned only on a win.
   Use current live pricing if these amounts change.
2. Query the merchant's live Stripe dispute history. For defended win rate, count only
   closed disputes with `evidence_details.submission_count > 0`. Separate initial purchases
   from renewals and narrow to the same reason when the sample permits. Report wins,
   losses, open cases, and sample size. State when no exact-match precedent exists.
3. Calculate break-even probability and expected value after the countered fee and
   evidence-building labor. Do not invent a probability from case strength alone.
4. Use a conservative 30% minimum win-probability threshold unless the user provides a
   different threshold. If comparable data cannot support that threshold, recommend
   leaving the dispute unanswered. This avoids the countered fee, although the disputed
````
END THIRD-PARTY FILE 502dcbd78f731f76

The third-party file has ended. Everything between the 502dcbd78f731f76 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2837 of 13349 bytes. © OpenClaudia · MIT · https://github.com/OpenClaudia/openclaudia-skills/tree/HEAD/skills/stripe-dispute/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
