Ship Kit
Orgs · billing · admin · migration codemods — wired

Production-ready Better Auth. Orgs, billing, admin — shipped in an afternoon, not three weeks.

A Next.js + Better Auth starter for SaaS founders and agencies: multi-tenant organizations, org-level Stripe billing, an admin panel, and NextAuth/Clerk migration codemods — typed, tested, and yours to own.

One-time purchase · lifetime license · 14-day money-back guarantee

Built on better-auth — the auth library the ecosystem is standardizing on.

better-auth npm weekly downloads
4.1M npm downloads / week
better-auth GitHub stars
28.7k GitHub stars
Built withNext.jsTypeScriptDrizzleStripe

See it running

Real screens from the kit — not mockups

Every screenshot below is the actual running product: the dashboard, multi-tenant teams, org-level Stripe billing, and the admin panel. The data is a demo dataset rendered by the real UI.

betterauth.app/dashboard
Ship Kit dashboard showing the signed-in user's account details, the active organization Acme Inc with five members and an owner role, and an unlocked Pro feature card.

Auth + session. The signed-in dashboard: real session data, the active organization, your role, and a plan-gated Pro feature.

Build vs. buy

Building auth yourself is never just the login form

You already chose Better Auth. The question is whether the multi-tenant, billed, admin-ready layer on top is worth three weeks of your time — or worth $179.

The hours

Wiring email/password, OAuth, verification, sessions, organizations, org-level Stripe billing and an admin panel from scratch is two to three weeks before you write a single line of your actual product.

With Ship Kit

Clone, run one setup command, and the four pillars are wired the same afternoon — typed, tested, and yours to read end to end.

The edge cases

The hard part is what you find later: cross-org data isolation, sole-owner guardrails, webhook replay-safety, privilege escalation, the member who replays a request the UI hid. Each one is a quiet way to leak data.

With Ship Kit

Every authorization check runs server-side, billing is org-scoped by a real membership row, webhooks are idempotent, and the abuse paths are covered by tests that try to break in.

The maintenance

Auth is never finished. The library ships releases, a breaking change lands mid-sprint, and keeping the integration current becomes a recurring tax on a part of the app you'd rather not think about.

With Ship Kit

A pinned, version-tested foundation that ships a nightly canary — a GitHub Actions workflow that re-runs the full test suite against the latest Better Auth release — so a breaking change is caught as a red build and an upgrade is a planned step, not a fire.

Every week building auth is a week not building your product.

Skip the three weeks — $179

What's inside

Real code, not a feature list

The snippets below are copied straight from the kit's source — the exact files you get on purchase. Read them: this is the level the whole codebase is written at.

Better Auth, configured for production

Email + password with verification, OAuth, sessions, and the organization, Stripe and admin plugins wired in the right order — not a bare quickstart.

src/lib/auth.ts
ts
export const auth = betterAuth({
  database: drizzleAdapter(db, { provider: "pg", schema }),
  emailAndPassword: { enabled: true, requireEmailVerification: true },
  socialProviders: socialProviders(), // GitHub live, Google one flag away
  plugins: [
    organization({ creatorRole: "owner", invitationExpiresIn: WEEK }),
    stripePlugin({ subscription: { enabled: true, plans } }),
    admin({ adminRoles: ["admin"] }),
    nextCookies(), // must stay last
  ],
});

Multi-tenant orgs with real authorization

Server-side permission checks you call at the top of every mutating action — the actual guard, not a hidden button. Owner / admin / member roles out of the box.

src/lib/authz.ts
ts
export async function requireOrgPermission(
  permissions: OrgPermission,
  options?: { redirectTo?: string },
): Promise<void> {
  const allowed = await hasOrgPermission(permissions);
  if (!allowed) {
    if (options?.redirectTo) redirect(options.redirectTo);
    throw new Error("FORBIDDEN");
  }
}

Org-level Stripe billing

Subscriptions billed per organization, with an authorization gate that allows reads for any member and mutations for owners and admins — proven by a real membership row, not the client.

