84 lines
2.7 KiB
Markdown
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`
|