1.8 KiB
1.8 KiB
DashCaddy Billing Setup
DashCaddy website no longer processes Stripe webhooks locally.
Current architecture:
dashcaddy.nethandles pricing UI and starts checkout by calling the external license serverdashcaddy-license-serverowns Stripe secret usage, webhook handling, subscription state, and license generation- DashCaddy app instances validate/deactivate against the external license server
Required website environment
NEXT_PUBLIC_APP_URL=https://dashcaddy.net
NEXT_PUBLIC_LICENSE_SERVER_URL=https://licenses.dashcaddy.net
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_your_publishable_key_here
Required license server environment
PORT=3010
APP_BASE_URL=https://licenses.dashcaddy.net
DASHCADDY_WEBSITE_URL=https://dashcaddy.net
STRIPE_SECRET_KEY=sk_live_...
STRIPE_PUBLISHABLE_KEY=pk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
Stripe product model
One Premium tier, four subscription cadences:
- 1 month — $25
- 3 months — $50
- 6 months — $65
- 12 months — $99
No free trial.
7-day grace period.
Cancel at period end.
One active machine at a time.
Premium features only: sso, recipes, swarm.
Stripe webhook target
Configure Stripe to send events to the license server, not the website.
Recommended webhook endpoint:
https://licenses.dashcaddy.net/api/stripe/webhook
Recommended events:
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_failed
Website behavior
The website pricing page should start checkout via:
POST /api/checkout/sessionon the external license server
The website-local routes under src/app/api/checkout and src/app/api/webhooks/stripe are intentionally disabled compatibility stubs and should not be used for production billing.