One billing SDK.
Every provider.
A unified TypeScript API for Stripe, Polar, Lemon Squeezy, Paddle, and Creem โ checkout, subscriptions, entitlements, usage metering, and webhooks.
Features
Designed for billing.
Built for TypeScript.
Every adapter implements the same interface. Learn once, deploy anywhere.
Provider-agnostic API
Swap Stripe for Polar or Lemon Squeezy by changing one import. Same interface for checkout, subscriptions, and webhooks.
Declarative plans
Define prices, features, and limits in one place. Type-safe plan IDs and feature keys with full autocomplete.
Entitlement checks
Check if a customer can access a feature in one line. Boolean flags or monthly-limit meters with remaining count.
Usage metering
Track and enforce per-customer usage. Works with Stripe meter events or local storage โ same interface either way.
Normalized webhooks
Every provider emits the same event shapes. Built-in signature verification so you never miss a subscription event.
Test adapter
Deterministic billing in tests with zero API calls. Assert checkout URLs, inspect created subscriptions, mock webhooks.
Code
One interface.
Every provider.
Define your plans once. The same code works with Stripe, Polar, Lemon Squeezy, and more.
Adapters
Provider adapters
Stripe
billingsdk-stripeCheckout, subscriptions, portal, usage metering, webhooks
Polar
billingsdk-polarCheckout, subscriptions, merchant of record, Svix webhooks
Lemon Squeezy
billingsdk-lemonsqueezyCheckout, subscriptions, pause/resume, merchant of record
Paddle
billingsdk-paddleCheckout, subscriptions, portal, merchant of record
Creem
billingsdk-creemCheckout, subscriptions, merchant of record
Test
billingsdk-testDeterministic billing in tests with zero API calls