2026-04-20 · 9 min read
Gumroad vs Stripe Direct Checkout: When to Switch
A creator with one ebook doing $200/month doesn't need to touch Stripe — Gumroad handles checkout, taxes, refunds, fulfillment, and carries ~10%. The opportunity cost of switching is real: your own Stripe+webhook+delivery stack takes a weekend to build and break.
But there's a crossover point where the math flips. Below it, Gumroad is correct. Above it, Gumroad is quietly taxing your business $X/month in fees that buy you less and less marginal value. This post is the crossover math, the feature comparison, and the migration playbook.
The fee math (the part everyone lowballs)
Gumroad's fee structure as of 2026:
- 10% base platform fee on every sale
- +$0.30 flat per sale
- Stripe card processing is already embedded in the 10%, so no double-dip
- Discover-driven sales (Gumroad's own marketplace search) carry an extra discover fee that varies
Stripe direct on your own domain:
- 2.9% + $0.30 per US card transaction
- 3.9% + $0.30 for international cards
- No platform fee — you own the customer relationship directly
- Plus infrastructure: Cloudflare Pages (free), Resend for delivery emails ($0-$20/mo), R2 for file storage ($0-$5/mo at small scale)
For a typical $99 digital product:
| Platform | Gross | Fees | Net |
|---|---|---|---|
| Gumroad | $99.00 | $10.20 (10% + $0.30) | $88.80 |
| Stripe direct | $99.00 | $3.17 (2.9% + $0.30) | $95.83 |
| Δ per sale | — | $7.03 | +7.9% |
$7 per $99 sale doesn't sound like much. At 10 sales/month it's $70. At 100 sales/month it's $700 — that's $8,400/year Gumroad is quietly taking that you could have.
What Gumroad does that you'd have to build
The $7/sale isn't pure profit — Gumroad delivers real value. Before you switch, honestly inventory what you'd rebuild:
- Checkout UI — form design, PayPal/Apple Pay/Google Pay support, card storage. Stripe Checkout covers this; you redirect to hosted Stripe and back.
- File delivery — signed URLs, download limits, license keys if you use them. Doable with Cloudflare R2 + a small Pages Function generating signed URLs.
- Receipts + email — Stripe sends auto-receipts; your own delivery email via Resend ($20/mo for 50k emails) covers the download link.
- Refunds — one-click in Stripe dashboard vs Gumroad's. Parity.
- VAT/sales tax — this is where Gumroad earns its keep internationally. Gumroad IS the merchant-of-record in most jurisdictions; they collect and remit VAT. If you switch to Stripe direct, you're the merchant — you owe VAT in each EU/UK/AU jurisdiction where you have "economic nexus," typically 10k-22k EUR/year threshold per country.
- Discover marketplace traffic — Gumroad's own search sends some buyers. Small for most creators, but non-zero.
- Reviews + ratings — Gumroad collects + displays them for trust.
The crossover
Rough rule of thumb: Gumroad is correct until you hit ~$1,000/month in gross revenue. Below that, the $100/mo you'd save on fees doesn't cover a weekend of developer time plus ongoing maintenance.
Between $1,000 and $3,000/month, it depends on two things:
- How much of your audience is EU/UK/AU (VAT compliance burden). If 30%+ international and you don't want to register for VAT in 3 countries, stay on Gumroad.
- Whether the Gumroad API can automate what you need. For simple file delivery it can. For custom delivery URLs (e.g. signed Cloudflare Pages paths), Gumroad's public v2 API silently ignores the field — you have to paste each URL manually in the web editor. This is a known limitation we hit directly.
Above $3,000/month: the $300+/mo fee delta is real money and worth the migration. At $10k/month it's $1,000/mo saved — a developer salary for the migration amortizes in a couple of months.
The automation ceiling
For our own template business, the specific friction that pushed us off Gumroad wasn't the 10% — it was the manual paste. We built a full autonomous pipeline that creates products, generates preview images, QA-gates, and lists on Gumroad. Every step except one ran headless. The one step: pasting the Custom Delivery URL into each product's edit page, manually, one at a time. Gumroad's public API drops that field silently.
For a business that ships 1-2 new products per month, the paste is a 3-minute task. For a business that ships 10+ new SKUs per month, it's a real bottleneck and one failure mode where every buyer who purchases before the paste gets nothing and has to be refunded.
Stripe direct solves this because we own the delivery endpoint. The file URL is baked in at product-creation time via Stripe Checkout metadata; the webhook handler fires on purchase, looks up the slug, emails the signed URL. No human hands needed.
Migration checklist
- Stripe account + API keys — live keys after approval (usually same-day). Webhook signing secret.
- Custom domain or subdomain on Cloudflare Pages — where checkout + thanks pages live.
- Stripe Checkout integration — one serverless function per product, or one dynamic route that looks up the slug. We shipped ours in ~50 lines of JavaScript.
- Webhook handler — verifies
checkout.session.completedsignature, generates signed download URL, emails via Resend. - File storage — Cloudflare R2 (free tier), or Pages deploy a bucket of ZIPs to a separate subdomain and keep the URLs obfuscated.
- VAT registration — if you cross the EU thresholds, use Merchant-of-Record services like Paddle or Lemon Squeezy instead of Stripe direct. Otherwise handle with a service like Sphere or Quaderno.
- Keep Gumroad as a backup for 90 days — customers who already bought there still need support, and Gumroad Discover still sends trickle traffic.
When to stay on Gumroad
- You sell physical products + digital — Gumroad handles both.
- You want VAT/sales tax handled completely for you.
- You're under $1,000/month gross.
- Your audience is global and you don't want to think about multi-jurisdiction compliance.
- You plan to use Gumroad Discover as a meaningful acquisition channel.
When to leave
- You're over $3,000/month gross and the fee math is painful.
- Your automation ceiling (manual paste, API gaps) is blocking scale.
- You want to own the customer email list outright for future upsells/cross-sells.
- You're selling B2B — businesses want to be billed on their own invoice, not "Gumroad."
Bottom line
We recently migrated our own template catalog off Gumroad and onto Stripe direct checkout on morton-digital.com specifically because of the manual-paste ceiling — our autonomous product pipeline was generating faster than we could hand-paste. The fee savings were a bonus, not the primary motivator.
If you're hitting the same ceiling, the infrastructure to replicate our setup is public: a Cloudflare Pages Function for Stripe Checkout Session creation, a webhook handler for checkout.session.completed, and Resend for delivery emails. Total code: under 300 lines of JavaScript. Total setup time: under two hours if you already have the accounts.
Want us to build your migration for you? Our $499 Custom Landing Page service covers Stripe-integrated checkout for SaaS and digital-product creators.
Get future posts + new templates
Occasional (monthly-ish) notes on what we've shipped + conversion experiments. Unsubscribe any time.