Files
dashcaddy.net/STRIPE_SETUP.md
2026-04-15 20:55:30 -07:00

2.7 KiB

Stripe Setup Guide for DashCaddy.net

1. Create a Stripe Account

Go to stripe.com and create an account (or log in).

2. Create Your Product and Prices

In the Stripe Dashboard:

  1. Go to Products > Add Product
  2. Name: DashCaddy Premium
  3. Description: Premium license for DashCaddy - Self-hosting dashboard
  4. Create two prices:
    • Monthly: $20.00 USD / month (recurring)
    • Yearly: $99.00 USD / year (recurring)
  5. Note down both Price IDs (they look like price_1234...)

3. Get Your API Keys

  1. Go to Developers > API Keys
  2. Copy your Publishable key (pk_test_... or pk_live_...)
  3. Copy your Secret key (sk_test_... or sk_live_...)

4. Set Up Webhooks

  1. Go to Developers > Webhooks
  2. Click Add endpoint
  3. URL: https://dashcaddy.net/api/webhooks/stripe
  4. Select these events:
    • checkout.session.completed
    • customer.subscription.updated
    • customer.subscription.deleted
    • invoice.payment_failed
  5. Copy the Webhook signing secret (whsec_...)

5. Configure Environment Variables

Copy .env.example to .env.local and fill in your values:

cp .env.example .env.local

Edit .env.local:

STRIPE_SECRET_KEY=sk_live_your_actual_secret_key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_your_actual_publishable_key
STRIPE_WEBHOOK_SECRET=whsec_your_actual_webhook_secret
STRIPE_PRICE_MONTHLY=price_your_monthly_price_id
STRIPE_PRICE_YEARLY=price_your_yearly_price_id
NEXT_PUBLIC_APP_URL=https://dashcaddy.net

6. Test with Stripe CLI (Optional)

For local development, use Stripe CLI to forward webhooks:

stripe listen --forward-to localhost:3000/api/webhooks/stripe

Use test card 4242 4242 4242 4242 with any future date and any CVC.

7. License Key Delivery

The webhook handler at src/app/api/webhooks/stripe/route.ts has TODO comments where you need to implement:

  1. Generate license key using the same format as DashCaddy's license-keygen (DC-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX)
  2. Store it in a database (Stripe metadata can also hold it)
  3. Email it to the customer (use Stripe's receipt email or a service like SendGrid/Resend)
  4. Link it to the Stripe subscription ID so you can manage renewals/cancellations

Pricing Strategy Notes

  • Monthly ($20/mo): Positioned as the flexibility option
  • Yearly ($99/yr): ~$8.25/mo — 58% savings, this will be the primary seller
  • 14-day free trial: Enabled on both plans via trial_period_days: 14
  • Promotion codes: Enabled via allow_promotion_codes: true