Skip to main content
A subscriber starts a meter, watches a live dollar counter tick, cancels whenever they like, and pays only the seconds that elapsed. Your server finds out through a signed webhook, not a cron job.
subscription.canceled
That body arrives at your endpoint when someone cancels. seconds_elapsed and amount_settled are cumulative for the subscription, so one handler call tells you what was used and what was paid.

Why per second

Usage is continuous. Billing never was, because card networks and slow chains made anything finer than a month uneconomic. GPU hours, API calls, live streams and seats are all metered by the second in your own logs and then rounded up to a month on the invoice. Elapse runs on Monad, where blocks land every few hundred milliseconds and fees are near zero. That makes a per-second meter honest: accrual happens continuously on a contract, the counter your subscriber sees is rate × seconds, and settlement is batched so nobody pays gas per tick. Subscribers never see any of that. They see Face ID, dollars and seconds.

Three surfaces

Platform API. Products, Checkout sessions, Subscriptions, Customers, Invoices and Events, with the ids and conventions you already know from Stripe: prod_, cus_, sub_, evt_, bearer secret keys, snake_case JSON, cursor pagination. The API reference is generated from the same schemas the server validates with. @elapse/react. You create a session and render <Authorize> and <Meter> in your own page. Elapse handles sign-in, the permit and the live meter in a window it opens on its own origin, so the subscriber never leaves your app and you never hold a card or a wallet. Webhooks. Six lifecycle events, signed with X-Elapse-Signature, retried on a fixed schedule, verified with one SDK call. There are no per-second events.

Where to start

Quickstart

Install the SDK, create a Product, take a Checkout URL to your phone and receive one webhook. About ten minutes.

Event catalog

Every event, when it fires, and what your server should do with it.

SDKs

The ten methods in @elapse/sdk, with a cURL twin for each, and the React components beside them.

Contracts

Addresses and events for anyone who wants to check the chain.