ARPUARPPUпродуктовые метрикиunit-экономикамонетизацияSQL

ARPU vs ARPPU: разница и формулы с примером

2026-07-07 9 мин

ARPU и ARPPU считают средний доход, но по разной базе: ARPU делит выручку на всех пользователей, ARPPU — только на платящих. Формально ARPU = Revenue / Users, а ARPPU = Revenue / Paying users. ARPU показывает, сколько денег приносит весь трафик, ARPPU — насколько дорого монетизируется тот, кто уже платит. Связывает их доля платящих: ARPU = ARPPU × paying share.

Что такое ARPU и ARPPU?

ARPU (Average Revenue Per User) — средний доход на одного активного пользователя за период. В знаменателе стоят все пользователи выбранной базы: например, все MAU за месяц, независимо от того, заплатили они или нет.

ARPPU (Average Revenue Per Paying User) — средний доход на одного платящего пользователя. В знаменателе только те, у кого за период была хотя бы одна оплата.

Ключевое различие — знаменатель. Числитель (выручка за период) у обеих метрик обычно одинаковый; меняется база, на которую эту выручку делят. Поэтому ARPPU всегда больше либо равен ARPU (равенство — только если платят все, чего почти не бывает).

Чем отличается ARPU от ARPPU?

Разницу проще всего держать в голове через таблицу.

ПараметрARPUARPPU
ЗнаменательВсе пользователи (например, MAU)Только платящие
Что отвечаетСколько приносит весь трафикСколько приносит один плательщик
Зависит от доли платящихДа, напрямуюНет
Растёт, когдаВыше конверсия в оплату ИЛИ выше чекТолько когда выше чек или частота покупок
Для чегоОценка канала, unit-экономика на входеЗдоровье монетизации, ценообразование

Главная мысль: ARPU реагирует и на конверсию, и на средний чек. ARPPU изолирует чек и частоту — он не зависит от того, сколько людей вообще платит.

Как считать ARPU и ARPPU? Формулы

Обе метрики привязаны к периоду (день, неделя, месяц) и к базе пользователей.

ARPU  = Revenue / Total_Users
ARPPU = Revenue / Paying_Users

paying_share = Paying_Users / Total_Users
ARPU = ARPPU * paying_share

Последнее равенство — самое полезное для разбора: если ARPU просел, разложите его на ARPPU и долю платящих, чтобы понять, упал чек или конверсия.

Разбор на примере: одни данные, две метрики

Возьмём иллюстративные (вымышленные) цифры за месяц:

Считаем:

Проверка через связь метрик: 1 500 × 0.05 = 75 ₽ — сходится с ARPU.

Теперь сценарий: конверсия в оплату выросла с 5% до 8% (стало 800 платящих), но каждый платит меньше — средний чек упал, и выручка стала 720 000 ₽.

ARPU почти не изменился (75 → 72 ₽), а вот ARPPU упал вдвое (1500 → 900 ₽). Если смотреть только на ARPU, вы не заметите, что монетизация одного плательщика ухудшилась — рост числа платящих замаскировал падение чека. Поэтому обе метрики читают вместе.

Когда смотреть ARPU, а когда ARPPU?

Практическое правило: команда, отвечающая за онбординг и активацию, чаще смотрит на paying share и ARPU; команда монетизации и биллинга — на ARPPU.

Как ARPU и ARPPU связаны с LTV?

LTV (пожизненная ценность пользователя) для подписочной модели грубо оценивается через ARPU и удержание:

LTV ≈ ARPU * средний срок жизни (в периодах)
средний срок жизни ≈ 1 / churn_rate

Например, при месячном ARPU = 75 ₽ и месячном churn 10%: средний срок жизни = 1 / 0.10 = 10 месяцев, тогда LTV ≈ 75 × 10 = 750 ₽ на пользователя. Если считать LTV через ARPPU, вы получите ценность именно платящей когорты — это корректно только когда сравниваете её с затратами на удержание плательщиков, а не с CAC всего трафика. Для сравнения с CAC (затратами на привлечение любого пользователя) берите ARPU-версию, иначе окупаемость окажется завышенной. Подробнее про сборку окупаемости — в разборе LTV, CAC и payback в unit-экономике.

Как посчитать ARPU и ARPPU в SQL?

Набросок на вымышленных таблицах payments и sessions. Идея: считаем выручку и две базы (все активные и платящие) за один период.

-- Иллюстративный расчёт за один месяц
WITH revenue AS (
    SELECT SUM(amount) AS total_revenue,
           COUNT(DISTINCT user_id) AS paying_users
    FROM payments
    WHERE paid_at >= DATE '2026-06-01'
      AND paid_at <  DATE '2026-07-01'
),
active AS (
    SELECT COUNT(DISTINCT user_id) AS total_users
    FROM sessions
    WHERE session_date >= DATE '2026-06-01'
      AND session_date <  DATE '2026-07-01'
)
SELECT
    r.total_revenue,
    a.total_users,
    r.paying_users,
    ROUND(r.total_revenue * 1.0 / a.total_users,   2) AS arpu,
    ROUND(r.total_revenue * 1.0 / r.paying_users,  2) AS arppu,
    ROUND(r.paying_users  * 1.0 / a.total_users,   4) AS paying_share
FROM revenue r
CROSS JOIN active a;

Обратите внимание на * 1.0 — без приведения к дробному типу целочисленное деление обрежет результат до нуля. Потренироваться писать такие агрегации по когортам можно в SQL-тренажёре и на практических задачах.

Частые ошибки

Разобрать декомпозицию выручки проще всего на практике: соберите ARPU, ARPPU и paying share по своим когортам в SQL-тренажёре или прогоните вопрос по продуктовым метрикам в AI-собесе.

Практикуйся на реальных задачах
545 SQL + 538 Python задач с автопроверкой, 618 кейсов. Первые — без регистрации.
Посчитать ARPU и ARPPU в SQL-тренажёре →