Metrics / routstr / cumulative_revenue
cumulative_revenue
Cumulative observed Routstr revenue in millisats - the running total of everything included providers have reported earning, the Overview tab's 'Cumulative observed revenue' line; the final row equals the page's all-time revenue headline. A running total, so values are NOT additive across rows.
unit
msats
grain
day (UTC)
series
sparse, full history
key
routstr.cumulative_revenue@day
Parameters
| param | accepted values |
|---|---|
| grain | day - default day (omit to get the default) |
| from | optional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for the series start |
| to | optional inclusive ISO UTC calendar day (YYYY-MM-DD); omit for today UTC (that day still in progress) |
| format | csv | markdown |
Query it
MCP tool call against https://dev.nostrolo.gy/mcp (connect your agent):
{
"name": "nostrology_query_metric",
"arguments": {
"metric": "cumulative_revenue",
"domain": "routstr",
"grain": "day"
}
} Windowed (inclusive UTC days; both optional):
{
"name": "nostrology_query_metric",
"arguments": {
"metric": "cumulative_revenue",
"domain": "routstr",
"grain": "day",
"from": "2026-07-01",
"to": "2026-07-31"
}
} Response: a plain-text envelope (window, freshness, column contract, this page's
caveats) followed by the data table (csv, or format: "markdown") at day grain.
Response columns
| name | type | description |
|---|---|---|
| utc_day | date | UTC calendar day (weekly-era buckets are posted at their week's END day) |
| cumulative_msats | integer | running total of reported revenue up to and including that day, integer millisats |
What is counted
Network aggregates cover INCLUDED providers only: test/staging-marked nodes and private-endpoint-only nodes are excluded (still listed, with the reason, by routstr.provider_leaderboard and the routstr.provider_profile record), and kind-38421 (routstr-provider-announcements) squatters are never providers.
Caveats
- Every usage number is SELF-REPORTED by each provider's own node in kind-38422 (routstr-analytics-snapshots) events and is unverifiable by construction (RIP-01 payments travel as Cashu tokens in HTTP headers, invisible on Nostr): a node can overstate, understate or stay silent, so read these as what the network says about itself.
- This is the one series that includes the WEEKLY pre-daily era (back to 2025-08-13 as of 2026-08-24): weekly buckets are added at their week's end day, daily buckets at their day, so it is not derivable from routstr.network_activity alone.
- Daily figures come from a ledger reconstructed by merging the UTC-grid buckets of EVERY archived snapshot's trailing windows (full-coverage-only, newest-wins); observed history is a FLOOR - a day a node later omits is kept, a gap longer than the windows' reach stays a gap - and today is never a ledger day.
- Revenue is integer MILLI-satoshis (divide by 1000 for sats; sum msats first, convert once).
- Series is sparse: only days on which the total moved are present; a flat stretch means no provider reported activity, not necessarily that none happened.
Freshness in every response is data-derived: the newest routstr refresh's generation instant (nightly 02:45 UTC; the newest ledger day is the previous UTC day).