Перейти к контенту

90 постов с тегом "Accounting"

Посмотреть все теги

Корректировочные проводки в Beancount: Ваша ежемесячная настройка

· 5 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

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

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

2022-01-25-adjusting-entries-in-beancount-your-month-end-tune-up


Почему важны корректировочные проводки

Внесение этих корректировок является основой надежного бухгалтерского учета. Они гарантируют точность и надежность вашей финансовой отчетности.

  • Точность начислений: Корректировочные проводки являются движущей силой метода начисления. Они переносят доходы и расходы в тот период, когда они были фактически заработаны или понесены, независимо от того, когда произошла оплата. Это соответствует основным принципам признания выручки и соответствия, которые составляют основу современного бухгалтерского учета (AccountingCoach.com).

  • Надежные KPI: Ключевые показатели эффективности хороши настолько, насколько хороши данные, на которых они основаны. Такие показатели, как валовая прибыль, чистая прибыль и прогнозы денежных потоков, отражают реальность только после того, как отложенные, начисленные и оценочные суммы будут правильно проведены (Corporate Finance Institute).

  • Четкий аудиторский след: Явные корректировки в конце месяца создают четкую запись вашей финансовой логики. Это помогает аудиторам (и вам в будущем) легко отследить, что изменилось и почему, укрепляя доверие к вашим цифрам (Accountingverse).


Шесть распространенных категорий (с примерами кода Beancount)

Вот шесть наиболее распространенных типов корректировочных проводок с примерами того, как их записать в вашем журнале Beancount. Обратите внимание на использование метаданных, таких как adj:"accrual", чтобы эти записи было легко найти и проанализировать позже.

1. Начисленный доход

Это относится к доходу, который вы заработали, но еще не выставили счет или не получили оплату.

2025-07-31 * "Консалтинг — июльские часы"
Assets:AccountsReceivable 12000.00 USD
Income:Consulting
; adj:"accrual" period:"Jul-25"

2. Начисленные расходы

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

2025-07-31 * "Юрист — июльский гонорар"
Expenses:Legal 2500.00 USD
Liabilities:AccruedPayables
; adj:"accrual"

3. Отложенный (незаработанный) доход

Это относится к случаям, когда клиент платит вам авансом. Вы признаете часть этого дохода по мере его получения с течением времени.

2025-07-31 * "Годовая предоплата SaaS (признать 1/12)"
Liabilities:UnearnedRevenue 833.33 USD
Income:SaaS
; adj:"deferral"

4. Предоплаченные (отложенные) расходы

Когда вы оплачиваете расходы заранее (например, годовой страховой полис), вы списываете часть этой суммы каждый месяц.

2025-07-31 * "Страховка — 1 мес. расходов из предоплаты"
Expenses:Insurance 400.00 USD
Assets:PrepaidInsurance
; adj:"deferral"

5. Амортизация

Эта запись распределяет стоимость долгосрочного актива (например, компьютера или автомобиля) в течение срока его полезного использования.

2025-07-31 * "Амортизация Mac Studio"
Expenses:Depreciation 1250.00 USD
Assets:Computers:AccumDepr
; asset_id:"MAC-03" adj:"estimate"

6. Резерв по сомнительным долгам

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

2025-07-31 * "Резерв по сомнительным долгам (2% от ДЗ)"
Expenses:BadDebt 700.00 USD
Assets:AllowanceForBadDebt
; basis:"A/R" rate:0.02 adj:"estimate"

Повторяемый рабочий процесс

Чтобы обеспечить эффективность и безошибочность закрытия месяца, примите последовательный рабочий процесс.

  • Используйте отдельный файл. Храните все корректировки за период в одном месте, например, adjustments-2025-07.bean. В вашем основном файле журнала используйте директиву include, чтобы импортировать его последним. Это гарантирует, что корректировки будут применены непосредственно перед формированием окончательных отчетов.

  • Стандартизируйте свои метаданные. Всегда используйте согласованные ключи и значения метаданных, такие как adj:"accrual|deferral|estimate" и period:"Jul-25". Это упрощает запрос и просмотр определенных типов корректировок.

  • Выполните предварительную проверку. Перед фиксацией изменений в Git запустите bean-check в файле корректировок, чтобы выявить любые опечатки или несбалансированные проводки.

  • Выполните однострочную проверку работоспособности. Этот запрос подтверждает, что все ваши корректировки за период сбалансированы, давая вам уверенность в том, что вы не внесли ошибок.

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('period') = 'Jul-25' GROUP BY account"

Советы по быстрому устранению неполадок 🤔

  • Растет ли ваш баланс Liabilities:UnearnedRevenue? Пересмотрите этапы выполнения вашего контракта. Возможно, вы признаете доход слишком медленно по сравнению с выполняемой вами работой.

  • Ваш баланс Assets:PrepaidInsurance отрицательный? Вы, вероятно, списываете его быстрее, чем позволяет график актива. Перепроверьте свой график амортизации.

  • Ухудшается ли ваш период оборачиваемости дебиторской задолженности (DSO) после начислений? Ваш начисленный доход может маскировать основные проблемы со сбором платежей. Объедините этот KPI с отчетом о старении дебиторской задолженности, чтобы выявить клиентов, которые просрочили платежи, прежде чем это станет проблемой с денежными потоками.


Заключительные мысли

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

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

Удачного балансирования!

Революционизация управления личными финансами с Beancount.io

· 4 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

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

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

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

2022-01-08-instant-access-to-your-beancount-cloud-ledger-anytime-anywhere

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

Для серьезной работы пользователи Beancount по-прежнему могут использовать свои компьютеры для редактирования или просмотра реестра через браузер, посещая https://beancount.io или синхронизируясь с Dropbox. Это сохраняет гибкость инструментов командной строки, не теряя при этом кросс-устройственного доступа к облачному решению.

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

Майк Трифт, бэкенд-инженер, работающий над этим продуктом, говорит:

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

Чжи Ли, инженер-программист из Facebook, говорит нам:

Я перенес все свои файлы Beancount на Beancount.io, и теперь это прекрасно работает для моего повседневного использования. Я заплатил за Pro-функции, такие как автоматическое резервное копирование данных, но чувствую, что вы могли бы сделать еще больше для улучшения сервиса.

Вы можете зарегистрироваться сейчас на https://beancount.io/sign-up/ или загрузить iOS или Android приложение. Мы упростили регистрацию, чтобы собрать от вас как можно меньше информации для запуска сервиса. Затем вы получите предустановленный пустой реестр, готовый для немедленного добавления записи.

Часто задаваемые вопросы

Будет ли Beancount.io продавать мои данные реестра третьим лицам?

  • Нет. Мы обязуемся обеспечивать безопасность и конфиденциальность ваших данных и никогда не будем продавать ваши данные реестра.

Мои данные защищены?

  • Да. Мы защищаем вашу электронную почту и реестр с помощью AES256, ваш пароль с помощью BCrypt, а ваши сетевые запросы с помощью SSL.

Мои данные реестра зашифрованы сквозным шифрованием?

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

Это надежный сервис, которому я могу доверять в ближайшие несколько лет?

  • Да. Мы изначально запустили Beancount.io 4 июля 2019 года, и уже более двух лет мы безопасно и надежно эксплуатируем сервис. Поэтому у нас нет причин не продолжать работу сервиса в будущем.

Могу ли я запрашивать новые функции и спонсировать проект?

  • Да. Пожалуйста, не стесняйтесь обращаться к нам по адресу https://t.me/beancount для получения любой обратной связи и поддержите нас, став Pro-пользователем по адресу https://beancount.io/pricing.

Руководство по миграции из QuickBooks в Beancount

· 29 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Этап 1: Экспорт данных из QuickBooks

Миграция данных за пять лет начинается с выгрузки всех записей из QuickBooks в удобном для использования формате. QuickBooks Desktop и QuickBooks Online имеют разные опции экспорта:

2021-12-01-из-quickbooks-в-простой-текст-руководство-по-миграции

1.1 QuickBooks Desktop – Варианты экспорта

IIF (Intuit Interchange Format): QuickBooks Desktop может экспортировать списки (такие как план счетов, клиенты, поставщики) в текстовые файлы формата .IIF. В QuickBooks Desktop перейдите в Файл → Утилиты → Экспорт → Списки в IIF (File → Utilities → Export → Lists to IIF), затем выберите нужные списки (например, План счетов, Клиенты, Поставщики). В результате вы получите текстовый файл, содержащий названия счетов, их типы и данные из списков. IIF — это проприетарный, но текстовый формат, который относительно легко разобрать. Используйте его, чтобы получить ваш План счетов и списки контактов для дальнейшего использования в Beancount.

