Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A NextJS-Typescript-Stripe-ChakraUI subscription application starter template.

Free Bootstrap 4 design system with over 100 components, pre-built pages, and a full UI kit for faster web projects.
Next.js Subscription Payments Starter is a boilerplate for selling subscriptions on the web, pairing a Next.js and TypeScript frontend with Supabase for authentication and PostgreSQL and Stripe for billing. Built by Vercel, the starter is a ready-to-run SaaS scaffold that handles user sign-ins, plan selection, recurring charges, and subscription management, and it can be deployed to Vercel in one click with a Supabase integration.
Vercel's Next.js Subscription Payments Starter is a production-oriented template for subscription-based applications. It combines Next.js, TypeScript, Supabase (auth plus PostgreSQL database), and Stripe (Checkout, customer portal, and webhooks) to give developers a working billing system out of the box. As input it takes your Stripe product configuration and user sign-ups; as output it delivers a fully functional SaaS site with authenticated users, synced pricing plans, and recurring payments. The project includes a live demo at https://subscription-payments.vercel.app/ and an architecture diagram that shows how the client, Supabase, and Stripe webhooks interact.
supabase gen types typescript).fixtures/stripe-fixtures.json file bootstraps test data via the Stripe CLI.vercel env pull.stripe listen --forward-to=localhost:3000/api/webhooks, and send test events like product.created to verify the integration end-to-end.Users authenticate via Supabase Auth and are stored in a Supabase PostgreSQL database. Product and pricing definitions live in Stripe; on change, Stripe sends webhooks to the Vercel serverless function at /api/webhooks, which syncs the data into Supabase. When a customer subscribes, Stripe Checkout handles payment, and the customer portal provides ongoing subscription management. The Vercel deployment flow sets up the Supabase integration, while Stripe requires manually adding a webhook endpoint that points to https://your-deployment-url.vercel.app/api/webhooks and setting environment variables for the publishable key, secret key, and webhook secret.
The template is open source and available on GitHub, so there is no license cost. Running it requires hosting on Vercel and a Supabase project (both have free tiers), and Stripe's test mode is free for development; live payments incur Stripe's standard processing fees.
Yes. You configure the OAuth provider in Supabase Auth, then add the provider to the provider array on the sign-in page (pages/signin.tsx). The docs linked from the readme walk through each step.
Stripe Checkout supports plans that bill a predefined amount at a specific interval (e.g., 10 USD per month). More complex models like per-seat or tiered pricing are not supported by Checkout and are not included in the starter, so you would need to build a custom solution.
Archive all test-mode Stripe products, create live products, and replace the test environment variables with production keys and a live webhook secret. The readme recommends verifying that the Stripe test card is rejected afterward, then redeploying.
The readme notes that the initial build will fail because the Stripe environment variables are not set yet. Complete the Stripe webhook and environment variable configuration, then redeploy from the Vercel dashboard — the build will succeed once the variables are present.
