Files
dashcaddy.net/STRIPE_SETUP.md

1.8 KiB

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

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.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.