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.
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 MOTIONOne flow.
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
ProcessedProcessed 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