# Paid AI V2 Launch Checklist

- [ ] Choose final brand/domain or subdomain.
- [ ] Deploy as a separate Node 22+ application.
- [ ] Set `OPENAI_API_KEY` server-side.
- [ ] Create a separate Paddle **AI Birthday Card** product and one-time price.
- [ ] Copy its `pri_...` price ID.
- [ ] Create the Paddle client-side token.
- [ ] Create Paddle webhook destination: `https://YOUR-DOMAIN/api/webhooks/paddle`.
- [ ] Subscribe at minimum to `transaction.completed`.
- [ ] Copy that destination's webhook secret.
- [ ] Start with `PADDLE_ENV=sandbox` and `REQUIRE_PAYMENT=1`.
- [ ] Confirm `/api/health` says `aiEnabled: true` and `paymentEnabled: true`.
- [ ] Complete one Paddle Sandbox checkout.
- [ ] Confirm the browser receives exactly one AI card credit.
- [ ] Replay the same webhook / use Paddle retry simulation and confirm credits do not duplicate.
- [ ] Generate one AI background and confirm credit decreases by one.
- [ ] Force/test a failed generation in staging and confirm the credit is restored.
- [ ] Verify ready-made cards, local photo mode and PNG export still work.
- [ ] Set a conservative `DAILY_IMAGE_LIMIT`.
- [ ] Add hourly `npm run cleanup` cron.
- [ ] Back up `storage/payments.json` and app configuration.
- [ ] Add final Privacy, Terms and Refund wording before real payments.
- [ ] Get Paddle live website/domain approval.
- [ ] Switch to live Paddle client token, live price, live webhook secret and `PADDLE_ENV=live`.
- [ ] Make one small real live purchase and verify the full flow before public promotion.
- [ ] Save a known-good ZIP and checksum for rollback.
