Own your billing.
Use any provider.
A billing engine that runs inside your application.
No lock-in. No revenue share. Pure logic.
pnpm add billsdknpm i billsdkbun add billsdkconst billing = billsdk({ features: [ { code: "api_access", name: "API Access" }, { code: "priority_support", name: "Priority Support" }, ], plans: [{ code: "pro", prices: [{ amount: 2000, interval: "monthly" }], features: [ "api_access", "priority_support" ] }]});const { allowed } = await billing.checkFeature({ customerId: "cus_123", feature: "api_access"});if (allowed) { // Grant access to the feature}Zero Lock-In
Switch payment providers without rewriting billing logic. Stripe, Paddle, MercadoPago—your choice.
In-Process
No external API calls. Everything runs inside your app. Milliseconds, not seconds.
Type-Safe
Plans in code. Version controlled. Full TypeScript inference. No database sync.
Subscriptions. Feature gating. Trials. Webhooks. Usage tracking.
Payment providers move money. BillSDK handles everything else.
MIT Licensed · Open Source