Gumroad vs. Lemon Squeezy vs. Polar vs. Rolling Your Own Stripe Checkout
Part of Making Money From a Small Site and Small Business Websites
By Paul Peery · August 5, 2026 · 4 min read

Selling a digital product looks like one decision — "where do I list it?" — but it's actually two: who takes the payment, and who is legally the seller. That second one, the "merchant of record" question, is what the fee differences mostly pay for, and it's the part beginner comparisons skip.
A disclaimer before any numbers: fees change constantly — verify every figure on the provider's pricing page before deciding. What follows is the shape of each option, which changes much more slowly than the percentages. And nothing here is tax advice.
The four shapes
Gumroad — the listing. Simplest possible start: upload a file, get a link, done in an afternoon. The cut is the steepest of the four (it has historically hovered around ten percent plus payment processing), and the checkout lives on their brand as much as yours. What you're buying is zero setup and a marketplace-ish audience. Fine for validating that anyone wants the thing at all.
Lemon Squeezy and Polar — merchants of record. Both sit in the middle: your product, your branding, their checkout — and critically, they are the legal seller. That means EU VAT, UK VAT, and the growing list of jurisdictions that tax digital goods are their problem: they register, collect, and remit. Their cuts (mid-single-digit percent plus a small flat fee, historically) are meaningfully cheaper than Gumroad and meaningfully more expensive than raw Stripe — and the difference is the tax handling. For most solo sellers with international buyers, this is the sane default.
Stripe Checkout, wired yourself — what this site runs. Stripe's processing fee (historically around three percent plus a flat fee domestically) is the cheapest of the four — because you're buying only payment processing. You are the merchant of record. Tax registration thresholds, collection, and remittance are yours to track, or yours to bolt on with a tax service. That trade is why the DIY option is last, not first.
The break-even way to think about it
Don't compare percentages in the abstract — multiply by your actual numbers. The gap between a merchant of record and raw Stripe is a few percent plus VAT-handling you'd otherwise buy or build. On a product doing a few hundred dollars a month, that gap is coffee money and the MoR is obviously worth it. The DIY option starts making sense when some combination is true: volume is real, your buyers are mostly domestic, you already run the infrastructure anyway — or checkout is part of your product experience and you want to own every pixel and every row of data.
I built mine for the last two reasons. Which brings me to the honest part.
What "just use Stripe Checkout" actually involved
The happy path is a weekend: create a checkout session, redirect, webhook flips an order to paid, email a download link. The edges are where the real time went — every one of these is running on this site because every one of these happened or provably could:
- The settlement race. Stripe's webhook and the buyer's redirect back to your site both try to mark the order paid — sometimes seconds apart, sometimes the webhook lags. Settling has to be exactly once no matter which arrives first or whether both do, or you send double receipts (best case) or double-deliver a refunded order (worst case). Mine is one atomic state flip with a single winner; everything after it is written to never throw, because Stripe retries webhooks for days.
- Delivery that respects refunds. The file's real URL never appears anywhere. Buyers get a signed link bound to their specific payment record, checked against its status on every download — so a refund (synced back by webhook) kills the link automatically. No signed link, and one buyer's URL is everyone's URL.
- Stale checkout sessions. Payment links get opened twice, emailed, revisited a day later. Sessions expire; a durable pay link has to mint a fresh session per click and expire the previous one, or a two-tab buyer can pay twice.
- Discount codes need a floor check (a 90%-off code can push a price below the processor's minimum charge), and a code should only burn a use when money actually moves — not when someone abandons a checkout.
- Receipts, a thank-you state that handles "processing," "paid," and "refunded" honestly, and an admin view that reconciles it all.
None of that is exotic. All of it is the difference between a demo and a shop. If you copy the patterns it's days; if you discover them one incident at a time it's longer and less fun.
The plain recommendation
- Validating an idea → Gumroad, ship today.
- Real product, international buyers, no infrastructure appetite → a merchant of record (Lemon Squeezy or Polar — compare their current pricing and payout terms).
- You already run your own site, buyers are concentrated where your tax obligations are manageable, and ownership matters → Stripe direct, with the edge cases above on your checklist from day one.
The shop on this site is the Stripe-direct build, end to end — if you want the same wiring without living the edge cases yourself, that's a thing I build for people. More monetization write-ups: Making money from a small site.
Keep reading
All postsComments
No comments yet — be the first!
