Keyturn Kit / Guides

Moving Chrome extension license keys off Lemon Squeezy

Lemon Squeezy still sells and still answers its license API. Its site now carries a “2026 Update: Lemon Squeezy + Stripe Managed Payments” banner, and write-ups of that update say the goal is to make moving to Stripe Managed Payments easy. Stripe has no license keys of its own, so an extension that unlocks Pro with a Lemon Squeezy key has no direct equivalent to move to. Nothing forces a move today; this page is for planning one. Read on 27 October 2026.

What the extension needs from a provider

A paid extension without a server needs three things from a license API:

  1. Calls the extension can make with nothing secret in its code.
  2. A way to limit how many browsers use one key.
  3. A key that stops working after a refund.

Four providers, side by side

Each row comes from our guide for that provider, checked against its docs on 27 October 2026.

Provider Secret in the extension Browser limit After a refund
Polar None, customer-portal endpoints need no token Activations, if the benefit has an activation limit; otherwise no browser limit Revoke or disable the key; the next check fails
Dodo Payments None, license endpoints are public Activations per key Disable the key; validate then returns valid: false
Gumroad None, verify needs no token No activations, only a uses counter you check yourself The key stays enabled; check the refunded and chargebacked fields yourself
Payhip A per-product secret Payhip says is meant for public apps A uses count you raise and lower with that secret (a soft limit) Payhip disables the key by itself

Two catches worth knowing before you pick. On Dodo, a key bought from any other Dodo seller activates too, so compare business_id with yours. On Gumroad, a refunded purchase still verifies, so the extension has to look at the purchase fields.

Moving existing customers

Keys from one provider don’t work at another, so plan for the people who already paid:

In Keyturn Kit

Keyturn Kit is a WXT + React starter for paid extensions. The free edition (MIT, on GitHub) uses Lemon Squeezy. Pro ($59 once) adds Polar, Dodo Payments, Gumroad and Payhip, and switching means changing provider in lib/config.ts and filling in that provider’s block and your checkoutUrl:

provider: 'polar', // or 'dodo', 'gumroad', 'payhip', 'lemonsqueezy'

The free edition’s walkthrough is Selling a Chrome extension with license keys, no backend.

More guides