66 lines
1.8 KiB
Markdown
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.
|