Сверка выплат партнёрской программы: реестр начислений, корректировок и платежей

Готовый процесс сверки партнёрских выплат: формат реестра, начисления и корректировки, SQL-поиск расхождений, waterfall и обезличенный пример закрытия.

Оглавление9 разделов

Сверка партнёрской программы — это соединение трёх независимых контуров: события в трекере, коммерческое начисление в кабинете и фактическое поступление денег. Таблица «сумма за месяц» не объясняет расхождение. Нужен реестр, где каждое движение имеет собственный идентификатор, тип, валюту, период и ссылку на исходную конверсию или когорту.

Модель реестра

Минимальные поля affiliate ledger
ПолеПримерЗачем
ledger_idadj_2026_08_0042Уникальность движения
entry_typeaccrual / adjustment / paymentНе смешивать стадии
modelCPA / RevShare / HybridВыбрать формулу
conversion_idconv_x7…Сверка CPA без ПДн
cohort_key2026-W30|GEO|sourceПривязка RevShare
period_start/end2026-07-01…31Границы расчёта
amount_minor/currency125000 / EURТочная сумма
terms_versionterms_2026_07Версия условий
reason_codechargebackОснование корректировки
source_file_hashsha256…Какой файл импортирован

DDL с запретом дублей

PostgreSQL: ledger
CREATE TABLE affiliate_ledger (
  ledger_id text PRIMARY KEY,
  partner_id text NOT NULL,
  entry_type text NOT NULL,
  model text NOT NULL,
  conversion_id text,
  cohort_key text,
  period_start date NOT NULL,
  period_end date NOT NULL,
  amount_minor bigint NOT NULL,
  currency char(3) NOT NULL,
  terms_version text NOT NULL,
  reason_code text,
  source_file_hash text NOT NULL,
  imported_at timestamptz NOT NULL DEFAULT now(),
  CHECK (conversion_id IS NOT NULL OR cohort_key IS NOT NULL)
);

Waterfall закрытия периода

От кабинета до банка
СтупеньСумма, у.е.Проверка
Начисления CPA420 000approved conversion_id
Начисления RevShare310 000когортная формула
Корректировки прошлого периода−35 000reason + исходная строка
Подтверждено к выплате695 000акт/инвойс по процессу сторон
Комиссия перевода−5 000банковский документ
Фактически поступило690 000выписка

Это обезличенный пример. Расхождение между 730 000 исходных начислений и 690 000 поступлениями не равно «недоплате 40 000»: 35 000 объяснены корректировкой, 5 000 — комиссией. Каждая ступень должна иметь отдельный документ или строку, иначе объяснение нельзя повторить через месяц.

SQL: CPA есть в трекере, но нет в начислении

Поиск отсутствующих conversion_id
SELECT t.conversion_id, t.approved_at, t.payout_minor
FROM tracker_conversions t
LEFT JOIN affiliate_ledger l
  ON l.conversion_id=t.conversion_id
 AND l.entry_type='accrual'
WHERE t.status='approved'
  AND t.approved_at >= $1 AND t.approved_at < $2
  AND l.ledger_id IS NULL
ORDER BY t.approved_at;

SQL: начисление не совпало по сумме

Разница с учётом валюты
SELECT t.conversion_id,
       t.payout_minor AS tracker_amount,
       sum(l.amount_minor) AS ledger_amount,
       t.payout_minor-sum(l.amount_minor) AS delta_minor
FROM tracker_conversions t
JOIN affiliate_ledger l ON l.conversion_id=t.conversion_id
WHERE l.currency=t.currency
GROUP BY 1,2 HAVING t.payout_minor <> sum(l.amount_minor);

Если валюты различаются, строки сначала пересчитывают по закреплённому правилу и сохраняют исходную сумму. Нельзя соединять их по числу без валюты. Для Hybrid CPA и RevShare ведутся отдельными entry_type/model, а общий итог строится только после независимой сверки каждой части.

Формат запроса менеджеру

Шаблон сверки без эмоциональных формулировок
Период привлечения: 2026-07-01—2026-07-31 UTC
Версия условий: terms_2026_07
Затронуто: 17 conversion_id
Наблюдение: approved в выгрузке статусов, отсутствуют в accrual
Сумма по договорной ставке: 204 000 minor units EUR
Приложения: список ID, hash исходной выгрузки, расчёт
Просьба: указать reason_code либо включить строки в пересчёт

Контроль импорта

  1. Сохранить исходный файл без ручного редактирования.
  2. Посчитать SHA-256 и проверить повторный импорт.
  3. Нормализовать валюту, время и идентификаторы.
  4. Загрузить строки транзакцией в staging.
  5. Проверить дубли и контрольную сумму.
  6. Перенести валидные строки в ledger.
  7. Сформировать отчёт missing, extra, amount mismatch и late adjustment.

Когда период закрыт

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

Методология

Схема предназначена для управленческой и технической сверки, а не заменяет бухгалтерский или налоговый учёт. Обязательные документы, курс и момент признания определяются договором и применимыми правилами. Все суммы в примере вымышлены и явно используются только для демонстрации арифметики.

Станьте партнёром и начните работать

Перейдите в партнёрскую программу, изучите актуальные условия и выберите подходящий формат сотрудничества.

СТАТЬ ПАРТНЁРОМ

Связанные материалы

Все статьи
Партнёрский маркетинг

Партнёрская сеть, прямая программа или агентство: чем отличаются модели работы

Подробное сравнение партнёрской сети, прямой программы и агентства: договорные роли, доступ к данным, ставки, выплаты, поддержка, риски и критерии выбора.

Партнёрский маркетинг

Fallback-маршрут при остановке оффера: как не терять и не перенаправлять трафик вслепую

Как спроектировать fallback при cap, pause и техническом отказе оффера: триггеры, совместимость маршрутов, защита атрибуции, тестирование и возврат.

Партнёрский маркетинг

Риск VIP-концентрации в Casino RevShare: когда один игрок искажает экономику

Как оценивать концентрацию Casino RevShare по игрокам: top-share, сценарии без лидеров, отрицательные периоды, ликвидность и лимиты масштабирования.