Главная книга/Журнал через CSV: Для экспорта транзакций QuickBooks Desktop не предоставляет полного экспорта в один клик, но можно использовать отчёты. Рекомендуемый метод — экспорт Главного журнала (всех транзакций) за желаемый период. В QuickBooks Desktop откройте Отчёты → Бухгалтер и налоги → Журнал (Reports → Accountant & Taxes → Journal), установите Даты с самой ранней транзакции до сегодняшнего дня и нажмите Экспорт → Excel. Сохраните результат как CSV, предварительно удалив все заголовки/подвалы отчёта и пустые столбцы. Убедитесь, что числовые данные чистые: содержат центы (например, 3.00, а не 3), без лишних кавычек, символов валют или двойных минусов в CSV. CSV-файл должен иметь столбцы, такие как Дата, № транз., Имя, Счёт, Заметка, Дебет, Кредит, Остаток (или один столбец "Сумма" в зависимости от формата отчёта).

Совет: QuickBooks Desktop 2015+ также может экспортировать транзакции через диалоговое окно Найти (Find). Используйте Правка → Найти → Расширенный поиск (Edit → Find → Advanced), установите диапазон дат на пять лет, а затем экспортируйте результаты в CSV. Предупреждение: Некоторые версии ограничивают экспорт 32 768 строками. Если у вас очень большой объём данных, экспортируйте по годам (или меньшими частями), чтобы избежать усечения, а затем объедините их. Убедитесь, что диапазоны дат не пересекаются, чтобы избежать дубликатов.

Другие форматы (QBO/QFX/QIF): QuickBooks Desktop может импортировать банковские транзакции через файлы .QBO (Web Connect) или .QFX/.OFX, но для экспорта из QuickBooks они обычно не используются. Если ваша цель — извлечь только банковские транзакции, они у вас уже могут быть в формате QBO/OFX от вашего банка. Однако для полного экспорта главной книги придерживайтесь IIF и CSV. QuickBooks Desktop не может напрямую экспортировать в QIF (Quicken Interchange Format) без сторонних инструментов. Если вы найдёте способ получить QIF, учтите, что некоторые инструменты для учёта (старые версии Ledger 2.x) могли читать QIF, но в нашем процессе лучше работать с CSV.

1.2 QuickBooks Online – Варианты экспорта

Встроенный экспорт в Excel/CSV: QuickBooks Online (QBO) предоставляет инструмент Экспорт данных. Перейдите в Настройки ⚙ → Инструменты → Экспорт данных (Settings ⚙ → Tools → Export Data). В диалоговом окне экспорта используйте вкладку Отчёты для выбора данных (например, Главная книга или Список транзакций) и вкладку Списки для списков (план счетов и т.д.), выберите Все даты и экспортируйте в Excel. QuickBooks Online загрузит ZIP-архив, содержащий несколько файлов Excel для выбранных отчётов и списков (например, Отчёт о прибылях и убытках, Балансовый отчёт, Главная книга, Клиенты, Поставщики, План счетов и т.д.). Затем вы можете преобразовать эти файлы Excel в CSV для обработки.

Отчёт о детализации транзакций: Если стандартный экспорт QBO не включает единый файл Главной книги, вы можете вручную создать детализированный отчёт:

  1. Перейдите в Отчёты и найдите Детализация транзакций по счетам (Transaction Detail by Account) или Главная книга (General Ledger) в некоторых версиях QBO.
  2. Установите Отчётный период на полный пятилетний диапазон.
  3. В опциях отчёта установите Группировать по = Нет (чтобы отобразить отдельные транзакции без промежуточных итогов).
  4. Настройте столбцы, чтобы включить как минимум: Дату, Тип транзакции, Номер, Имя (Получатель/Клиент), Заметка/Описание, Счёт, Дебет, Кредит (или один столбец "Сумма") и Остаток. Включите класс или местоположение, если они используются.
  5. Сформируйте отчёт, а затем Экспортируйте в Excel.

Это даст детализированную главную книгу всех транзакций. Сохраните её как CSV. Каждая строка будет представлять одну проводку транзакции. Позже вам нужно будет сгруппировать строки по транзакциям для конвертации.

План счетов и другие списки: QuickBooks Online может экспортировать план счетов через Учёт → План счетов → Пакетные действия → Экспорт в Excel (Accounting → Chart of Accounts → Batch Actions → Export to Excel). Сделайте это, чтобы получить названия и типы счетов. Аналогично, экспортируйте Клиентов, Поставщиков и т.д., если хотите перенести имена для метаданных.

QuickBooks Online API (Необязательно): Для программного подхода Intuit предоставляет REST API для данных QBO. Продвинутые пользователи могут создать приложение QuickBooks Online (требуется аккаунт разработчика) и использовать API для получения данных в формате JSON. Например, вы можете запросить эндпоинт Account для плана счетов и эндпоинты отчётов JournalEntry или GeneralLedger для транзакций. Существуют Python SDK, такие как python-quickbooks, которые являются обёртками над API. Однако использование API включает в себя аутентификацию по OAuth и является излишним для одноразовой миграции, если вы не предпочитаете автоматизацию. В большинстве случаев ручной экспорт в CSV/Excel проще и менее подвержен ошибкам.


Этап 2: Трансформация и очистка данных

Когда у вас есть данные из QuickBooks в формате CSV (и/или IIF), следующий шаг — преобразовать их в текстовый формат главной книги Beancount. Это включает разбор экспортированных файлов, сопоставление счетов QuickBooks с планом счетов Beancount и форматирование транзакций в синтаксисе Beancount.

2.1 Разбор экспортов из QuickBooks с помощью Python

Использование Python обеспечит точность и воспроизводимость трансформации. Мы наметим скрипты для двух ключевых задач: импорт плана счетов и конвертация транзакций.

Импорт и сопоставление счетов: Крайне важно настроить ваши счета в Beancount перед добавлением транзакций. Счета QuickBooks имеют типы (Банк, Дебиторская задолженность, Расходы и т.д.), которые мы сопоставим с иерархией Beancount (Активы, Обязательства, Доходы, Расходы и т.д.). Например, мы можем использовать такое сопоставление:

# Сопоставление типа счёта QuickBooks с корневой категорией Beancount
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # Дебиторская задолженность как актив
'AP': 'Liabilities', # Кредиторская задолженность как обязательство
'FIXASSET': 'Assets',
'OASSET': 'Assets', # Прочие активы
'OCASSET': 'Assets', # Прочие оборотные активы
'LTLIAB': 'Liabilities', # Долгосрочные обязательства
'OCLIAB': 'Liabilities', # Прочие текущие обязательства
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # Прочие доходы
'EXEXP': 'Expenses', # Прочие расходы
}

Используя экспорт IIF из QuickBooks Desktop или CSV-файл со списком счетов из QBO, мы получаем имя и тип каждого счёта. Затем:

  • Создайте имена счетов Beancount: QuickBooks иногда использует двоеточия (:) в именах счетов для обозначения субсчетов (например, "Current Assets:Checking"). Beancount использует ту же нотацию с двоеточием для иерархии. Часто можно использовать имя напрямую. Если имена счетов QuickBooks не начинаются с категории, добавьте сопоставленную категорию в начало. Например, счёт QuickBooks типа BANK с названием "Checking" станет Assets:Checking в Beancount. Счёт EXP (расход) "Meals" станет Expenses:Meals и т.д.

  • Обеспечьте корректность именования: Удалите или замените любые символы, которые могут сбить Beancount с толку. QuickBooks допускает символы вроде & или / в именах. Разумно вырезать или заменить специальные символы (например, заменить & на and, удалить слэши или пробелы). Также убедитесь, что все имена счетов уникальны после трансформации – QuickBooks мог позволять одинаковые имена субсчетов у разных родительских счетов, что нормально, но в Beancount полное имя (с родителями) должно быть уникальным. При необходимости переименуйте или добавьте квалификатор для их различения.

  • Выведите открытия счетов: В Beancount каждый используемый счёт должен быть открыт с помощью директивы open. Вы можете выбрать дату до вашей первой транзакции (например, если вы мигрируете данные за 2019–2023 годы, используйте 2018-12-31 или даже более раннюю дату для всех открытий). Скрипт запишет строки вида: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD для каждого счёта (предполагая, что основная валюта — USD). Используйте соответствующую валюту для каждого счёта (см. заметки о мультивалютности ниже).

Конвертация транзакций: Основная задача — преобразовать экспорт транзакций QuickBooks (CSV) в записи Beancount. Каждая транзакция QuickBooks (счёт-фактура, счёт, чек, журнальная запись и т.д.) может иметь несколько проводок (строк), которые необходимо собрать в одну транзакцию Beancount.

Мы будем использовать CSV-ридер Python для итерации по экспортированным строкам и накопления проводок:

import csv
from collections import defaultdict

