Перейти к основному содержимому

Beancount FAQ: Вопросы о бухгалтерии в виде открытого текста

Ответы на вопросы, которые люди действительно задают о бухгалтерии в виде открытого текста с Beancount — импорт банковских транзакций, дебет и кредит, мультивалютность, стоимость приобретения, бухгалтерские книги для бизнеса и сравнение Beancount с Ledger и hledger.

Вопросы ниже пришли из сообщества любителей бухгалтерии в простом тексте — Reddit, Hacker News, рассылки Beancount — и касаются того, как эта практика устроена. По вопросам о самом сервисе Beancount.io (цены, тарифы, поддержка, управление аккаунтом) смотрите FAQ по продукту.

С чего начать

Насколько много мне нужно знать о бухгалтерии, чтобы начать?

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

Начните с Введения в Beancount, держите Глоссарий открытым на вкладке и добавьте свои первые транзакции в Быстром старте.

Где в Beancount дебет и кредит?

Beancount вообще не использует слова «дебет» и «кредит» — он использует числа со знаком, которые должны суммироваться в ноль. Деньги, покидающие счёт, отрицательны, деньги, поступающие на счёт, положительны, а транзакция действительна, когда её проводки взаимно сокращаются. Это та же двойная запись, которую ведут бухгалтеры, но без терминологии, сбивающей с толку новичков.

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

Почему транзакции должны балансироваться до нуля?

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

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

Как мне настроить начальные остатки?

Запишите транзакцию на вашу начальную дату, которая переносит текущий баланс каждого счёта из Equity:Opening-Balances, затем добавьте утверждение balance, чтобы зафиксировать его. Вам не нужно восстанавливать свою финансовую историю — выберите начальную дату, возьмите балансы такими, какие они есть в этот день, и двигайтесь дальше оттуда.

Быстрый старт содержит полный пример начальных остатков.

Насколько детальным должен быть план счетов?

Начните с крупных категорий и делите только тогда, когда более дробное деление изменило бы решение. Примерно двадцати счетов вполне достаточно для начала; если вы ловите себя на вопросе, стоит ли в «Expenses:Food» отделять продукты от ресторанов, полезная проверка — стали бы вы вообще делать что-то иначе, зная это деление.

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

Почему открытый текст?

Зачем использовать бухгалтерию в виде открытого текста вместо электронной таблицы?

Таблица не может сказать вам, когда она неверна. Бухгалтерия в простом тексте обеспечивает двойную запись, так что каждая транзакция самопроверяющаяся, а файл остаётся доступным для grep, diff и скриптов, пока существуют текстовые файлы. Вы также получаете настоящую историю версий: git log по вашему реестру показывает точно, что изменилось, когда и почему.

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

Не является ли двойная запись излишеством для личных финансов?

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

Полезный способ думать об этом: двойная запись — это контрольная сумма для ваших финансов. Смотрите Введение для более длинного обоснования.

Нужно ли мне пользоваться командной строкой?

Нет. Fava — это полноценный веб-интерфейс поверх того же текстового файла — балансовые отчёты, отчёты о прибылях и убытках, графики и ввод транзакций — а Beancount.io запускает его для вас с вашим реестром в облаке. Текстовый файл остаётся источником истины, так что вы можете использовать веб-интерфейс в повседневной работе и спускаться в терминал только когда захотите. Если вы всё же предпочитаете терминал, командная строка bea создаёт, проверяет и составляет отчёты по тому же файлу — смотрите Быстрый старт по CLI.

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

Ввод данных

Как мне загрузить банковские транзакции в Beancount?

Большинство людей импортируют 80–95% транзакций и вводят остальное вручную. В примерном порядке убывания надёжности: прямая выгрузка OFX/QFX из банка, экспорт CSV плюс правила импорта, подключение агрегатора и — только в крайнем случае — выписка PDF, сконвертированная в CSV. Банковская синхронизация в Beancount.io берёт на себя подключение и категоризацию за вас.

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

Для разового файла два бесплатных браузерных конвертера выполняют механическую часть, ничего не загружая: CSV в Beancount для экспорта из таблиц и OFX и QIF в Beancount для загрузок .ofx, .qfx, .qbo и .qif, которые банки предлагают, когда вообще не дают CSV.

Как избежать двойного импорта одной и той же транзакции?

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

OFX упрощает это по сравнению с CSV: каждая транзакция несёт FITID, который банк сохраняет стабильным между загрузками, поэтому импортёр может сопоставлять по идентичности, а не по догадке — конвертер OFX сохраняет его как поле метаданных id:.

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

Должен ли я давать кому-то третьему доступ к моему банковскому логину?

