Files
dashcaddy.net/STRIPE_SETUP.md

66 lines
1.8 KiB
Markdown

# DashCaddy Billing Setup
DashCaddy website no longer processes Stripe webhooks locally.
Current architecture:
- `dashcaddy.net` handles pricing UI and starts checkout by calling the external license server
- `dashcaddy-license-server` owns Stripe secret usage, webhook handling, subscription state, and license generation
- DashCaddy app instances validate/deactivate against the external license server
## Required website environment
```env
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
```env
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:
```text
https://licenses.dashcaddy.net/api/stripe/webhook
```
Recommended events:
- `checkout.session.completed`
- `customer.subscription.created`
- `customer.subscription.updated`
- `customer.subscription.deleted`
- `invoice.payment_failed`
## Website behavior
The website pricing page should start checkout via:
- `POST /api/checkout/session` on 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.