Stripe payments for browser extensions
with server-side verification when you need it
Add subscriptions and one-time purchases to Chrome or Edge (Firefox soon) in minutes. Start 100% client-side — no backend required. Need secure LLM/API gating? Use the server-side API to verify paid status, with Stripe webhooks syncing your DB.
How it works
Connect Stripe
Required first. Link an existing or new Stripe account via Stripe Connect.
Create your app & plans
Add your extension, then set up subscriptions or one-time pricing plans.
(Optional) Verify server-side
If your extension has a backend, use the API + webhooks to verify entitlements before expensive operations like LLM calls.
Built with AI? Paste a prompt into Cursor and set this up in seconds
Copy the setup prompt and paste it into Cursor (or whatever you're using). If you don't have an appId + publicKey yet, the prompt will tell you to sign up, connect Stripe, and create an app + plan first.
- Checks you're signed up + have an appId and publicKey
- Installs the SDK
- Runs init to update your manifest + service worker
- Adds paid / unpaid gating (client-side)
- Shows you exactly what files changed
Features
Subscriptions + one-time purchases
Offer monthly, yearly, or lifetime plans through Stripe Checkout. Flexible pricing for any business model.
Server-side entitlement checks
Don't trust client-side state. Verify paid status from your backend before granting access to expensive features.
Stripe webhooks → DB sync
Automatic webhook handling keeps your database perfectly in sync with Stripe subscription status changes.
No content-script dependency
Works without injecting scripts into pages. Your UI will still update after checkout when the user returns (status refresh).
LLM-ready paywalls
Built for extensions that call OpenAI, Claude, or other LLM APIs. Gate expensive API calls behind verified entitlements.
Instant updates (optional)
Only needed if the extension UI stays open during checkout. Use the optional content script or trigger a refresh from your backend via webhooks.
Quick setup
Install the SDK, run the init script, and the initial set up in your manifest.json & service worker are done for you. Then you're ready to gate features. Add server-side verification only if your extension has backend features worth protecting.
$ npx -y -p @billingextensions/sdk bext init "appId" "publicKey"# Updates manifest.json + your service worker by detecting your current setup and applying the right config automatically.
const client = BillingExtensionsSDK
.createBillingExtensionsClient({
appId: "my-app",
publicKey: "app_publicKey",
});
client.enableBackgroundStatusTracking();
const status = await client.getUser();
if (!status.paid) {
await client.openManageBilling();
}// Verify entitlement server-side
const res = await fetch(
"https://billingextensions.com" +
"/api/v1/apps/{appId}/users/{extensionUserId}",
{
headers: {
Authorization: `Bearer ${
process.env.BILLINGEXTENSIONS_SECRET_KEY
}`
},
}
);// Gate expensive operations
if (!user.paid) {
return res.status(402).json({
error: "Upgrade required"
});
}
// Safe to call OpenAI/LLM now
const completion = await openai
.chat.completions.create({
model: "gpt-4",
messages: [...],
});Everything you need, nothing you don't
The SDK works entirely client-side — just like other solutions. Initial setup takes less than a minute. No backend required. But when you need to gate server-side features (LLM calls, expensive APIs), the optional server-side API and webhook sync are already built in. No content script means cleaner permissions and fewer install warnings.
See how we compare to ExtensionPayFrequently Asked Questions
Do I need to be a developer to use BillingExtensions?
How do I add Stripe subscriptions to a Chrome extension?
Do I need a backend to monetize an extension?
Can users bypass a client-side paywall?
Do I need a content script?
Can I use this to gate LLM/API usage?
Ready to monetize your extension?
Get started in minutes with Stripe Connect. 4.5% platform fee on successful charges.
Get Started Free