convex-billing

Add Stripe billing/payments to the Convex app via @convex-dev/stripe (checkout + webhook + gating).

By get-convex · 20,425 installs

npx skills add get-convex/agent-skills --skill convex-billing

Source repository · Upstream listing

<! GENERATED from convex agents content/capabilities/billing.json — do not edit by hand. Add billing / payments Wire Stripe to Convex using @convex dev/stripe: a checkout action, an httpAction webhook registered by the component (signature verified automatically), subscription state stored in the component's tables, and server side gating via a query. Workflow 1. Install the component: npm install @convex dev/stripe . 2. Create convex/convex.config.ts : 3. Store Stripe keys in Convex env (use the env micro power): STRIPE SECRET KEY (sk test … / sk live …) and STRIPE WEBHOOK SECRET (whsec …). 4. Create convex/http.ts to register the webhook route (the component handles signature verification automatically): 5. Create convex/billing.ts with a checkout action and a subscription gate query: 6. Run npx convex dev once — it will install the component and push the functions. Verify output shows ✔ Installed component stripe. 7. In Stripe Dashboard → Webhooks: add endpoint https://<deployment .convex.site/stripe/webhook , subscribe to checkout.session.completed , customer.subscription. , invoice. , payment intent. . Copy the signing secret as STRIPE WEBHOOK SECRET . Rules Use @convex dev/stripe (npm: @convex dev/stripe@^0.1.4) — it handles webhook signature verification internally via registerRoutes; do NOT write a manual constructEvent webhook. Stripe keys live in Convex env (use the env micro power): STRIPE SECRET KEY and STRIPE WEBHOOK SECRET. Gate on server stored subscription state via isSubscribed query (reads component tables), not client claims. convex/convex.config.ts must import from '@convex dev/stripe/convex.config.js' (not .ts) — the .js extension is required by the Convex bundler.