Admin  /  Billing

Billing

Sales are new checkouts and subscriptions. Revenue uses Stripe list prices; renewals count toward MRR.

Revenue unavailable. Stripe is not configured on this server, so amounts can't be looked up. Counts are complete.
Some Stripe prices are unavailable. Affected totals are marked incomplete: {{ fmt?.number(summary.revenue.missingSales || 0) }} period sales, {{ fmt?.number(summary.revenue.missingAllTimeSales || 0) }} historical sales, {{ fmt?.number(summary.revenue.missingSubscriptions || 0) }} active subscriptions.
Stripe webhooks Pending {{ fmt?.number(summary.webhooks.pending) }} Failed {{ fmt?.number(summary.webhooks.failed) }} Last error {{ summary.webhooks.lastError.error }} on {{ summary.webhooks.lastError.type }} · {{ fmt?.humanTime(summary.webhooks.lastError.receivedAt) }} Last error none Unreviewed reversals {{ fmt?.number(summary.webhooks.unreviewedRevocations) }}
Sales per {{ bucketName() }} · {{ periodPhrase() }} {{ f.label }} · {{ fmt?.number(familyTotal(f.id)) }}

No sales {{ period === 'all' ? 'yet' : 'in the ' + periodPhrase() }}.

By plan

{{ fmt?.number(plansWithActivity().length) }} of {{ fmt?.number(summary.plans.length) }} plans sold
Active grants, sales and revenue per plan
PlanActive{{ periodPhrase().replace(/^./, c => c.toUpperCase()) }}All time
SalesRevenue
{{ fmt?.number(p.active) }} {{ fmt?.number(p.allTimeSales) }} {{ revenueOn() ? (p.allTimeRevenueComplete === false ? 'Incomplete' : moneyText(p.allTimeRevenue)) : '—' }}
Total{{ fmt?.number(planTotals().active) }}{{ fmt?.number(planTotals().allTimeSales) }}{{ revenueOn() ? (summary.allTime.complete === false ? 'Incomplete' : moneyText(summary.allTime.revenue)) : '—' }}

A paper pack counts once, under Paper pack. Active means paid time remains and the payment wasn't reversed.

Subscriptions and purchases

{{ total >= 0 ? fmt.number(total) : '…' }} shown

{{ grantsError }}
{{ query?.page }}/{{ totalPage || 1 }}
{{ chip?.label }} {{ chip?.value }}
Subscriptions and purchases
UserPlanStatus CancellingRevokedApplies to
{{ g.user }}Deleted user {{ planName(g.planId) }}Part of a paper pack {{ g.state === 'active' ? 'Active' : g.state === 'revoked' ? 'Revoked' : 'Expired' }}Stripe: {{ statusText(g) }} {{ g.purchasedAt ? fmt?.date(g.purchasedAt) : '—' }} {{ g.cancelAtPeriodEnd ? 'Ends' : 'Renews' }} Cancelling— — {{ g.scope.id }}Account
{{ hasFilters() ? 'No subscriptions or purchases match these filters.' : 'No subscriptions or purchases yet.' }}
Loading subscriptions and purchases…
of {{ totalPage }}