Add paid plans to a Lovable app (TanStack Start, BuildBase sign-in)
One prompt that lets a workspace in a Lovable app pick a plan and unlocks a paid feature by its slug, checked on the server, plus where the keys live.
Lovable can also connect to BuildBase itself while it builds: Use BuildBase in Lovable.
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. The server 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 Lovable 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 a new Lovable project with the prompt filled in and not sent. For the app you already have, paste the prompt into that project's chat 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-lovable-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 TanStack Start server route that runs the export, call bb().entitlements.check({ workspaceId, slug: 'export' }) from src/server/buildbase.ts and answer 402 when allowed is false.
Do not turn on Lovable's built-in payments or add a Stripe integration of your own, and do not store the plan in Lovable Cloud or Supabase. Never store card data.Where the secrets go
Your Stripe keys go into the BuildBase console, under Billing, not into Lovable: the app never holds a Stripe key, and card details stay on Stripe's page. BUILDBASE_CLIENT_SECRET stays where the guide put it: More > Settings > Secrets, never with a VITE_ prefix.
The Lovable trap
Lovable offers payments of its own, and a prompt that says "add payments" can turn them on. Lovable's docs say a project with payments on cannot be forked and has one payment provider. Read the change before you accept it: if it added a Stripe or Paddle setup step, 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 Lovable app
- Entitlement checks: limits, quotas and the server check
- Add BuildBase to Lovable's instructions or skills