All packsMarketplace Payouts & Connected AccountsSolve
stripe connect won dispute fee not refunded ledger
Winning a dispute still doesn't get the dispute fee back
Stripe's own docs say it: 'we never return the dispute received fee' unless your contract states otherwise -- a won dispute still leaves the platform down the dispute fee, which the ledger has to book as real (D9).
This is one of the things Marketplace Payouts & Connected Accounts already handles. Take payment from buyers and pay out sellers, with the onboarding and identity checks Stripe requires.
Is this you?
Assuming a won dispute is financially neutral -- the charge stands, so nothing was lost -- misses that Stripe's dispute fee is charged when the dispute is opened and is not refunded on a win, with narrow contractual exceptions. A ledger or P&L model that treats 'won' as 'no cost' is wrong by the dispute fee on every single dispute the platform wins, which compounds silently across a marketplace's whole dispute history.
Why this one is easy to get wrong
'Won' reads as the good outcome, and the natural assumption is that a good outcome means no lasting cost -- Stripe's fee-retention policy on a won dispute is a specific, easy-to-miss detail buried in its disputes documentation, not something implied by the word 'won' or by how PaymentIntent and Charge objects represent a resolved dispute.
What you get instead
The five-bucket ledger (D9) books a lost dispute's stripeFee and disputeFee explicitly, and the acceptance suite's money-conservation check pins the consequence directly: a won dispute still leaves platform-available at commission minus stripeFee minus disputeFee for that order, never back to a full commission as if the dispute cost nothing. Bucket semantics are deliberately kept close to Stripe's own balance_transaction types specifically so the ledger reconciles against a real Stripe balance-transaction export.
Source: ARCHITECTURE.md D9 — checkable in the pack you receive
How you actually use this
You don’t install a library or wire up an SDK. Your own coding agent builds the code in your project, and you keep it — no runtime dependency on us.
Step 1
Download and unzip
You get a folder: the docs that tell an agent what to build, a starting skeleton, and the test suite that decides when it's done.
Step 2
Open it in Claude Code or Cursor
Point your coding agent at the folder. Nothing to install, no account with us, no API key.
Step 3
Paste one prompt
The pack contains the exact prompt. Paste it as your first message and leave it alone — it works through the build itself, choosing a cheaper or stronger model per task.
Step 4
Run ./verify.sh
One command. It prints a pass or fail for every check. Green means the build is done — the same script we ran to produce the receipt on this page.
Typical build: about 25 minutes of your agent working, mostly unattended. Then you integrate the working module into your app the way you would any code you’d written yourself.
Why you can believe this
3 of 3 runs passedWe ran this pack from an empty folder 3 times and published exactly what happened — every check, the model, the token cost, the wall time. Not a testimonial, and not our opinion: the same verify.sh you run yourself. Read the full receipt →
Related problems
Marketplace Payouts & Connected Accounts
Refund the buyer and the seller keeps the money, unless two flags default the other way
Marketplace Payouts & Connected Accounts
A seller who takes one chargeback and vanishes leaves the platform down for good
Marketplace Payouts & Connected Accounts
The dispute event that debits money isn't the one that decides the outcome