Это руководство обобщает лучшие практики ведения бухгалтерии в виде обычного текста с использованием мощного инструмента с открытым исходным кодом — Beancount. Оно охватывает основополагающую философию, синтаксис от базового до продвинутого, практические примеры для сложных активов и долгосрочные стратегии ведения главной книги.
Часть 1: «Зачем» — основы грамотного ведения учета
Прежде чем углубляться в «как», крайне важно понять «зачем». Эффективное ведение учета — это фундамент управления личными финансами и необходимый шаг на пути к финансовой ясности и свободе.
За рамками отслеживания расходов: путь к финансовой ясности
Простые приложения для отслеживания расходов говорят вам, куда ушли деньги. Надежная система учета говорит вам об этом и о многом другом: она дает полную картину вашего финансового здоровья, включая собственный капитал, денежные потоки и эффективность ваших инвестиций. Основная цель — наблюдаемость — получение четкого, основанного на данных понимания вашей финансовой жизни, что позволяет вам принимать обоснованные решения, оценивать риски и работать над долгосрочными целями, такими как выход на пенсию.
Почему двойная запись? Мощь сбалансированной системы
В отличие от простой бухгалтерии (простой список расходов), метод двойной записи фиксирует каждую транзакцию как поток стоимости между как минимум двумя счетами. Его основной принцип — фундаментальное бухгалтерское уравнение:
Эта система гарантирует, что ваши книги всегда сбалансированы, что значительно снижает количество ошибок. Она обеспечивает полную финансовую картину, формируя необходимые отчеты, такие как балансовый отчет (что вы имеете и что должны) и отчет о прибылях и убытках (что вы заработали и потратили).
Часть 2: Начало работы с Beancount
Beancount — это мощный инструмент на основе Python для бухгалтерского учета в виде обычного текста.
Ваше первое знакомство с Fava на Beancount.io
Beancount.io предоставляет мощную среду, которая объединяет движок Beancount с мобильным приложением (iOS, Android) и веб-приложением — Fava, фантастическим веб-интерфейсом для визуализации вашей главной книги. Установка не требуется. Когда вы используете платформу, вы напрямую взаимодействуете с текстовым редактором для вашего файла главной книги (например, main.bean) и видите, как отчеты, создаваемые Fava, обновляются в режиме реального времени.
Fava превращает написанный вами обычный текст в интерактивные диаграммы, финансовые отчеты и фильтруемые списки транзакций, давая вам четкое представление о ваших финансовых отчетах.
Или начните в терминале с bea
Если вы предпочитаете работать из командной строки, bea — это интерфейс командной строки Beancount.io. Для него не требуется учетная запись: установите его с помощью brew install bex-co/tap/bea или uv tool install beancount-io, и он создает, проверяет, запрашивает и формирует отчеты по тому же файлу в виде обычного текста. Быстрый старт работы с CLI позволит вам получить первый реестр за несколько минут, а Ваш первый месяц с bea полностью закрывает конец месяца.
Пять основных типов счетов
Beancount использует пять основных типов счетов верхнего уровня, которые образуют структуру вашей главной книги:
| Тип счета | Описание | Типичный баланс |
|---|---|---|
Активы | То, чем вы владеете (денежные средства, банковские счета, инвестиции, недвижимость). | Положительный |
Обязательства | То, что вы должны (задолженность по кредитным картам, кредиты, ипотека). | Отрицательный |
Доход | Откуда поступают деньги (зарплата, премии, проценты). | Отрицательный |
Расходы | Куда уходят деньги (еда, аренда, поездки, налоги). | Положительный |
Собственный капитал | Ваша чистая стоимость; используется для начальных балансов. | Отрицательный |
Уравнение Beancount
Beancount обеспечивает соблюдение собственной версии бухгалтерского уравнения, согласно которой сумма всех проводок по всей вашей главной книге равна нулю:
Именно поэтому по соглашению счета Доход, Обязательства и Собственный капитал имеют отрицательные значения — они являются источниками средств, которые увеличивают ваши Активы и Расходы.
Часть 3: Язык Beancount — основной синтаксис
Все записи в Beancount — это директивы, начинающиеся с даты.
Определение счетов (open) и товаров
Прежде чем использовать счет, вы должны объявить его с помощью директивы open. Вы также можете дополнительно указать валюты или «товары», которые он будет содержать.
; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:GoogleТоварами могут быть реальные мировые валюты (например, USD, JPY) или любые настраиваемые единицы, которые вы определите, такие как мили авиакомпаний (MILES_UA) или тикеры акций (HOOL).
Запись вашей первой транзакции (*)
Транзакции — это наиболее распространенный тип записей. Они начинаются с даты, флага (* для завершенной транзакции или ! для незавершенной), необязательного плательщика и описания. Каждая следующая строка (с отступом в два пробела) является «проводкой» по счету.
; YYYY-MM-DD * "Payee" "Description"
; Account1 Amount Commodity
; Account2 -Amount Commodity
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USDДля удобства, если транзакция имеет только две проводки, вы можете опустить сумму во второй строке, и Beancount рассчитает ее автоматически.
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:DiscoverБалансировка на уровне транзакции: Более важно для повседневного использования то, что каждая отдельная транзакция также должна быть сбалансирована — сумма всех проводок в рамках одной транзакции должна равняться нулю. Если транзакция не сбалансирована, Beancount покажет ошибку, подобную этой:

