You only pay what elapsed.
Charge for APIs, GPUs, streams and seats by the second, and get paid out in dollars as it accrues. A Stripe-shaped SDK, a hosted checkout, and signed webhooks: your server hears about it once.
- Subscriber paid
- $0.332
- Merchant receives
- $0.325
- Elapse keeps
- $0.006
example · 83 s at $0.004/s · fee 2 %
- 1 s
- billing granularity
- 6
- lifecycle webhooks, never one per second
- 0
- wallets your customer ever sees
Cancel at 83 seconds. Pay 83 seconds.
Press Cancel on the meter above. The pen lifts, the readout locks, and this event arrives at your server with those exact numbers.
{
"id": "evt_1S2xq7Kd3",
"object": "event",
"type": "subscription.canceled",
"created": 1756800083,
"data": {
"object": {
"id": "sub_1S2xq6Hf9",
"object": "subscription",
"status": "canceled",
"seconds_elapsed": 83,
"amount_settled": "0.33",
"currency": "ausd",
"product": "prod_gpu4090",
"customer": "cus_7Qw2m"
}
}
}Integrate in an afternoon. It is the Stripe you already know.
- 1
Create a product
Name it and give it a rate in dollars per second. That is the whole price list.
products.create({ rateUsdPerSecond: "0.004" }) - 2
Authorise in your app
Create a session, render <Authorize> and <Meter> from @elapse/react. Face ID, a live counter, and Stop, without leaving your page. No chain words.
<Authorize session={session.id} /> - 3
Get the webhook
When they cancel, your server receives subscription.canceled with seconds_elapsed. Revoke access. Book revenue.
subscription.canceled { seconds_elapsed: 83 }
import { Elapse } from "@elapse/sdk";
const elapse = new Elapse({ secretKey: process.env.ELAPSE_SECRET_KEY });
const product = await elapse.products.create({
name: "GPU · 4090",
rateUsdPerSecond: "0.004",
});
const session = await elapse.checkout.sessions.create({
product: product.id,
successUrl: "https://merchant.example/ok",
cancelUrl: "https://merchant.example/cancel",
});
// <Authorize session={session.id} /> in your app → Face ID, then <Meter />
const event = elapse.webhooks.constructEvent(
rawBody, // unparsed bytes
signature, // the X-Elapse-Signature header
process.env.ELAPSE_WEBHOOK_SECRET
);Nobody churns from a meter they can stop.
A monthly plan asks for commitment before the first minute of use, and the 27 unused days are the reason a customer cancels at renewal. Cards and slow settlement made anything finer than a month uneconomic, so the industry rounds up.
With a meter, more people start because nothing is asked up front, and revenue grows with use instead of resetting at renewal. Elapse settles what elapsed; your server hears about it once, by webhook.
Built for anything that runs while someone uses it.
If your cost is a running thing and your price is a month, the gap is your churn. Set one rate per second and the price still reads like a price: Elapse shows the per-minute and per-hour figure beside it.
Illustrative rates- GPU and inference clouds
- Rent accelerators and sell model calls, billed by the hour or by prepaid credits that expire.
- A training run or a chat session pays for exactly the seconds it held the card.
- $0.004 /s≈ $14.40 /h
- Metered APIs
- Charge per request or per token, then reconcile usage into an invoice at month end.
- The meter runs while the connection is open, and the invoice is already settled when it closes.
- $0.0009 /s≈ $3.24 /h
- Live streaming and events
- Sell a ticket for the whole show, and a viewer who leaves after ten minutes paid for two hours.
- A viewer pays for the minutes they watched and can leave without asking for a refund.
- $0.0011 /s≈ $3.96 /h
- SaaS seats
- Bill a seat for a month whether the person logged in on two days or twenty.
- A seat costs nothing on holiday, and a team adds people without a proration email.
- $0.00003 /s≈ $0.10 /h
The money.
Dollars in, dollars out, and every number on this page comes from the same math that settles the meter.
Elapse settles in AUSD on Monad, a dollar stablecoin on a chain with a block every 400 ms, which is what makes a second an honest unit of billing rather than a rounding of a month.
- 1 h
- Paid out as it accrues
- Settled to your payout address every hour a meter runs, and at once when it stops. No balance to withdraw, no payout day.
- 2 %
- Of settled seconds
- Elapse keeps 2 % of what a meter earned, taken inside each settlement. Refunds carry no fee. There is no monthly platform charge.
- $0
- Left on the table
- Unused funds go back to the subscriber the moment they stop. Nobody emails support for a refund, and nobody is paying for a month they left.
- 0
- No chargebacks
- Every meter is prefunded before it starts, so a subscriber can only spend what they put in, and a bank can never pull it back out.
Six events. Never one per second.
The meter accrues continuously and ticks in the dashboard. Your server is notified on lifecycle only: signed with an HMAC you can verify in one line, retried up to eight times, deduplicated by event id.
| Type | When | Your action |
|---|---|---|
| checkout.session.completed | Subscriber finished Face ID checkout | Provision access |
| subscription.created | Meter started | Mark entitled |
| subscription.updated | Subscriber paused or resumed | Sync entitlement |
| subscription.canceled | Cancel; elapsed seconds settled | Revoke access immediately |
| invoice.settled | Accrued funds settled to you | Book revenue |
| invoice.payment_failed | Subscriber's funds ran out | Pause product access |
- checkout.session.completedSubscriber finished Face ID checkoutActionProvision access
- subscription.createdMeter startedActionMark entitled
- subscription.updatedSubscriber paused or resumedActionSync entitlement
- subscription.canceledCancel; elapsed seconds settledActionRevoke access immediately
- invoice.settledAccrued funds settled to youActionBook revenue
- invoice.payment_failedSubscriber's funds ran outActionPause product access
Need a live number? Poll GET /v1/subscriptions/:id and compute it locally from rate and started_at, exactly as the dashboard does.
Stripe’s shape. A stopwatch’s granularity.
Merchants learn nothing new. The only novelty is that the meter is honest.
- TypeScript SDK
- Products, checkout sessions, subscriptions, customers, invoices. Secret key server-side only.
- Hosted checkout
- Face ID sign-in, live counter, Cancel. Redirects to your success URL with a session id.
- Signed webhooks
- X-Elapse-Signature with a timestamp and HMAC. Retried, deduplicated, replayable from the dashboard.
- Test and live mode
- Separate keys, separate data. Break things in test; nothing moves until you flip live.
- Dashboard
- Keys, products, running meters, delivery log with resend, payout address. Nothing you need SQL for.