Check your Stripe subscription setup.
Paste your Checkout route, webhook handler, or config notes to find missing webhooks, common misconfigurations, and the recommended Next.js subscription flow.
This Stripe webhook checker is a static review tool. It spots common setup gaps, but your live Stripe Dashboard and test webhooks are still the source of truth.
Setup score
0
Paste your setup to start
Stripe checkout integration Next.js
Review for fixed tier subscriptions
Paste a Stripe Checkout route, webhook handler, or config notes to get a subscription setup review.
0
Passed
7
Critical
6
Fixes
Missing webhooks and critical setup
Checkout Session creation
Create Checkout Sessions from a server route, not directly in the browser.
Subscription mode
Set mode: 'subscription' so Stripe creates a Subscription instead of a one-time payment.
Stripe Price IDs
Use Stripe Price IDs or explicit price_data line items for every subscription plan.
Webhook signature verification
Verify webhook signatures with Stripe's raw request body before trusting events.
Handle checkout.session.completed: Creates or links the customer record after Checkout succeeds.
Handle customer.subscription.updated: Keeps plan, status, renewal, trial, and cancellation data in sync.
Handle customer.subscription.deleted: Removes paid access when a subscription ends.
Common misconfigurations
Success and cancel URLs
Provide success_url and cancel_url so Checkout returns customers to the right app state.
App metadata
Add userId, teamId, planId, or tenant metadata so webhooks can update the correct account.
Handle invoice.paid: Confirms successful renewals and reactivates accounts after payment recovery.
Handle invoice.payment_failed: Triggers dunning, grace periods, and failed-payment notices.
Recurring Stripe Prices
Use Stripe Price IDs for each monthly and annual tier instead of hardcoded amounts.
Customer billing portal
Add a billing portal route so customers can change plans, update cards, and cancel.
Recommended flow
- 1Create a protected Next.js API route or server action that creates Checkout Sessions.
- 2Create one Stripe Price per tier and interval, send the selected price to a server route, create Checkout in subscription mode, then sync access from webhooks.
- 3Verify Stripe webhooks with the raw body and STRIPE_WEBHOOK_SECRET.
- 4Store Stripe customer, subscription, price, status, current_period_end, and cancel_at_period_end in your database.
- 5Grant paid access from webhook-confirmed subscription status, not from the success redirect alone.
- 6Add a customer portal route for plan changes, card updates, invoices, and cancellation.