Overview
The Next.js minimal boilerplate provides a ready-to-use starting point for integrating Dodo Payments with your Next.js application. This template includes checkout sessions, webhook handling, customer portal, and modern UI components to help you start accepting payments quickly.This boilerplate uses Next.js 16 App Router with TypeScript, Tailwind CSS 4, and the
@dodopayments/nextjs adapter.Features
- Quick Setup - Get started in under 5 minutes
- Payment Integration - Pre-configured checkout flow using
@dodopayments/nextjs - Modern UI - Clean, dark-themed pricing page with Tailwind CSS
- Webhook Handler - Ready-to-use webhook endpoint for payment events
- Customer Portal - One-click subscription management
- TypeScript - Fully typed with minimal, focused types
- Pre-filled Checkout - Demonstrates passing customer data to improve UX
Prerequisites
Before you begin, make sure you have:- Node.js 20.9+ (required for Next.js 16)
- Dodo Payments account (to access API and Webhook Keys from dashboard)
Quick Start
1
Clone the Repository
2
Install Dependencies
3
Get API Credentials
Sign up at Dodo Payments and get your credentials from the dashboard:
- API Key: Dashboard → Developer → API Keys
- Webhook Key: Dashboard → Developer → Webhooks
4
Configure Environment Variables
Create a Update the values with your Dodo Payments credentials:
.env file in the root directory:5
Add Your Products
Update
src/lib/products.ts with your actual product IDs from Dodo Payments:6
Run the Development Server
Project Structure
Customization
Update Product Information
Editsrc/lib/products.ts to modify:
- Product IDs (from your Dodo dashboard)
- Pricing
- Features
- Descriptions
Pre-fill Customer Data
Insrc/app/components/ProductCard.tsx, replace the hardcoded values with your actual user data:
Update Customer Portal
Insrc/app/components/Header.tsx, replace the hardcoded customer ID:
Webhook Events
The boilerplate demonstrates handling two webhook events insrc/app/api/webhook/route.ts:
onSubscriptionActive- Triggered when a subscription becomes activeonPaymentSucceeded- Triggered when a payment is successful
Deployment
Build for Production
Deploy to Vercel
Update Webhook URL
After deploying, update your webhook URL in the Dodo Payments Dashboard:Troubleshooting
Module not found or build errors
Module not found or build errors
Delete
node_modules and reinstall dependencies:Checkout redirect fails
Checkout redirect fails
Common causes:
- Invalid product ID - verify it exists in your Dodo dashboard
- Wrong API key or environment setting in
.env - Check browser console and terminal for errors
Webhooks not receiving events
Webhooks not receiving events
For local testing, use ngrok to expose your server:Update the webhook URL in your Dodo dashboard to the ngrok URL. Remember to update your .env file with the correct webhook verification key.
Customer portal link doesn't work
Customer portal link doesn't work
Replace the hardcoded
CUSTOMER_ID in src/app/components/Header.tsx with an actual customer ID from your Dodo dashboard.Or integrate your authentication system and database to fetch the customer ID dynamically.Learn More
Support
Need help with the boilerplate?- Join our Discord community for questions and discussions
- Check the GitHub repository for issues and updates
- Contact our support team for assistance