Обработка мультивалютных транзакций (@ и @@)
Beancount превосходно справляется с мультивалютным учетом.
- Используйте
@для указания цены конвертации за единицу. - Используйте
@@для указания общей стоимости конвертации.
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR cost me 545 USD in total
Liabilities:CreditCard:US:Discover -545.00 USDЧасть 4: Обеспечение точности — искусство сверки
Ключевая практика для ведения точной главной книги — регулярная сверка. Она включает сравнение балансов в вашей главной книге Beancount с официальными выписками ваших финансовых учреждений.
Автоматизация проверок с помощью балансовых утверждений (balance)
Директива balance — это ваш основной инструмент для автоматических проверок. Вы утверждаете, что на определенную дату счет имел конкретный баланс. Beancount выдаст ошибку, если рассчитанный им баланс не совпадет с вашим утверждением. Это бесценно для быстрого обнаружения ошибок.
Примечание: Балансовое утверждение проверяет состояние счета на начало указанного дня (до любых транзакций в этот день).
; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USDПривязка подтверждающих документов (document)
Вы можете привязывать внешние файлы, такие как банковские выписки или квитанции, создавая проверяемый след. Fava делает эти ссылки кликабельными.
2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"Исправление ошибок и инициализация балансов
Когда вы начинаете вести главную книгу или обнаруживаете расхождение, которое не можете отследить, вам необходимо сделать корректировку. Стандартная практика — использовать специальный счет Собственный капитал.
; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USDСчет Собственный капитал:Начальные балансы содержит суммы, поступающие в вашу главную книгу из неизвестных или внешних источников.
Для быстрых исправлений, когда точное расхождение неважно, директива pad может автоматически скорректировать баланс счета, чтобы он соответствовал последующему балансовому утверждению, относя разницу на счет собственного капитала. Используйте это с осторожностью, так как это может скрыть более серьезные проблемы. Явные корректировки обычно безопаснее.
Часть 5: Продвинутые и реалистичные схемы транзакций
Отслеживание долгов: управление дебиторской и кредиторской задолженностью
Бухгалтерия с двойной записью идеально подходит для отслеживания денег, которые должны вам (Активы:Дебиторская задолженность) или которые должны вы (Обязательства:Кредиторская задолженность).
Пример: Вы платите за групповой ужин в размере $90, и ваш друг Боб должен вам свою долю в $45.
-
Запишите первоначальный расход и дебиторскую задолженность:
2024-08-05 * "Dinner Place" "Dinner with Bob" Expenses:Food:Restaurant 45.00 USD ; Your share Assets:Receivables:Bob 45.00 USD ; Bob owes you Assets:Bank:US:Chase:Checking -90.00 USD -
Когда Боб возвращает вам деньги:
2024-08-06 * "Bob" "Paid me back for dinner" Assets:Bank:US:Chase:Checking 45.00 USD Assets:Receivables:Bob -45.00 USD
Счет Активы:Дебиторская задолженность:Боб теперь равен нулю, и ваши книги идеально сбалансированы.
Активы против расходов: покупка автомобиля и амортизация
Крупная покупка, такая как автомобиль, — это не простой расход; это приобретение актива, который со временем теряет стоимость (амортизация).
-
Запишите покупку как актив:
2023-01-15 * "Toyota Dealer" "Purchase of a new car" Assets:Car:ToyotaCamry 30000.00 USD Assets:Bank:US:Chase:Checking -30000.00 USD -
Запишите ежегодную амортизацию: Предположим, вы оцениваете, что автомобиль теряет $3 000 в стоимости каждый год. В конце года вы записываете это как расход.
2023-12-31 * "Depreciation" "Annual car value depreciation" Expenses:Depreciation:Car 3000.00 USD Assets:Car:ToyotaCamry -3000.00 USD
После этой записи ваш счет Assets:Car:ToyotaCamry корректно отражает новую стоимость автомобиля ($27 000), и вы правильно учли стоимость использования как расход за этот год.
Часть 6: Глубокое погружение — моделирование сложных реальных активов
Пример 1: Учет недвижимости
Дом часто является вашим самым большим активом и обязательством. Вот как его можно смоделировать.
-
Создание счетов и настраиваемого товара:
2022-01-01 commodity HOUSE_123MAIN name: "Property at 123 Main St" 2022-01-01 open Assets:Property:Home:123Main HOUSE_123MAIN 2022-01-01 open Liabilities:Mortgage:HomeLoan USD 2022-01-01 open Expenses:Home:Interest 2022-01-01 open Expenses:Home:PropertyTax -
Запись покупки: Допустим, вы покупаете дом за $500 тыс. с первоначальным взносом $100 тыс. и кредитом в $400 тыс.
2022-03-15 * "Settlement Company" "Purchase of 123 Main St" Assets:Property:Home:123Main 1 HOUSE_123MAIN {500000.00 USD} Assets:Bank:DownPayment -100000.00 USD Liabilities:Mortgage:HomeLoan -400000.00 USD -
Запись ежемесячных ипотечных платежей: Ваш ежемесячный платеж состоит из основной суммы (уменьшает обязательство) и процентов (расход).
2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment" Liabilities:Mortgage:HomeLoan 800.00 USD ; Principal Expenses:Home:Interest 1200.00 USD ; Interest Assets:Bank:US:Chase:Checking -2000.00 USD -
Отслеживание удорожания (нереализованная прибыль): Рыночная стоимость дома меняется. Чтобы отслеживать это, не влияя на ваш официальный собственный капитал (так как прибыль не реализована, пока вы не продадите), вы можете использовать директиву цены с «виртуальной» валютой.
; The purchase price is the real cost basis 2022-03-15 price HOUSE_123MAIN 500000.00 USD ; An updated market estimate is an unrealized gain 2024-01-01 price HOUSE_123MAIN 550000.00 USD.UNREALIZED
Это позволяет вам видеть оценочную стоимость на диаграммах Fava, не раздувая неправильно ваш балансовый отчет.
Изучите пример главной книги по недвижимости в реальном времени с отслеживанием ипотеки, амортизацией и продажей недвижимости:
Пример 2: Отслеживание ограниченных акций (RSU)
RSU — это распространенная форма компенсации акциями. Их учет включает отслеживание первоначального гранта, событий перехода права собственности и удержания налогов.
-
Первоначальная настройка: Создайте товары для акций, право собственности на которые перешло (
HOOL) и не перешло (HOOL.UNVEST), а также все счета, которых касаются последующие записи. Объявление всех их заранее — это то, что позволяет двум приведенным ниже транзакциям загружаться самостоятельно.2021-01-01 commodity HOOL 2021-01-01 commodity HOOL.UNVEST 2021-01-01 open Assets:Brokerage:Etrade:HOOL HOOL 2021-01-01 open Assets:Grant:Unvested HOOL.UNVEST 2021-01-01 open Income:Grant:Awards HOOL.UNVEST 2021-01-01 open Expenses:Grant:Vested HOOL.UNVEST 2021-01-01 open Income:Salary:Hooli:RSU USD 2021-01-01 open Expenses:Taxes:Federal USD 2021-01-01 open Expenses:Taxes:State USD -
Запись первоначального гранта: Эта транзакция показывает весь грант, поступающий на счет не перешедших в собственность активов. Пока ничего не облагается налогом, поэтому вся запись выражена в отслеживаемом товаре
HOOL.UNVEST.2021-02-01 * "Hooli" "Initial RSU Grant" Assets:Grant:Unvested 1000 HOOL.UNVEST Income:Grant:Awards -1000 HOOL.UNVEST -
Запись события перехода права собственности: Это ключевая транзакция. Когда акции переходят в вашу собственность, вы признаете доход, работодатель удерживает акции для уплаты налога, а остальное остаётся у вас. Предположим, 100 акций переходят в собственность по $150,00, таким образом:
- Валовая компенсация: 100 × $150,00 = $15 000,00
- Акции, удержанные для уплаты налога: 40 × $150,00 = $6 000,00 (федеральный $4 800,00 + штатный $1 200,00)
- Акции, которые остаются у вас: 60 × $150,00 = $9 000,00 стоимости основания
- Денежные средства вам: $0,00 — всё удержание оплачивается акциями
Эти суммы и есть запись, и они сходятся: $6 000,00 налогов плюс $9 000,00 оставшихся акций — это ровно $15 000,00 дохода.
2022-02-01 * "Hooli" "RSU Vesting Event" ; Ordinary income: 100 shares * $150.00 Income:Salary:Hooli:RSU -15000.00 USD ; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00) Expenses:Taxes:Federal 4800.00 USD Expenses:Taxes:State 1200.00 USD ; The 60 shares you keep, at their $150.00 vesting-day basis Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD} ; Retire the 100 unvested units the grant was tracking Assets:Grant:Unvested -100 HOOL.UNVEST Expenses:Grant:Vested 100 HOOL.UNVEST
Эта единственная сбалансированная транзакция моделирует всё событие: уменьшается грант без перехода права собственности, признается доход, удерживается налог, и 60 чистых акций с переходом права собственности появляются на вашем брокерском счете с правильной стоимостью основания для будущих расчетов прироста капитала.
Две детали стоит скопировать в свою главную книгу. Во-первых, расписывайте удержание по каждому счету, а не позволяйте балансирующему счету поглощать всё — если федеральные и штатные проводки в сумме не дают стоимость удержанных акций, транзакция не будет сбалансирована, и Beancount сообщит вам об этом. Во-вторых, не оставляйте пустую строку между проводками: пустая строка завершает транзакцию, и Beancount сообщает об ошибке синтаксиса для проводок, следующих за ней.
Если ваш работодатель продает удержанные акции на открытом рынке, а не забирает их по цене перехода права собственности, продажа — это отдельная транзакция — уменьшение Активы:Брокерский счет:Etrade:HOOL против денежных средств — и любая разница между ценой продажи и основанием в $150,00 — это небольшая прибыль или убыток от прироста капитала. Не включайте это в запись о переходе права собственности.
Часть 7: Управление проектом для вашей главной книги
По мере роста вашей главной книги ключевым становится порядок.
Использование системы контроля версий (Git) для защиты ваших данных
Поскольку ваша главная книга — это текстовый файл, она идеально подходит для контроля версий с помощью Git. Это дает вам полную историю всех изменений, защищая от случайного удаления или ошибок. Предупреждение: Ваши финансовые данные очень чувствительны. Используйте частный репозиторий в таких сервисах, как GitHub/GitLab, или размещайте его самостоятельно.
Организация с помощью тегов (#) и ссылок (^)
Beancount предоставляет два способа группировки транзакций помимо счетов:
- Теги (
#): Используйте для событий или проектов. Например, вы можете отфильтровать все транзакции, связанные с конкретной поездкой.2024-07-20 * "Отель" "Вена" #поездка-европа-2024 - Ссылки (
^): Используйте для связи финансово связанных транзакций, происходящих в разное время, например, снятие наличных и связанная с этим банковская комиссия.
Масштабируемая стратегия структурирования файлов (include)
Один огромный файл трудно поддерживать. Используйте директиву include, чтобы разбить вашу главную книгу на несколько файлов.
main.bean:
; Main ledger file
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
; Include account declarations and other files
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"Надежная организационная стратегия, в порядке приоритета:
- По событию: Создайте отдельный файл для крупного самостоятельного события (например,
поездка-европа-2024.bean). - По категории/плательщику: Для очень регулярных повторяющихся транзакций, таких как счета за коммунальные услуги или зарплата, сгруппируйте их в отдельный файл (например,
регулярная-аренда.bean). - По счету: Для транзакций, тесно связанных с конкретным счетом (проценты, комиссии, платежи по кредитным картам), рассмотрите файл, специфичный для счета.
- По дате: Для всех остальных общих транзакций эффективно простое разделение по годам (
2024.bean) или месяцам (2024/07.bean).
Часть 8: Заключение
Beancount имеет крутую кривую обучения, но вознаграждает за усилия непревзойденной мощью, гибкостью и контролем над вашими финансовыми данными. Приняв принципы бухгалтерии с двойной записью и практические инструменты, которые предоставляет Beancount, вы можете перейти от простого отслеживания расходов к полной, точной и прозорливой системе управления личными финансами. Ваша главная книга становится постоянным, частным и бесценным активом для понимания вашего прошлого и планирования будущего.
Начало работы с Beancount.io
Beancount.io — это современная облачная платформа управления финансами, которая преобразует ваши текстовые записи транзакций в комплексные финансовые отчеты, включая отчеты о прибылях и убытках, балансовые отчеты и пробные балансы. Сочетая надежность обычных текстовых файлов с мощными инструментами визуализации, Beancount.io помогает вам сохранять точный контроль над вашей финансовой жизнью, получая при этом ценную информацию об эффективности ваших инвестиций.
Начните свой финансовый путь с Beancount.io — ознакомьтесь с текущими тарифами и ценами, чтобы узнать, что включает каждый уровень.

Изучите главную книгу в реальном времени →

Изучите главную книгу в реальном времени →
