Billing Settings (Admin)
Admin → Billing Settings (/admin/billing-settings) shows secret-safe billing configuration status. Values come from environment variables — the UI is read-only for credentials.
What the page shows
- Current provider:
MOCK,STRIPE, orLEMON_SQUEEZY - Whether Stripe / Lemon keys are configured (boolean only — never values)
- Mock mode active indicator
- Checkout success/cancel URLs
- Webhook endpoint paths and configured status
- Support email reference
Environment-backed settings
| Setting | Env variable(s) |
|---|---|
| Provider | BILLING_PROVIDER |
| Success URL | BILLING_SUCCESS_URL |
| Cancel URL | BILLING_CANCEL_URL |
| Support email | BILLING_SUPPORT_EMAIL |
| Stripe | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_* |
| Lemon Squeezy | LEMON_SQUEEZY_API_KEY, LEMON_SQUEEZY_STORE_ID, LEMON_SQUEEZY_WEBHOOK_SECRET, LEMON_SQUEEZY_VARIANT_* |
Provider Price/Variant IDs on plans (admin Plan Catalog) map DB plans to Stripe/Lemon when real billing is enabled. IDs are optional in mock mode.
Mock mode (default)
env
BILLING_PROVIDER=MOCK- No Stripe or Lemon keys required
- Dashboard billing uses published plans from the database
- Mock checkout completes in-app for testing
Switching to real billing
- Set provider env keys on the server (never in git)
- Map plans in Admin → Plans with Stripe Price ID / Lemon Variant ID
- Set
BILLING_PROVIDER=STRIPEorLEMON_SQUEEZY - Configure webhook URLs in provider dashboard → API routes documented in Payment Webhooks
- Restart API after env change
Demo mode can block real checkout via DEMO_REAL_BILLING_DISABLED. See Demo Mode.
Related
- Billing — subscriptions, mock checkout, user billing page
- Plan Catalog — CRUD in admin
- Environment Variables