Open source · TypeScript-first

Payments orchestration
for modern SaaS.

One TypeScript API. Any provider. Your database is the source of truth.

import { paykit } from "paykit"
import { stripe } from "@paykit/stripe"
import { prisma } from "@paykit/prisma"

const pk = paykit({
  database: prisma(client),
  providers: [
    stripe({
      secretKey: process.env.STRIPE_SECRET_KEY!,
      webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
    }),
  ],
});

Providers are payment rails.
Your database owns the rest.

No vendor lock-in.

Subscriptions, invoices, and usage live in your DB. Swap providers without rewriting billing logic.

No product catalog syncing.

Pass amounts inline. Your app owns its products — PayKit doesn't need to know about them.

Tiny provider contract.

5 methods. Adding a new provider takes an afternoon.

Everything you need.
Nothing you don't.

await pk.api.createSubscription({
  customerId: "cust_abc",
  amount: 2900,
  interval: "month",
  description: "Pro Plan",
});

Open source. TypeScript-first.
Coming soon.

MIT License · No vendor lock-in · Your data, your database.