stripe checkout stops scaling the moment you become a real marketplace. what we've seen actually work
observation from a few saas projects we've worked on as the backend team. vanilla stripe checkout is great until your model goes from "customer pays, customer gets product" to "customer pays, platform holds funds, marketplace logic decides who gets what."
once you're a marketplace, you suddenly need:
tiered platform commissions
currency conversion because the payee is in another country
tax invoices generated per jurisdiction (vat, gst, us state tax)
holding funds in escrow until delivery confirmation
disputes, refunds, chargebacks that don't desync your internal ledger
one project we were on (around 3k active users across 18 countries) was running this manually with a 3-person finance team before we redid the billing layer. the unit economics literally didn't work at that scale.
what ended up holding up: billing isolated as its own bounded context (ddd, separate db schema), stripe connect with custom accounts, rabbitmq for async payout processing. fraud validation runs on redis with sub-100ms latency for the cases where a click needs to be validated before it counts.
the one architectural choice that saved us the most: every payment event is written as append-only into a separate ledger table, real account state is recalculated from events. when stripe retries a webhook 4h later (which happens), nothing duplicates, nothing breaks reconciliation.
how far did you go with custom tax logic before giving up and offloading to stripe tax / taxjar / anrok?
Posted Jul 6, 2026, 1:27 PM UTC