Provider-agnostic billing infrastructure for Node.js

One billing engine.
Built for Node.js.

Build checkout, subscriptions, invoices, and recovery flows without coupling your Node.js application to one provider or framework.

payable.config.ts
01import { createPayable } from '@akira-io/payable'
02
03export const payable = createPayable({
04  provider: stripe({ apiKey }),
05  storage: knexStorage({ db }),
06  queue: bullmqQueue({ redis }),
07}
08
09// One stable billing domain for Node.js.

The infrastructure will change. Your billing model should not.

ENGINE IN MOTION

One flow.
End to end.

01Configure
02Checkout
03Process
04Reconcile
Payable executionEngine active
01const checkout = await payable.checkout.create({
02  customerId: 'cus_4f2a',
03  items: [
04    { priceId: 'price_pro', quantity: 1 },
05  ],
06  successUrl: '/billing/confirmed',
07})
01Your appCheckout request
02PayableDomain action
03ProviderPayment session
checkout.completedSignature verified · Event deduplicated
Processed
subscription.activatedState transition validated
Processed
invoice.paidCustomer balance updated
Processed
Processed events48,291
Duplicate effects0
Reconciliation throughput

Node.js billing.
Under your control.

Use the framework, provider, storage, and queue your product needs. Payable keeps the billing domain coherent.

Start building