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.