Add paid plans to a Replit app (React and Express, BuildBase sign-in)
One prompt that lets a workspace in a Replit Agent app pick a plan and unlocks a paid feature by its slug, checked on the server, plus where the keys live.
Replit can also connect to BuildBase itself while it builds: Use BuildBase in Replit.
A workspace picks a plan in the SDK's subscription screen, pays on Stripe's page, and the feature its plan includes appears without a reload. An Express route checks the same answer, so a person cannot reach the feature by typing its address. This page assumes the app already signs people in with @buildbase/sdk, as the Replit guide sets up. If it signs people in with something else, such as Supabase or Clerk, read keep your existing sign-in first.
Before you start
Stripe connected, a feature with the slug export and a published plan that includes it (Set up billing). Entitlement checks need @buildbase/sdk 1.0.0 or later.
The prompt
The link opens Replit Agent with the prompt filled in, for a new app; you still send it yourself. For the app you already have, paste the prompt into Agent's chat in that project instead.
This app signs people in with BuildBase (@buildbase/sdk), set up as https://www.buildbase.app/guides/add-login-teams-and-paid-plans-to-a-replit-app shows. If it does not, stop and tell me.
Read https://docs.buildbase.app/billing/entitlements.md first and do not invent endpoints. Plans and prices live in the BuildBase console, with a feature whose slug is export.
- Add an Upgrade button that calls openWorkspaceSettings('subscription') from useSaaSAuth().
- Wrap the export screen in WhenEntitled from @buildbase/sdk/react, with slug "export" and an upgrade card as its fallbackComponent.
- In the Express route that runs the export, call bbFor(req).entitlements.check({ workspaceId, slug: 'export' }) from server/buildbase.ts and answer 402 when allowed is false.
Do not add Replit's Stripe connector or a checkout of your own, and do not store the plan in Replit Database. Never store card data.Where the secrets go
Your Stripe keys go into the BuildBase console, under Billing, not into Replit: the app never holds a Stripe key, and card details stay on Stripe's page. BUILDBASE_CLIENT_SECRET stays where the guide put it: the Secrets tool, and again in Production app secrets under Publishing, never with a VITE_ prefix.
The Replit trap
Replit has a Stripe connector, and Agent writes a checkout page and a webhook endpoint for it when asked for payments. Two payment setups in one app means two places a plan can live. Read the change before you accept it: if Agent added Stripe keys to Secrets or wrote its own checkout, undo it and paste the prompt again.
Gate on the slug, not the plan name. A check for "is this the Pro plan" breaks the day you rename a plan or sell the feature as an add-on.
Full guides
- Add login, teams and paid plans to a Replit Agent app
- Entitlement checks: limits, quotas and the server check
- Add BuildBase to Replit as a skill