Billing is fully implemented but dormant: with no Stripe env vars set, billingEnabled() is false, the app runs unlocked with password-only accounts, and all billing UI (nav item, trial banner, signup/landing trial copy) is hidden. See commit 69c18f1.
Why it's pinned
Ryan couldn't get access to the Stripe account when we tried to authorize the Stripe MCP plugin (June 11, 2026). Everything code-side is done and merged — this is purely account/config work.
To re-enable
- Stripe account access — resolve login issues (this was the blocker).
- Create the product/price — "EzEval", recurring $5.00 USD/month → copy the price ID. (The Stripe MCP plugin can do this once authorized.)
- Webhook endpoint —
https://ezeval.app/api/stripe/webhook, events: checkout.session.completed, customer.subscription.created, customer.subscription.updated, customer.subscription.deleted → copy the signing secret.
- Set env vars (locally in
.env and in the Vercel project):
STRIPE_SECRET_KEY
STRIPE_PRICE_ID
STRIPE_WEBHOOK_SECRET
- Revisit early-access copy — landing page and signup currently say "free during early access · $5/month at launch"; restore trial/subscribe wording when billing goes live (
src/routes/+page.svelte, src/routes/signup/+page.svelte).
- Decide grandfathering — businesses created during early access have a
trialEndsAt 14 days after signup, which will likely be in the past when billing turns on; they'll be locked to the billing page on their next visit. Either extend trial_ends_at for existing rows or let them subscribe immediately.
- Test the flow — checkout with test cards (4242 4242 4242 4242), webhook delivery, past-due banner, lock/unlock gating.
Setting the three env vars is the only switch — no code changes needed to turn billing back on.
Billing is fully implemented but dormant: with no Stripe env vars set,
billingEnabled()is false, the app runs unlocked with password-only accounts, and all billing UI (nav item, trial banner, signup/landing trial copy) is hidden. See commit 69c18f1.Why it's pinned
Ryan couldn't get access to the Stripe account when we tried to authorize the Stripe MCP plugin (June 11, 2026). Everything code-side is done and merged — this is purely account/config work.
To re-enable
https://ezeval.app/api/stripe/webhook, events:checkout.session.completed,customer.subscription.created,customer.subscription.updated,customer.subscription.deleted→ copy the signing secret..envand in the Vercel project):STRIPE_SECRET_KEYSTRIPE_PRICE_IDSTRIPE_WEBHOOK_SECRETsrc/routes/+page.svelte,src/routes/signup/+page.svelte).trialEndsAt14 days after signup, which will likely be in the past when billing turns on; they'll be locked to the billing page on their next visit. Either extendtrial_ends_atfor existing rows or let them subscribe immediately.Setting the three env vars is the only switch — no code changes needed to turn billing back on.