Billing (Stripe & PayPal)
UI: /settings/billing
Feature: billing
Permission: billing.manage
Mode: Primarily SaaS / Extended
Providers
BILLING_PROVIDER=fake # or stripe | paypal
BILLING_CURRENCY=USD
STRIPE_KEY=
STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=
PAYPAL_CLIENT_ID=
PAYPAL_CLIENT_SECRET=
PAYPAL_WEBHOOK_ID=
PAYPAL_MODE=sandbox
User actions
- View current subscription
- Checkout → provider session
- Cancel at period end
Demo mode
When DEMO_MODE=true, payment execution is blocked (BillingGuard).
Webhooks
Point Stripe/PayPal to /api/webhooks/billing/stripe or .../paypal.