Ingest events. Aggregate them into meters. Bill on the result.
The model is built on three primitives that compose. It starts with events, immutable records of something that happened in your product, posted with a customer ID and any metadata you want to keep.
On top of those events sit meters, which filter and aggregate the stream into a number per customer. Pick how the number is calculated (count, sum, average, min, max, or unique) and the rest is bookkeeping.
A meter only matters once it's priced, which is what metered prices are for. Attach one to a product and Polar reads the meter at the end of each cycle, then adds the corresponding line item to the next invoice.
The whole pipeline reuses the rest of the system. Renewals, proration, tax, and discounts behave the same way they do for fixed-price products, so usage billing slots in next to whatever you're already selling.
Post events from your application or use SDK strategies for LLMs, streams, and S3.
Per-customer meters that update in real time as events arrive.
Attach a meter to a product. Polar bills the consumed amount on the next invoice.
A single API call returns every active meter and current balance.
The same event stream can power multiple meters. Change pricing without re-instrumenting your application.
The Polar SDK ships helpers for the most common event sources. Wrap a model client, an S3 bucket, or any HTTP body and the events flow.
Every metered customer carries a live customer meter that updates as events arrive, readable from the API or shown directly in the Customer Portal. Your dashboards and your customers' in-app views can read from the same source without you keeping a parallel ledger.
One thing Polar deliberately does not do is block usage when a customer crosses a quota. That decision belongs in your product, where you know the context. The meter exposes the signal, and you choose what to do with it: enforce a hard limit, prompt for an upgrade, or let the overage flow through to the next invoice.
Set up a meter and ingest your first event with the SDK.