src/lib/auth.ts
ts
async function authorizeOrgBillingReference({ user, referenceId, action }) {
  const [membership] = await db
    .select({ role: schema.member.role })
    .from(schema.member)
    .where(and(eq(member.userId, user.id), eq(member.organizationId, referenceId)))
    .limit(1);
  if (!membership) return false; // not a member → cross-org billing blocked
  if (READ_ONLY_BILLING_ACTIONS.has(action)) return true; // any member may read
  return BILLING_MANAGER_ROLES.has(membership.role); // mutate: owner/admin only
}

Plan-gating that can't be bypassed

Entitlement is derived from live subscription state and scoped to the active org — no separate "is Pro" flag to drift. Drop one call at the top of any Pro-only action.

src/lib/plan-gate.ts
ts
export async function requireProPlan() {
  const organization = await requireActiveOrganization({ throwOnMissing: true });
  const subscription = await getActiveOrgSubscription(organization.id);
  if (subscription?.plan !== PRO_PLAN) {
    throw new Error(PLAN_REQUIRED); // a Free org can't reach this, even directly
  }
  return { organizationId: organization.id, subscription };
}

Admin panel with a server-side guard

A platform-wide operator panel (users, orgs, metrics, impersonation with an audit log) behind one authoritative guard — decided exactly the way the API decides it, so they never disagree.

src/lib/admin.ts
ts
export async function requireAdmin(): Promise<Session> {
  const session = await getSession();
  if (!session) redirect("/sign-in?redirectTo=/admin");
  if (!isSystemAdmin(session.user)) {
    redirect("/dashboard"); // logged-in non-admin: clean deny, never the panel
  }
  return session;
}

Two-layer route protection

A fast edge cookie check for the common unauthenticated case, then an authoritative server check that a forged or expired cookie cannot pass. The proxy is the optimization; the server is the guard.

src/proxy.ts
ts
// 1) Edge: a cheap, optimistic redirect — no DB on the edge.
export default function proxy(request: NextRequest) {
  if (!getSessionCookie(request)) {
    return NextResponse.redirect(new URL("/sign-in", request.url));
  }
  return NextResponse.next();
}
// 2) Server layout: the authoritative check (lib/session.ts).
export async function requireSession() {
  const session = await getSession();
  if (!session) redirect("/sign-in");
  return session;
}

Migration codemods (NextAuth & Clerk)

Deterministic jscodeshift transforms — not an AI guess — that swap imports and rewrite call sites, and leave greppable TODO markers for the parts only you should decide.

migrate/cli.mjs
bash
# Rewrite a NextAuth or Clerk project toward Better Auth.
# Deterministic, idempotent (running twice == running once), fixture-tested.
node ./migrate/cli.mjs --transform nextauth --dry ./src   # preview the diff
node ./migrate/cli.mjs --transform nextauth ./src         # apply in place
node ./migrate/cli.mjs --transform clerk ./src            # or migrate Clerk

Tested end to end

223 unit tests and a Playwright E2E suite covering the real flows — signup, invites, the subscribe-to-unlock lifecycle, and admin privilege-escalation attempts — so the code you buy is the code that's proven.

package.json
bash
pnpm test:unit      # 223 unit tests (Vitest, incl. the codemod corpus)
pnpm test:codemods  # just the codemod fixtures (equality + idempotency)
pnpm test:e2e       # Playwright: auth, orgs, billing, admin happy + abuse paths
pnpm test:clone     # times a fresh clone → running app (proven under 10 min)

Every claim on this page is verifiable in the repository you receive — including these snippets.

Honest comparison

How Ship Kit compares — including where it doesn't win

The Better-Auth-deep kits are excellent. Here's a straight comparison so you can decide what your two-to-three weeks of work are worth — competitors' advantages included.

Build it yourself

Entry price
Your time
One-time vs. subscription
Built natively on Better Auth
Partialif you wire it
Organizations / multi-tenancy
Not includedweeks of work
Admin panel
Not included
Org-level Stripe billing
Not included
Migration codemods (NextAuth / Clerk)
Not included
Crypto checkout (−5%)
Not included
Framework / DB scope
Your stack
Pre-built page templates & UI blocks
Not included
Established brand & community

