Next.js 16 starter · payments via Creem

Take payments this weekend.

Auth, checkout, webhooks, billing and i18n, already wired. For devs Stripe won’t onboard.

Everything between “Buy” and “Access granted”.

The payment flow, done

Signed, idempotent, typed.

CheckoutCreem
Webhookverified
DatabaseDrizzle
AccessgetBillingState()
checkout action/api/webhooks/creemPostgresgated pages

Better Auth

Email, password, GitHub

Verify emailResetGitHub

Plan gating

One call, anywhere

await getBillingState(id)

Test mode

Fake cards, real webhooks

CREEM_TEST_MODE=true

Stack

Next.js 16React 19TypeScriptBetter AuthDrizzlePostgresTailwind 4Resendi18n en/es

Tested

115 unit tests + 33-check E2E smoke

$ npm test

Real screens, out of the box.

PayReady dashboard showing an active Pro plan and a Manage billing button
Dashboard · plan status
PayReady pricing page for a signed-in user
Pricing · current plan
PayReady Markdown blog post page
Blog · Markdown + SEO

// api/webhooks/creem/route.ts

Code you can read in a minute.

Simplified from the real file. No wrappers.

export async function POST(req: Request) {
  const raw = await req.text(); // raw body for the HMAC check
  const event = parseWebhook(raw, req.headers.get(CREEM_SIGNATURE_HEADER), secret);

  // Creem retries, so the same event can arrive twice
  if (!(await markEventProcessed(event.id, event.eventType)))
    return NextResponse.json({ duplicate: true });

  const result = await applyBillingChange(toBillingChange(event));
  return NextResponse.json({ received: true, result });
}

One price. Unlimited projects.

$49launch price

$49 launch price · regular $99

  • Full source code
  • 6 docs pages + tests
  • Email support from the author
  • 14-day refund
Join the waitlist

Launching after payment review. One email when checkout opens.

// license

  • Personal and commercial use
  • Client projects are fine

Don’t resell the starter itself. Full terms

Just need one-time checkout? Try the free, MIT-licensed PayReady Lite on GitHub.

FAQ

Why Creem?

Stripe doesn’t onboard sellers in many countries. Creem pays out to more of them and handles sales tax as merchant of record.

How fast is setup?

About 30 minutes locally. Fill in .env, run the migration, then npm run dev.

What do I get?

Full source, six docs pages, tests, and English + Spanish built in.

Refunds?

Full refund within 14 days. Policy