PaidExtension
Chrome · Edge · Firefox · Manifest V3

The $0/month stack for paid browser extensions.

A complete, production-tested launch kit: MV3 extension with offline-verifiable licensing, a Cloudflare Worker that turns Paddle payments into signed license keys, and a static checkout site. No servers. No database bill. No sales-tax filings.

One-time purchase · lifetime updates · unlimited products · 14-day refund

Step 1 of 5 · Fresh install This is the popup of an extension built with the kit. Start 7-day trial: the Worker signs a 7-day trial key and the extension verifies it with only the public key.

Live demo: real ES256 keys signed and verified in your browser with a keypair generated for this page. Nothing leaves the tab.

Your browser doesn't support WebCrypto, so the live demo is off.

$0monthly infrastructure until you have customers
0tax returns you file — Paddle is the merchant of record
~1 hourfrom clone to sandbox purchase, following the setup guide
3browsers from one codebase: Chrome, Edge, Firefox

Three things no other extension kit gives you together

Every other boilerplate is "connect Stripe, add a Firebase project, host a backend". You are then on the hook for hosting bills, uptime and VAT.

Cost

$0/month, honestly

GitHub Pages hosts the site. Cloudflare Workers + KV run licensing on the free tier (100k requests/day — tens of thousands of users). Paddle only takes a cut of sales. Your fixed cost is a domain.

Tax

Merchant of record built in

Paddle sells to your customer, collects VAT/GST/sales tax worldwide, issues invoices and handles refunds and chargebacks. The kit turns Paddle webhooks into license keys — you never touch a tax form.

Reliability

Pro works when your server doesn't

License keys are ES256-signed JWTs verified inside the extension with an embedded public key. No "ask the server if the user is Pro" — and no one-star reviews when a backend hiccups.

What's inside

One private repository, five packages, one config file. Everything reads from paidextension.config.json. Real code, straight from the repo:

extension/

TypeScript MV3 extension

  • Popup, settings, upgrade flow, sample content script
  • licensing/ module: offline key verification, device seats, trials, checkout polling, offline grace
  • Config-driven feature gates — hasFeature('exportData')
  • Firefox manifest variant, Edge-ready packaging
  • Vitest suite, ESLint, strict TypeScript, webpack
extension/src/licensing/features.ts · verify.ts
// Entitlement derives from the signed license, never a stored flag.
export async function isPro(): Promise<boolean> {
  return (await getEntitlementStatus()).tier !== 'free';
}
export async function hasFeature(feature: string): Promise<boolean> {
  const { tier } = await getEntitlementStatus();
  return featuresForTier(tier).has(feature);
}

// verify.ts — offline ES256 check with the embedded PUBLIC key
const pubKey = await crypto.subtle.importKey('jwk', LICENSE_PUBLIC_JWK,
  { name: 'ECDSA', namedCurve: 'P-256' }, false, ['verify']);
return crypto.subtle.verify({ name: 'ECDSA', hash: 'SHA-256' },
  pubKey, signature, data);

Configure it in sixty seconds

Answer a few questions and npm run init rewrites the whole repo. Try it: the config, manifest and popup update as you type.

More answers

Extracted from a real product, not a demo

PaidExtension is the exact stack behind Manila Mail Manager, a paid Gmail extension live on the Chrome Web Store — Paddle checkout, Cloudflare licensing, seat limits, trials and refunds have all been exercised by paying customers. The kit is the generic version, with lifetime plans, Edge/Firefox packaging and the agent skills added.

Want to poke at one before buying? Marker is a highlighter extension built from the kit: free tier, 7-day trial, Pro unlocked by a Paddle sandbox checkout (card 4242 4242 4242 4242), server-verified sharing, and revocation when you cancel. Its product code is public at github.com/house-of-arqam/marker — about 40 lines of it touch licensing.

How it compares

Against the popular extension boilerplates and the hosted "payments SDK" services — including what each one leaves you per month at your numbers.

