For founders

The bootstrapped founder’s $90 problem

Thirty refunds a month at $90 stranded each is $2,700 of runway burned by a boolean you have never seen. Not by a hacker, not by fraud — by a parameter defaulting to false inside Stripe Connect, in code possibly written by an AI assistant or copied from a tutorial that worked perfectly in testing. This page explains the mechanism in founder units and hands you a ten-minute check that ends with either peace of mind or a number worth acting on.

The mechanism, in founder units

Customer pays $100 for a $10-cut marketplace sale. $90 goes to your seller immediately. Customer refunds. Your balance returns the full $100; the seller’s $90 comes back only if code explicitly asked — reverse_transfer: true — and almost nobody’s boilerplate does. Result: each refund costs you $90 of real money for a sale where you earned $10. Multiply by your monthly refunds; that product is the size of the hole.

Monthly runway burn, modelled
Refunds/month × stranded each
30 × $90
Monthly burn
$2,700
Annualised
$32,400
At 18-month runway math
~$48k of raise equivalent

AI-built codebases and copy-paste snippets

Assistants reach for the shortest correct-looking path: stripe.refunds.create({ charge }). It works, tests pass, customers get money back. Structural, not personal — the training data is full of examples omitting Connect parameters because most Stripe usage is not Connect. If AI wrote or finished your payment code, assume this gap exists until checked.

The ten-minute check

Option one: paste last month’s charge.refunded events into the free scanner — returns stranded totals in under two minutes, stores nothing. Option two: grep your repo for refunds.create and inspect every call site for both flags. Option three: connect a read-only key and let the 90-day lookback enumerate everything. Any order; all free.

Why "too small to care" inverts here

Enterprise platforms absorb leakage as rounding noise; seed-stage platforms feel every $90 twice — once in bank balance, once in runway math. Small platforms also fix fastest: one refund function, one flag addition, done. Detection tells you which world you are in before emotions or sunk costs get votes.

If the number is zero

Genuinely possible — low-refund platforms with careful code come back clean. That result costs nothing, takes minutes, and converts vague dread into a verified fact worth more than either outcome’s drama.

Common questions

We used a template/AI boilerplate — likely affected?

Check the refund call for both flags; thirty seconds answers it. Most templates omit them because most Stripe usage is non-Connect.

What does it cost if we find nothing?

Zero. Detection and the lookback are free forever; you pay only a success fee if automated recovery later moves actual dollars.