# Чтение всех строк из CSV-файла журнала QuickBooks
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# Группировка строк по транзакциям (предполагая, что 'Trans #' идентифицирует транзакции)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

Теперь transactions — это словарь, где каждый ключ — это ID/номер транзакции, а значение — список проводок для этой транзакции. Далее мы конвертируем каждую группу в формат Beancount:

def format_date(qb_date):
# Даты в QuickBooks могут быть в формате "12/31/2019"
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# Сортировка проводок по порядку строк, если необходимо (обычно они уже упорядочены)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# Заголовок транзакции
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # включаем номер ссылки, если доступен
output_lines.append(f" number: \"{first['Num']}\"")
# Цикл по каждой проводке/постингу
for split in splits:
acct_name = split['Account'].strip()
# Сопоставляем имя счёта QuickBooks со счётом Beancount (используя предыдущее сопоставление)
beancount_acct = account_map.get(acct_name, acct_name)
# Определяем сумму со знаком:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# Некоторые экспорты имеют один столбец Amount (отрицательный для кредитов)
amt_str = amount
else:
# Если отдельные столбцы Debit/Credit
amt_str = debit if debit else f"-{credit}"
# Для безопасности удаляем все запятые в числах
amt_str = amt_str.replace(",", "")
# Добавляем валюту
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# Заметка/описание для проводки
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# Конец транзакции – пустая строка
output_lines.append("")

Эта логика скрипта выполняет следующее:

  • Форматирует дату в YYYY-MM-DD для Beancount.

  • Использует получателя (Name) и заметку (Memo) для описания транзакции. Например: 2020-05-01 * "ACME Corp" "Оплата счёта-фактуры" (Если получателя нет, можно использовать Тип транзакции из QuickBooks или оставить кавычки пустыми).

  • Добавляет метаданные number, если есть номер ссылки (№ чека, № счёта-фактуры и т.д.).

  • Итерирует по каждой строке проводки:

    • Сопоставляет имя счёта QuickBooks со счётом Beancount, используя словарь account_map (заполненный на шаге с планом счетов).
    • Определяет сумму. В зависимости от вашего экспорта, у вас может быть один столбец Сумма (с положительными/отрицательными значениями) или отдельные столбцы Дебет и Кредит. Приведённый выше код обрабатывает оба случая. Он гарантирует, что кредиты представляются как отрицательные суммы для Beancount (так как в Beancount для каждой проводки используется одно число со знаком).
    • Прикрепляет валюту (предполагая USD, если не указан другой столбец с валютой).
    • Записывает строку проводки Beancount со счётом, суммой и комментарием с заметкой из строки. Например: Assets:Checking 500.00 USD ; Депозит Income:Sales -500.00 USD ; Депозит Это отражает депозит в $500 (с Доходов на Расчётный счёт).
  • После перечисления всех проводок пустая строка разделяет транзакции.

Обработка мультивалютности: Если ваши данные в QuickBooks включают несколько валют, указывайте код валюты в каждой проводке (как показано выше). Убедитесь, что счета в иностранных валютах открыты с этой валютой. Например, если у вас есть банковский счёт в EUR, вы должны вывести open Assets:Bank:Checking EUR, и транзакции на этом счёте будут использовать EUR. Beancount поддерживает мультивалютные главные книги и будет отслеживать неявные конвертации, но вам может понадобиться добавить записи о ценах для курсов обмена, если вы хотите конвертировать в базовую валюту в отчётах. Также рекомендуется объявить вашу основную операционную валюту вверху файла Beancount (например, option "operating_currency" "USD").

Запуск конвертации: Сохраните скрипт Python (например, как qb_to_beancount.py) и запустите его на ваших экспортированных файлах. Он должен создать файл .beancount, содержащий все счета и транзакции.

2.2 Обработка крайних случаев и очистка данных

