💳

The Payments Decision

Enter hub password to continue.

That's not right. Try again.

Decision Report

What To Use Instead of Stripe

SocialMapped payments · researched 2026-07-20

← Back to hub

1. What we're actually deciding

SocialMapped needs to take money for two things: the $29 one-time report (the immediate need) and, later, the $299 / $599 / $1,199 monthly management subscriptions. The worker already has a Stripe integration built and hardened (checkout, webhook, report generation on the queue), but the Stripe secrets were never set, so nothing is wired to a live account yet. That means switching providers now costs almost nothing: only the thin checkout-and-webhook layer changes, and all the queue plumbing, duplicate-submission protection, and report delivery stay exactly as they are.

2. The concept that matters: merchant of record

With a plain payment processor (Stripe, Square, PayPal), you are the legal seller. For digital products sold across the US, that makes sales tax your problem: tracking which states tax digital goods, registering when you cross their thresholds, filing returns. For a solo business, it's a real ongoing burden that has nothing to do with helping customers.

A merchant of record (MoR) legally resells your product: the customer buys from them, they handle every sales tax, VAT, and compliance obligation everywhere, and they pay you out. The fee is roughly 1 to 2 percentage points higher than plain Stripe. On a $29 report, that's about 40 to 80 cents per sale to never think about tax compliance at all. For this business, that trade is worth it.

3. The options, priced on our actual product

OptionFee on a $29 reportHandles sales tax?Subscriptions?Read on it (July 2026)
Polar~$1.56 (4% + 40¢)Yes (MoR)YesCheapest MoR, built for solo founders and digital products, best developer tooling of the group. The consistent "right default for indie" pick this year.
Paddle~$1.95 (5% + 50¢)Yes (MoR)YesThe mature, established MoR with the deepest global tax coverage. Geared toward bigger SaaS; volume discounts only matter at scale we don't have yet.
Stripe Managed Payments~5% rangeYes (MoR)YesWhat Lemon Squeezy became after Stripe bought it in 2024. In public preview since February 2026. Solid, but it's still a Stripe account, so it doesn't help if the goal is to avoid Stripe itself.
Plain Stripe~$1.14 (2.9% + 30¢)No, you doYesCheapest per sale and already built in our worker, but the sales tax burden lands on Annette. Fine at tiny volume, a real chore if the product works.
PayPal~$1.50 (3.49% + 49¢)No, you doYesFamiliar checkout button for buyers, clunkier developer experience, same tax burden as Stripe with fewer tools.
Gumroad~$2.90+ (10%)Yes (MoR)YesSimplest possible setup, but the fee is triple Polar's for the same tax handling. Wrong fit once you have your own site and checkout flow, which we do.

4. The recommendation: Polar

Polar wins on every axis that matters here. Lowest merchant-of-record fee (4% + 40 cents), designed for exactly this shape of business (solo founder, digital product now, subscriptions later), a clean API that works fine from a Cloudflare Worker, and a sandbox environment where the whole flow can be tested with fake money before launch. The management tiers can run on it as subscriptions when that day comes, so one provider covers the whole business.

The honest counterargument: plain Stripe is about 40 cents cheaper per report and the integration is already written. If SocialMapped never passes a handful of sales a month, the tax exposure stays negligible and Stripe would have been fine. But the whole point of the funnel is for it to work, and the moment it does, MoR is the version where nobody spends an afternoon learning what an economic nexus threshold is.

Decision status: Annette chose Polar on 2026-07-20 and is setting up the account (production org + sandbox org, one $29 product in each, access tokens saved locally for Charlie). Charlie then builds the checkout + webhook swap, tests end to end in Polar's sandbox with fake payments, and retires the Stripe code path. The queue, idempotency guard, and delivery pipeline don't change.

5. What the switch touches in the code

  • Replaced: worker/src/stripe.ts (checkout session creation, webhook signature check, session lookup) gets a Polar equivalent.
  • Unchanged: report generation on the Cloudflare Queue, the pre-allocated report URL, the idempotency guard against duplicate submissions, answers storage, the email delivery, and every pipeline invariant. The payment provider only decides when a paid job gets enqueued, and that seam was hardened on 2026-07-20 specifically so the provider layer stays thin.
  • Launch gate: the beta-to-paid transition (feedback box, "free during beta" copy sitewide) is a separate decision and still open.