Транзакция аффилиата — это запись движения средств по внутреннему счёту партнёра: начисление вознаграждения за заказ или списание при выплате. Именно на транзакциях держится вся отчётность партнёрской программы: сколько начислено, сколько уже выплачено и какой остаток доступен партнёру к выводу.
Что такое транзакции аффилиатов
Партнёрская программа в 1С-Битрикс входит в модуль sale (Интернет-магазин) и опирается на механизм внутреннего счёта пользователя. У каждого аффилиата есть привязанный аккаунт, а его вознаграждения не «висят» абстрактной цифрой, а фиксируются отдельными операциями — транзакциями. Каждая транзакция отвечает на вопросы: кому начислено, сколько, в какой валюте, за какой заказ и когда.
Транзакции бывают двух направлений: кредит (пополнение счёта — начисление вознаграждения за приведённый заказ) и дебет (списание — фиксация выплаты партнёру). Сумма операции хранится со знаком, поэтому текущий баланс аффилиата — это просто сумма всех его транзакций. Такой подход даёт прозрачную историю: любую цифру в отчёте можно раскрыть до конкретного заказа и даты.
Где ведётся учёт
Список партнёров и их операции находятся в административной части: Магазин → Аффилиаты. Здесь видны сами аффилиаты, привязанные к ним планы вознаграждений и накопленные суммы. Движения по внутреннему счёту доступны в разделе транзакций внутреннего счёта — Магазин → Покупатели → Внутренний счёт (транзакции пользователей).
Физически данные лежат в нескольких таблицах модуля sale:
b_sale_affiliate— карточки аффилиатов: привязка к пользователю, план, накопленная сумма;b_sale_affiliate_plan— планы начисления вознаграждений;b_sale_user_transact— транзакции внутреннего счёта: сумма, валюта, дата, описание, привязка к заказу;b_sale_user_account— сводный баланс внутреннего счёта пользователя.
Работать с транзакциями программно позволяет класс CSaleUserTransact, а с самой партнёрской логикой — CSaleAffiliate. Баланс аккуратно пересчитывается на основе транзакций, поэтому править сумму счёта напрямую в обход операций не стоит.
Как формируется начисление
Начисление привязано не к переходу по ссылке, а к результату — оформленному заказу. Когда покупатель приходит по реферальной ссылке партнёра, Битрикс запоминает аффилиата в куке, и при создании заказа этот заказ связывается с партнёром. Дальше вознаграждение рассчитывается по плану аффилиата — проценту или фиксированной сумме от заказа.
Ключевой момент — момент фиксации. Вознаграждение не должно попадать на счёт сразу после оформления, ведь заказ могут отменить или не оплатить. Поэтому начисление обычно привязывают к достижению заказом «зачётного» состояния — оплаты или статуса «выполнен». За перерасчёт отвечает агент партнёрской программы (CSaleAffiliate), который периодически обходит заказы за период и формирует по ним транзакции.
/bitrix/modules/main/tools/cron_events.php, а не оставлять «на хитах».Типы транзакций и их поля
Все операции однородны по структуре, но различаются направлением и назначением. Понимание полей помогает читать отчёт и разбирать спорные ситуации.
| Поле | Назначение |
|---|---|
| Сумма (со знаком) | Плюс — начисление вознаграждения, минус — списание при выплате |
| Валюта | Валюта счёта партнёра; при мультивалютности требует согласования с валютой заказа |
| Дата транзакции | Момент фиксации операции — по нему строятся периоды в отчётах |
| Заказ | Ссылка на заказ-основание для начисления |
| Описание / примечание | Комментарий: за что начислено или основание выплаты |
Логически транзакции делятся на две группы:
- Начисления — кредитовые операции, которые агент создаёт по зачётным заказам согласно плану;
- Выплаты — дебетовые операции, которые заводит администратор, когда переводит партнёру накопленное вознаграждение.
Отчётность и статистика
Отчётность строится с двух сторон. В административной части менеджер видит по каждому аффилиату накопленную сумму, историю транзакций и связанные заказы — этого достаточно, чтобы свериться перед выплатой и понять, за какие именно продажи начислено вознаграждение.
В публичной части работает личный кабинет партнёра на компонентах партнёрской программы (семейство bitrix:sale.affiliate*). Партнёр видит собственную статистику: переходы, заказы, начисленные и выплаченные суммы, текущий доступный остаток. Такая прозрачность снимает большую часть вопросов в поддержку.
Полезные срезы для отчёта:
- начислено за период — сумма кредитовых транзакций;
- выплачено за период — сумма дебетовых транзакций;
- доступно к выплате — текущий баланс внутреннего счёта;
- детализация по заказам — какие продажи дали вознаграждение.
Выплаты и списание со счёта
Выплата — это отдельный шаг, а не автоматическое следствие начисления. Партнёр запрашивает вывод накопленного вознаграждения, администратор проводит перевод удобным способом (за пределами Битрикса — на карту, счёт или электронный кошелёк), а факт выплаты фиксирует дебетовой транзакцией на ту же сумму.
Такой порядок важен по двум причинам. Во-первых, баланс партнёра всегда соответствует реально доступной сумме: как только выплата проведена и списана, остаток уменьшается. Во-вторых, сохраняется полная история — видно, когда и в каком объёме партнёр получал деньги.
- Партнёр видит доступный остаток в личном кабинете и запрашивает выплату;
- Менеджер сверяет сумму по транзакциям начислений и проводит перевод;
- В системе создаётся дебетовая транзакция — счёт партнёра обнуляется или уменьшается на выплаченное;
- Операция попадает в отчётность и в выгрузку для бухгалтерии.
Если начисления и выплаты идут в разных валютах, момент конвертации нужно зафиксировать в описании транзакции, иначе сверка «сколько начислено — сколько выплачено» будет расходиться из-за курса.
Типичные проблемы
Большинство сбоев в учёте аффилиатов связано не с самим движком, а с настройкой окружения и логики начисления.
- Вознаграждения не начисляются — не работает крон агентов или заказы не доходят до зачётного статуса;
- Начислено дважды — план или доработка создают транзакцию повторно при каждом изменении заказа вместо однократной фиксации;
- Начислено за отменённый заказ — начисление привязано к оформлению, а не к оплате, и не откатывается при отмене;
- Баланс не сходится — суммы правились в обход транзакций либо расходятся валюты начислений и выплат;
- Пустой отчёт у партнёра — заказ не связался с аффилиатом из-за истёкшей или перезаписанной куки перехода.
Профилактика простая: привязывать начисление к оплате заказа, обрабатывать отмену и возврат откатом транзакции, не менять баланс напрямую и держать агентов на серверном кроне. Спорные ситуации почти всегда разбираются по истории транзакций — в этом её главная ценность.
Итог
Учёт аффилиатов в 1С-Битрикс строится на внутреннем счёте и транзакциях: кредитовые операции фиксируют начисления по зачётным заказам, дебетовые — выплаты партнёрам, а баланс и отчётность выводятся из их суммы. Надёжность механизма держится на нескольких вещах: начисление привязано к оплате заказа, работает крон агентов, отмены и возвраты откатываются транзакцией, а баланс не правится в обход операций.
Когда партнёрская программа приносит заметную долю оборота, учёт вознаграждений становится зоной финансовой ответственности, и ошибки здесь стоят дорого. Мы в B2Bsite настраиваем логику начислений, увязываем транзакции со статусами заказов и выгрузкой в 1С, чтобы отчёты партнёров и данные бухгалтерии совпадали до копейки.
Частые вопросы
Где хранятся транзакции аффилиатов в Битрикс?
В таблице b_sale_user_transact модуля sale — это транзакции внутреннего счёта пользователя. Партнёрская программа использует тот же механизм, автоматически создавая записи по зачётным заказам.
В какой момент начисляется вознаграждение партнёру?
Обычно в момент достижения заказом зачётного состояния — оплаты или статуса «выполнен». За перерасчёт и создание транзакций отвечает агент партнёрской программы, поэтому важен работающий крон.
Как рассчитывается баланс аффилиата?
Баланс — это сумма всех транзакций партнёра со знаком: начисления идут в плюс, выплаты в минус. Поэтому текущий остаток всегда равен доступной к выводу сумме.
Почему у партнёра пустая статистика начислений?
Чаще всего заказ не связался с аффилиатом из-за истёкшей куки перехода или не запущен крон агентов. Также начисления не появятся, если заказы не доходят до зачётного статуса.
Как фиксируется выплата партнёру?
Сам перевод денег делается вне Битрикса, а факт выплаты фиксируется дебетовой транзакцией на ту же сумму. После этого доступный остаток на внутреннем счёте уменьшается.
Что делать при отмене или возврате заказа?
Ранее начисленное вознаграждение нужно откатить обратной транзакцией, иначе баланс партнёра завысится. Корректнее заранее привязывать начисление к оплате, а не к оформлению заказа.
Можно ли выгрузить транзакции для бухгалтерии?
Да, операции за период удобно выгружать во внешнюю систему или в 1С для сверки. Суммы выплат должны совпадать с дебетовыми транзакциями по внутренним счетам.
Почему баланс аффилиата не сходится с отчётом?
Обычно причина — правки суммы счёта в обход транзакций или расхождение валют начислений и выплат из-за курса. Разбирать расхождение нужно по истории транзакций.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.