Required Datapoints
- Total Monthly Revenue: The total revenue generated in the month.
- Number of Accounts (Customers): The total number of active accounts generating revenue during the month.
Monthly Average Revenue Per Account (ARPA) measures the average revenue generated per account (or customer) in a given month. It reflects how much value each account contributes on a monthly basis, providing insights into revenue trends and customer monetization.
Monthly ARPA is a key indicator of monetization efficiency and customer value generation, reflecting average recurring revenue per paying account over a month.
Its meaning evolves by business type:
A rising ARPA signals successful expansion, retention, or pricing strategy, while a decline may indicate downgrades, churn risk, or value erosion.
By segmenting by industry, plan, or account tier, you can pinpoint high-value segments and optimize pricing, packaging, and success workflows.
ARPA informs:
These are the main factors that directly impact the metric. Understanding these lets you know what levers you can pull to improve the outcome
Actionable ideas to optimize this KPI, from fast, low-effort wins to strategic initiatives that drive measurable impact.
Activities commonly tied to improving or operationalizing this KPI.
| Activity | Description |
|---|---|
| Revenue Management | Revenue Management is a strategic process focused on maximizing an organization’s income by aligning pricing, packaging, customer segmentation, and sales or channel tactics with market demand, competitive positioning, and overarching business objectives. It makes the motion operational through ownership, routines, and cross-functional follow-through. Relevant KPIs include Cost to Serve and Customer Lifetime Value. |
| Monetization Strategy | Monetization Strategy focuses on developing and optimizing a pricing and revenue strategy tailored to the company’s go-to-market approach. It gives teams a clear plan for where to focus, how to sequence work, and what to measure. Relevant KPIs include Monthly ARPA and Self-Serve Upgrade Rate (Post-Activation). |
| Account Tiering | Account Tiering focuses on Account Tiering assigns accounts to clear service and investment levels based on strategic importance, revenue potential, and account complexity. It gives teams a clear plan for where to focus, how to sequence work, and what to measure. Relevant KPIs include Monthly ARPA. |
A SaaS company generates $500,000 in monthly revenue from 1,000 accounts. The Monthly ARPA is calculated as:
This KPI is associated with the following stages in the AAARRR (Pirate Metrics) funnel:
This KPI is classified as a lagging Indicator. It reflects the results of past actions or behaviors and is used to validate performance or assess the impact of previous strategies.
This role is directly accountable for the KPI and is expected to drive progress and decisions around it.
These roles contribute directly to performance and typically partner on execution, reporting, or optimization.
These leading indicators influence this KPI and act as early signals that forecast future changes in this KPI.
These lagging indicators confirm, quantify, or amplify this KPI and help explain the broader business impact on this KPI after the fact.
How this KPI is structured in Cube.js, including its key measures, dimensions, and calculation logic for consistent reporting.
cube('Revenue', { sql: `SELECT * FROM revenue`, measures: { totalMonthlyRevenue: { sql: `total_monthly_revenue`, type: 'sum', title: 'Total Monthly Revenue', description: 'The total revenue generated in the month.' } }, dimensions: { id: { sql: `id`, type: 'number', primaryKey: true }, month: { sql: `month`, type: 'time', title: 'Month', description: 'The month of the revenue record.' } }})cube('Accounts', { sql: `SELECT * FROM accounts`, measures: { numberOfAccounts: { sql: `account_id`, type: 'countDistinct', title: 'Number of Accounts', description: 'The total number of active accounts generating revenue during the month.' } }, dimensions: { accountId: { sql: `account_id`, type: 'number', primaryKey: true }, month: { sql: `month`, type: 'time', title: 'Month', description: 'The month of the account activity.' } }})cube('MonthlyARPA', { sql: `SELECT * FROM monthly_arpa`, joins: { Revenue: { relationship: 'belongsTo', sql: `${CUBE}.month = ${Revenue}.month` }, Accounts: { relationship: 'belongsTo', sql: `${CUBE}.month = ${Accounts}.month` } }, measures: { monthlyArpa: { sql: `${Revenue.totalMonthlyRevenue} / NULLIF(${Accounts.numberOfAccounts}, 0)`, type: 'number', title: 'Monthly ARPA', description: 'Monthly Average Revenue Per Account (ARPA) measures the average revenue generated per account in a given month.' } }, dimensions: { month: { sql: `month`, type: 'time', title: 'Month', description: 'The month for which ARPA is calculated.' } }})Note: This is a reference implementation and should be used as a starting point. You’ll need to adapt it to match your own data model and schema