метрикифинтехsqlcollection-rateаналитикалендинг

Collection Rate: формула, расчёт и SQL для аналитика

2026-06-07 8 мин

Collection Rate (собираемость платежей) — это доля выставленных к оплате денег, которую компания реально получила за период: Collection Rate = Собрано / Выставлено × 100%. На собесе в финтех или лендинговую компанию (МФО, BNPL, кредитный конвейер) эту метрику спрашивают почти всегда: она напрямую показывает, насколько здоров портфель и не «течёт» ли выручка между начислением и поступлением.

В этом посте разберём формулу, два способа расчёта (за период и когортный), бенчмарки по индустриям и готовые SQL-запросы, которые можно вставить в дашборд или показать на интервью.

Что такое Collection Rate и зачем он нужен?

Collection Rate отвечает на простой вопрос: «Из всех денег, которые нам должны были заплатить, сколько мы получили?». В отличие от выручки, которую можно «нарисовать» начислениями, собираемость показывает фактический денежный поток.

Где метрика критична:

Главная путаница новичков — смешать collection rate с conversion rate. Конверсия про то, сколько людей сделали действие; собираемость — про деньги, которые уже обязаны заплатить. Разбор смежных метрик и их формул удобно держать под рукой в справочнике метрик.

Как считать Collection Rate: базовая формула

Базовая формула за период:

Collection Rate = Сумма поступивших платежей / Сумма выставленных к оплате × 100%

Пример. За октябрь к оплате выставлено 10 000 000 ₽ (плановые платежи по графику + инвойсы). Фактически поступило 8 600 000 ₽.

8 600 000 / 10 000 000 × 100% = 86%

Звучит просто, но дьявол в деталях — что именно класть в числитель и знаменатель:

На собесе хороший ответ — не просто формула, а уточняющие вопросы интервьюеру про эти нюансы. Это показывает, что вы думаете о метрике как продуктовый аналитик, а не как калькулятор.

Чем отличается Collection Rate за период от когортного?

Метрика «за период» (period collection) усредняет всё и хороша для отчёта совету директоров, но скрывает динамику. Когортный collection (cohort collection rate) показывает, как собираемость одной группы платежей нарастает со временем.

ПодходЧто показываетКогда применять
Period collectionСобрано / выставлено за месяцДашборд, KPI, отчётность
Cohort collectionКакую долю собрали по платежам due-date месяца X через N днейСкоринг, прогноз дефолтов, динамика
Vintage collectionСобираемость по «винтажам» выдач (когорта по дате выдачи кредита)Лендинг, оценка качества выдач

Логика когортного collection: фиксируем когорту по месяцу срока платежа, а потом смотрим, сколько денег от неё собрано на горизонте 0, 7, 30, 60, 90 дней. Получается «лесенка» дозревания — ранние когорты успели собраться сильнее, свежие ещё в процессе. Это та же механика, что и в когортном анализе retention, только метрика денежная.

Какие бенчмарки Collection Rate считаются нормой?

Жёстких отраслевых стандартов нет — всё зависит от риск-аппетита и сегмента. Но ориентиры такие:

Рядом с collection обычно смотрят парные метрики:

Если на собесе вас просят «улучшить collection», говорите не о магии, а о рычагах: напоминания и автосписания (повышают on-time), реструктуризация (поднимает дозревание поздних когорт), скоринг на входе (отсекает плохие выдачи до того, как они испортят метрику).

Как посчитать Collection Rate в SQL?

Возьмём схему из двух таблиц: billings (начисления к оплате) и payments (поступления). Базовый collection rate за месяц по сроку платежа:

SELECT date_trunc('month', b.due_date) AS period, SUM(p.amount) / SUM(b.amount) AS collection_rate FROM billings b LEFT JOIN payments p ON p.billing_id = b.id GROUP BY 1 ORDER BY 1;

Чтобы корректно учесть частичные платежи, агрегируем поступления по каждому начислению до джойна — иначе LEFT JOIN размножит строки и собьёт суммы:

WITH paid AS (SELECT billing_id, SUM(amount) AS collected FROM payments GROUP BY billing_id) SELECT date_trunc('month', b.due_date) AS period, SUM(COALESCE(p.collected, 0)) AS collected, SUM(b.amount) AS billed, ROUND(SUM(COALESCE(p.collected, 0)) / SUM(b.amount) * 100, 1) AS collection_rate_pct FROM billings b LEFT JOIN paid p ON p.billing_id = b.id GROUP BY 1 ORDER BY 1;

Когортный collection — на горизонте N дней от due date. Ключевая идея: фильтруем платежи по разнице между датой поступления и сроком, и считаем дозревание ступенями:

WITH cohort AS (SELECT b.id, date_trunc('month', b.due_date) AS cohort_month, b.amount AS billed, b.due_date FROM billings b) SELECT c.cohort_month, ROUND(SUM(CASE WHEN p.paid_at <= c.due_date + INTERVAL '0 day' THEN p.amount ELSE 0 END) / SUM(c.billed) * 100, 1) AS d0, ROUND(SUM(CASE WHEN p.paid_at <= c.due_date + INTERVAL '30 day' THEN p.amount ELSE 0 END) / SUM(c.billed) * 100, 1) AS d30, ROUND(SUM(CASE WHEN p.paid_at <= c.due_date + INTERVAL '90 day' THEN p.amount ELSE 0 END) / SUM(c.billed) * 100, 1) AS d90 FROM cohort c LEFT JOIN payments p ON p.billing_id = c.id GROUP BY c.cohort_month ORDER BY c.cohort_month;

Подводные камни, на которых валятся:

Где потренироваться?

Collection rate — отличная тема, чтобы прокачать связку «продуктовая метрика + SQL», которую любят на собесах в финтех. Вот куда идти:

Соберите свой первый дашборд собираемости, прогоните когортный запрос на разных горизонтах — и метрика, которая пугала на собесе, станет вашим козырем.

Потренируй метрики и SQL на реальных задачах
Collection Rate — типовая метрика на собесе в финтех. Разбери формулы в справочнике метрик и реши SQL-задачи по когортному collection в тренажёре.
Открыть тренажёр →