Files
dashcaddy.net/STRIPE_SETUP.md

84 lines
2.7 KiB
Markdown

# Stripe Setup Guide for DashCaddy.net
## 1. Create a Stripe Account
Go to [stripe.com](https://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:
```bash
cp .env.example .env.local
```
Edit `.env.local`:
```env
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:
```bash
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`