Ship Kit

$179 one-time
Entry price
$179
One-time vs. subscription
Includedone-time, lifetime
Built natively on Better Auth
Includedofficial plugins
Organizations / multi-tenancy
Included
Admin panel
Includedusers, orgs, metrics
Org-level Stripe billing
Includedper-org subscriptions
Migration codemods (NextAuth / Clerk)
Includeddeterministic, in-product
Crypto checkout (−5%)
Included
Framework / DB scope
Next.js · Postgres
Pre-built page templates & UI blocks
Partialcore app screens
Established brand & community
Partialnew, independent

Makerkit

from $349 · June 2026
makerkit.dev
Entry price
$349
One-time vs. subscription
Includedone-time
Built natively on Better Auth
Included
Organizations / multi-tenancy
Included
Admin panel
Included
Org-level Stripe billing
Includedteam billing
Migration codemods (NextAuth / Clerk)
Not includeddocs only
Crypto checkout (−5%)
Not included
Framework / DB scope
Next.js (+ more)
Pre-built page templates & UI blocks
Includedlarger library
Established brand & community
Includedyears of customers

supastarter

from €349 · June 2026
supastarter.dev
Entry price
€349
One-time vs. subscription
Includedone-time
Built natively on Better Auth
Included
Organizations / multi-tenancy
Included
Admin panel
Included
Org-level Stripe billing
Includedteam billing
Migration codemods (NextAuth / Clerk)
Not includeddocs only
Crypto checkout (−5%)
Not included
Framework / DB scope
Next.js · Nuxt · others
Pre-built page templates & UI blocks
Includedmarketing + blog + docs
Established brand & community
Includedlarge community

Ship Kit's edge is the configuration — organizations, admin, org-level billing and migration codemods at $179 one-time — not being cheapest in the category. Other Better Auth kits sit at different price points: NEXTY, for example, lists from $188.

Competitor prices verified on each vendor's pricing page in June 2026; check the linked sources for the current figure. Marks reflect each kit's advertised feature set.

Pricing

One price. Pay once. Own it.

No subscription, no seats metered, no upsell wall. Buy the kit, clone the repo, ship — and keep shipping with it on every future project.

Recommended

Solo

For a founder shipping one product.

$179one-time
Get Ship Kit — $179
  • The complete kit — every file, yours to read and edit
  • Use on one product you own
  • Organizations, billing, admin, migration codemods
  • Lifetime access to the private repo
  • Free updates as Better Auth evolves
  • GitHub Discussions support

Agency

For agencies and freelancers building for clients.

$499one-time
Get the Agency license — $499
  • Everything in Solo
  • Unlimited client projects
  • Use it as your standard starting point for every build
  • Repays itself in 2–3 billed hours
  • Lifetime access + free updates
  • Priority on GitHub Discussions
Prefer crypto? Pay with USDT, USDC, BTC or ETH and save 5% — $170.05.14-day money-back guarantee

FAQ

Questions a careful developer asks

The honest answers — what the kit is, what it isn't, and what you actually get.

Who makes this

Built by one developer who got tired of rebuilding auth

I'm an independent developer. Every time I started something on Better Auth I ended up rebuilding the same layer — organizations, billing, an admin panel, the authorization that keeps tenants apart — before I could touch the actual product. It's the boring, security-sensitive work that's easy to get subtly wrong, and I was tired of paying that tax on every new idea.

So I built it once, properly: typed end to end, tested where it matters — cross-org isolation, replay-safe webhooks, privilege escalation — and documented so a fresh clone runs in minutes. Ship Kit is exactly that codebase, sold so you don't have to write it again either.

It's new, and I'm not going to pretend otherwise with fake reviews or counters. What I can offer instead is the code — read the snippets above, that's the real source — and a 14-day guarantee. If it doesn't save you the weeks it promises, ask for your money back.

Ship the auth layer this afternoon

Organizations, billing, admin and migration codemods — production-ready on Better Auth, $179 one-time, yours to keep.

Get Ship Kit — $179

14-day money-back guaranteeOne-time purchase, lifetime licensePay with crypto for 5% off ($170.05)