Free MIT core · Aurora Meter Pro from $99/mo per app

Aurora Meter

Laravel Cashier + OpenMeter, for Phoenix. Real-time usage metering, plan entitlements, and Stripe billing. Count, gate, and bill on the BEAM: an ETS hot path that flushes to Postgres and adds up across every node in your cluster.

lib/my_app/reports.ex
# count usage: an ETS increment, flushed to Postgres
AuroraMeter.track(org, :ai_generations)

# gate + run + meter, atomically
AuroraMeter.with_quota(org, :ai_generations, fn ->
  generate_report()
end)
~5.5M increments/secPersisted to PostgresCluster-wide countersStripe-ready

Three jobs, one library

Every SaaS meters, gates, and bills. On Phoenix you hand-roll all of it.

Meter

Increments hit a lock-free ETS counter: microseconds, no database on the hot path. A flusher persists the totals to Postgres on an interval and every node adds its own deltas, so the stored row is the cluster total; a broadcaster fans live values over PubSub.

Entitle

Declare plans in a small compile-time DSL, then gate features by plan. `with_quota/4` reserves atomically, so hard limits stay correct under concurrency.

Bill

The free core ships a billing seam; Aurora Meter Pro closes the loop: Stripe checkout, webhook sync, and metered usage reported to Stripe Billing Meters.

Part 1 · The free core, MIT

Everything you need to count and gate. Free, forever.

The MIT core is the whole metering and entitlements engine: real-time counters on an ETS hot path (~5.5M increments/sec) that flush to Postgres and sum across nodes, the plan DSL and an atomic quota gate, drop-in LiveView usage components, daily history and telemetry. No email gate, no trial, no expiry.

Real-time counters

ETS update_counter at ~5.5M/sec; a flusher writes the totals to Postgres every few seconds, so the hot path never waits on your database.

Plan DSL + with_quota

Hard caps, metered overage and feature flags, gated atomically.

LiveView components

Drop-in usage meters that read the live counters over PubSub.

Postgres, clustered

Every node meters locally and flushes deltas, so the Postgres row is the cluster total. Daily history and telemetry included.

$ {:aurora_meter, "~> 0.3"}

The showcase

Live usage, rendered where your team already looks.

Aurora Meter ships LiveView components that read the live ETS counters and update over PubSub. Drop them into an admin dashboard and every plan's usage is visible in real time. This is a mock of that surface.

Usage this period

Scale plan · resets in 12 days

Live
AI generations 7,420 / 10,000
API calls 128,900 / 250,000
Seats 18 / 25
Exports 47 / 50

Get started

Installed in one command. Metering in two calls.

With Igniter in your deps the installer writes the config, adds Aurora Meter to your supervision tree after the repo and PubSub, creates a starter plans module and generates the migration. Without it, the task prints the steps.

terminal
# mix.exs: {:aurora_meter, "~> 0.3"}, 
{:igniter, "~> 0.5", only: [:dev]}
$ mix deps.get $ mix igniter.install aurora_meter $ mix ecto.migrate
lib/my_app/reports.ex
# count usage
AuroraMeter.track(org, :ai_calls)

# gate + run + meter in one atomic step
AuroraMeter.with_quota(org, :ai_calls, fn ->
  generate_report()
end)

Go deeper

The metering guides behind the library.

Long-form, code-first walkthroughs of everything Aurora Meter does, from the ETS hot path to invoicing overage through Stripe. Read them in order or jump to the one you are stuck on.

Start here

Usage-Based Billing in Elixir and Phoenix: A Complete Guide

A complete guide to usage-based billing in Elixir and Phoenix: metering events on the ETS hot path, reporting usage to Stripe, and enforcing plan quotas.

Read the guide

How the hot path works

Phoenix Usage Metering in Real Time with ETS

Build real-time Phoenix usage metering with ETS: count API calls on an in-memory hot path, enforce plan quotas, and flush to Postgres for billing.

Read the guide

Gating by plan

Plan-Based Feature Gating and Entitlements in Phoenix

Phoenix feature gating done right: model plan entitlements as data, enforce in contexts and LiveView, cache with ETS, and handle overrides.

Read the guide

Getting paid for overage

Stripe Metered Billing in Elixir: Report Usage to Stripe Billing Meters

Stripe metered billing in Elixir: create Billing Meters, report usage idempotently from Oban, scale with the meter event stream, and reconcile the totals.

Read the guide

Versus a hosted meter

OpenMeter Alternative for Elixir: Metering Usage on the BEAM

Need an OpenMeter alternative for Elixir? An honest comparison of both options, plus a BEAM-native metering pipeline built with ETS, Oban, Postgres and Stripe.

Read the guide

Coming from Laravel

Laravel Cashier for Phoenix: Stripe Subscriptions and Usage Billing in Elixir

Laravel Cashier for Phoenix: build Stripe subscriptions, webhooks, trials, plan gating and usage billing in Elixir, with real code and an honest comparison.

Read the guide

Part 2 · Aurora Meter Pro

From live counters to invoices, in one place.

The free core counts and gates. Pro is the revenue and operations layer on top: a hosted real-time dashboard, Stripe billing sync, metered-usage reporting, historical rollups with CSV export, quota alerts, and reconciliation. Here is what ships.

app.yoursaas.com/admin/usage

Usage & billing

Scale plan · billing period Jul 1 to Jul 31

Last 6 months ▾ Export CSV

Active subscriptions

128

▲ +6

MRR

$19,072

▲ +11%

Metered revenue

$4,210

▲ +23%

Events reported

1.24M

this period

Metered usage by month

AI generations (thousands)

Feb Mar Apr May Jun Jul

Included allowances

AI generations 7,420 / 10,000
API calls 128,900 / 250,000
Seats 18 / 25
Exports 47 / 50

Live meter events

streaming
Time Customer Feature Qty Stripe
12:04:31 Acme Corp ai_generations 3 reported ✓
12:04:29 Globex api_calls 128 reported ✓
12:04:27 Initech exports 1 reported ✓
12:04:24 Umbrella ai_generations 7 reported ✓
12:04:21 Hooli api_calls 64 reported ✓

Stripe billing sync

Checkout and a self-contained webhook verifier keep subscriptions in lockstep. Metered overage lands on the invoice automatically.

Invoice · Acme Corp Paid
Scale plan$149.00
AI generations overage (2,400)$24.00
API callsincluded
Total$173.00

Quota alerts

Threshold alerts fire once (deduplicated), so you can email the customer, throttle, or prompt an upgrade before they hit the wall.

Acme Corp at 90% of AI generations

9,000 / 10,000 this period

Globex exceeded the API calls hard cap

250,000 / 250,000, new calls blocked

Initech reached 75% of exports

38 / 50 this period

Historical rollups & export

Month and day rollups persist for reporting, with one-click CSV export for finance.

Jul 2026 120,000 units
Jun 2026 94,000 units
May 2026 78,000 units
Apr 2026 61,000 units
Download usage.csv

Reconciliation

A background pass compares local counters against the provider and repairs any drift, so your invoices never quietly diverge from reality.

Reconciled, 0 drift

Last run 2 minutes ago · 128 subscriptions · 1.24M events checked

Pricing

Start free. Upgrade when Stripe is charging.

One feature set, licensed per application. Every Pro plan starts with a 14-day free trial.

Aurora Meter Free · MIT
$0 forever · count, gate and bill
Aurora Meter Pro per app
$99/mo or $990/yr per app
Aurora Meter Pro Unlimited any number of apps
$2490/yr · pays for itself at 3 apps
Choose your plan

14-day refund on your first invoice, no questions asked · cancel anytime · Licence terms · Terms