Нет — и для многих людей это вообще причина использовать бухгалтерию в простом тексте. Вы можете сами выгрузить OFX или CSV из своего банка и никогда не передавать учётные данные агрегатору. Если вы предпочитаете автоматическую синхронизацию, Beancount.io использует одобренный банками агрегатор, а не хранит ваш пароль от онлайн-банкинга.

Читайте подробности на странице безопасности.

Как мне сверить мою книгу с банковской выпиской?

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

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

Валюты и инвестиции

Как Beancount работает с несколькими валютами?

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

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

Как поддерживать цены оценки в актуальном состоянии?

Используйте Живые цены для поддерживаемых активов в размещённом реестре Beancount.io или загружайте котировки в локальные файлы цен для upstream Beancount и Fava. Средство выбора позволяет выбрать валюту котировки и скопировать управляемые include. Совместимые версии bea также поддерживают управляемые include; руководство по настройке ссылается на их инструкции.

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

Как отслеживать стоимость приобретения и прирост капитала?

Записывайте покупки со стоимостью в фигурных скобках — 10 AAPL {150.00 USD} — и Beancount отслеживает каждую партию отдельно. Когда вы продаёте, вы указываете, какую партию уменьшаете, и прирост капитала получается из арифметики автоматически, а не вычисляется вручную.

Beancount поддерживает методы учёта STRICT, FIFO, LIFO и NONE. Учёт по средней стоимости разбирается парсером, но не полностью реализован — если ваша налоговая юрисдикция требует средней стоимости, планируйте отслеживать её с помощью плагина или явных партий. Смотрите Управление запасами.

Как записывать криптовалютные сделки и их стоимость приобретения?

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

Смотрите Отслеживание криптовалютного портфеля и готовые шаблоны для крипты.

Бизнес и фриланс

Можно ли использовать Beancount для малого бизнеса, или он только для личных финансов?

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

Смотрите Отраслевые настройки и Открытый реестр — витрину реальных книг компаний.

Стоит ли вести отдельные книги для личных и бизнес-финансов?

Держите их отдельно — либо как разные деревья счетов верхнего уровня в одном файле, либо как два файла, объединённых с помощью include. Смешивание делает отчёт о прибылях и убытках бизнеса бессмысленным и усложняет подготовку налогов, а разделение ничего не стоит на старте.

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

Как учитывать счета-фактуры и дебиторскую задолженность?

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

Смотрите Шаблоны финансовой отчётности для отчётной стороны, Отраслевые настройки для проработанных примеров и Понимание дебиторской задолженности для концепций.

Как передать мои книги бухгалтеру во время налоговой отчетности?

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

Смотрите Руководства по подготовке налогов, Шаблоны финансовой отчётности и Запросы с SQL, чтобы вытащить именно те числа, которые они просят.

Инструменты и экосистема

Чем отличаются Beancount, Ledger и hledger?

Все три — системы двойной записи в простом тексте с похожими форматами файлов. Ledger — оригинал и самый снисходительный парсер; hledger — переписывание на Haskell, известное дружелюбными правилами импорта CSV и документацией; Beancount имеет самый строгий парсер и самую сильную поддержку инвестиций, партий и нескольких валют, плюс API плагинов на Python.

Строгость — это настоящий компромисс: Beancount отказывается загружать файл, который считает неоднозначным, что ловит ошибки рано ценой большей придирчивости. Смотрите Beancount против Ledger CLI и Beancount против hledger.

Поддерживает ли Beancount бюджет по конвертам, как YNAB?

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

Если бюджетирование по конвертам — главное, чего вы хотите, прочитайте Beancount против YNAB перед переключением. О том, что действительно работает сегодня, смотрите Бюджетирование в Beancount.

Можно ли прикреплять чеки к транзакциям?

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

Смотрите Возможности интерфейса.

Есть ли мобильное приложение?

Да — Beancount.io публикует приложения для iOS и Android для просмотра вашего реестра и ввода транзакций на ходу — именно тот пробел, который оставляет открытым большинство настроек с простым текстом.

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

Насколько большой может быть книга, прежде чем она замедлится?

Десятилетие личных финансов — это несколько мегабайт, и он загружается значительно меньше чем за секунду. Beancount пересчитывает балансы из полной истории транзакций при каждой загрузке, и это остаётся быстрым вплоть до сотен тысяч записей. За этим пределом ограничение — удобство редактирования и diff, а не время загрузки: разделение по годам с помощью include сохраняет отдельные файлы небольшими, но включённые файлы всё равно образуют один объединённый реестр, который Beancount загружает и пересчитывает целиком, так что это удобство организации файлов, а не ускорение или способ вести отдельные книги.

Смотрите Поддержку нескольких файлов, чтобы узнать, как разделить растущий реестр.

Все еще не нашли ответ?

Справочный центр индексирует всю документацию, а Глоссарий определяет любой термин выше, который оказался незнакомым.

Источник: https://beancount.io/ru/docs/faq