Учёт расходов в нескольких валютах
— Telegram-бот Kopilka
Обычные трекеры переводят всё в одну «базовую» валюту по биржевому курсу и теряют реальную картину. Kopilka хранит каждую валюту самостоятельно: доллары, евро, лари, USDT — отдельные сущности с собственными балансами, без принудительной конвертации в базовую валюту.
В каких ситуациях нужен мульти-валютный учёт
Учёт в нескольких валютах — это не экзотика, а норма для миллионов русскоязычных пользователей, чья финансовая жизнь распределена между странами и кошельками. Базовая валюта в обычных трекерах работает, когда ты живёшь и зарабатываешь в одной стране. Как только появляется второй источник дохода или второе место жительства, такая модель перестаёт отражать реальное состояние финансов.
Типовые сценарии, где нужен мульти-валютный учёт расходов:
- Фрилансеры и удалённые сотрудники. Доход приходит в долларах или евро на зарубежный счёт, бытовые траты — в рублях, лирах или сербских динарах. Конвертировать всё в одну валюту по курсу ЦБ — значит потерять информацию о реальной подушке в USD.
- Релоканты и экспаты. Жизнь делится на «там осталось» и «здесь зарабатываю». Старые счета в рублях, новые карты в местной валюте, перевод сбережений через P2P в USDT. Каждая валюта — со своей динамикой, и общий бюджет в долларах их не описывает.
- Путешественники и цифровые кочевники. За год меняешь пять стран: Грузия, Турция, Таиланд, Вьетнам, Индонезия. В каждом кошельке остаётся «хвост» местной валюты, который нельзя обнулить через ЦБ-курс — это реальные деньги, которые ты потратишь в следующий заезд или обменяешь.
- Держатели крипты. USDT в кошельке — это не «эквивалент в долларах по биржевому курсу», а самостоятельный актив со своими комиссиями и переводами. БТК — тем более.
- Семьи в разных странах. Часть семьи в России, часть — за границей, общий бюджет на родителей или детей переводится в третьей валюте. Учёт расходов в разных валютах одной семьи требует видимости балансов в каждой из них.
Во всех этих кейсах подход «одна базовая валюта плюс автоматическая конвертация» не помогает планировать бюджет — он его искажает.
Почему «базовая валюта» — это плохая идея
Большинство приложений учёта финансов — Spendee, Money Lover, CoinKeeper, MoneyWiz — устроены вокруг одной базовой валюты. Ты выбираешь её при регистрации, и каждая транзакция в другой валюте автоматически пересчитывается по биржевому курсу на дату операции. На первый взгляд удобно: видишь общий бюджет «в долларах» одной строкой. На практике эта модель ломается в трёх местах.
Первое: ты теряешь реальные балансы. Если у тебя 3 000 USD на одном счёте, 800 EUR — на другом и 5 000 USDT в кошельке, общая цифра «9 500 USD по курсу» ничего не говорит о том, сколько ты можешь потратить в каждой валюте без обмена. А обмен — это всегда комиссии и потеря на спреде.
Второе: курсовая разница превращается в мусор. Записал расход 1 000 GEL в день, когда лари стоил 0.37 USD. Через месяц курс стал 0.40. Если приложение пересчитывает старые операции — у тебя «уплывают» прошлые итоги. Если фиксирует курс на дату — ты не понимаешь, почему «потратил столько же, а в долларах больше». В обоих случаях цифра в базовой валюте перестаёт быть надёжной.
Третье: для крипты это просто неверно. Биржевой курс USDT к USD условно равен единице, но реальный P2P-курс в твоей стране может быть 0.95 или 1.05 — в зависимости от спроса. Если ты обменял 500 USDT на 500 USD по биржевому — это нерелевантная цифра. Реальный обмен прошёл совсем по другому курсу, и именно его нужно сохранить.
Бюджет в долларах и евро для релоканта — это не сумма с двух счетов по курсу, а две независимых строки: «на счёте USD столько-то, на счёте EUR столько-то». Принудительная конвертация прячет эту информацию за усреднённой цифрой.
Как Kopilka хранит валюты независимо
В Kopilka каждая валюта — самостоятельная сущность. У тебя нет одной «базовой валюты», в которую пересчитывается всё остальное. Вместо этого бот ведёт параллельные балансы: USD-кошелёк, EUR-кошелёк, GEL-кошелёк, USDT-кошелёк — столько, сколько ты реально используешь.
Когда ты пишешь «200 GEL продукты», бот добавляет расход в грузинский лари. Сумма не пересчитывается в доллары, евро или рубли. В отчёте за месяц ты увидишь отдельную строку «GEL: −1 240 лари за продукты», а не «расходов на еду по курсу X». Если в этом же месяце ты заработал «2 000 USD», то в отчёте две независимых картины: USD-доходы и GEL-расходы. Они не аннигилируют друг друга.
Основная валюта в Kopilka выполняет только одну функцию: если ты пишешь сумму без указания валюты («кофе 250»), бот подставит твою основную валюту по умолчанию. Это всё. Никакой принудительной конвертации в базовую валюту нет — основная валюта это лишь подсказка для парсинга сообщений без явного кода.
Такая модель отражает реальность: у тебя действительно есть отдельные кошельки в разных валютах, и финансовое планирование должно видеть их по отдельности. Учёт в нескольких валютах в Kopilka — это не настройка и не «премиум-фича», а базовая модель данных.
Распознавание валюты из контекста сообщения
Мульти-валютный учёт расходов работает только тогда, когда указать валюту в сообщении проще, чем выбрать её из списка. В Kopilka бот распознаёт валюту из самого текста — без отдельных полей и кнопок.
Парсер понимает три формы указания валюты:
- ISO-код: «200 GEL», «50 USD», «1500 RUB», «300 USDT», «0.01 BTC». Самая надёжная форма — бот не ошибётся даже в редких валютах.
- Разговорное название: «200 лари», «50 баксов», «1500 рублей», «300 тэдеров», «20 евро», «100 динар». Бот знает десятки разговорных форм для основных валют русскоязычных стран и стран релокации.
- Символ валюты: «$50», «€20», «₽1500», «฿200» — тоже распознаются корректно.
Если ты пишешь «200» без указания валюты, бот подставит твою основную. Это удобно для типовых ежедневных трат в стране, где ты живёшь: чай, метро, кофе пишешь одним числом, валюта подразумевается. Как только ты переключаешься на расход в другой валюте — добавляешь код или слово.
Бот также учитывает контекст диалога. Если в одном сообщении несколько операций («200 лари продукты, 50 кофе»), вторая операция использует ту же валюту, что и первая, — это естественный язык, и парсер следует ему.
Конвертации и обмены: реальный P2P-курс
Самое слабое место конкурентов — обмен валют. В обычных трекерах ты записываешь обмен как два события: расход в одной валюте и доход в другой. Курс берётся с биржи на дату операции. На практике твой реальный курс обмена сильно отличается от биржевого: P2P-сделка в Тбилиси или Стамбуле проходит со спредом 1–3%, обменник в аэропорту — с 5–10%, обмен криптой между друзьями — вообще по договорённости.
Реальный P2P-курс — единственно правильный для учёта. Если ты обменял 500 USDT на 15 миллионов VND, биржевой курс USDT/VND покажет тебе «должно быть 12.5 миллионов» — а у тебя на руках реальные 15. Эта разница — твоя выгода или потеря, и она должна быть видна в учёте.
В Kopilka обмен пишется одним сообщением: «обмен 500 USDT на 15 млн VND» или «поменял 1000 USD на 27000 TRY». Бот распознаёт обе стороны операции и сохраняет именно те суммы, которые ты назвал. Никакого пересчёта в биржевой курс. В отчёте обмен видится как минус 500 USDT и плюс 15 000 000 VND с указанием реального курса 1 USDT = 30 000 VND.
Если ты не указал курс явно — бот может подставить ориентировочный биржевой как подсказку для проверки, но в учёт идут именно твои суммы. Это критично для P2P-обменов крипты, где разница между биржевым и реальным курсом — несколько процентов, превращающихся за год в существенные деньги.
Какие валюты поддерживаются
Kopilka не ограничивает список валют — бот принимает любые трёхбуквенные ISO-коды и десятки разговорных названий. Среди распространённых:
- Фиат для русскоязычных пользователей и релокантов: USD (доллар США), EUR (евро), RUB (российский рубль), TRY (турецкая лира), GEL (грузинский лари), THB (тайский бат), AED (дирхам ОАЭ), VND (вьетнамский донг), IDR (индонезийская рупия), RSD (сербский динар), AMD (армянский драм), KZT (казахстанский тенге), UZS (узбекский сум), MNT (монгольский тугрик), AZN (азербайджанский манат).
- Криптовалюты: USDT, BTC, ETH, TON, BNB и другие токены — записываются как обычные валюты, без подключения к биржам и кошелькам. Учёт криптовалюты в Kopilka работает по той же модели, что и фиат.
- Любые другие ISO-коды: CNY, JPY, KRW, INR, PLN, CZK, GBP, CHF, MXN и так далее. Если ты пишешь незнакомый боту код, он спросит подтверждение и запомнит.
Telegram-бот для учёта финансов не должен ограничивать тебя списком валют — финансовая жизнь современного русскоязычного пользователя не умещается в десяток самых ходовых. Kopilka сознательно сделана так, чтобы добавлять новую валюту в учёт было дешевле, чем менять трекер.
Сравнение с банковскими приложениями и Excel-таблицами
Часто слышим: «Зачем отдельный бот, если в Revolut/Wise уже виден мульти-валютный баланс?» — или: «У меня всё в Google Sheets». Эти инструменты решают другие задачи.
Revolut, Wise, банковские приложения показывают балансы на своих счетах. Если ты держишь деньги в нескольких банках, в крипте, в наличных по двум странам — ни один банк не видит общую картину. К тому же эти приложения не учитывают расходы вне своих счетов: оплатил наличными в Бангкоке — для Revolut этой операции не существует. Мульти-валютный учёт расходов требует ручного ввода всех операций в одном месте, и банк для этого не подходит.
Google Sheets и Excel теоретически могут всё, но требуют ручного ввода в таблицу, отдельных формул для конвертаций, сводных отчётов. На практике большинство трат не доходит до таблицы — путь «открыть приложение → найти файл → найти строку → ввести» съедает столько времени, что половина операций теряется. Telegram-бот для учёта финансов даёт ту же функциональность, но запись идёт в чате одним сообщением.
Kopilka не заменяет банк — она дополняет его, собирая все валюты, все кошельки, все источники в одном месте. И в отличие от Excel, не требует поддерживать собственную инфраструктуру формул и сводных таблиц.
Мульти-валютный учёт расходов — частые вопросы
Да. Команда /settings → «основная валюта» меняет ту, что используется по умолчанию для сообщений без явного кода. Прошлые записи остаются в исходных валютах — пересчёта в новую базу не происходит. Это удобно при переезде: жил в Грузии с GEL как основной, переехал в Сербию — переключаешь на RSD.
Если ты явно указал курс в сообщении («обменял 500 USDT на 15 миллионов VND»), бот сохраняет именно его — это твой реальный P2P-курс. Если курс не указан, бот подставит ориентировочный биржевой как подсказку, но в учёте операция фиксируется по тем суммам, которые ты назвал.
Да. Бот принимает любые трёхбуквенные ISO-коды: UZS, IDR, MNT, KZT, AMD и десятки других. Распознаёт и разговорные формы — «рупии», «сумы», «тенге». Если бот не понял редкое название, напиши его кодом — после первого использования он запомнит твой вариант.
Ничего особенного — пишешь как обычно. Доход «зарплата 2000 USD» и расход «продукты 1500 RUB» останутся в своих валютах. Бот не конвертирует их друг в друга и не «съедает» доход расходом — у тебя честный баланс по каждой валюте отдельно.
Да. Команда /balance показывает остатки по всем валютам списком: USD, EUR, GEL, USDT — каждая своей строкой с реальной суммой. Команда /report за период даёт разбивку доходов и расходов по валютам без принудительного пересчёта в одну.
Бот не считает «прибыль или убыток от переоценки» автоматически — каждая валюта существует независимо и не пересчитывается задним числом. Если хочешь зафиксировать курсовую разницу, оформи это как обмен между валютами с реальным курсом — бот сохранит обе стороны операции.
Cointry хранит одну базовую валюту и пересчитывает всё в неё по биржевому курсу — реальные балансы по валютам не видны. Kopilka держит каждую валюту отдельно: USD, EUR, USDT, GEL — каждая со своей суммой, своими доходами и расходами. Конвертации идут по твоему P2P-курсу, а не по бирже.
Другие сценарии Kopilka
Настрой бюджет в нескольких валютах за 30 секунд
Бот спросит основную валюту — остальные сами появятся, как только напишешь первую трату в них.