Free MIT core · Aurora Meter Pro from $149/mo

Aurora Meter

Laravel Cashier + OpenMeter, for Phoenix. Real-time usage metering, plan entitlements, and Stripe billing. Count, gate, and bill on the BEAM, with an ETS hot path that never touches your database on the write path.

lib/my_app/reports.ex
# count usage: microseconds, no DB on the hot path
AuroraMeter.track(org, :ai_generations)

# gate + run + meter, atomically
AuroraMeter.with_quota(org, :ai_generations, fn ->
  generate_report()
end)
~8M increments/sec 0 DB writes on the hot path 65 library tests Stripe-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 snapshots on an interval; 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 (~8M increments/sec), the plan DSL and an atomic quota gate, drop-in LiveView usage components, Postgres persistence, and telemetry. No email gate, no trial, no expiry.

Real-time counters

ETS update_counter, ~8M/sec, nothing on your database write path.

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 + telemetry

Durable snapshots and telemetry events, ready for your stack.

$ {:aurora_meter, "~> 0.1"}

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

The guide

From mix.exs to billed in four steps.

The free core does count, gate, and bill. Add Aurora Meter Pro when you want Stripe to charge for it.

01

Add the dependency

Pull in the free MIT core from Hex. Pro is a drop-in add-on when you need billing.

step 01
def deps do
  [
    {:aurora_meter, "~> 0.1"}
  ]
end
02

Declare your plans

A compile-time DSL, validated at compile time. Hard caps, metered overage, and boolean capabilities all live in one place.

step 02
defmodule MyApp.Plans do
  use AuroraMeter.Plans

  plan :free do
    limit :ai_calls, 100, :hard
  end

  plan :pro do
    metered :ai_calls, included: 10_000, unit_price: 1
    feature :priority_support, true
  end
end
03

Start it in your tree

One child. It validates config at boot and starts the metering runtime.

step 03
children = [
  MyApp.Repo,
  {Phoenix.PubSub, name: MyApp.PubSub},
  AuroraMeter,
  MyAppWeb.Endpoint
]
04

Count, gate and bill

Three calls. `track` counts, `with_quota` gates-runs-meters atomically, and the LiveView components render live usage.

step 04
# count usage
AuroraMeter.track(org, :ai_calls)

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

Free vs Pro

Where the free core stops and Pro begins.

The core counts and gates for nothing, forever. Pro adds the revenue and operations layer: Stripe billing, reporting, dashboards, rollups, alerts, and reconciliation.

Capability Core Pro
ETS-backed real-time counters (~8M incr/s)
Plan DSL + entitlement gate (with_quota)
LiveView usage components
Postgres persistence + telemetry
Stripe Checkout + webhook sync
Metered usage → Stripe Billing Meters
Subscription-aligned billing periods
Historical rollups + CSV export
Hosted real-time dashboards
Quota alerts + reconciliation

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.

Free · MIT

Aurora Meter

$0 forever

Metering, entitlements, plan DSL, LiveView components, Postgres persistence and telemetry. Everything you need to count and gate.

Get the free core

Commercial · Pro

Aurora Meter Pro

$149 / month · per app

Everything in the core, plus Stripe checkout + webhook sync, metered usage to Stripe Billing Meters, hosted dashboards, historical rollups with CSV export, and quota alerts.

  • Stripe checkout + webhook sync
  • Metered usage → Stripe Billing Meters
  • Subscription-aligned periods
  • Historical rollups + CSV export
  • Hosted real-time dashboards
  • Quota alerts + reconciliation
Subscribe

Billed monthly via Stripe · cancel anytime

Licensed per app, like Oban Pro. After checkout we email your private package access. Questions? Talk to us.