Pre-launch approach: We work directly in Stripe production mode and use 100% discount coupons for testing. This is simpler than juggling test/live modes when you have no real customers yet.
Warning: Once you have real paying customers, copy your products and prices to Stripe Test Mode for staging environments.
Warning: Never paste secret keys into AI prompts. Add them to .env.local yourself.
Use the Stripe MCP to create my subscription products:1. [PLAN NAME] - $[PRICE]/month Description: [SHORT DESCRIPTION] Features: - [FEATURE 1] - [FEATURE 2] - [FEATURE 3]2. [PLAN NAME] - $[PRICE]/month Description: [SHORT DESCRIPTION] Features: - [FEATURE 1] - [FEATURE 2] - [FEATURE 3]Create each product with a monthly recurring price in Stripe.Then update lib/plans.ts with the Price IDs and all the details above.The /pricing page and landing page will automatically display these plans.
The AI will create products in Stripe and update lib/plans.ts with matching Price IDs, names, descriptions, and features.
Manual fallback: Dashboard → Products → Add Product → Enter name, price, set billing to "Recurring monthly" → Copy the Price ID (price_...) → Update lib/plans.ts manually.
Use the Stripe MCP to verify my Stripe setup, then check the codebase:1. List products and prices from Stripe2. Check lib/plans.ts has matching Price IDs configured3. Trace checkout flow: /pricing → checkout → webhook → databaseFix any code issues you find. I'll verify my .env.local values myself.
Customize the /pricing page:- [YOUR CHANGES - e.g., "Add annual pricing toggle", "Change headline to X", "Add testimonial section"]Keep using lib/plans.ts as the data source.UI: daisyUI ONLY (no custom CSS, no other libs). @web https://daisyui.com/llms.txt
When a customer completes checkout, Stripe sends a webhook to your server to confirm the payment. The problem: Stripe can't reach localhost — your dev machine isn't accessible from the internet.
Without webhooks working, checkout will complete on Stripe's side but your database won't update.
The Stripe CLI forwards webhooks from Stripe to your local machine. No need to create a webhook endpoint in the Stripe Dashboard — the CLI handles everything.
Install: brew install stripe/stripe-cli/stripe (Mac) or see install docs
Login: stripe login --live (opens browser to authenticate)
Copy the webhook secret it prints and add to .env.local as STRIPE_WEBHOOK_SECRET
Keep this terminal running while testing. The CLI will forward all Stripe events to your local server.
Multiple Stripe accounts? If you have more than one Stripe account, make sure the CLI is logged into the correct one — otherwise webhook forwarding will silently fail. To switch accounts:
# Log out of current accountstripe logout# Log back in (opens browser to authenticate)stripe login
Alternative: If you prefer not to install the CLI, you can use ngrok to expose your localhost and create a temporary webhook endpoint in Stripe Dashboard. But the CLI is simpler for most cases.