Если расходы из рекламных кабинетов приходят в USD, EUR и RUB, сначала выберите правило даты курса, а затем сохраняйте рядом исходную сумму, валюту, масштаб и курс. Пересчёт только итоговой суммы в конце месяца нельзя воспроизвести: непонятно, какой курс применён к каждой строке и почему CPL изменился.
Для управленческого отчёта удобно переводить ежедневный расход по официальному курсу НБРБ на дату этой строки. Формула одна: amount × Cur_OfficialRate ÷ Cur_Scale. Если банк или платёжный документ уже показывает фактически списанные BYN, храните эту сумму отдельно: официальный курс не заменяет курс платёжной системы, комиссию и бухгалтерское правило.
Зафиксируйте правило до расчёта
Есть несколько допустимых дат: день расхода, день списания, день документа или последний день отчётного периода. Они отвечают на разные вопросы. Дневной курс помогает сопоставить рекламную активность с датой отчёта. Фактическое списание в BYN нужно для сверки денег. Курс на конец месяца подходит для отдельной управленческой оценки, если команда заранее так договорилась.
Запишите правило одной фразой, например: «Для дневного маркетингового отчёта расход пересчитываем по официальному курсу НБРБ на дату расхода; факт оплаты сверяем по выписке и не заменяем им дневную строку». Тогда два аналитика получат одинаковый результат.
Не смешивайте правила внутри одной колонки. Если половина строк пересчитана по дню расхода, а половина — по дню оплаты, сумма выглядит точной, но сравнение кампаний перестаёт быть воспроизводимым.
Учитывайте масштаб валюты
В ответе НБРБ есть два поля, нужных для пересчёта:
Cur_OfficialRate— официальное значение в BYN;Cur_Scale— количество единиц иностранной валюты, для которого указано значение.
Для USD и EUR 8 октября 2026 года масштаб равен 1. Для RUB в тот же день курс 3,5871 указан за 100 рублей. Поэтому 12 500 RUB нельзя умножать на 3,5871 напрямую: результат нужно разделить на 100.
Учебный расчёт использует официальные курсы НБРБ на 8 октября 2026 года; расходы кампаний условные.
В примере получаются три строки:
| Исходный расход | Курс и масштаб | Расход в BYN |
|---|---|---|
| 125,40 USD | 3,0667 за 1 USD | 384,56 |
| 89,90 EUR | 3,4338 за 1 EUR | 308,70 |
| 12 500 RUB | 3,5871 за 100 RUB | 448,39 |
| Итого | 1 141,65 |
Каждая строка округляется до двух знаков только после деления на масштаб. Если округлять курс до меньшего числа знаков или сначала считать месячный итог в валюте, а затем переводить его одной датой, результат может отличаться.
Сохраните исходные данные рядом с результатом
Минимальная таблица для проверки содержит:
| Поле | Зачем оно нужно |
|---|---|
date | дата расхода по выбранному правилу |
platform и campaign | источник строки и объект анализа |
amount | исходная сумма без пересчёта |
currency | исходная валюта |
rate_date | дата применённого курса |
cur_scale | масштаб валюты из ответа НБРБ |
official_rate_byn | сохранённый официальный курс |
amount_byn | результат пересчёта |
Одного amount_byn недостаточно. Через месяц официальный источник всё ещё позволит получить исторический курс, но без rate_date, currency и cur_scale нельзя доказать, как появилась конкретная сумма.
Сохраняйте и сам ответ источника либо его идентификатор загрузки. Это защищает расчёт от тихого изменения логики импорта. В нашем примере JSON НБРБ лежит рядом с CSV расходов, а скрипт читает его как неизменяемый вход.
Воспроизведите пересчёт на учебном файле
В комплекте есть условный ad-spend.csv, сохранённый ответ НБРБ за 8 октября и скрипт на стандартной библиотеке Python. Команда:
python3 convert_spend.py \
ad-spend.csv \
nbrb-rates-2026-10-08.json \
ad-spend-byn.csvвозвращает:
rows=3 total_byn=1141.65Скрипт использует Decimal, делит официальный курс на масштаб, округляет каждую строку до 0,01 BYN и добавляет все поля проверки. Повторный запуск на тех же входных файлах даёт CSV с тем же SHA-256: 3d79ea8459cb5ce5634876c0d1f867e6f2cb28f34407f9e1b4dd746920962641.
Для рабочего отчёта добавьте проверки до расчёта:
- валюта заполнена и входит в разрешённый список;
- для каждой даты найден курс;
Cur_Scaleбольше нуля;- исходная сумма не была уже переведена платформой;
- сумма строк в исходной валюте совпадает с выгрузкой кабинета;
- после пересчёта не появилось потерянных или продублированных строк.
Отделите официальный курс от фактического списания
Рекламная система может показать 125,40 USD, НБРБ — официальный курс на дату, а банк — другую сумму в BYN. Это не обязательно ошибка: на платёж влияют дата проведения, курс банка или платёжной системы и комиссия.
Храните два показателя:
spend_byn_report— расход по принятому курсу для сопоставимого маркетингового отчёта;charged_byn— фактически списанная сумма по выписке или платёжному документу.
Разница между ними — отдельная строка сверки. Не распределяйте её по кампаниям без зафиксированного правила. Иначе CPL начнёт зависеть от случайного способа разнести комиссию и курсовую разницу.
Если кабинет уже экспортирует расходы в BYN, проверьте его метод пересчёта и дату. Не переводите такую колонку повторно. Для отчёта в нескольких валютах полезно сохранять исходную сумму даже тогда, когда платформа отдаёт готовый эквивалент.
Проверьте итог перед расчётом CPL
После пересчёта сначала сравните расходы по платформе, кампании и дате. Только затем объединяйте их с лидами и считайте стоимость результата. Если при соединении таблиц расходы выросли, причина может быть в размножении строк, а не в валюте; это разобрано в статье о задвоении расходов после объединения таблиц.
Формула CPL остаётся простой: расход в BYN делится на число лидов с тем же определением, периодом и правилом атрибуции. Сам расчёт и границы показателя есть в ответе «Как рассчитать стоимость лида». Для решения о допустимом CPL добавьте маржу и конверсию в продажу по материалу о юнит-экономике рекламы.
Ограничения
Официальный курс НБРБ подходит как прозрачное правило управленческого пересчёта, но сам по себе не подтверждает сумму оплаты и не заменяет требования бухгалтерского или налогового учёта. Для финансовой отчётности используйте правило организации и первичные документы.
Учебный пример показывает механику одной даты. Если отчёт охватывает месяц, получайте курс для каждой даты расхода либо используйте другое заранее утверждённое правило. Не подставляйте ближайший найденный курс молча: выходные, отсутствие валюты в ответе и ошибка загрузки должны оставаться видимыми состояниями.
Источники
Материал подготовлен редакцией WiseLab с помощью AI. Источники и фактические утверждения проверены при подготовке.
Что думаете?
Загружаем комментарии…