CRM показывает хороший результат кампании, но через неделю часть товаров возвращают. Если интеграция передала только отрицательную сумму заказа, аналитик ещё может уменьшить выручку. А вот понять, какой товар остался у клиента, сколько единиц он использует и какие затраты действительно вернулись, уже трудно.

Частичный возврат — возврат части состава покупки. Его нужно отличать от возврата денег: компенсация доставки может не сопровождаться возвратом товара, а принятый товар может ожидать финансового расчёта. Для правильной CRM-логики важны оба процесса.

Разберём контракт данных и управленческий расчёт. Это модель для оценки клиентской экономики; бухгалтерские правила и налоговый учёт компания согласует отдельно.

Привяжите возврат к позиции исходного заказа

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

Shopify в объекте RefundLineItem связывает возврат с исходной позицией и отдельно передаёт количество, суммы и сведения о возврате товара в запас. Это пример подходящей детализации, а не универсальная готовая модель прибыли.

Если возврат ещё только запрошен, не стоит автоматически считать его завершённым. Для сценария рекомендаций можно временно ограничить предложение, а финансовую сумму менять по согласованному состоянию операции.

Сохраните состав исходной цены

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

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

Группа данныхМинимальное содержаниеКакую ошибку предотвращает
Связь с продажейOrder ID и ID позицииВычитание из чужой покупки
ОперацияID, состояние, времяПовторный учёт и преждевременное списание
КоличествоВозвращено и осталосьНеверное пополнение запасов клиента
ДеньгиФактическая сумма и валютаВозврат по текущей цене вместо исходной
Товар и затратыВосстановленная стоимость, невозмещаемые расходыЗавышение вклада после возврата

Считайте вклад с учётом невозвращённых расходов

Вклад заказа в этой статье — учитываемая выручка после скидок и завершённых возвратов минус согласованные переменные расходы. К ним могут относиться себестоимость оставшихся у клиента товаров, невосстановленная стоимость возврата, платёжные комиссии и логистика.

Нельзя считать, что при возврате пропорционально исчезли все расходы. Эквайринг может быть невозмещаемым, доставка уже выполнена, а возвращённый товар может оказаться непригодным для продажи. Конкретный состав затрат берут из данных бизнеса.

Управленческая модель должна показывать и восстановленную стоимость товара, если он принят обратно в пригодном состоянии. Иначе получится двойное ухудшение: выручку вычли, а всю себестоимость оставили как безвозвратную потерю.

Условный расчёт одного заказа

Клиент купил два товара. После распределения скидки на первый приходится 3 000 рублей выручки и 1 800 рублей себестоимости, на второй — 2 000 и 1 100 рублей. Иные переменные расходы заказа составили 350 рублей. Все суммы условные, без НДС; постоянные расходы исключены.

Первоначальный вклад равен 5 000 − 2 900 − 350 = 1 750 рублей. Клиент полностью возвращает второй товар и получает 2 000 рублей. Товар пригоден для продажи, поэтому его стоимость 1 100 рублей восстанавливается в запасе по условиям примера. Дополнительная обработка возврата стоит 200 рублей, а исходные 350 рублей не возмещаются.

После возврата вклад составляет 3 000 − 1 800 − 350 − 200 = 650 рублей. Уменьшение равно 1 100 рублей. Если товар нельзя вернуть в пригодный запас и вся его стоимость теряется, итог будет другим: 3 000 − 2 900 − 350 − 200 = −450 рублей.

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

Пересчитайте сценарии и отчёты отдельно

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

Для отчётности задайте правило поздних изменений. Можно показывать результат по дате операции и отдельно пересчитывать вклад исходной когорты заказов. Главное — не смешивать две политики незаметно и сохранять дату актуальности отчёта.

В эксперименте возвраты учитываются одинаково для теста и контроля в согласованное окно. Более раннее закрытие одной группы создаст несопоставимость даже при безошибочной передаче сумм.

Различайте сумму операции и накопительный итог

Один источник сообщает «по заказу всего возвращено 2 000 рублей», другой — «новый возврат составил 500 рублей». Если оба сообщения прибавлять к общей сумме, результат будет неверным. В контракте необходимо указать, передаётся отдельная операция или текущее накопленное состояние.

Для операции сохраняют refund ID и применяют её один раз. Для накопительного состояния используют версию и замену прежнего значения по согласованным правилам. После двух возвратов по 500 рублей итог должен быть 1 000, а не 1 500 из-за сложения промежуточных итогов 500 и 1 000.

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

Принимайте контракт на повторных операциях

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

Контрольная сверка должна сходиться по ID, количеству и деньгам. Дополнительно проверьте клиентские сообщения: правильная финансовая сумма ещё не означает, что CRM перестала рекомендовать уже возвращённый товар.

Источники

Shopify. RefundLineItem. GraphQL Admin API. Поля lineItem, quantity, priceSet и restockType. Версия 2026-07. Проверено 22.09.2026.