Chrome Extension Payment Providers: Stripe vs Paddle vs Lemon Squeezy vs Polar
Choosing a payment provider for a chrome extension: merchant-of-record vs payments-only (and what that means for sales tax and VAT), verified current fees, the webhook/entitlement architecture every provider needs, and avoiding lock-in.
TL;DR: The extension itself is provider-agnostic: MV3 forces checkout onto your website in a browser tab, and entitlements arrive by webhook regardless of vendor. So choose on business terms, verified July 2026: Stripe (2.9% + 30¢ US) is payments-only: cheapest and most capable, but global sales tax is your problem; Paddle (5% + 50¢), Lemon Squeezy (5% + $0.50, now Stripe-owned), and Polar (5% + 50¢ on the free plan, less on paid plans) are merchants of record: they resell your product and own tax compliance. Whatever you pick, keep it behind a port and make your own entitlement store the authority, so the choice stays reversible.
Picking a payment provider feels like a big architectural decision. For a chrome extension it mostly isn’t; the platform constraints force an architecture in which the provider is a replaceable edge component. What the choice really determines is your fee rate and who deals with the world’s tax authorities.
The architecture is fixed before you choose
Three facts shape every option (background in how to monetize a chrome extension):
- The Chrome Web Store has no payments. Google shut its system down in 2021 and takes no cut; you bring your own biller.
- Checkout cannot live inside the extension. Every provider’s checkout is remotely hosted code (banned in MV3 bundles), and an extension popup imitating a payment form is a review red flag besides. Checkout happens on your website, opened in a normal tab.
- Payment truth arrives server-side. The provider calls your backend’s webhook; your backend writes an entitlement record; the extension reads that record. The full pattern (single-writer webhooks, idempotency, storage mirroring) is in our Stripe architecture guide, and every word of it applies to any provider here.
Since the extension never touches the provider, the comparison is purely commercial: fees, tax handling, and product maturity.
The real fork: merchant of record vs payments-only
Payments-only (Stripe): you are the legal seller. Stripe moves money and fights fraud, but tax is yours: once you cross registration thresholds, EU and UK VAT on digital goods, US state sales-tax economic nexus, and a growing list of other jurisdictions become your filings. Tooling exists (Stripe Tax calculates and can file from 0.5% or $0.50 per transaction), but calculation isn’t registration, and the liability stays on your entity.
Merchant of record (Paddle, Lemon Squeezy, Polar): the provider resells your product. Their name is on the customer’s receipt, so registration, collection, remittance, and most chargeback handling are theirs. You invoice one counterparty, the MoR, instead of selling into dozens of tax regimes.
The price gap between the models (roughly 5% + $0.50 versus 2.9% + $0.30) is therefore not a markup on the same service; it’s the market price of global tax compliance bundled into a transaction fee. For a solo developer selling a $5–15/month extension worldwide, that bundle usually costs less than the accounting it replaces. At meaningful scale, or US-heavy sales below nexus thresholds, Stripe’s raw rate starts winning.
The providers, verified
Fees below were re-verified against the linked official pages in July 2026.
Stripe: payments-only, the infrastructure default
2.9% + 30¢ per US domestic card transaction
(+1.5% international cards, +1% currency conversion). The deepest API surface
of the four: Checkout Sessions, Billing, the customer portal, test clocks for
subscription lifecycle testing, and lookup_key price resolution: details
the Stripe guide leans on. Two
tax-shaped add-ons: Stripe Tax (calculation/filing), and Managed Payments,
Stripe’s own merchant-of-record offering (from the Lemon Squeezy
acquisition), priced at
3.5% per transaction on top of processing fees,
which effectively lets you start payments-only and bolt on MoR later.
Paddle: the established MoR
5% + 50¢ per checkout transaction, flat, as a full merchant of record for SaaS and digital products. The longest MoR track record of the three, with subscription billing, dunning, and invoicing included. Real-world extension proof point: Keywords Everywhere, one of the best-known paid extensions, takes its payments via Paddle.
Lemon Squeezy: indie favorite, now Stripe-owned
5% + $0.50 per transaction as MoR, with surcharges that matter at the margins: +1.5% international cards, +1.5% PayPal, +0.5% on subscription payments. Famously easy setup and indie-friendly. The strategic fact: Stripe acquired Lemon Squeezy in July 2024, and its MoR capability is becoming Stripe’s Managed Payments; the product keeps operating, but its long-term standalone shape follows Stripe’s roadmap.
Polar: the open-source newcomer
Merchant of record with tiered pricing: 5% + 50¢ on the free Starter plan, down to 3.4% + 30¢ on paid plans ($20–400/month), plus +1.5% for non-US cards, $15 per dispute, and small Stripe payout fees. Developer-first (open-source server, usage-based billing primitives, license keys) and the cheapest MoR rate of the three if your volume justifies a paid plan. The honest caveat: it’s the youngest company on this list, so weigh platform risk accordingly.
At a glance
| Stripe | Paddle | Lemon Squeezy | Polar | |
|---|---|---|---|---|
| Model | Payments-only (MoR add-on available) | Merchant of record | Merchant of record | Merchant of record |
| Base fee (verified 7/2026) | 2.9% + 30¢ (US) | 5% + 50¢ | 5% + $0.50 | 5% + 50¢ free plan → 3.4% + 30¢ |
| Global tax handled for you | No (Stripe Tax helps; liability yours) | Yes | Yes | Yes |
| Notable | Deepest API; test clocks; lookup keys | Longest MoR record; Keywords Everywhere uses it | Stripe-owned since 7/2024 | Open source; tiered fees; newest |
Whatever you choose: the ports pattern
The lock-in that hurts isn’t code; it’s live subscriptions, which can’t follow you to a new provider without customers re-subscribing. You can’t fully escape that, but you can contain everything else with two rules:
- Talk to the provider through a port. Define the narrow interface your
business logic needs (create checkout, open customer portal, parse webhook
event) and implement it per provider. In ExtensionStart’s backend this is
literal: billing routes depend on
StripeGateway/EntitlementStore/ClaimsWriterinterfaces, so an alternate provider slots in behind the same contract without touching route logic or the extension. - Own your entitlement store. The webhook writes your record
(
customers/{uid}in the kit); the app reads only that. If the provider changes, or its API does, the blast radius ends at the webhook parser. This is the same single-writer entitlement rail described in the Stripe guide, and it’s what makes the provider decision reversible.
Get those two right and the Stripe-vs-MoR choice becomes a business setting you revisit at tax time, not an architecture you’re married to. Once the rail exists, the harder questions are what to charge and when to show the wall.
ExtensionStart ships the Stripe implementation of this architecture end to end (checkout, webhooks, entitlements, portal, plus the port interfaces above for swapping providers), tested against a real Stripe test clock. If you’re comparing it to other starter kits, see the comparisons.
Frequently asked questions
What is the best payment provider for a Chrome extension?
There is no extension-specific winner because the extension never talks to the provider directly; checkout happens on your website and truth arrives by webhook, which every provider supports. The real decision is merchant-of-record (Paddle, Lemon Squeezy, Polar: roughly 5% + $0.50, they handle global sales tax) versus payments-only (Stripe: 2.9% + $0.30 in the US, tax compliance is yours). Solo developers selling worldwide usually come out ahead with an MoR; Stripe wins on fees, control, and API maturity.
What is a merchant of record and do I need one?
A merchant of record legally resells your product: the MoR is the seller on the customer's receipt, so registering for, collecting, and remitting EU VAT, UK VAT, US state sales tax, and the rest of the world's digital taxes is their problem, not yours. The roughly 2 extra percentage points an MoR charges over raw card processing is what global tax compliance costs as a service. If you'd rather not track tax registration thresholds in dozens of jurisdictions, that trade is usually worth it.
Can a Chrome extension process payments directly inside the popup?
No. Every provider's checkout is remotely hosted code, which Manifest V3 bans inside an extension, and collecting card details in your own extension UI is both a PCI problem and a Chrome Web Store red flag. The universal pattern: the extension opens your website's checkout in a normal browser tab, and your backend learns the outcome via webhook.
Does Google take a cut of Chrome extension payments?
No. The Chrome Web Store shut down its own payment system in 2021 and takes no share of extension revenue; your only per-sale costs are your provider's fees, from about 2.9% + $0.30 (Stripe, US domestic) to about 5% + $0.50 (merchant-of-record providers).
What happened to Lemon Squeezy?
Stripe acquired Lemon Squeezy in July 2024. It continues to operate as a merchant of record at 5% + $0.50, and its MoR capability is being folded into Stripe as "Managed Payments." If you're choosing today, factor in that the standalone product's long-term shape is tied to Stripe's roadmap.
How hard is it to switch payment providers later?
Checkout and webhooks are easy to swap; migrating live subscriptions is the hard part: recurring billing agreements generally can't move providers without asking customers to re-subscribe. Two mitigations: keep provider calls behind a thin interface (a gateway port) so the code swap is contained, and make your own webhook-written entitlement store the single source of truth so your app never depends on any provider's data model.