Написать в Telegram@Odilient
Электронная коммерция

Что на самом деле значит мультивалютность

Oybek Odil 22 мая 2026 г. 9 минут чтения

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

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

Когда нас просят о мультивалютности, имеют в виду одно из трёх:

  1. Показывать цену в валюте посетителя, а списывать в моей.
  2. Списывать в валюте посетителя, а зачислять на мой счёт.
  3. Устанавливать разные цены на разных рынках независимо друг от друга.

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

Разберитесь, что именно вы покупаете.

Уровень 1: пересчёт для отображения

Посетитель видит «≈ $42» рядом с ценой, которая на самом деле 520 000 сумов. Списываете вы в своей валюте. Остальное делает платёжная система.

Что для этого нужно: источник курсов, расписание обновления и слой форматирования, который знает, где у каждой валюты ставится символ и как пишутся дробные части. Дни, а не недели.

Что это даёт: снимает реальное трение. Цена в валюте, которую человек не может прикинуть в уме, — это цена, над которой ему приходится считать, и некоторые считать не станут.

Где всё идёт не так — а это та часть, которую обычно пропускают:

Говорите, что происходит. Если списание будет в другой валюте, чем показанная цифра, скажите об этом на странице — «списывается в сумах» рядом с пересчитанной суммой. Клиент, который видел $42, а в выписке нашёл $44,10, удивлён конвертацией своего же банка — но винить он будет вас.

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

Округляйте осознанно. Автоматическая конвертация выдаёт $41,83. Ни один продавец сам такую цифру не выбрал бы. Решите, округляете ли вы ради читаемости, и примите, что округление делает пересчёт приблизительным. Это нормально — если вы об этом сказали.

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

Когда это правильный ответ: вы продаёте на один рынок, вам платят в одной валюте, а часть посетителей мыслит в другой. Это большинство компаний.

Уровень 2: списание в валюте покупателя

С клиента списывают 42 USD, и именно эта сумма стоит в его выписке.

Это проект другого класса, потому что теперь валюта — часть транзакции, а не часть страницы.

Что для этого нужно:

Провайдер, который поддерживает эту валюту. Поддерживают не все и не для всех способов оплаты. Это первое ограничение, и зачастую именно оно решающее. В Knigopoisk — магазине, который продаёт сразу в нескольких валютных зонах, — при оформлении заказа предлагаются только те провайдеры, которые поддерживают выбранную клиентом валюту, из набора, покрывающего USD, EUR и RUB через карты, рублёвые способы и криптовалюту. Это не приятная мелочь: показать человеку способ оплаты, который не сможет провести платёж в его валюте, — это тупик, замаскированный под выбор.

Решение о том, что такое цена. $42 — это пересчёт вашей настоящей цены, который меняется вслед за курсом, или цена, которую вы установили в долларах? Если это пересчёт, ваши долларовые цены меняются без чьего-либо решения — постоянных клиентов это настораживает, а на сайтах сравнения цен выглядит неловко. Именно поэтому большинство зрелых магазинов в итоге приходят к уровню 3.

Возвраты. Вы списали 42 USD при одном курсе. Возврат делаете через шесть недель, при другом. Вы возвращаете 42 USD или исходную сумму в своей валюте? Оба варианта можно обосновать. Но вашим правилом может быть только один, и он должен быть прописан на странице условий возврата до того, как клиент спросит.

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

Честная оговорка про объём работ: именно здесь «поддержка мультивалютности» перестаёт быть галочкой. Наши проекты интернет-магазинов стоят от $499 и занимают от одной до пяти недель, и в тарифе для интернет-магазинов мультивалютность указана среди возможностей, — но какой именно уровень входит в объём, должно быть названо в письменном расчёте, а не подразумеваться. Уровень 1 — рутина. Уровень 2 меняет работу с платежами, сценарий возврата и отчётность.

Уровень 3: цены под каждый рынок

Здесь валюты — не пересчёт друг друга. Вы берёте 199 000 сумов на одном рынке и $29 на другом, потому что это правильные цены для этих рынков, и вывести одну из другой никто не должен.

