Payment Gateways
Live payment credentials on your own server
Use live credentials for every gateway you enable. The variable names match the local guide - only the values change.
Stripe
Set your live secret key in the server .env:
STRIPE_SECRET_KEY=sk_live_...No product or price ID is needed - Notebook Studio creates the recurring
checkout price dynamically from the plan amount. Set STRIPE_WEBHOOK_SECRET
and point a Stripe webhook at <your-convex-site>/stripe-webhook so
subscription events (created, renewed, cancelled) stay in sync.
PayPal
Create a live app and set the live PAYPAL_API_URL
(https://api-m.paypal.com), client id, secret, and PAYPAL_WEBHOOK_ID
(webhook at <your-convex-site>/paypal-webhook).
Razorpay and Flutterwave
Use live keys for both, exactly as documented in the production guide, plus RAZORPAY_WEBHOOK_SECRET and FLUTTERWAVE_SECRET_HASH for their webhooks.
Dodo Payments and Paddle
Both are merchant-of-record gateways whose recurring products and prices are created automatically through their API, so there are no catalog IDs to configure. Use live credentials on your server:
NEXT_PUBLIC_DODO_ENV=live_mode
DODO_PAYMENTS_API_KEY=your-live-api-key
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-signing-key
NEXT_PUBLIC_PADDLE_ENV=production
NEXT_PUBLIC_PADDLE_CLIENT_TOKEN=live_...
PADDLE_API_KEY=pdl_live_apikey_...
PADDLE_WEBHOOK_SECRET=your-webhook-secretPoint their webhooks at <your-convex-site>/dodo-webhook and
<your-convex-site>/paddle-webhook. The same keys must also be set in the
Convex dashboard environment (see
Convex Database).