PaidExtension Typical boilerplate
(ExtensionFast, extFast, TurboStarter…)
Hosted payment SDKs
(ExtensionPay, crxpay…)
You keep, per month
on $1,160 of sales
$0$0$0
Fees, infrastructure & tax, per month
Price of the kit$99 once (Solo)$99–$499 once3–5% of every sale, forever
Sales tax / VAT handledYes — Paddle MoRNo — Stripe, you fileNo — Stripe, you file
Works when backend is downYes — offline ES256 keysNoNo
Device seat limitsYes, self-serve releaseNoNo
Lifetime + subscription plansBothUsually subscriptionBoth
User accounts requiredNo — key-basedGoogle / email authNo
Refund / chargeback revocationAutomaticDIYYes
Own the code, no vendorYesYesNo — hosted dependency
AI-agent setup/publish/test skillsYesNoNo
Firefox + Edge packagingYesSometimesChrome-first

Assumptions behind the monthly numbers

Illustrative, from published rates at the time of writing: Paddle 5% + 50¢ per sale (tax included); Stripe 2.9% + 30¢; Stripe Tax 0.5% per transaction; Cloudflare Workers free tier 100k requests/day, then $5/month. Competitor details as published on their sites; check current terms before deciding.

Pricing

Pay once. Build as many extensions as you like. Same repo, same updates — the tier sets how many developers may use it.

Launch price

Solo

$149$99

one-time, one developer

$50 off for the first 100 customers — 100 left

  • One developer, any number of products
  • Personal or company projects
Buy Solo

Team

$249

one-time, up to 5 developers

  • Up to 5 developers at one company
  • Share the repo internally
Buy Team

Agency

$499

one-time, unlimited developers

  • Unlimited developers at one company
  • Build and hand over products for clients
Buy Agency
  • Private GitHub repo access, instantly
  • Unlimited end products, commercial use
  • Lifetime updates
  • Setup, licensing and publishing guides
  • Agent skills: setup, publish, test
  • Support via GitHub Issues and email

14-day refund on every tier if it's not what you expected. Payments handled by Polar (merchant of record); you'll get a proper invoice.

Questions

What exactly do I receive?

Access to a private GitHub repository containing the full source: extension/, worker/, site/, scripts/, docs/, .agents/skills/ and the GitHub Actions workflows. Polar grants the repo access to the GitHub account you connect at checkout right after purchase; on Team and Agency, share it with your developers as the license allows. Updates arrive as commits.

Do I need to know Cloudflare or Paddle already?

No. The setup guide (and the setup agent skill) walks through creating the Paddle prices and webhook, deploying the Worker and pointing your domain at GitHub Pages. Budget about an hour for a first run.

Why Paddle rather than Stripe?

Paddle is a merchant of record: it is legally the seller, so it collects and remits sales tax in every jurisdiction and handles invoices, refunds and chargebacks. With Stripe those obligations are yours. For a solo developer selling globally that difference is the whole ballgame.

Is it really $0/month?

Until you outgrow the free tiers, yes: GitHub Pages is free, Cloudflare Workers gives 100,000 requests/day and KV 1,000 writes/day, Resend gives 3,000 emails/month. Paddle charges 5% + 50¢ per sale and nothing otherwise. You pay for a domain (~$12/year).

Can I use React / WXT / Plasmo?

The extension scaffold is plain TypeScript + webpack so there's nothing to fight. The licensing/ module has no UI dependencies and drops into any MV3 project; the Worker and site are independent of the extension framework.

What does the license allow?

Unlimited commercial end products, forever, including all updates. The tier sets who may work with the kit's files: Solo is one developer, Team is up to 5 developers at one company, Agency is unlimited developers at one company including work delivered to clients. You may not redistribute the kit itself or use it to build a competing kit. Full text on the license page.

How is this "agent-native"?

The repo ships an AGENTS.md plus three skills in .agents/skills/ — setup, publish and test — written as checklists an AI coding agent can execute. They encode the things that usually go wrong: service-worker constraints, CSP rules, Paddle sandbox quirks, store-review requirements.

Refunds?

14 days, no questions asked — email hello@paidextension.dev. We'll revoke repo access and refund through Polar.