CodeFramework Setups
Next.js
Use PayKit with the Next.js App Router and a provider-aware webhook route.
Next.js is a strong fit for the MVP because the server SDK and webhook handler map cleanly onto App Router route handlers.
Server setup
import { createPayKit } from "paykitjs";
import { paykitHandler } from "paykitjs/handlers/next";
import { stripe } from "paykitjs/providers/stripe";
import { postgresStorage } from "paykitjs/storage/postgres";
export const paykit = createPayKit({
storage: postgresStorage({
connectionString: process.env.DATABASE_URL!,
}),
providers: [
stripe({
secretKey: process.env.STRIPE_SECRET_KEY!,
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
}),
],
});
export const handler = paykitHandler(paykit);Webhook route
import { handler } from "@/lib/paykit";
export const { GET, POST } = handler;Server action example
"use server";
import { paykit } from "@/lib/paykit";
export async function createCheckout(referenceId: string) {
const customer = await paykit.customer.sync({ referenceId });
return paykit.checkout.create({
providerId: "stripe",
customerId: customer.id,
amount: 2900,
description: "Starter plan",
successURL: "https://app.example.com/billing/success",
});
}