Revenue

ARPA vs ARPU vs ASP

Three per-something revenue averages that get mixed up constantly — what each one divides by, and when to use which.

Average revenue per account edges up from $200 to $215 — total MRR divided by paying accounts. A rising ARPA means each customer is worth more, whether from up-tiering or better pricing.

What's the difference between ARPA, ARPU and ASP?

All three are revenue averages; they differ in the denominator. ARPA divides MRR by paying accounts — revenue per customer relationship. ARPU divides by users — revenue per seat, the right lens when accounts hold many users. ASP averages only new deals — what a newly-won customer pays, ignoring the existing base entirely.

The running example makes the gaps concrete: $20,000 MRR across 100 accounts is a $200 ARPA; spread over 400 users it is a $50 ARPU; and this month's 20 new customers signing $48,000 of first-year value is a $2,400 ASP. Three averages, three stories, one business.

When to use ARPA, ARPU or ASP?

Use ARPA for unit economics — LTV, CAC payback and churn cost are all per-account arithmetic. Use ARPU when pricing is per-seat and you need to see whether accounts are densifying or hollowing out: rising ARPA on falling ARPU means bigger accounts with cheaper seats. Use ASP to judge sales and pricing changes, because it responds immediately while ARPA drags the whole historical base behind it.

The trend divergences are the diagnostics. ASP rising while ARPA stagnates means new customers buy bigger but the old base never expands. ARPA rising while ASP is flat means growth is coming from expansion, not from better new deals. Either way, one average alone would have hidden it.

Decisions to be made

Fix the denominators before comparing periods:

  • ARPA: start-of-period accounts, end-of-period, or average? Pick one — a growing base makes them materially different.
  • ARPU: all provisioned users or only active ones? Spectator seats dilute the honest number.
  • ASP: first-month value or first-year value? Annual-prepay deals double-count in one and not the other.