Blog
Notes on where platform money goes
Writing from FeeGuard on Stripe Connect reconciliation, refunds, disputes and FX — and the fee leaks that never appear in an error log.
Stripe's own tools for fee visibility, and their limits
Dashboard views, exports, Sigma, and reporting reports show what happened. None compute what should have happened — that gap is where fee leaks live.
13 min readDesigning application-fee structures: flat, percentage, hybrid
Flat, percentage, and hybrid application fees behave differently under partial refunds and disputes. The math for each, shown so the choice is informed.
14 min readPartial refunds and proportional reversals: the exact math
Partial refunds split money three ways; transfer reversals and fee refunds follow proportionality only when flags demand it. Formulas and worked cents inside.
15 min readMarketplace refund UX versus platform economics
Every generous refund flow is funded by someone specific. Quantified scenarios make the subsidy visible before you ship the policy.
14 min readDisputes on connected accounts: who pays, in what order
Disputed funds and dispute fees land on different balances depending on charge type; destination and separate charges put the platform balance first in line.
13 min readReading Stripe's ledger like an accountant
Balance transactions are the source of truth: their types map to journal entries, and refunds must reconcile to expectations, not merely exist.
13 min readNegative balances the platform ends up eating
When a reversal or a dispute drives a connected account below zero, the platform is usually the party that makes it whole — often without ever deciding to.
balancespayouts3 min readA taxonomy of platform fee leakage
Leakage on Stripe Connect is a finite set of configuration states with deterministic costs. Seven vectors, seven API checks: walk the checklist yourself.
15 min readA dispute lost three weeks after payout
The chargeback arrives after the seller has been paid and the funds have left. One lost dispute, followed from the sale to the write-off.
disputesclawback5 min readHow long you can still reverse a transfer
A transfer reversal depends on funds being reachable, not on a deadline. What actually determines whether one succeeds, and what to do when it will not.
recoverytransfers5 min read"Our reconciliation would have caught this"
Month-end reconciliation does catch it. That is the problem — by then the reversal on some of those transfers is no longer collectable, and a discrepancy you cannot act on is a write-off.
reconciliationmonth-end4 min readApplication fees: where platform revenue actually lives
An ApplicationFee object records your cut, settles into the platform balance by charge pattern, and survives refunds by default: it stays until you refund it.
14 min readPartial refunds and proportional reversal
A partial refund does not proportionally reverse anything by default. You choose the refund amount, the reversal amount and the fee refund independently, and they can disagree.
refundsarithmetic6 min readThree charge types, three different refunds
Direct charges, destination charges and separate charges with transfers behave differently on refund. Most leak reports trace back to applying one mental model to all three.
stripe-connectcharges5 min readWhat Stripe returns and what it keeps on a refund
Stripe returns the refunded principal only; original processing fees are never returned — here is the precise statement and the platform-side math.
13 min readShould I refund the application fee?
Refunding a charge does not refund your application fee unless you ask. Whether you should depends on what the fee was for, and there is a defensible answer either way.
application-feerefunds4 min readreverse_transfer defaults to false
The parameter that decides whether your platform or your seller absorbs a refund defaults to false. Why that default is defensible, and what happens when you set it and the balance is not there.
stripe-connectrefunds6 min readYou issued the refund. The connected account still has the money.
One refund, followed through every object it touches and every object it leaves alone. Six moments, four of which nobody at the platform ever sees.
stripe-connectrefunds6 min readBuild your own fee-leakage detection with the Stripe API
List refunds and disputes, join them to transfers and fees, apply two expectation formulas, diff. A working Connect leak-detection skeleton inside.
14 min readThe forgotten flags: refund_application_fee and reverse_transfer, audited
Two booleans with non-obvious defaults decide every Connect refund's side effects; the complete truth table with dollar outcomes inside.
14 min readHow to audit 90 days of platform refunds by hand
List refunds via the API or a CSV export, join them to transfers and fees, apply two formulas, and sum the gaps. Fully manual, no product needed.
14 min readDirect, destination, and separate charges: the revenue consequences
Same sale, same refund, three different platform outcomes: direct, destination, and separate charges compared strictly by where fees and refund costs land.
13 min readThe complete anatomy of a Stripe Connect refund
One refund moves several objects and debits a different account depending on charge type. This piece maps every hop for all three Connect charge types.
15 min readThe refund that only costs the platform
On a Connect platform, refunding a charge does not automatically take back the transfer. Here is the arithmetic, and why it never shows up as an error.
stripe-connectreconciliation5 min read