Альтернатива Mint на своём сервере в 2026 году: бюджетные данные под вашим контролем
Ищете замену Mint для собственного сервера? Сравните компромиссы, безопасно сопоставьте старые транзакции и создайте систему бюджетирования, которую можно проверить и перенести.
На актуальной странице Mint компания Intuit направляет пользователей, которым нужны знакомые функции Mint, в Credit Karma. Это один из вариантов с готовым облачным сервисом. Но он не отвечает на вопрос многих технически подкованных бывших пользователей Mint: где теперь хранить бюджетные данные за все эти годы и как перенести их, случайно не исказив остатки на счетах?
Expense Budget Tracker — достойная альтернатива Mint на своём сервере, если владение данными, проверяемый журнал операций и импорт с обязательной проверкой для вас важнее автоматического подключения банков. Это не полная копия Mint. Здесь нет фонового подключения к банкам и синхронизации с Mint. Вы сами добавляете транзакции или импортируете ранее сохранённые данные, а затем проверяете результат.
В этом компромиссе и заключается весь выбор. Если счета должны обновляться без вашего участия, выбирайте продукт, построенный вокруг агрегации банковских данных. Если вам нужна финансовая система на собственной базе Postgres, которую можно проверять построчно и автоматизировать на своих условиях, этот вариант подходит лучше.
![]()
Коротко: контроль или удобство без вашего участия
| Что важнее всего | Что выбрать | Почему |
|---|---|---|
| Автоматическое подключение банков с минимальным ручным вводом | Облачный агрегатор | Expense Budget Tracker не синхронизируется с банками в фоновом режиме |
| Локальная или самостоятельно размещённая база данных | Expense Budget Tracker | Конфигурация Docker Compose запускает веб-приложение и Postgres в инфраструктуре под вашим контролем |
| Готовое приложение без необходимости обслуживать сервер | Облачный Expense Budget Tracker | Облачное приложение даёт доступ к журналу операций и функциям бюджетирования без локальной настройки |
| Остатки и переводы, которые можно проверить | Expense Budget Tracker | Остатки на счетах рассчитываются как суммы записей журнала, а переводы явно сохраняются как движения по журналу |
| Воссоздание всех прежних функций Mint одним нажатием | Ни один вариант нельзя считать подходящим заранее | Проверьте сценарии, которыми вы действительно пользовались, прежде чем переносить всю историю |
Поэтому альтернатива Mint с открытым исходным кодом подходит не всем. Размещение на своём сервере даёт контроль, но обновления, резервные копии, безопасность и восстановление тоже становятся вашей задачей. Руководство по самостоятельному размещению начинается с Docker Compose и также описывает развёртывание в AWS для продакшена.
Как устроена целевая система
Безопасная миграция начинается с модели целевой системы, а не со столбцов CSV.
Expense Budget Tracker хранит финансовые данные в Postgres. Представление accounts формируется из записей журнала, а не хранится как отдельный список остатков. В каждой записи указаны счёт, сумма со знаком, исходная валюта и один из трёх типов: income, spend или transfer.
Отсюда важное следствие: текущий остаток нельзя просто переписать, когда цифры на панели выглядят неверно. Он складывается из всех операций в журнале. Ошибочный импорт поэтому остаётся видимым, и его можно исправить. Но и пропущенный начальный остаток ниоткуда не появится.
Бюджет — отдельный слой. В строках базового плана хранится плановая сумма для каждого месяца и категории. Последующие корректировки записываются отдельно и суммируются при расчёте итогового плана. Фактические доходы и расходы по-прежнему берутся из журнала. Сначала перенесите транзакции, а будущий бюджет составьте заново уже после этого — так две задачи не смешаются.
При работе с несколькими валютами каждая запись сохраняет свою исходную валюту. Для рабочего пространства выбирается одна валюта отчётности, а при формировании отчётов применяются ежедневные валютные курсы. Сначала сверяйте каждый счёт в его исходной валюте. Сумма на панели после конвертации — это отчётный показатель, а не исходный остаток по данным банка.
Сопоставьте старые данные до импорта
Если вы сохранили экспорт Mint, работайте с копией, а оригинал не изменяйте. Если экспорта нет, используйте выписки по банковским счетам и картам за те периоды, которые можете подтвердить. Не рассчитывайте, что экспорт из Mint всё ещё можно получить. И не импортируйте одновременно данные из сохранённого экспорта и выписок за одни и те же даты.
Зафиксируйте правила сопоставления до того, как агент или скрипт получит доступ на запись:
| Понятие в источнике | Куда переносить в Expense Budget Tracker | Какое решение принять |
|---|---|---|
| Счёт Mint | Стабильный account_id, используемый записями журнала |
Выберите один ID и исходную валюту для каждого реального счёта; не переименовывайте его посреди импорта |
| Транзакция | Одна строка ledger_entries |
Нормализуйте дату, сумму со знаком, валюту и тип income или spend |
| Продавец или получатель платежа | counterparty |
Сохраните исходный текст до применения правил очистки |
| Примечание | note |
Сохраните полезный контекст; не превращайте примечания в категории |
| Категория и подкатегория | category |
Сохраните прежнюю структуру или задайте одну явную таблицу сопоставления |
| Перевод между вашими счетами | Две строки журнала с общим event_id |
Используйте kind = transfer, отрицательную сумму на исходном счёте и положительную на счёте назначения |
| ID транзакции в источнике | external_id или манифест импорта |
Сохраните стабильный идентификатор, чтобы при повторном запуске найти ту же строку источника |
| Старая плановая сумма бюджета | Базовый бюджетный план, воссозданный после сверки | Переносите только тот план, которым всё ещё пользуетесь; не пытайтесь восстановить старые бюджеты по итоговым суммам транзакций |
| Последующее изменение плана | Корректировка бюджета | Сохраните исходный базовый план и запишите изменение отдельно |
Во время миграции хочется заодно навести порядок в категориях. Но так одна контролируемая задача быстро превращается в несколько. Для пилотного импорта сохраните старые категории. Объединяйте и переименовывайте их только после того, как остатки сойдутся.
Определите, что означает «начальный остаток»
Это решение нужно принять до выбора диапазона импорта, поскольку счета и остатки формируются из записей журнала.
Импортировать всю историю
Если сохранённые данные охватывают весь срок существования счёта и история полная, импортируйте весь журнал. Итоговый остаток должен получиться из этих записей без синтетической начальной строки.
Это самый аккуратный и обычно самый медленный вариант. Длинный экспорт может содержать дубликаты, переименованные счета, удалённые категории и пары переводов, которые больше не выглядят связанными.
Начать с чёткой даты перехода
Для большинства миграций лучше взять в качестве пилота один закрытый период выписки. Выберите дату начала этого периода и зафиксируйте остаток по исходным данным на его границе.
В Expense Budget Tracker нет отдельного поля или типа записи журнала для начального остатка. Если трекер должен показывать реальный остаток с первого дня, можно добавить непосредственно перед первой импортированной транзакцией синтетическую запись с понятной пометкой. Положительный остаток по активу можно записать как положительную операцию income, а отрицательный остаток по кредитной карте или обязательству — как отрицательную операцию spend.
Такая строка всё равно попадёт в доходы или расходы во всех отчётах, охватывающих её дату. Поместите её непосредственно перед датой перехода, используйте категорию вроде Opening balance, а в примечании укажите исходную выписку и дату. Обычный анализ доходов и расходов начинайте уже после неё. Метка позволяет проверить происхождение связующей записи, но не исключает её из отчётов автоматически. Если вам нужна чистая отчётность и за период, включающий эту более раннюю дату, безопаснее импортировать всю историю.
Отслеживать только новые операции
Можно пропустить исторические остатки и начать записывать только новые транзакции. Тогда остатки на счетах в трекере будут неполными. Этот вариант подходит для учёта по категориям с выбранной даты, но не годится, если представление Accounts должно совпадать с текущим остатком в банке.
Поэтапная миграция из Mint без искажения остатков
Практичная единица миграции — один счёт и один закрытый период выписки. Такой объём достаточно мал для ручной проверки и достаточно велик, чтобы выявить возвраты, дубликаты и ошибки в знаках сумм. Если с этого счёта были переводы на другой счёт, который вы тоже отслеживаете, возьмите выписку связанного счёта за тот же период или выберите более простой пилотный вариант. Полностью проверить внутренний перевод только по одной стороне невозможно.
1. Сохраните исходные данные и составьте перечень
Храните сохранённый файл Mint, выписки и таблицу сопоставления категорий отдельно от рабочей копии для импорта. Для каждого счёта укажите:
- стабильный ID в целевой системе
- его исходную валюту
- первую и последнюю доступные даты транзакций
- начальный и конечный остатки за пилотный период
- есть ли на нём перевод на другой счёт, который тоже входит в миграцию
Архивным и закрытым счетам тоже нужны стабильные ID, если вы переносите их историю.
2. Создайте чистое рабочее пространство и выберите валюту отчётности
Для проверки миграции используйте временное локальное развёртывание Docker или отдельное рабочее пространство в облачном сервисе. Задайте валюту отчётности, но ведите сверку каждого счёта в его исходной валюте.
Поскольку представление Accounts формируется из записей журнала, счёт появляется после добавления первой записи. В зависимости от выбранного выше варианта первой строкой может быть начальный остаток с указанием его источника или первая реальная транзакция.
3. Задайте одно правило поиска дубликатов
Если у транзакции сохранился исходный ID, используйте его как external_id. Уникальность этого поля не обеспечивается на уровне базы данных, поэтому при повторном запуске перед записью всё равно проверяйте, нет ли в целевой системе строки с тем же счётом и исходным ID. Если в источнике нет ID, создайте детерминированный ключ импорта из стабильных полей: например, ID счёта, даты проводки, суммы со знаком, валюты и неизменённого описания из источника. Храните этот ключ в манифесте импорта и перед каждым пакетом проверяйте строки-кандидаты по данным целевой системы.
Не используйте один лишь event_id в качестве ключа дубликата для переводов. Обе стороны одного перевода намеренно используют общий event ID.
Если сохранённый экспорт Mint и банковская выписка охватывают одни и те же даты, выберите только один источник для записи. Второй используйте лишь для проверки количества строк и остатков.
4. Подготовьте пробный прогон без записи
Перед вставкой данных разберите первый пакет и представьте его в виде таблицы для проверки. Включите в неё:
- идентификатор строки источника
- ID счёта в целевой системе
- дату и время проводки
- сумму со знаком в исходной валюте и саму валюту
- предполагаемый тип
- предполагаемую категорию
- контрагента и примечание
- связанный счёт перевода и обе суммы со знаками, если применимо
Десять обычных строк и несколько сложных полезнее первой попытки сразу на тысяче строк. Если в периоде есть возврат, перевод и несколько операций у одного продавца, включите их в выборку.
Остановитесь на этом этапе, если знак суммы или выбор счёта неоднозначны. Догадка на этом этапе позже превратится в корректировку остатка.
5. Вставьте один небольшой пакет
Запишите только проверенные строки пилотного счёта и подтверждённые парные записи его внутренних переводов. Сразу проверьте их в представлении транзакций. Ищите перепутанные знаки, даты, сдвинутые из-за часового пояса, потерянные копейки, неверные валюты и описания, которые после слишком агрессивной очистки уже нельзя сопоставить с источником.
Для перевода между двумя своими счетами создайте две записи с одинаковым event ID. Перевод 500 USD с текущего счёта на сберегательный — это операция transfer на −500 USD по текущему счёту и операция transfer на +500 USD по сберегательному. Это не расход с одного счёта и доход на другой. Если перевод проходит между разными валютами, используйте фактически проведённую сумму и исходную валюту каждой стороны, а не рассчитывайте одну сторону по другой.
С оплатой кредитной карты действует то же правило. Сами покупки по карте — это расходы. Последующее погашение — перевод с текущего счёта на счёт кредитной карты. Если учесть его как ещё один расход, расходы за месяц удвоятся.
6. Проведите сверку перед импортом следующего пакета
Для каждого счёта, затронутого пакетом, подтвердите в его исходной валюте следующее равенство:
начальный остаток + проведённые операции с учётом знака = конечный остаток
Сравнивайте результат с выпиской за закрытый период, а не с доступным остатком, в который включены ещё не проведённые операции. Затем проверьте:
- количество строк в источнике и импортированных строк
- каждого кандидата в дубликаты
- каждую пару переводов и её стороны на обоих счетах
- возвраты и сторнирования
- точный конечный остаток
Если остаток не сходится, остановитесь. Найдите пропущенную или дублированную строку либо строку с неверным знаком. Не добавляйте необъяснимую корректировку лишь для того, чтобы цифры сошлись. В руководстве по сверке бюджета есть более подробный список проверок для каждого счёта.
7. Расширяйте диапазон по одному периоду за раз
Когда один период сойдётся, добавьте следующий для того же счёта. Прежде чем двигаться дальше, добавьте и сверьте обе стороны каждого внутреннего перевода за этот период. Только потом переходите к другому счёту.
Это звучит медленнее, чем одна большая загрузка. Но это гораздо быстрее, чем искать один дублированный перевод среди нескольких лет операций по разным счетам.
Практический порядок работы с выписками описан в статье «Как импортировать банковские выписки в трекер расходов». Он одинаков и для сохранённого CSV из Mint, и для банковского экспорта: разобрать, сопоставить, проверить, записать и сверить.
8. Восстановите бюджет после проверки журнала
Не создавайте аккуратный бюджет поверх несверенных транзакций.
Когда фактические данные сойдутся, воссоздайте базовый план на текущий и будущие месяцы. Последующие изменения оформляйте как корректировки бюджета, не переписывая исходный план и причину, по которой он появился. Затем сравните фактические доходы и расходы с планом и проверьте данные в валюте отчётности.
В семье, где используется несколько валют, счёт может идеально сходиться в исходной валюте, а его значение в валюте отчётности — меняться вместе с ежедневным курсом. Это нормально. Не переписывайте исходную сумму ради неизменного результата после конвертации.
MCP или Agent API для импорта?
У облачного продукта теперь два отдельных интерфейса для программного доступа. Они решают похожие задачи, но используют разные способы аутентификации и учётные данные.
Используйте облачный MCP-коннектор, если клиент его поддерживает
Подключите удалённый MCP-клиент с поддержкой OAuth к https://mcp.expense-budget-tracker.com/mcp. Обязательная область доступа expenses:read позволяет находить рабочие пространства, просматривать схему и выполнять запросы. Необязательную область expenses:write запрашивайте только тогда, когда клиенту действительно нужно изменять данные.
С точки зрения безопасности это удобное разделение прав: сначала изучите схему и существующие строки в режиме чтения, а затем разрешите запись проверенного пакета. В руководстве по MCP-коннектору описаны подключение и порядок работы с инструментами.
Используйте Agent API для агентов в терминале или прямых HTTP-запросов
Начните с GET https://api.expense-budget-tracker.com/v1/. Ответ на этот запрос проведёт агента через подтверждение электронной почты, выбор рабочего пространства, просмотр схемы и работу с ограниченными SQL-эндпоинтами. Для аутентифицированных запросов используется ключ ApiKey с длительным сроком действия.
Руководство по настройке Agent API — самый короткий путь для начала работы, а справочник API описывает эндпоинты чтения и записи. Попросите агента до записи показать предлагаемое сопоставление и точное содержимое пакета, а после неё — запросить добавленные строки и остатки.
OAuth-токены MCP и ключи Agent API — разные учётные данные. Они не взаимозаменяемы. Не вставляйте ни те ни другие в заметки к статье, промпты или исходные файлы.
Базовая локальная конфигурация Docker Compose запускает Postgres, миграции, веб-приложение, сервис аутентификации и воркер валютных курсов. Локальные сервисы MCP и Agent API в неё не входят. Указанные выше URL относятся к облачному сервису. Если вы хотите самостоятельно управлять полным стеком, описанное в документации развёртывание в AWS для продакшена включает соответствующую инфраструктуру API и MCP.
Кому подходит эта альтернатива Mint с открытым исходным кодом
Expense Budget Tracker хорошо подходит, если вам нужны:
- Postgres как единый источник данных
- облачный вариант или собственное развёртывание
- остатки, рассчитанные по движениям в проверяемом журнале
- явно отражённые доходы, расходы и переводы
- записи в исходных валютах и ежедневная конвертация для отчётов
- бюджет с базовыми планами и отслеживаемыми корректировками
- контролируемый доступ для скриптов и ИИ-агентов
Он плохо подходит, если главное требование — автоматическое подключение банков, если вы хотите перенести всё одной автоматической загрузкой без своего участия или если не хотите заниматься обслуживанием и резервным копированием сервиса на своём сервере.
Размещение на своём сервере само по себе не делает все подключённые инструменты приватными. Если вы передаёте выписку внешнему ИИ-клиенту или разрешаете ему читать финансовые данные, и клиент, и поставщик модели получают доступ к данным на одном из этапов обработки. Изучите их политики и выдавайте только минимально необходимый доступ.
Если вы пока сравниваете не продукты, а подходы, статья «Приложение для бюджета без подключения к банкам» объясняет компромисс контролируемого импорта. Разработчикам пригодится и более общее руководство по трекеру бюджета с открытым исходным кодом на своём сервере. Если ваша старая система была ближе к настольной бухгалтерской программе, в руководстве по альтернативе Quicken применяется тот же тест с миграцией одного счёта.
Часто задаваемые вопросы
Expense Budget Tracker — прямая замена Mint?
Нет. Он поддерживает счета, журнал операций, бюджеты, переводы, мультивалютную отчётность, облачное приложение и размещение на своём сервере. Но в нём нет фоновой агрегации банковских данных, как в Mint, и действующего подключения к Mint.
Можно ли импортировать экспорт из Mint?
Импорта из Mint одним нажатием нет. Если вы сохранили экспорт, скрипт или подключённый агент может сопоставить его строки с журналом. Проверьте и сверьте небольшой пакет, прежде чем расширять импорт. Если сохранённого экспорта нет, используйте выписки по банковским счетам и картам за ту часть истории, которую можете независимо подтвердить.
Можно ли запустить его только на собственном компьютере?
Да. Конфигурация Docker Compose для самостоятельного размещения локально запускает основное приложение вместе с Postgres. При этом вы сами отвечаете за резервные копии, обновления, контроль доступа и восстановление.
Нужно ли переносить данные за все годы?
Только если история полная и по-прежнему полезна. Переход с выбранной даты и с зафиксированными начальными остатками может быть безопаснее импорта частичных данных за много лет. Выберите эту границу заранее, а старый архив исходных данных оставьте без изменений.
Как провести самый безопасный первый тест?
Возьмите один счёт, одну выписку за закрытый период и один основной исходный файл. Если в этом периоде есть внутренний перевод, добавьте выписку связанного счёта или выберите счёт без таких переводов. Импортируйте небольшой проверенный пакет и подтвердите конечный остаток каждого затронутого счёта. Если всё сошлось, расширяйте импорт постепенно.
Контролируйте не только сервер, но и миграцию
Локальная альтернатива Mint.com полезна лишь тогда, когда после переноса журналу можно доверять. Запуск Postgres на собственном сервере решает вопрос владения данными. Но он не устраняет дублированные строки, разорванные пары переводов, пропущенные начальные остатки и риск того, что агент запишет данные не в то рабочее пространство.
С этими проблемами можно справиться, если задать миграции чёткие границы: сохранить исходные данные, сопоставить их с целевой моделью, импортировать по одному счёту, сверять данные в исходной валюте и останавливаться каждый раз, когда числа не сходятся.
Если именно этого вы ждёте от альтернативы Mint в 2026 году, откройте облачное приложение и проведите тест без самостоятельной настройки сервера или воспользуйтесь руководством по самостоятельному размещению. Исходный код можно изучить до того, как вы доверите системе свои данные.