Это прежде всего коммерческое решение. Софту нужно просто перестать ему мешать.

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

Когда это правильно: действительно разная покупательная способность, разные конкуренты, разное налогообложение или разная стоимость обслуживания. Если вы продаёте в Узбекистан и в Западную Европу, одна пересчитанная цена почти наверняка неверна на одном из этих рынков.

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

Храните деньги правильно с первого дня

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

Храните каждую сумму вместе с её валютой, целым числом в минимальных единицах.

Здесь две части, и обе важны.

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

Целым числом в минимальных единицах. Храните 4200 центов, а не 42,00. Десятичная арифметика на числах с плавающей точкой даёт мелкие ошибки, которые накапливаются и всплывают в самом неудачном месте: итог, который расходится на один цент, возврат, который не совпадает со списанием, сверка, которая не сходится. Целые числа в минимальных единицах убирают весь этот класс проблем.

Две сложности, о которых стоит знать, прежде чем кто-то заверит вас, что всё просто. Не у каждой валюты два знака после запятой: у некоторых их нет вовсе, а у нескольких — три, так что «умножить на 100» — не универсальное правило. И количество знаков после запятой — свойство самой валюты, что ещё раз объясняет, почему валюта должна путешествовать вместе с суммой, а не подразумеваться приложением.

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

Валюта — это не локализация

Три разные вещи часто сваливают в одну кучу, а оценивать их нужно по отдельности:

Валюта — какое число и в каких единицах. Язык — какие слова. Региональное форматирование — десятичные разделители, разделители разрядов, форматы дат, порядок имени и фамилии.

Вам может понадобиться что-то одно без остального. Магазин на одном языке может работать с тремя валютами. Трёхъязычный сайт может принимать оплату в одной.

Bronjoy работает на русском, узбекском и английском, и у нас действует постоянное правило: английский текст, просочившийся на русскую или узбекскую страницу, считается багом — вся лексика каталога берётся из одного общего словаря, а не переводится там, где используется. Эта дисциплина касается языка, а не денег, и в объёме работ это отдельная строка.

Форматирование — мелочь, но если о нём забыть, ущерб непропорционально велик. Цена, выведенная как 1,299.00 для читателя, который пишет 1 299,00, выглядит как иностранный документ, а в худшем случае читается как другое число.

Как понять, какой уровень нужен вам

Четыре вопроса.

  1. Вы хотите получать оплату в другой валюте или просто быть понятными в ней? Если только быть понятными — это уровень 1. На нём и остановитесь.
  2. Поддерживают ли ваши платёжные провайдеры валюты, в которых вы будете списывать, для тех способов оплаты, которыми пользуются ваши клиенты? Если нет — вот это и есть проект, и он идёт раньше работы с валютами. См. статью «Способ оплаты, которого у вас нет».
  3. Ваша цена на каждом рынке должна быть пересчётом или решением? Решение — это уровень 3, и это задача ценообразования, а не разработки.
  4. Что возвращается при возврате? Если вы не можете ответить одним предложением, вы не готовы к уровню 2.

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

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

Расскажите, что вам нужно. В ответ вы получите фиксированную цену и дату сдачи — бесплатно и без обязательств продолжать.

Частые вопросы

Можно начать с уровня 1 и перейти выше потом?

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

Определять валюту посетителя автоматически?

Определяйте, но давайте её поменять, и сделайте переключатель легко находимым. Автоматическое определение часто ошибается: путешественники, VPN, экспаты, все, кто покупает подарок кому-то за границей. Определение как вариант по умолчанию полезно; определение как жёсткое правило — это клиент, который не может купить.

Какой курс использовать?

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

Влияет ли мультивалютность на налоги?

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

Переключатель валют вредит конверсии?

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

Читайте также

Ещё в рубрике «Электронная коммерция»

Давайте обсудим

Читать об этом — самое простое

Если вы и правда решаете такую задачу, расскажите о ней. Мы скажем, что бы сделали, сколько это стоит и сколько займёт времени.

Бесплатная консультация Без обязательств Быстрый ответ