We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
Aurora Meter Pro · live preview
Every Pro screen, running on sample data.
The hosted dashboard, Stripe billing sync, quota alerts, rollups, reconciliation, prepaid credits and the LiveView components, previewed here on seeded sample data.
Live · simulated · tick 0
Nothing here is real: a seeded simulation of a SaaS with 128 customers so you can see what ships.
01 · Hosted real-time dashboards
The hosted dashboard
Mounted inside your own Phoenix app at a route you choose. Every tile below updates as meter events arrive, with no polling and no separate analytics database.
Usage & billing
Scale plan · billing period Oct 9, 2026 to Nov 8, 2026
Active subscriptions
128
▲ +6
MRR
$19,072
▲ +11%
Metered revenue
$4,210
▲ +23%
Events reported
1,240,318
this period
Metered usage by month
AI generations (thousands)
Metered AI generations by month: May 42,000 units, Jun 55,000 units, Jul 61,000 units, Aug 78,000 units, Sep 94,000 units, Oct 120,318 units.
Included allowances
org_acme
Included allowances this period: AI generations 7,420 of 10,000, 74 percent, API calls 128,900 of 250,000, 52 percent, Seats 18 of 25, 72 percent, Exports 47 of 50, 94 percent.
Top customers
AI generations, this period
| Customer | Plan | Usage | Status |
|---|---|---|---|
| Acme Corp | Scale |
|
overage |
| Umbrella | Scale |
|
near limit |
| Stark Industries | Scale |
|
healthy |
| Initech | Pro |
|
healthy |
| Globex | Pro |
|
healthy |
| Wayne Enterprises | Pro |
|
healthy |
| Hooli | Free |
|
near limit |
| Vandelay | Free |
|
healthy |
Live meter events
streaming| Time | Customer | Feature | Qty | Stripe |
|---|---|---|---|---|
| 12:04:28 | Acme Corp | ai_generations | +3 | reported ✓ |
| 12:04:26 | Globex | api_calls | +128 | reported ✓ |
| 12:04:24 | Initech | exports | +1 | reported ✓ |
| 12:04:21 | Umbrella | ai_generations | +7 | reported ✓ |
| 12:04:18 | Hooli | api_calls | +64 | reported ✓ |
| 12:04:16 | Stark Industries | ai_generations | +2 | reported ✓ |
02 · Stripe Checkout + webhook sync
Stripe billing sync
Checkout creates the subscription, a self-contained HMAC webhook verifier keeps the local copy in lockstep, and metered overage is reported to Stripe Billing Meters so it lands on the next invoice by itself.
Upcoming invoice
The overage line follows the meter above: every AI generation past the included 10,000 is a Stripe meter event.
Webhook timeline
- 12:04:29 meter_event reported · mtr_evt_k82jd1 verified ✓
- 12:04:22 invoice.paid · in_1q9x2m $173.00 verified ✓
- 12:04:10 customer.subscription.updated · sub_9dk2la verified ✓
- 12:03:47 meter_event reported · mtr_evt_a01pz7 verified ✓
- 12:02:54 checkout.session.completed · cs_7hd0ql $49.00 verified ✓
Signatures are checked against the webhook secret, and the credit grant is keyed on the payment, so two events for the same payment fund the account once. A redelivery still does the work of looking the payment up.
03 · Quota alerts
Quota alerts
Threshold alerts are deduplicated per customer, per feature, per period, so a customer hovering around 80% gets one email rather than forty. A handler that fails is retried, which can produce a second alert for the same crossing.
- 80% Email the customer
- 95% Show the upgrade prompt
- 100% Throttle on hard caps, bill overage on metered plans
Alerts feed
Acme Corp passed 100% of AI generations
12:03:5810,850 / 10,000 this period · Scale plan
Overage billed to StripeHooli passed 95% of AI generations
12:01:1296 / 100 this period · Free plan
Upgrade prompt shownUmbrella passed 80% of AI generations
11:58:4041,300 / 50,000 this period · Scale plan
Email sent04 · Historical rollups + CSV export
Historical rollups and CSV export
Live counters are ephemeral by design. Pro persists month and day rollups per customer and
feature, so finance gets a table and you get a one-click usage.csv.
Rollups · org_acme · ai_generations
By month
| Oct 2026 | 120,318 |
|---|---|
| Sep 2026 | 94,000 |
| Aug 2026 | 78,000 |
| Jul 2026 | 61,000 |
| Jun 2026 | 55,000 |
| May 2026 | 42,000 |
By day
| 2026-10-23 | 2,714 |
|---|---|
| 2026-10-22 | 4,050 |
| 2026-10-21 | 4,410 |
| 2026-10-20 | 4,120 |
| 2026-10-19 | 3,980 |
usage.csv
date,org,feature,units
2026-10-19,org_acme,ai_generations,3980
2026-10-20,org_acme,ai_generations,4120
2026-10-21,org_acme,ai_generations,4410
2026-10-22,org_acme,ai_generations,4050
2026-10-23,org_acme,ai_generations,2714
Filter by customer, feature and date range; the export streams straight from the rollup table, so it is the same numbers as the invoice.
05 · Prepaid credits and top-ups
Prepaid credits and top-ups
The credit ledger is in the free MIT core: grant, hold, settle and release, in integer micro-dollars, every write under a row lock and appended to a transaction log. Pro adds the payment rail: a Stripe Checkout that sells an amount of credit, and an auto top-up that charges a saved card when the balance falls past a threshold you set.
Balance
- Spendable
- $64.50
- Promotional
- $24.50
- Paid
- $40.00
- Held
- $6.20
- Debt
- $0.00
A wallet can go into debt. While it does it reports zero spendable and refuses a new hold, so the figure is here even at zero rather than appearing the first time it matters.
Lots, in spend order
promotional first, then expiry| Lot | Kind | Remaining | Expires |
|---|---|---|---|
| lot_promo_signup | promotional |
|
Nov 13, 2026 |
| lot_top_up_aug | paid |
|
no expiry |
| lot_top_up_sep | paid |
|
no expiry |
Settling a hold takes from the highest-priority lot first, and the balance above is the sum of what is left. Watch a hold settle and the same amount leaves both.
Estimate, hold, settle
Before the work runs, a hold reserves an estimate. When it finishes, settling charges what it actually cost and releases the rest. If it raises, the hold is released and nothing is charged.
- hold_rpt_9f21 $4.20 open
- hold_rpt_9f20 $2.00 open
- hold_rpt_9f1e $1.50 settled
Auto top-up
- When it falls below
- $25.00
- Charge
- $100.00
- Card
- •••• 4242
The charge carries an idempotency key written before it is attempted, so a retry lands on the same payment rather than a second one.
Top-ups
- 2 days ago $100.00 auto succeeded
- 11 days ago $100.00 manual succeeded
- 18 minutes ago $50.00 auto uncertain
Stripe has not confirmed that last charge yet. Pro keeps it as uncertain rather than guessing: it is neither granted nor failed, the recovery pass will retrieve the payment and find out, and until it does nobody has been charged twice and nobody has been given credit that was not paid for.
06 · Reconciliation
Reconciliation
A background pass compares local counters with what Stripe holds and raises an item for every difference, so nothing diverges unnoticed. A person resolves the item; the pass reports, it does not rewrite your ledger.
128 subscriptions · 1,240,318 events compared · 0 open
- Schedule
- hourly
- Open items
- 0
- On a difference
- raise an item, telemetry
07 · Subscription-aligned billing periods
Subscription-aligned billing periods
Allowances reset on each customer's Stripe billing anchor, not on the first of the month. The period you meter is the period you invoice.
- Anchor
- stripe current_period_start · day 9
- Resets in
- 16 days
- Mid-cycle upgrade
- prorated, allowance widens now
- Free plans
- calendar month fallback
08 · LiveView components
LiveView components
Drop a usage panel into your own settings page. The components subscribe over PubSub and update in place as the counters move, the same live values the dashboard shows.
# the whole panel
<AuroraMeter.Components.usage_panel org={@org} title="Usage this period">
<:meter feature=:ai_generations label="AI generations" />
<:meter feature=:api_calls label="API calls" />
<:meter feature=:seats label="Seats" />
<:meter feature=:exports label="Exports" />
</AuroraMeter.Components.usage_panel>
# or one bar at a time
<AuroraMeter.Components.usage_bar org={@org} feature=:ai_generations />
# live values arrive over PubSub
def mount(_params, _session, socket) do
AuroraMeter.subscribe(socket.assigns.org)
{:ok, socket}
end
Usage this period
org_acme · plan :scale
rendered by usage_panel · updating live
Everything in Pro
One licence per application, every screen above included.
$99 a month per application, with a 14-day free trial. The metering core stays free and MIT.
- Stripe Checkout + webhook sync
- Metered usage → Stripe Billing Meters
- Subscription-aligned billing periods
- Historical rollups + CSV export
- Hosted real-time dashboards
- Quota alerts + reconciliation
- Email support, 2 business days