Skip to content

Latest commit

 

History

History
94 lines (69 loc) · 3.34 KB

File metadata and controls

94 lines (69 loc) · 3.34 KB

PayKit

The billing framework for TypeScript

Define products in code. Any provider. Gate features. Track usage.

Website · Docs · Discord · Twitter

npm version License npm downloads


What is PayKit?

PayKit is an embedded billing framework for TypeScript apps. It sits inside your app, uses your database, and gives you a single API to manage plans, subscriptions, entitlements, and usage billing without touching provider dashboards.

import { stripe } from "@paykitjs/stripe";
import { createPayKit, feature, plan } from "paykitjs";

const messages = feature({ id: "messages", type: "metered" });

const free = plan({
  id: "free",
  group: "base",
  default: true,
  includes: [messages({ limit: 100, reset: "month" })],
});

const pro = plan({
  id: "pro",
  group: "base",
  price: { amount: 19, interval: "month" },
  includes: [messages({ limit: 2_000, reset: "month" })],
});

export const paykit = createPayKit({
  provider: stripe({
    secretKey: process.env.STRIPE_SECRET_KEY!,
    webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
  }),
  database: process.env.DATABASE_URL!,
  plans: [free, pro],
});

Getting started

npx paykitjs init

Or follow the installation guide.

Why PayKit

Billing in the TypeScript ecosystem is either handled through low-level provider SDKs that require a lot of glue code, or through hosted platforms that own your billing data and sit between you and your customers. PayKit takes a different approach: it's an open-source framework that runs inside your app, keeps billing state in your own database, and handles the Stripe lifecycle so you don't have to.

Contribution

PayKit is a free and open source project licensed under the MIT License. You are free to do whatever you want with it.

You can help continue its development by:

Security

If you discover a security vulnerability within PayKit, please send an email to security@paykit.sh.

All reports will be promptly addressed, and you'll be credited accordingly.