Во время трансформации помните об этих распространённых подводных камнях и способах их решения:

  • Несоответствия в названиях счетов: В QuickBooks могут быть имена счетов, которые конфликтуют с иерархическими именами Beancount. Например, в QuickBooks могут быть два разных родительских счёта, у каждого из которых есть субсчёт с названием "Страхование". В Beancount Expenses:Insurance должно быть уникальным. Решите это, переименовав один из них (например, "Страхование-Автомобиль" против "Страхование-Здоровье") перед экспортом или сопоставьте их с уникальными счетами Beancount в вашем скрипте. Последовательные соглашения об именах (без специальных символов и с использованием иерархии) сэкономят вам головную боль. При необходимости используйте подход с файлом пересопоставления: ведите CSV или словарь "старое имя → новое имя Beancount" и применяйте его во время конвертации (наш пример кода использует account_map и мог бы загружать переопределения из файла).

  • Даты и форматы: Убедитесь, что все даты отформатированы последовательно. Приведённый выше скрипт нормализует M/D/Y в формат ISO. Также следите за проблемами с финансовым и календарным годом, если ваш пятилетний период пересекает конец года. Beancount не волнуют границы финансового года, но позже вы можете захотеть разделить файлы по годам для удобства.

  • Числовая точность: QuickBooks обрабатывает валюту с центами, поэтому работа в центах обычно подходит. Все суммы в идеале должны иметь два десятичных знака в CSV. Если какие-то суммы превратились в целые числа (без десятичной части) или содержат запятые/скобки (для отрицательных чисел), очистите их в скрипте (удалите запятые, преобразуйте (100.00) в -100.00 и т.д.). Экспорт в CSV, если он выполнен правильно (согласно инструкциям), должен был уже избежать этих проблем с форматированием.

  • Отрицательные суммы и знаки: Отчёты QuickBooks иногда показывают отрицательные числа как -100.00, (100.00) или даже --100.00 в некоторых экспортах в Excel. Шаг очистки должен справиться с этим. Убедитесь, что дебеты и кредиты каждой транзакции в сумме дают ноль. Beancount будет это проверять (если не сбалансировано, он выдаст ошибку при импорте).

  • Дубликаты транзакций: Если вам пришлось экспортировать транзакции частями (например, по годам или по счетам), будьте осторожны при их объединении, чтобы избежать пересечений. Проверьте, что первая транзакция года не является также последней из предыдущей партии и т.д. Легко случайно продублировать несколько транзакций на границах. Если вы подозреваете дубликаты, вы можете отсортировать итоговые записи Beancount по дате и поискать идентичные записи, или использовать уникальные теги транзакций Beancount для их отлова. Одна из стратегий — включить номера транзакций QuickBooks в метаданные (например, использовать Trans # или номер счёта-фактуры как тег txn или метаданные quickbooks_id), а затем убедиться в отсутствии дубликатов этих ID.

  • Несбалансированные проводки / Временные счета: В QuickBooks могут быть странные случаи, например, транзакция с дисбалансом, который QuickBooks автоматически скорректировал на счёт "Начальный капитал" или "Нераспределённая прибыль". Например, при настройке начальных остатков счетов QuickBooks часто проводит разницы на счёт Капитала. Они появятся в экспортированных транзакциях. Beancount потребует явной балансировки. Вам может понадобиться ввести счёт Капитала для начальных остатков (обычно Equity:Opening-Balances), чтобы отразить логику QuickBooks. Хорошей практикой является создание записи о начальных остатках в первый день вашей главной книги, которая устанавливает стартовые балансы всех счетов (см. Этап 5).

  • Крайние случаи с мультивалютностью: При использовании нескольких валют экспорт из QuickBooks может перечислять все суммы в домашней валюте или в их родной валюте. В идеале, получите данные в родной валюте для каждого счёта (отчёты QuickBooks Online обычно так и делают). В Beancount каждая проводка несёт в себе валюту. Если QuickBooks предоставил курсы обмена или конвертацию в домашнюю валюту, вы можете проигнорировать их и полагаться на записи о ценах в Beancount. Если QuickBooks не экспортировал курсы обмена, вы можете захотеть вручную добавить записи о ценах (например, используя директиву price в Beancount) для ключевых дат, чтобы соответствовать оценке. Однако для базовой целостности главной книги достаточно, чтобы транзакции сходились в своих исходных валютах – нереализованные прибыли/убытки не нужно явно записывать, если вы не хотите получить те же отчёты.

  • Дебиторская / Кредиторская задолженность: QuickBooks отслеживает детали счетов-фактур и счетов (сроки оплаты, статус оплаты и т.д.), которые не будут полностью перенесены в простую главную книгу. Вы получите транзакции по дебиторской и кредиторской задолженности (счета-фактуры увеличивают ДЗ, платежи уменьшают ДЗ и т.д.), но не документы счетов-фактур или балансы клиентов по счетам. В результате после миграции вы должны проверить, что балансы ваших счетов ДЗ и КЗ в Beancount равны открытым остаткам клиентов/поставщиков в QuickBooks. Если вам нужно отслеживать счета-фактуры, вы можете использовать метаданные Beancount (например, включить тег invoice или ссылку). Номера счетов-фактур из QuickBooks должны были перейти в поля Num или Memo – наш скрипт сохраняет Num как number: "..." в метаданных транзакции.

  • Неактивные или закрытые счета: Экспорт IIF может включать неактивные счета (если вы выбрали их включение). Их можно импортировать (у них просто не будет транзакций и будет нулевой баланс, если они действительно неактивны). Вы можете пометить их как закрытые в Beancount после даты последней транзакции с помощью директивы close. Это поддерживает порядок в вашей главной книге. Например: 2023-12-31 close Expenses:OldAccount ; закрыт после миграции Это необязательно и в основном для чистоты.

Тщательно очистив и сопоставив данные, как описано выше, вы получите файл главной книги Beancount, который структурно отражает ваши данные из QuickBooks. Следующий шаг — убедиться, что он также численно отражает QuickBooks.


Этап 3: Проверка и сверка данных

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

3.1 Сверка по оборотно-сальдовой ведомости

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

  • В QuickBooks: Запустите отчёт Оборотно-сальдовая ведомость (Trial Balance) на последний день последнего года (например, 31 декабря 2023 года). Этот отчёт показывает баланс каждого счёта. Экспортируйте его или запишите ключевые цифры.

  • В Beancount: Используйте отчётность Beancount для генерации оборотно-сальдовой ведомости. Один из простых способов — через командную строку:

    bean-report migrated.beancount balances

    Отчёт balances — это оборотно-сальдовая ведомость, перечисляющая все счета и их остатки. Вы также можете открыть файл в Fava (веб-интерфейс Beancount) и посмотреть раздел Balances или Balance Sheet. Каждый остаток по счёту в Beancount должен совпадать с оборотно-сальдовой ведомостью QuickBooks. Например, если QuickBooks показывает _Дебиторская задолженность = 5,000,тосчётAssets:AccountsReceivableвBeancountдолжениметьитоговуюсумму5,000_, то счёт Assets:Accounts Receivable в Beancount должен иметь итоговую сумму 5,000 (дебет). Если*Доход от продаж = 200,000,тосчётIncome:SalesвBeancountдолженпоказывать200,000*, то счёт Income:Sales в Beancount должен показывать 200,000 (кредит, что может отображаться как -200,000, если используется оборотно-сальдовая ведомость, представляющая кредиты как отрицательные числа).

Если есть расхождения, найдите их:

  • Проверьте, не отсутствует ли целый счёт или не добавлен ли лишний (мы забыли счёт или включили тот, который был закрыт до периода миграции?).
  • Если остаток не сходится, углубитесь: QuickBooks может запустить Быстрый отчёт по счёту (Account QuickReport) или детализацию главной книги для этого счёта, и вы можете сравнить это с регистром Beancount для этого счёта (bean-report migrated.beancount register -a ИмяСчёта). Иногда различия возникают из-за пропущенной или дублирующейся транзакции.

Также проверьте, что сумма всех счетов равна нулю в оборотно-сальдовой ведомости Beancount (она выводит итог, который должен быть равен нулю или очень близок к нему). Beancount применяет двойную запись, поэтому если у вас есть ненулевой дисбаланс, это означает, что активы минус обязательства-капитал не сошлись к нулю, что указывает на проблему (которую QuickBooks обычно не допускает, но это может произойти, если некоторые данные были утеряны).

3.2 Сравнение остатков по счетам

Помимо оборотно-сальдовой ведомости, вы можете сравнить конкретные финансовые отчёты:

  • Балансовый отчёт: Запустите Балансовый отчёт в QuickBooks на конечную дату и балансовый отчёт в Beancount (bean-report migrated.beancount balsheet). Это похоже на оборотно-сальдовую ведомость, но организовано по Активам, Обязательствам, Капиталу. Цифры должны совпадать по категориям. Для более детальной проверки сравните итоговые суммы по основным счетам: денежные средства, ДЗ, основные средства, кредиторская задолженность, капитал и т.д.

  • Отчёт о прибылях и убытках: Запустите Отчёт о прибылях и убытках за пятилетний период (или по годам) в QuickBooks и в Beancount (bean-report migrated.beancount income для отчёта о прибылях и убытках за весь период). Чистая прибыль из Beancount должна быть равна чистой прибыли из QuickBooks за каждый период. Если вы мигрировали все пять лет, совокупная чистая прибыль должна совпадать. Вы также можете сравнить отдельные итоговые суммы доходов и расходов, чтобы убедиться, что ни одна категория не была пропущена или продублирована.

  • Выборочная проверка транзакций: Выберите несколько случайных транзакций (особенно из каждого года и каждого крупного счёта) и проверьте, что они мигрировали правильно. Например, найдите счёт-фактуру трёхлетней давности в QuickBooks, а затем найдите его сумму или заметку в файле Beancount (поскольку все транзакции текстовые, вы можете открыть файл .beancount в текстовом редакторе или использовать инструменты поиска). Проверьте, что дата, суммы и счета совпадают. Это помогает выявить проблемы с форматированием дат или неправильно сопоставленные счета.

3.3 Автоматизированные проверки целостности

Используйте встроенные инструменты проверки Beancount:

  • bean-check: Запустите bean-check migrated.beancount. Он разберёт файл и сообщит о любых ошибках в синтаксисе или балансировке. Если скрипт пропустил что-то, например, не открытый счёт или несбалансированную транзакцию, bean-check это обнаружит. Чистый проход (без вывода) означает, что файл как минимум внутренне согласован.

  • Утверждения о балансе: Вы можете добавить явные утверждения о балансе в главную книгу для ключевых счетов в качестве дополнительной проверки. Например, если вы знаете остаток на банковском счёте на определённую дату, добавьте строку: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD Тогда bean-check убедится, что в главной книге на эту дату баланс действительно составляет $10,000. Это необязательно, но может быть полезно для счетов высокой важности. Вы можете взять конечные остатки из QuickBooks (например, на конец каждого года) и утвердить их в файле Beancount. Если какое-либо утверждение не сработает, Beancount сообщит о разнице.

  • Проверка оборотно-сальдовой ведомости по периодам: Если хотите, вы можете провести проверку по периодам. Для каждого года сравните чистое изменение. Например, чистая прибыль в QuickBooks 2020 против Beancount 2020 и т.д., чтобы убедиться, что каждый год правильно закрылся в капитал (QuickBooks автоматически переносит чистую прибыль в Нераспределённую прибыль каждый новый год; в Beancount вы просто увидите совокупный капитал). Если вы видите различия, это может указывать на проблему в данных конкретного года.

  • Количество транзакций и дубликаты: Подсчитайте количество транзакций в QuickBooks и в Beancount. QuickBooks не показывает прямое количество легко, но вы можете оценить его, подсчитав строки в CSV (каждый заголовок транзакции против проводок). В Beancount быстрый способ — посчитать вхождения txn или * " в файле. Они должны быть равны или немного больше, чем в QuickBooks (если вы добавили транзакции начального остатка или корректировки). Значительное несоответствие означает, что что-то могло быть пропущено или продублировано. Использование нами уникальных ID в метаданных может помочь: если вы подозреваете дубликаты, поищите в файле Beancount тот же номер чека или счёта-фактуры, появляющийся дважды, когда этого быть не должно.

  • Статус сверки: Мы включили метаданные rec: "y" или "n" на основе статуса cleared в QuickBooks в нашем скрипте (как rec в примере). Это не стандартная функция Beancount (Beancount не отслеживает cleared/pending так же, как Ledger), но это могут быть полезные метаданные. Вы можете проверить, что все транзакции, которые были сверены в QuickBooks, присутствуют. В конечном счёте, новая сверка банковских счетов в Beancount (с использованием ваших выписок) может стать окончательным доказательством того, что ничего не пропало.

Выполняя эти проверки, вы укрепляете уверенность в том, что миграция сохранила данные. Не торопитесь на этом этапе – легче исправить аномалии сейчас, чем через месяцы, когда на книги могут полагаться. Частые проблемы при сбое проверки: отсутствие начального остатка счёта, транзакция с датой за пределами диапазона или инверсия знака в записи. Все они исправимы после выявления.


Этап 4: Фиксация данных в главной книге Beancount

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

4.1 Организация файлов главной книги и конфигурации

Решите, как структурировать файлы главной книги Beancount. Для данных за пять лет вы можете хранить всё в одном файле или разделить по годам или категориям. Распространённая и понятная структура:

  • Основной файл главной книги: например, ledger.beancount – это точка входа, которая может include другие файлы. Он может содержать глобальные опции, а затем включать годовые файлы.
  • Файл счетов: Определите план счетов и начальные остатки. Например, accounts.beancount со всеми директивами open (сгенерированными скриптом). Здесь же вы можете перечислить товары (валюты).
  • Файлы транзакций: По одному на каждый год, например, 2019.beancount, 2020.beancount и т.д., содержащие транзакции за этот год. Это позволяет поддерживать manageable размер каждого файла и сосредоточиться на одном годе при необходимости. Альтернативно, можно разделить по сущностям или счетам, но разделение по времени просто и понятно для финансовых данных.

Пример основного файла:

option "title" "Моя главная книга бизнеса"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

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

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

4.2 Установка начальных остатков и капитала

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

  • Книги с нуля: Если пятилетний период начинается с момента основания бизнеса (например, вы начали использовать QuickBooks в январе 2019 года со всеми счетами, обнулёнными, кроме первоначального капитала), то вам может не понадобиться отдельная транзакция начального баланса. Первые транзакции в 2019 году (например, первоначальное финансирование на банковский счёт) естественным образом установят начальные остатки. Просто убедитесь, что любой первоначальный капитал или нераспределённая прибыль за прошлые периоды учтены через транзакции капитала.

  • Книги в середине периода (частичная история): Если вы начали использовать QuickBooks раньше, и 2019 год — это середина, то на 1 января 2019 года у каждого счёта был перенесённый остаток. В QuickBooks они были бы в виде начальных остатков или нераспределённой прибыли. В Beancount типично создать запись о начальных остатках за день до даты начала:

    • Используйте счёт капитала под названием Equity:Opening-Balances (или аналогичный) для компенсации суммы всех начальных остатков.
    • Пример: если на 31.12.2018 денежные средства составляли 10,000,ДЗ10,000, ДЗ 5,000 и КЗ 3,000(кредит),выбызаписалитранзакцию:20181231"Начальныеостатки"Assets:Cash10000.00USDAssets:AccountsReceivable5000.00USDLiabilities:AccountsPayable3000.00USDEquity:OpeningBalances12000.00USDЭтооставляетнасчётеOpeningBalancesотрицательнуюсумму(3,000 (кредит), вы бы записали транзакцию: `2018-12-31 * "Начальные остатки"` ` Assets:Cash 10000.00 USD` ` Assets:Accounts Receivable 5000.00 USD` ` Liabilities:Accounts Payable -3000.00 USD` ` Equity:Opening-Balances -12000.00 USD` Это оставляет на счёте Opening-Balances отрицательную сумму (–12k), которая балансирует запись. Теперь все счета активов/обязательств начинают 2019 год с правильными остатками. Это должно отражать любые "Нераспределённые прибыли" или перенесённые остатки из QuickBooks.
    • В качестве альтернативы используйте директивы Beancount pad и balance: Для каждого счёта вы можете pad его со счёта Opening-Balances и подтвердить баланс. Это более автоматизированный способ. Например: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 USD Это говорит Beancount вставить любую необходимую запись (на счёт Opening-Balances), чтобы остаток по счёту Cash равнялся 10000 USD на эту дату. Сделайте это для каждого счёта. Результат будет похожим, но написание явной транзакции, как в первом методе, также является простым.
  • Нераспределённая прибыль: QuickBooks не экспортирует явно транзакцию "Нераспределённая прибыль" – он просто вычисляет её. После миграции вы можете заметить, что Equity:Retained Earnings равно нулю, если вы его не создали. В Beancount нераспределённая прибыль — это просто прибыль прошлых лет. Вы можете создать счёт Нераспределённой прибыли и переводить на него прибыль прошлых периодов в первый день каждого нового года, или просто позволить капиталу быть суммой всех доходов/расходов (что появляется в разделе Капитал в отчётах). Для прозрачности некоторые пользователи ежегодно делают закрывающие записи. Это необязательно и в основном для презентации. Поскольку мы мигрировали все транзакции, прибыль за каждый год будет естественным образом сворачиваться, если вы запустите отчёт по годам.

  • Сравнительные проверки: После установки начальных остатков запустите балансовый отчёт на дату начала, чтобы убедиться, что всё верно (он должен показывать эти начальные остатки против начального капитала, сводящегося к нулю).

4.3 Финализация и контроль версий

Теперь, когда данные находятся в формате Beancount и структурированы, разумно закоммитить файлы в репозиторий системы контроля версий (например, git). Каждое изменение в главной книге можно отслеживать, и у вас будет аудиторский след всех модификаций. Это главное преимущество текстового учёта. Например, в QuickBooks изменения может быть нелегко сравнить, но в Beancount вы можете видеть построчные различия. Как отмечают некоторые пользователи, с Beancount вы получаете прозрачность и возможность отменять изменения при необходимости – каждая запись может быть привязана к истории изменений.

Рассмотрите возможность пометить коммит этой первоначальной миграции как v1.0 или что-то подобное, чтобы вы знали, что он представляет состояние книг, как они были импортированы из QuickBooks. В дальнейшем вы будете вводить новые транзакции непосредственно в Beancount (или импортировать из банковских выписок и т.д.), и вы можете использовать обычные практики разработки программного обеспечения (коммитить ежемесячно или ежедневно, использовать ветки для экспериментов и т.д.).

Настройка Fava или других инструментов: Fava — это веб-интерфейс для Beancount, который упрощает просмотр отчётов. После коммита запустите fava ledger.beancount, чтобы просмотреть финансовые отчёты и сравнить их с вашими отчётами из QuickBooks в последний раз. Вы можете легче заметить небольшие различия в пользовательском интерфейсе (например, счёт, который должен быть нулевым, но показывает небольшой остаток, указывает на отсутствующую закрывающую запись или случайную транзакцию).

Соглашения об именах и последовательность: Теперь у вас полный контроль, поэтому обеспечьте последовательность:

  • Все счета должны иметь ясные имена, начинающиеся с заглавных букв названий категорий (Assets, Liabilities и т.д.). Если какие-то выглядят странно (например, Assets:assets:SomeAccount из-за несоответствия регистра из QuickBooks), переименуйте их в файле счетов и обновите транзакции (быстрый поиск/замена в файле может это сделать, или используйте bean-format Beancount или мультикурсор редактора).
  • Символы товаров (коды валют) должны быть последовательными. Для USD используйте USD везде (не $ или US$). Для других используйте стандартные коды (EUR, GBP и т.д.). Эта последовательность важна для поиска цен и отчётов Beancount.
  • Удалите все временные или фиктивные счета, которые могли быть созданы (например, если вы использовали Expenses:Miscellaneous для неизвестных счетов в скрипте как универсальный вариант, постарайтесь избавиться от них, правильно сопоставив все счета).

Закрытие QuickBooks: На данный момент у вас должны быть параллельные книги в Beancount, которые совпадают с QuickBooks. Некоторые предпочитают вести обе системы параллельно в течение короткого периода, чтобы убедиться, что ничего не было упущено. Но если проверка надёжна, вы можете "закрыть" книги QuickBooks:

  • Если это корпоративная среда, рассмотрите возможность экспорта всех исходных документов QuickBooks (счетов-фактур, счетов, квитанций) для архива, так как их не будет в Beancount, если вы не прикрепите их вручную.
  • Сохраните резервную копию данных QuickBooks (как файл компании, так и файлы экспорта).
  • В дальнейшем ведите главную книгу Beancount как основную систему учёта.

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


Этап 5: Аудит после миграции и примеры

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

5.1 Проверка финансовой отчётности

Создайте ключевые финансовые отчёты из QuickBooks и Beancount на одни и те же даты и сравните:

  • Балансовый отчёт на 31 декабря 2023 года: Сравните итоговые суммы Активов, Обязательств и Капитала построчно. Они должны совпадать. Например, если QuickBooks показал Общие активы = 150,000иОбщиеобязательства+Капитал=150,000** и **Общие обязательства + Капитал = 150,000, балансовый отчёт Beancount должен показывать те же итоговые суммы. Если вы структурировали счета немного иначе (скажем, вы объединили некоторые субсчета), учтите это при сравнении или разбейте до следующего уровня, чтобы убедиться, что суммы равны.

  • Отчёт о прибылях и убытках 2019–2023: Убедитесь, что общий Доход, общие Расходы и Чистая прибыль за каждый год (или за весь период) идентичны. Незначительные различия могут возникнуть, если QuickBooks производил некоторое округление в отчётах, но транзакции обычно несут центы точно, поэтому чистая прибыль должна быть точной. Если прибыль какого-либо года отличается, углубитесь в данные этого года – часто это указывает на пропущенную или дублирующуюся запись в этот период.

  • Различия в оборотно-сальдовой ведомости: Если возможно, создайте электронную таблицу, в которой вы перечислите каждый счёт и баланс из QuickBooks и Beancount. Поскольку мы ожидаем, что они совпадут, это может быть столбец с одними нулями. Это, по сути, перекрёстная проверка оборотно-сальдовой ведомости, которую мы обсуждали, но её запись помогает это задокументировать.

5.2 Пример сравнения (до и после)

Ниже приведён пример, демонстрирующий согласованность данных. Допустим, наша оборотно-сальдовая ведомость из QuickBooks на 31 декабря 2023 года была такой:

СчётБаланс QuickBooks (31 дек 2023)
Активы
Assets:Bank:Checking$12,500.00 (дебет)
Assets:Accounts Receivable$3,200.00 (дебет)
Обязательства
Liabilities:Credit Card$-1,200.00 (кредит)
Liabilities:Loans Payable$-5,000.00 (кредит)
Капитал
Equity:Opening-Balances$-7,500.00 (кредит)
Equity:Retained Earnings$-2,000.00 (кредит)
Equity:Current Year Profit$0.00

В Beancount после импорта и проводки всех транзакций до 2023 года, bean-report balances (оборотно-сальдовая ведомость) выводит:

СчётБаланс Beancount (31 дек 2023)
Активы
Assets:Bank:Checking12,500.00 USD (дебет)
Assets:Accounts Receivable3,200.00 USD (дебет)
Обязательства
Liabilities:Credit Card-1,200.00 USD (кредит)
Liabilities:Loans Payable-5,000.00 USD (кредит)
Капитал
Equity:Opening-Balances-7,500.00 USD (кредит)
Equity:Retained Earnings-2,000.00 USD (кредит)
Equity:Profit (2019-2023)0.00 USD

(Примечание: разделы Капитала могут быть структурированы по-разному; главное, чтобы итоговые суммы совпадали. Здесь "Прибыль (2019-2023)" в Beancount играет роль прибыли текущего года/нераспределённой прибыли вместе взятых, показывая ноль, потому что прибыль была закрыта на Нераспределённую прибыль.)

Как видно, каждый счёт совпадает до цента. Сумма дебетов равна сумме кредитов с обеих сторон.

Кроме того, если мы запустим Отчёт о прибылях и убытках за 2023 год:

  • QuickBooks: Доход $50,000, Расходы $48,000, Чистая прибыль $2,000.
  • Beancount: Доход $50,000, Расходы $48,000, Чистая прибыль $2,000 (которая затем была закрыта на Нераспределённую прибыль или появляется в разделе Капитал в годовом балансовом отчёте).

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

5.3 Советы по аудиту

  • Если аудитору или заинтересованной стороне нужна уверенность, представьте финансовые отчёты до и после рядом. Прозрачность Beancount на самом деле может упростить аудит, потому что вы можете быстро проследить каждое число из отчёта до исходной записи (особенно с использованием функции детализации Fava).
  • Храните резервную копию QuickBooks и экспортированные CSV как часть вашего аудиторского следа. Документируйте любые корректировки, сделанные во время миграции (например, "Переименован счёт X в Y для последовательности" или "Разделена транзакция Z на две записи для ясности", если вы делали такие изменения).
  • В дальнейшем внедряйте регулярные проверки в Beancount. Например, ежемесячная сверка банковских счетов и утверждение их конечного баланса помогает выявить любые проблемы с данными или ошибки во вводе. Миграция даёт хорошую базовую линию; поддержание дисциплины в новой системе обеспечит постоянную точность.

Наконец, отпразднуйте завершение миграции: вы успешно перенесли бухгалтерские данные за пять лет из QuickBooks в Beancount. Теперь данные находятся в лёгком, контролируемом версиями текстовом формате с полной целостностью двойной записи. Вы экспортировали данные, преобразовали их с помощью скриптов на Python, проверили целостность через оборотно-сальдовые ведомости и отчёты и зафиксировали их в хорошо организованной главной книге Beancount. Этот комплексный процесс гарантирует, что главная книга Beancount является точной, верной копией ваших книг QuickBooks за пятилетний период, подготавливая вас к оптимизированному учёту в будущем.

Представляем поддержку нескольких файлов в Beancount

· 2 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

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

Вот как это использовать:

Файл > создать новый файл

2021-09-24-multi-file-one-ledger

Перейдите на вкладку редактора файлов в левой навигационной боковой панели. Затем перейдите в выпадающее меню "Файл" и нажмите "Создать новый файл".

Файл > создать новый файл

Назовите свой новый файл

Дайте своему файлу действительное имя и сохраните его. Все имена файлов должны заканчиваться на ".bean".

Назовите свой новый файл

Включите файл

Это важный шаг: вы должны включить только что созданный файл в main.bean.

Например, если вы добавили stock.bean, то укажите include "stock.bean" в main.bean.

Включите файл

Обновите и перейдите к файлу

Обновите страницу, и вы увидите, что файл появится в выпадающем меню "Файл".

Обновите и перейдите к файлу

Переименуйте или удалите файл

Перейдя к файлу, вы можете переименовать или удалить его в выпадающем меню "Редактировать".

Переименуйте или удалите файл

Возникли проблемы?

Задавайте вопросы в https://t.me/beancount.

Обновление Fava до версии 1.19: Ключевые изменения и улучшения

· 1 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Мы обновили открытое программное обеспечение Fava, распространяемое под лицензией MIT, до версии 1.19. Вот изменения с момента нашего последнего обновления:

  • v1.19 (18.05.2021)
    • переход с опций conversion и interval на опцию default-page
    • добавлена опция invert-income-liabilities-equity
    • обновление до CodeMirror 6
    • добавлена болгарская локализация
    • другие небольшие улучшения и исправления ошибок
  • v1.18 (16.01.2021)
    • несколько небольших улучшений и различные исправления ошибок.

Чувствуете себя взволнованными? Попробуйте прямо сейчас по адресу https://beancount.io/ledger/

2021-07-16-upgrade-fava-to-1-19

Есть вопросы? Мы будем рады помочь вам в https://t.me/beancount :)

Понимание амортизации в Beancount

· 2 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Амортизация распределяет платежи на множество взносов во времени. В beancount.io вы можете использовать плагин fava.plugins.amortize_over для достижения этой цели.

2021-01-09-амортизация

Без амортизации, если вы хотите застраховать свой автомобиль на 6 месяцев стоимостью $600, вам придется записать это как разовый расход на определенную дату.

2017-06-01 open Assets:Bank:Checking
2017-06-01 open Assets:Prepaid-Expenses
2017-06-01 open Expenses:Insurance:Auto


2017-06-01 * "Pay car insurance"
Assets:Bank:Checking -600.00 USD
Assets:Prepaid-Expenses

Однако с амортизацией вы можете распределить расход на шесть месяцев, добавив plugin "fava.plugins.amortize_over" в начало файла и используя amortize_months: 6 для транзакции.

plugin "fava.plugins.amortize_over"

2020-06-01 open Assets:Bank:Checking
2020-06-01 open Assets:Prepaid-Expenses
2020-06-01 open Expenses:Insurance:Auto

2020-06-01 * "Amortize car insurance over six months"
amortize_months: 6
Assets:Prepaid-Expenses -600.00 USD
Expenses:Insurance:Auto

И затем в Журнале вы увидите, что транзакция разбита на 6 проводок.

2020-11-01 * Amortize car insurance over six months (6/6) am
2020-10-01 * Amortize car insurance over six months (5/6) am
2020-09-01 * Amortize car insurance over six months (4/6) am
2020-08-01 * Amortize car insurance over six months (3/6) am
2020-07-01 * Amortize car insurance over six months (2/6) am
2020-06-01 * Amortize car insurance over six months (1/6) am

Скриншот транзакции амортизации

Представляем мобильные приложения Beancount для iOS и Android

· 2 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Мы рады объявить о важной вехе в развитии Beancount: запуске наших специализированных мобильных приложений для платформ iOS и Android! Этот релиз напрямую отвечает на один из самых частых запросов нашего сообщества – возможность эффективно управлять вашей бухгалтерской книгой на мобильных устройствах.

Мобильное приложение Beancount для iOS

Ключевые особенности

  • Быстрый ввод транзакций: Легко добавляйте новые транзакции на ходу
  • Мобильные финансовые отчеты: Получайте доступ к своим финансовым данным в любом месте, в любое время
  • Прямое редактирование бухгалтерской книги: Полный доступ к файлу вашей бухгалтерской книги через оптимизированный веб-просмотр
  • Кроссплатформенная синхронизация: Сохраняйте согласованность ваших финансовых данных на всех ваших устройствах

2020-08-19-beancount-mobile-app

Разработка, управляемая сообществом

Этот релиз знаменует собой лишь начало нашего мобильного пути. Мы стремимся развивать эти приложения, основываясь на ваших потребностях и отзывах. Присоединяйтесь к нашему активному сообществу в Telegram по адресу https://t.me/beancount, чтобы обсуждать Beancount, делиться своим опытом и помогать формировать будущие функции.

Наше видение

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

скачать из App Storeскачать из Play Store

Чистая прибыль: основы и отслеживание в Beancount

· 5 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Из всех показателей, описывающих бизнес, один выделяется среди остальных: чистая прибыль. Это основной показатель рентабельности, знаменитая «итог». Но что это на самом деле означает и как можно точно отслеживать ее с помощью текстовой системы бухгалтерского учета, такой как Beancount?

Давайте разберемся.

2020-03-12-net-income-101-how-to-track-it-in-beancount

Что на самом деле означает чистая прибыль

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

Это самый четкий показатель финансового состояния компании. Это критически важный показатель для всех:

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

Положительная чистая прибыль означает, что вы прибыльны. Отрицательная означает, что вы теряете деньги. Все просто.

Основная формула (выберите необходимый уровень детализации)

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

  • Полная формула: Выручка – COGS – Операционные расходы – Проценты – Налоги = Чистая прибыль
  • Стандартная формула: Выручка – COGS – Расходы = Чистая прибыль
  • Упрощенная формула: Общая выручка – Общие расходы = Чистая прибыль

Краткий совет о затратах: В чем разница между COGS и операционными расходами? COGS (себестоимость проданных товаров) покрывает прямые затраты, связанные с производством ваших товаров или услуг (например, сырье, прямой труд). Операционные расходы покрывают все остальное, что поддерживает работу — зарплаты, аренду, подписку на программное обеспечение, страховку и т. д.

Мини-пример

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

ПоказательСуммаПример счета главной книги
Выручка от продаж$60 000Income:Sales
COGS (зеленые кофейные зерна)$20 000Expenses:COGS
Операционные расходы$18 000Expenses:Ops:*
Проценты (по кредиту на оборудование)$1 000Expenses:Interest
Налоги$1 000Expenses:Taxes

Используя полную формулу, расчет прост:

Чистая;прибыль = \60 000 - $20 000 - $18 000 - $1 000 - $1 000 = $20 000$

Компания получила чистую прибыль в размере $20 000 за месяц.

Как отразить это в Beancount

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

  • Отмечайте все доходы под родительским счетом Income, например, Income:Sales или Income:Services.
  • Разделяйте свои расходы, чтобы различать прямые и косвенные затраты. Используйте Expenses:COGS для прямых затрат и подсчета, например, Expenses:Ops:Salaries или Expenses:Ops:Software для всего остального.
  • Относите проценты и налоги на их собственные счета (Expenses:Interest, Expenses:Taxes). Это значительно упрощает будущий анализ, особенно для подготовки налоговой отчетности.
  • Регулярно сверяйте свой баланс. Фундаментальное бухгалтерское уравнение, Активы = Обязательства + Капитал, всегда должно быть верным.

В конце периода (например, месяца) вы можете использовать утверждения balance, чтобы подтвердить состояние ваших счетов. Эти записи не перемещают деньги; они объявляют, каким должен быть баланс, и bean-check сообщит об ошибке, если это не так.

; 2025-07-31 Coffee Roaster Enterprises — Июльское закрытие
2025-07-31 balance Assets:Bank:Operating 42000.00 USD
2025-07-31 balance Expenses:COGS 20000.00 USD
2025-07-31 balance Expenses:Ops 18000.00 USD
2025-07-31 balance Expenses:Interest 1000.00 USD
2025-07-31 balance Expenses:Taxes 1000.00 USD
2025-07-31 balance Income:Sales -60000.00 USD

Однострочный запрос на чистую прибыль

Вот где происходит волшебство. С хорошо структурированной главной книгой вы можете рассчитать свою чистую прибыль за любой период с помощью одной команды.

bean-query books.beancount \
"SELECT period, sum(number) WHERE account =~ '^(Income|Expenses)' \
AND year = 2025 GROUP BY month"

Этот запрос суммирует все значения в ваших счетах Income и Expenses за 2025 год и группирует их по месяцам. В Beancount доход представлен отрицательными числами, а расходы — положительными, поэтому результат будет отрицательным значением вашей чистой прибыли.

Более того, вам даже не нужно запускать этот запрос вручную. Fava, веб-интерфейс для Beancount, автоматически построит для вас график в разделе Отчеты → Отчет о прибылях и убытках.

Быстрые аналитические данные, которые вы можете автоматизировать

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

  • Ежемесячный дайджест по электронной почте: Настройте задание cron для запуска bean-report books.beancount income_statement > net-income.txt, а затем отправьте полученный текстовый файл себе по электронной почте первого числа каждого месяца.
  • Оповещение о прибыльности: Используйте хук Git pre-commit, который запускает запрос для проверки прибыльности с начала месяца. Вы можете запрограммировать его на отказ от коммита, если чистая прибыль отрицательна, что заставит вас признать убыточный месяц.
  • Моделирование сценариев: Хотите провести стресс-тестирование своего бизнеса? Просто скопируйте books.beancount в scenarios/recession.bean, уменьшите свои записи Income на 20 % и перезапустите запрос на чистую прибыль, чтобы мгновенно увидеть влияние.

Ключевые выводы

  • Чистая прибыль — это ваш истинный итог. Цель состоит в том, чтобы поддерживать ее положительной и понимать ее динамику с течением времени.
  • Beancount делает лежащую в основе математику явной, доступной для поиска и контролируемой версиями. Здесь нет скрытых формул.
  • Благодаря дисциплинированной структуре счетов и одному запросу вы всегда будете знать, действительно ли ваш бизнес зарабатывает деньги.

Введение в Beancount.io

· 5 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Почему современный бухгалтерский учет важен

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

2019-09-07-introduction-to-beancount

Expenses

Income Statement

Balance Sheet

Двойная запись: Основа точности

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

В системе двойной записи каждая операция требует как минимум двух записей – дебета (+) и кредита (-) – по разным счетам. Эта встроенная система проверки делает практически невозможным запись несбалансированных операций, гарантируя точность и надежность ваших финансовых записей.

1970-01-01 open Income:BeancountCorp
1970-01-01 open Assets:Cash
1970-01-01 open Expenses:Food
1970-01-01 open Assets:Receivables:Alice
1970-01-01 open Assets:Receivables:Bob
1970-01-01 open Assets:Receivables:Charlie
1970-01-01 open Liabilities:CreditCard

2019-05-31 * "BeancountCorp" "Salary of May 15th to May 31st"
Income:BeancountCorp -888 USD
Assets:Cash 888 USD

2019-07-12 * "Popeyes chicken sandwiches" "dinner with Alice, Bob, and Charlie"
Expenses:Food 20 USD
Assets:Receivables:Alice 20 USD
Assets:Receivables:Bob 20 USD
Assets:Receivables:Charlie 20 USD
Liabilities:CreditCard -80 USD

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

Assets = Liabilities + Equity(aka Net Assets)

Мы использовали синтаксис Beancount от Мартина Блейса и веб-проект Fava от Якоба Шнитцера для создания этого веб-сайта. И он предупредит вас, если какая-либо операция не будет суммироваться до нуля.

Error Alert

Теперь вы понимаете, как мы обеспечиваем правильность учета. Но вы можете спросить, что такое эти "счета"?

Понимание счетов: Аналогия с ведром воды

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

Beancount.io предлагает пять типов счетов.

  1. Доходы — Их сумма всегда отрицательна или находится в дебете. Это потому, что вы зарабатываете деньги, и затем деньги дебетуются со счета "Доходы" и кредитуются на ваши "Активы".
  2. Расходы — Их сумма всегда положительна или находится в кредите. Это потому, что вы тратите деньги, и деньги перетекают из "Активов" или "Обязательств" в "Расходы".
  3. Обязательства — Их сумма положительна или равна нулю. Ваши обязательства по кредитной карте являются хорошим примером, которые растут и падают циклически.
  4. Активы — Их сумма положительна или равна нулю. Ваши наличные деньги или дома всегда имеют определенную стоимость.
  5. Капитал — Ваши чистые активы. Система рассчитает это автоматически для вас. Капитал = Активы - Обязательства и это отражает ваше благосостояние.

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

1970-01-01 open Assets:Cash
1970-01-01 open Assets:Stock:Robinhood
1970-01-01 open Assets:Crypto:Coinbase
1970-01-01 open Expenses:Transportation:Taxi
1970-01-01 open Equity:OpeningBalance

Расширенное отслеживание инвестиций с помощью товаров

Beancount.io отлично справляется с отслеживанием разнообразных инвестиций, от акций до криптовалют. Давайте рассмотрим, как он обрабатывает сложные инвестиционные сценарии. Например, вот как вы бы записали покупку 10 биткойнов по $100 каждый в 2014 году:

2014-08-08 * "Buy 10 Bitcoin"
Assets:Trade:Cash -1000.00 USD
Assets:Trade:Positions 10 BTC {100.00 USD}

А затем, три года спустя, вы продаете их (изначально с затратами в $100 за единицу, аннотированными {100.00 USD}) по цене $10 000 за единицу, аннотированной @ 10,000.00 USD.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @ 10,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Или та же операция с @@ 20,000.00 USD означает, что по цене $20 000 в общей сложности.

2017-12-12 * "Sell 2 Bitcoin"
Assets:Trade:Positions -2 BTC {100.00 USD} @@ 20,000.00 USD
Assets:Trade:Cash 20,000.00 USD
Income:Trade:PnL -19,800.00 USD

Сумма всех частей операции, включая -2 BTC {100.00 USD}, по-прежнему, как всегда, равна нулю.

Тег стоимости {100.00 USD} важен, потому что вы могли приобрести тот же товар по разным ценам.

100 BTC {10.00 USD, 2012-08-08}
10 BTC {100.00 USD, 2014-08-08}

Если вы хотите упростить процесс, вы можете настроить счет в начале с использованием FIFO или LIFO. FIFO означает "первым пришел, первым ушел", а LIFO – "последним пришел, первым ушел". В США IRS использует FIFO для расчета вашей прибыли/убытка и соответствующего налогообложения.

1970-01-01 open Assets:Trade:Positions "FIFO"

И затем, когда вы продаете его в сокращенной форме, например -2 BTC {}, Beancount автоматически применит стратегию FIFO и продаст самый старый товар.

Начало работы с Beancount.io

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

Начните свой финансовый путь с Beancount.io – Бесплатно в течение нашего акционного периода!

Основы бухгалтерского учета с Beancount: путь к четкой отчетности через простой текст

· 7 мин чтения
Mike Thrift
Mike Thrift
Marketing Manager

Вы не можете управлять бизнесом, если не знаете, куда уходят деньги. Точная бухгалтерия превращает догадки в понимание. (Investopedia)

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

2019-03-24-bookkeeping-basics

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

Что такое бухгалтерский учет?

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

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

Почему это важно?

Тщательный бухгалтерский учет — это не просто административная аккуратность; это стратегическое преимущество.

  • Уверенность при налогообложении: Когда наступает налоговый сезон, чистая отчетность — ваш лучший друг. Налоговая служба требует четкой документации по доходам и вычетам. Хорошо организованная бухгалтерия означает, что вы можете подавать декларацию с уверенностью и значительно сократить любые потенциальные проверки. (IRS)
  • Более точные решения: Достаточно ли высоки ваши цены? Действительно ли конкретный договор на обслуживание прибылен? Растут ли расходы на подписку бесконтрольно? Финансовые отчеты, такие как отчет о прибылях и убытках и баланс, выявляют утечки цен, безудержные расходы и проблемы с денежным потоком, предоставляя менеджерам и инвесторам данные, необходимые для принятия разумных решений. (Investopedia)
  • Более легкое финансирование: Кредиторы и инвесторы не принимают решения, основываясь на интуиции. Прежде чем переводить средства, они попросят финансовые отчеты. Хорошая бухгалтерия позволяет вам генерировать баланс или отчет о прибылях и убытках за считанные секунды, демонстрируя профессионализм и финансовое здоровье. (Investopedia)
  • Предупреждения о мошенничестве и ошибках: Регулярная сверка вашей бухгалтерии с банковскими выписками — ваша первая линия защиты от ошибок. Эта простая привычка помогает вам быстро выявить дублирующие платежи, банковские ошибки или мошенническую деятельность, прежде чем они станут серьезными проблемами. (IRS)

Семишаговый план в простом тексте

Готовы начать? Вот как построить вашу систему бухгалтерского учета на базе Beancount с нуля.

1. Разделите бизнес-счета и личные счета

Это первый и не подлежащий обсуждению шаг. Откройте отдельный расчетный счет для бизнеса и, при необходимости, бизнес-кредитную карту. Смешивание средств создает кошмар для бухгалтерии и может размыть границы ответственности между вами и вашим бизнесом. Четкое разделение необходимо для точного вычета расходов и правовой защиты. (Small Business Administration)

В Beancount вы объявляете о существовании этих счетов с помощью директивы open:

; Начальные остатки на ваших счетах
2025-07-22 open Assets:Bank:Business USD
2025-07-22 open Assets:Bank:Personal USD

2. Выберите систему бухгалтерского учета

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

3. Выберите метод учета

У вас есть два основных варианта:

  • Кассовый метод: Вы регистрируете доход, когда получаете деньги, и расходы, когда их оплачиваете. Это проще и непосредственно отражает ваш денежный поток.
  • Метод начисления: Вы регистрируете доход, когда вы его зарабатываете (например, когда отправляется счет), и расходы, когда вы их несете (например, когда получаете счет). Этот метод дает более точное представление о финансовом состоянии и деятельности компании, особенно для растущих фирм. (Investopedia)

Вот пример транзакции по методу начисления в Beancount. Вы учитываете доход при отправке счета, перемещая сумму в Assets:AccountsReceivable. Когда клиент платит, вы перемещаете деньги со счета AccountsReceivable на ваш банковский счет.

; Пример начисления: выставлен счет, оплата позже
2025-07-22 * "Счет за дизайн №101"
Assets:AccountsReceivable 3000.00 USD
Income:Design

2025-08-15 * "Клиент оплачивает счет №101"
Assets:Bank:Business 3000.00 USD
Assets:AccountsReceivable

4. Соберите свой набор инструментов

Прелесть Beancount заключается в его минималистской, модульной природе. Ваш основной набор включает:

  • Редактор + Git: Ваш любимый текстовый редактор для записи транзакций и Git для контроля версий, что дает вам полную, проверяемую историю каждого изменения.
  • bean-report / bean-balance / Fava: Инструменты командной строки, такие как bean-report, и потрясающий веб-интерфейс Fava, предоставляют вам мгновенные финансовые отчеты, панели мониторинга и мощные возможности фильтрации.
  • Импортеры: Богатая экосистема импортеров, созданных сообществом, может подключаться к вашим банковским каналам через CSV, Plaid или API для таких сервисов, как Stripe и PayPal, автоматизируя большую часть ввода данных.

5. Классифицируйте каждую транзакцию

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

2025-07-30 * "Ежемесячный счет AWS"
Expenses:Hosting:AWS 124.50 USD
Assets:Bank:Business
tag: "ops"

В этом примере расход четко отнесен к категории Expenses:Hosting:AWS. Использование tag: "ops" также позволяет создавать перекрестные отчеты, например, просматривать все операционные расходы независимо от их основной категории. (IRS)

6. Надежно храните исходные документы

Налоговая служба с радостью принимает цифровые копии чеков и счетов. Сканируйте бумажные чеки или пересылайте счета по электронной почте в специальную папку в облачном хранилище (например, Google Drive или Dropbox). Затем ссылайтесь на файл непосредственно в вашей записи Beancount, используя метаданные. Это создает герметичную, автономную запись.

; Изображение чека, связанное как метаданные
2025-07-18 * "Обед команды"
Expenses:Meals 85.10 USD
Assets:Bank:Business
receipt: "receipts/2025-07-18-team-lunch.jpg"

7. Сделайте бухгалтерский учет привычкой

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

Самостоятельно или с помощью профессионалов?

  • Самостоятельно: Для фрилансеров или малого бизнеса с предсказуемым объемом транзакций самостоятельный подход с Beancount невероятно эффективен. Тем не менее, разумно провести краткую, разовую консультацию с CPA, чтобы проверить ваш план счетов и убедиться, что вы на правильном пути.
  • Профессиональный обзор: По мере роста вашего бизнеса, усложнения транзакций или повышения риска несоблюдения требований, привлечение профессионального бухгалтера или аудитора для периодических проверок становится бесценным. Вы можете продолжать использовать Beancount в качестве основного источника данных и просто экспортировать необходимые им отчеты.

Контрольный список для быстрого старта

  • Открыть отдельные банковские счета для бизнеса.
  • Клонировать стартовый репозиторий Beancount и определить ваши счета в accounts.bean.
  • Выбрать кассовый метод или метод начисления и придерживаться его.
  • Настроить импортеры для автоматизации ввода данных из вашего банка (CSV), Stripe, PayPal и т.д.
  • Добавлять теги и писать четкие описания для каждой транзакции.
  • Сверять вашу бухгалтерию с банковскими выписками еженедельно или ежемесячно.
  • Формировать ежемесячные отчеты о доходах, балансе и денежном потоке с помощью Fava или bean-report.
  • Регулярно создавать резервные копии ваших .bean файлов (Git + удаленное хранилище).

Дополнительная литература

Готовы начать? Установите Beancount, зафиксируйте свою первую запись и обменяйте туман электронных таблиц на четкость простого текста. Удачного ведения учета!