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

Настройки плана счетов Beancount по отраслям

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

Примеры конфигураций для фрилансеров, малого бизнеса и личных финансов

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

Фрилансеры​

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

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

  • Assets:Business:Checking — деловой банковский счёт для всех клиентских платежей и деловых расходов.
  • Assets:Business:TaxSavings — накопительный счёт для откладывания части дохода на уплату налогов (поскольку работодатель не удерживает налоги за вас).
  • Income:Client:Имя — счета доходов от клиентских платежей. Вы можете создавать подчинённые счета для крупных клиентов (например, Income:Client:ACME) или использовать один счёт Income:Freelance, отмечая имена клиентов тегами в транзакциях.
  • Expenses:Business:Contractors — для платежей субподрядчикам или за аутсорсинговую работу.
  • Expenses:Business:Software (а также другие категории, например Travel, Supplies) — для регулярных деловых расходов (подписки на ПО, оборудование, поездки к клиентам и т. д.).
  • Equity:OwnerDraw — (необязательно) для записи переводов прибыли из бизнеса себе лично. Это помогает отличать деловые средства от личных, когда вы платите себе.

Обоснование: Такая структура гарантирует, что все деловые деньги учитываются на выделенных счетах. Доход от каждого клиента записывается (что упрощает определение ваших главных клиентов), а расходы категоризируются для вычетов в налоговый период. Откладывание налогов на отдельный счёт активов (или учёт обязательства по налогам) предотвращает случайное расходование денег, которые будут причитаться государству. Книга остаётся простой: при появлении новых клиентов или категорий расходов вы можете добавить новые счета или использовать теги без перестройки всей системы. Частая ошибка — смешивание личных и деловых транзакций на одном счёте; поддерживая выделенный деловой расчётный счёт (и соответствующий счёт активов), вы делаете сверку и отчётность чище. Ещё одна ошибка, которой следует избегать, — забывать фиксировать денежные переводы на налоги или изъятия владельца; используя счета вроде TaxSavings и OwnerDraw, вы учитываете каждый доллар.

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

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

Пример фрагмента книги учета фрилансера​

Ниже приведён упрощённый фрагмент Beancount для фрилансера-разработчика. Он показывает открытие нескольких ключевых счетов, поступление платежа от клиента, выплату субподрядчику, типичный деловой расход и перевод денег на счёт налоговых накоплений. (На практике вы также аналогично записывали бы другие расходы, например на поездки или покупку оборудования.)

1970-01-01 open Assets:Business:Checking
1970-01-01 open Assets:Business:TaxSavings
1970-01-01 open Income:Client:ACME
1970-01-01 open Expenses:Business:Contractors
1970-01-01 open Expenses:Business:Software
 
; Client income – payment for an invoice
2025-08-15 * "Invoice payment from ACME Corp"
  invoice: "INV-2025-08-15"
  Assets:Business:Checking       5000 USD
  Income:Client:ACME           -5000 USD
 
; Regular expense – e.g. software subscription for the business
2025-08-05 * "GitHub Subscription"
  Expenses:Business:Software       15 USD
  Assets:Business:Checking        -15 USD
 
; Contractor expense – paying a subcontractor for help
2025-08-20 * "Contractor payment – Jane Doe"
  Expenses:Business:Contractors   2000 USD
  Assets:Business:Checking      -2000 USD
 
; Tax withholding – moving money to tax savings
2025-08-31 * "Set aside Q3 taxes" #tax
  Assets:Business:TaxSavings     1500 USD
  Assets:Business:Checking     -1500 USD

Разберём, что здесь происходит:

  • Мы открываем необходимые счета в начале (с датой начала). Beancount требует, чтобы каждый счёт был открыт до его использования — проводка на необъявленный счёт вызывает ошибку загрузки, — поэтому эти директивы open обязательны, а не просто вопрос стиля. Счета Assets:Business:Checking и Assets:Business:TaxSavings будут хранить остатки в USD; счета доходов и расходов можно оставить без валюты в директиве open, так как они унаследуют валюты транзакций (в данном случае USD).
  • Оплата счёта от клиента: 2025-08-15 транзакция дохода фиксирует клиентский платёж в размере $5 000 по счёту-фактуре. Мы кредитуем Income:Client:ACME (в двойной записи доход увеличивается отрицательной суммой) и дебетуем расчётный счёт. Поле метаданных invoice: "INV-2025-08-15" включено для указания номера счёта-фактуры — это необязательно, но показывает, как можно прикрепить к транзакции дополнительную информацию. Вы также можете пометить эту транзакцию тегом #ACME или #client-ACME для быстрой фильтрации. Если у вас несколько клиентов, можно использовать общий счёт Income:Clients и полагаться на такие метаданные или поле Payee для различения клиентов вместо создания множества подчинённых счетов.
  • Деловой расход (ПО): 2025-08-05 мы записываем расход в $15 на подписку GitHub (возможно, для приватных репозиториев или других сервисов). Проводка идёт на Expenses:Business:Software и уменьшает деловой расчётный счёт. Мелкие повторяющиеся расходы вроде этого можно помечать тегами (например, ниже мы добавили #tax к налоговой транзакции; аналогично вы можете помечать определённые расходы как #recurring, если они ежемесячные, и т. д.). В данном случае само название счёта (Software) всё проясняет.
  • Выплата субподрядчику: 2025-08-20 фрилансер заплатил субподрядчику (Jane Doe) $2 000. Это фиксируется как расход на Expenses:Business:Contractors и отток денег с расчётного счёта. Вы можете указать имя субподрядчика в описании (как мы сделали) или в поле метаданных (например, contractor: "Jane Doe"). Это сохраняет аудиторский след о том, кому и за что вы платили (полезно, если нужны детали при подаче налоговой декларации или бюджетировании).
  • Перевод на налоговые накопления: 2025-08-31 фрилансер переводит $1 500 с основного расчётного счёта на выделенный счёт налоговых накоплений. Мы пометили эту транзакцию тегом #tax для наглядности. Это не расход (вы просто перемещаете собственные деньги), поэтому она проходит между двумя счетами активов. Делая это ежемесячно или ежеквартально, вы накапливаете средства для покрытия расчётных налогов. Когда придёт время фактически уплатить налоги государству, вы запишете расход (скажем, Expenses:Taxes) и списание со счёта TaxSavings (или Checking). Частая ошибка — трактовать этот перевод как расход в отчётах; помните, это не расход, а лишь предупредительное резервирование. Только фактическая уплата налога в налоговый орган будет расходом (или уменьшением начисленного налогового обязательства, если вы отслеживаете его таким образом).

Резюме: Книга Beancount фрилансера делает упор на простоту и ясность. Все доходы и оттоки, связанные с бизнесом, записываются методично. Используя осмысленные названия счетов и occasional теги/метаданные, вы можете легко формировать отчёты по клиентам или категориям расходов (например, общий доход по клиенту, общая сумма, потраченная на субподрядчиков в этом году, и т. д.). Эта настройка масштабируема — вы можете добавлять новых клиентов или категории расходов по мере развития бизнеса. Благодаря таким возможностям, как автоматизированный импорт (для подгрузки банковских транзакций) и пользовательские теги для проектов или счетов-фактур, Beancount может значительно снизить накладные расходы на бухгалтерию для фрилансеров, обеспечивая при этом чёткую картину финансов в любой момент.

Малый бизнес​

Теперь рассмотрим небольшой бутиковый бизнес электронной коммерции — например, интернет-магазин, продающий изделия ручной работы. Этот сценарий добавляет сложности, такие как управление запасами, себестоимость проданных товаров (COGS) и работа с онлайн-платёжными процессорами. Beancount может учесть это с продуманной структурой счетов и методом записи транзакций. Мы рассмотрим случай, когда бизнес отслеживает товары в запасах, фиксирует продажи через онлайн-платформу (например, Shopify с Stripe для платежей) и записывает типичные деловые расходы.

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

  • Assets:Bank:Checking — расчётный счёт бизнеса (для оплаты поставщикам, операционных расходов и получения переводов от платёжных процессоров).
  • Assets:Stripe:Balance (или Assets:PayPal и т. д.) — клиринговый счёт для средств, собранных через онлайн-платежи, которые ещё не поступили в банк. Например, когда клиент платит через Stripe, деньги могут находиться на счёте Stripe, прежде чем будут зачислены в ваш банк пакетами.
  • Assets:Inventory:Продукт — счета запасов для ваших продуктов. Вы можете рассматривать каждый продукт (или категорию продуктов) как товар в Beancount для отслеживания количества на складе. Например, Assets:Inventory:Widgets может хранить количество товаров «Widget», имеющихся в наличии, оцененных по себестоимости.
  • Income:Sales — фиксирует выручку от продаж продуктов. Вы можете использовать подчинённые счета для разных каналов продаж (например, Income:Sales:Online vs Income:Sales:InStore), если у бизнеса несколько каналов, но мы упростим до одного счёта доходов от продаж.
  • Expenses:COGS — себестоимость проданных товаров, для учёта себестоимости товаров запаса при их продаже. Этот счёт фактически покажет, во сколько вам (как владельцу бизнеса) обошёлся проданный запас за период. Это ключевой компонент для расчёта валовой прибыли.
  • Expenses:Fees — для комиссий за обработку платежей и платформенных сборов (сборы Stripe, Shopify, PayPal и т. д. можно записывать здесь). При желании это можно разделить на более детальные счета (например, Expenses:Fees:Stripe и Expenses:Fees:Shopify), но для всех транзакционных сборов может хватить и одного счёта.
  • Expenses:Operating — общие деловые расходы, не связанные напрямую с COGS, такие как маркетинг, хостинг сайта, ПО, упаковочные материалы и т. д. Их можно разбить на подчинённые счета (например, Expenses:Marketing, Expenses:WebHosting, Expenses:Shipping) для анализа различных центров затрат.
  • Liabilities:SalesTax — (необязательно, если применимо) Если бизнес должен взимать налог с продаж или НДС, этот счёт обязательств отслеживает собранные, но ещё не перечисленные государству налоги. Каждая продажа тогда выделяет налоговую часть на этот счёт. Это гарантирует, что собранные налоги не считаются доходом и зарезервированы для уплаты налоговым органам.
  • Equity:OwnerEquity — (необязательно) Представляет инвестиции владельца и нераспределённую прибыль. При запуске бизнеса любое первоначальное финансирование владельцем кредитовалось бы здесь (с дебетом на банк или запасы, если он внёс деньги или товары). Также, если владелец изымает прибыль (распределения), это можно записать против этого счёта капитала. Это сохраняет баланс балансового отчёта, но в повседневной деятельности используется нечасто.

Обоснование: Такая настройка разделяет поток товаров и денег. Закупки запасов изначально записываются в балансовом отчёте (как активы), а не сразу как расходы. Только при продаже продуктов вы списываете их себестоимость (COGS), сопоставляя выручку со связанным расходом для правильного расчёта прибыли. Доход от продаж записывается по валовой цене продажи, а сборы записываются отдельно, чтобы вы видели как валовую выручку, так и уплаченные сборы (и, следовательно, чистую выручку). Использование клирингового счёта вроде Assets:Stripe:Balance помогает при сверке депозитов — деньги переходят из Stripe в банк пакетами, и вы можете записывать эти переводы без путаницы. Частая ошибка новых владельцев магазинов — пренебрегать правильным учётом запасов, например, списывать все закупки запасов сразу в расходы. Это может быть приемлемо для отслеживания денежного потока, но искажает вашу прибыль: в месяцы закупок вы будете выглядеть менее прибыльными, а в месяцы продаж — более прибыльными, хотя запасы были куплены раньше. Используя счёт активов запасов и COGS, вы выравниваете затраты с продажей. Ещё одна ошибка — не учитывать сборы или возвраты, что может привести к несоответствию остатков вашего банка или Stripe с записанным доходом. Мы избегаем этого, явно записывая сборы и используя счёт активов Stripe для отслеживания того, что Stripe должен или уже выплатил.

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

Возможности Beancount, на которые стоит обратить внимание: Отслеживание запасов в Beancount использует его способность работать с товарами и затратами. Каждый продукт может быть символом товара (например, WIDGET), что позволяет записывать как количество, так и удельную себестоимость. При продаже товаров вы указываете, из какого лота затрат списываете, и Beancount берёт из него — см. методы учёта запасов для полного набора. Метод бронирования по умолчанию — STRICT, который требует однозначности лота; именно поэтому в примере он указывается явно с помощью {10 USD}. Чтобы Beancount выбирал лот автоматически (сначала самый старый), включите для счёта FIFO в его директиве open: open Assets:Inventory:Widgets WIDGET "FIFO". В примере мы будем использовать явную форму STRICT. Вы также можете использовать метаданные или ссылки, чтобы связать продажи с соответствующими записями COGS (например, используя одинаковый номер заказа в обеих транзакциях или общий тег вроде #order1001 на продаже и уменьшении запасов, что упрощает запрос или перепроверку того, что у каждой продажи есть соответствующая запись COGS). Кроме того, здесь может помочь автоматизированный импорт: вы можете использовать скрипт для импорта данных о продажах из Shopify или отчётов о выплатах Stripe, либо импортировать банковские выписки для выявления транзакций расходов и выплат. Автоматизация этих повторяющихся задач ввода данных означает, что вы больше времени тратите на анализ и меньше — на набор цифр.

Пример фрагмента книги учета малого бизнеса​

Ниже приведён сжатый пример Beancount для нашего бутикового бизнеса электронной коммерции. Мы иллюстрируем закупку запасов, запись продажи (с зачётом комиссии платёжного процессора) и запись себестоимости проданных товаров для этой продажи. На практике вы также аналогично записывали бы другие расходы (например, платформенные сборы, рекламные расходы и т. д.) по образцу примера с комиссией. Мы предполагаем USD в качестве валюты и продукт под названием «Widget», который отслеживаем как товар в запасах.

1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:Stripe:Balance
1970-01-01 open Assets:Inventory:Widgets WIDGET
1970-01-01 open Income:Sales
1970-01-01 open Expenses:COGS
1970-01-01 open Expenses:Fees
 
; Purchase inventory (50 units of Widget at $10 cost each)
2025-03-10 * "Bought 50 Widgets from SupplierCo"
  Assets:Inventory:Widgets      50 WIDGET {10 USD}
  Assets:Bank:Checking        -500 USD
 
; Sale to customer (Order #1001 via online store, 2 Widgets sold)
2025-04-05 * "Sale Order #1001 (2x Widget via Shopify)"
  Assets:Stripe:Balance         58 USD   ; net payment received after fees
  Expenses:Fees                  2 USD   ; processing fee (Stripe)
  Income:Sales                 -60 USD   ; revenue for 2 Widgets (@ $30 each)
 
; Cost of goods sold for the above sale (2 Widgets at $10 cost each)
2025-04-05 * "COGS for Order #1001 (2x Widget)"
  Expenses:COGS                 20 USD
  Assets:Inventory:Widgets     -2 WIDGET {10 USD}

Вот что происходит шаг за шагом:

  • Открытие счетов: Мы открываем расчётный счёт, счёт остатка Stripe, счёт запасов для Widgets (объявленный с товаром WIDGET для отслеживания единиц) и основные счета доходов и расходов (Sales, COGS, Fees). Объявляя Assets:Inventory:Widgets WIDGET, мы указываем, что этот счёт будет хранить количества товара «WIDGET». Это гарантирует, что Beancount знает об ожидаемых здесь единицах товара, и мы можем привязать затраты к этим единицам.

  • Закупка запасов: 2025-03-10 мы покупаем запасы — 50 единиц Widget у поставщика по $10 за штуку, общей стоимостью $500. Транзакция дебетует Assets:Inventory:Widgets на 50 WIDGET {10 USD}. Это означает, что 50 единиц товара WIDGET, каждая с записанной себестоимостью 10 USD, добавляются на счёт запасов. Кредитуется Assets:Bank:Checking -500 USD (отток денег). Обратите внимание, что мы не трогали счёт расходов напрямую здесь; мы капитализируем закупку как актив запасов. Теперь в нашем балансовом отчёте 50 Widgets общей стоимостью $500 в запасах. (Если бы вы запустили отчёт по балансу, счёт Inventory показал бы 50 единиц WIDGET стоимостью $500.)

  • Запись продажи (Заказ №1001): 2025-04-05 мы записываем продажу 2 Widgets через наш интернет-магазин. Описание включает номер заказа для ясности. Эта транзакция включает три проводки:

    • Assets:Stripe:Balance 58 USD: деньги, полученные от продажи, но пока находящиеся в Stripe (за вычетом сборов). Предположим, клиент заплатил $60 всего; Stripe взял комиссию $2, и $58 теперь на нашем счёте Stripe (для последующего перевода в банк). Мы записываем $58 как актив в Stripe.
    • Expenses:Fees 2 USD: комиссия $2 записывается как деловой расход. Это гарантирует, что наш отчёт о прибылях и убытках отразит эту стоимость, и что наш актив Stripe плюс расход на комиссию вместе равны общей сумме платежа клиента.
    • Income:Sales -60 USD: мы записываем $60 дохода от продаж. (Счета доходов увеличиваются кредитами, отсюда отрицательная сумма в нотации Beancount).

    После этой транзакции чистый эффект таков: Income:Sales вырос на 60, дополнительный актив $58 (задолженность от Stripe) и расход $2 на комиссию. Если позже Stripe зачислит $58 в наш банк, мы запишем простой перевод вроде Assets:Bank:Checking 58 USD / Assets:Stripe:Balance -58 USD на дату выплаты — это перемещает актив со счёта Stripe в банк без влияния на доходы или расходы (просто перемещение активов). Мы не показали этот перевод выше, но это важный шаг в реальном бухгалтерском учёте, чтобы поддерживать ваш счёт Stripe на нуле после перевода всех средств.

  • Запись COGS для продажи: Также 2025-04-05 у нас есть отдельная транзакция для записи себестоимости 2 проданных Widgets. Мы дебетуем Expenses:COGS 20 USD и кредитуем Assets:Inventory:Widgets -2 WIDGET {10 USD}. Это списывает 2 единицы из запасов (каждая имела себестоимость $10, как записано ранее, итого $20). Мы указываем {10 USD}, чтобы сообщить Beancount, из какого лота затрат списывать — в данном случае он соответствует лоту, добавленному 2025-03-10. Теперь на счёте запасов останется 48 Widgets со связанной стоимостью $480. Сумма $20 переносится в расход COGS, который появится в отчёте о прибылях и убытках, уменьшая валовую прибыль на себестоимость этих товаров. (Если бы мы не записали это, наш доход был бы завышен относительно расходов.) Мы используем отдельную транзакцию для ясности, но также возможно объединить продажу и COGS в одну многострочную транзакцию. Некоторые предпочитают разделять их, как показано, для читаемости и сверки (вы можете чётко связать каждую запись COGS с заказом). Мы также повторили номер заказа в описании, чтобы легко видеть, что эта запись COGS соответствует Заказу №1001. Хорошая практика — обеспечивать соответствие каждой продажи записи COGS при наличии запасов; пропуск одной означал бы, что ваши подсчёты запасов неверны. Ошибка, которой следует избегать, — забыть списать запасы для продажи, что оставит в балансовом отчёте фантомный запас, а ваши расходы будут занижены. Использование возможностей учёта запасов Beancount (нотация стоимости {}) помогает выявить попытку списать больше единиц, чем у вас есть в наличии (в этом случае программа выдаст ошибку).

Резюме: Малый бизнес, использующий Beancount, может поддерживать на удивление надёжную систему учёта. Структурируя счета для отслеживания где находятся деньги, откуда они приходят и как движутся затраты, вы получаете точную картину прибыльности. Наш пример показал, как обрабатывать запасы и продажи; вы аналогично записывали бы другие транзакции, такие как оплата счёта за интернет (Expenses:Operating:Internet против Assets:Bank:Checking), получение кредита или инвестиций (Assets:Bank против Liabilities:Loan или Equity:OwnerEquity) или уплата налога с продаж (Liabilities:SalesTax против Assets:Bank при перечислении). Главное — последовательность: записывайте каждый тип транзакции по одному и тому же образцу, и Beancount будет поддерживать баланс книг. Благодаря таким возможностям, как автоматизированный импорт данных (например, подгрузка ежемесячных сборов Stripe или банковских транзакций) и пользовательские теги/ссылки (для соотнесения связанных транзакций, таких как продажи и возвраты), система может быть как гибкой, так и эффективной. Результат — организованная книга, которая масштабируется по мере роста бизнеса: вы можете добавлять новые счета запасов продуктов, новые категории расходов или дополнительные источники дохода (скажем, новый онлайн-маркетплейс) без перестройки всей системы.

Личные финансы​

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

Ключевые счета для личных финансов: Книга личных финансов обычно включает множество счетов активов, обязательств, доходов и расходов:

  • Assets:Bank:Checking — ваш основной расчётный счёт для зачисления дохода и оплаты счетов.
  • Assets:Bank:Savings — накопительный счёт для резервного фонда или конкретных целей. (У вас может быть несколько накопительных или инвестиционных счетов — каждый может быть счётом активов).
  • Assets:Cash — если вы используете наличные для расходов, у вас может быть счёт наличных для отслеживания снятий и расходов наличными.
  • Assets:Investments:Брокер — инвестиционные счета, такие как брокерский, пенсионный 401(k)/IRA и т. д. Они могут дополнительно разбиваться по типам инвестиций или просто объединяться в один счёт на учреждение. Например, Assets:Investments:VanguardIRA или Assets:Investments:Robinhood. Отслеживание инвестиций может также включать товары для акций или фондов, но если это слишком детально, вы можете просто отслеживать взносы и остатки на счетах.
  • Liabilities:CreditCard:Название — один счёт на каждую кредитную карту (например, Liabilities:CreditCard:Visa или по названию банка). Все покупки по карте записываются здесь (с равным расходом), а платежи по карте — это переводы, уменьшающие это обязательство.
  • Liabilities:Loan:Название — любые кредиты (студенческий, ипотека, автокредит) можно отслеживать счётом обязательств. Вы бы записывали остаток основного долга и каждый платёж, разделяя проценты (расход) и основной долг (уменьшение обязательства). Это продвинутый аспект, но важный для полной финансовой картины.
  • Income:Salary (и/или Income:Bonus, Income:Interest и т. д.) — для записи зарплаты, бонусов, процентного дохода, дивидендов и т. д. Счета доходов позволяют видеть общий заработок из различных источников. (Если из вашей зарплаты уже удержаны налоги, вы можете записывать чистый депозит на расчётный счёт как доход, либо записывать валовую сумму и налоговые удержания как расход или обязательство — существуют разные подходы, но многие для простоты в личных книгах просто записывают чистую зарплату как доход.)
  • Expenses: Обычно многочисленные, разделённые на значимые для вас категории. Например: Expenses:Housing:Rent, Expenses:Food:Groceries, Expenses:Food:DiningOut, Expenses:Utilities:Electricity, Expenses:Entertainment, Expenses:Travel, Expenses:Taxes, Expenses:Misc — любые категории, отражающие ваши привычки расходования. Вы можете быть настолько детальными или общими, насколько хотите. Иерархия счетов помогает агрегировать (например, Expenses:Food суммирует как продукты, так и питание вне дома). Обычная практика — иметь иерархию для основных групп (Жильё, Еда, Транспорт, Здравоохранение и т. д.).
  • Equity:Opening-Balances — используется для инициализации остатков счетов при запуске книги (чтобы все активы минус обязательства равнялись вашему начальному чистому капиталу, записанному в капитале). После начала вы также можете использовать Equity:Retained-Earnings или подобное для представления накопленной чистой прибыли (хотя в личных финансах вы обычно просто позволяете доходам минус расходы перетекать в чистый капитал). Счета капитала менее заметны в повседневности, но обеспечивают баланс бухгалтерского уравнения.

Обоснование: Настройка личных финансов — это фиксация вашей финансовой жизни в одной связной системе. Каждый из перечисленных счетов служит для разделения разных видов финансов, чтобы вы могли отвечать на вопросы вроде «Сколько я потратил на еду в этом месяце?» (суммируя Expenses:Food:*), «Сколько долга у меня осталось?» (глядя на счета обязательств) или «Каков мой чистый капитал?» (активы минус обязательства). Большое преимущество двойной записи здесь — точность: например, когда вы записываете счёт за продукты на $100 на кредитную карту, вы регистрируете это как расход и увеличение обязательства. Позже, когда вы оплачиваете кредитную карту, вы записываете перевод с банковского счёта на карту — это уменьшает обязательство, но не задваивает расход на продукты (который уже был записан). Частая ошибка без двойной записи — трактовать платёж по кредитной карте как сам расход, фактически считая $100 дважды. Beancount предотвращает это по своей конструкции. Ещё одна ошибка, которой следует избегать, — не сверять счета: с Beancount вы можете использовать утверждения о балансе или директиву balance, чтобы убедиться, например, что остаток вашего расчётного счёта в книге соответствует фактической банковской выписке. Это выявляет пропущенные или дублирующие записи.

Возможности Beancount, на которые стоит обратить внимание: Для личных финансов автоматизированный импорт особенно полезен из-за объёма транзакций. Вы можете использовать фреймворк импортёров Beancount или скрипты сообщества для импорта банковских транзакций, выписок по кредитным картам и даже инвестиционных транзакций из CSV, OFX или API-источников. Это означает, что вы тратите меньше времени на ручной ввод каждой покупки кофе. Пользовательские теги полезны для нарезки данных способами, которые счета могут не обеспечить. Например, пометьте все расходы, связанные с отпуском, тегом #vacation2025 независимо от того, авиабилеты это, отели или питание — затем вы легко сможете запросить общую стоимость этого отпуска. Или пометьте определённые расходы как #deductible, если вам нужно отслеживать статьи, подлежащие налоговому вычету, для последующего использования. Вы также можете помечать повторяющиеся счета (например, #monthly), чтобы ежегодно просматривать все свои подписки и фиксированные затраты. Метаданные можно использовать для прикрепления заметок или квитанций (например, receipt: "path/to/file.jpg", чтобы отметить наличие сохранённого изображения квитанции, или category: "Work Expense", если отслеживаете возмещаемые статьи). Гибкость тегов и метаданных означает, что вы можете адаптировать систему под свои личные потребности учёта, не создавая десятки дополнительных счетов.

Попробуйте конвертер перед написанием импортёра

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

Пример фрагмента книги учета личных финансов​

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

1970-01-01 open Assets:Bank:Checking
1970-01-01 open Liabilities:CreditCard:Visa
1970-01-01 open Expenses:Food:Coffee
1970-01-01 open Expenses:Housing:Rent
1970-01-01 open Assets:Investment:401k
 
; Daily spending example (coffee on a credit card)
2025-09-10 * "Starbucks Coffee" #daily
  Expenses:Food:Coffee       5.50 USD
  Liabilities:CreditCard:Visa   -5.50 USD
 
; Recurring monthly bill (rent paid from checking)
2025-09-01 * "Apartment Rent September" #recurring
  Expenses:Housing:Rent    1200 USD
  Assets:Bank:Checking    -1200 USD
 
; Retirement contribution (transfer from checking to 401k investment)
2025-09-15 * "401(k) Contribution" #retirement
  Assets:Investment:401k    500 USD
  Assets:Bank:Checking     -500 USD

Разберём эти транзакции:

  • Открытие счетов: Мы открываем расчётный счёт, счёт кредитной карты Visa, счёт расходов на кофе (как пример подкатегории расходов на еду), счёт расходов на аренду и инвестиционный счёт 401k. В реальной книге вы бы открыли все счета, которые планируете использовать (сбережения, другие категории расходов, доходы и т. д.). Мы ограничиваемся только необходимым для фрагмента.
  • Ежедневный расход — кофе: 2025-09-10 записывается покупка кофе за $5,50. Расход категоризируется под Expenses:Food:Coffee, и поскольку он был оплачен кредитной картой Visa, мы кредитуем (увеличиваем) Liabilities:CreditCard:Visa. Тег #daily добавлен, чтобы указать, что это была статья повседневных расходов — возможно, позже вы захотите отфильтровать все ежедневные дискреционные расходы. Обратите внимание, что после этого счёт кредитной карты покажет остаток $5,50 (то есть вы должны Visa $5,50). Если бы вы заплатили за этот кофе наличными, транзакция вместо этого кредитовала бы Assets:Cash (уменьшая имеющиеся у вас наличные). Если бы это была покупка по дебетовой карте, она кредитовала бы Assets:Bank:Checking. Механика аналогична, просто разные счета.
  • Повторяющийся счёт — аренда: 2025-09-01 мы записываем оплату месячной аренды в $1200. Она поступает с расчётного счёта (кредитуя Assets:Bank:Checking) и категоризируется как Expenses:Housing:Rent. Мы пометили её тегом #recurring, чтобы отметить, что это повторяющийся счёт. В полной книге у вас была бы точно такая же запись каждый месяц. (В Beancount нет встроенной функции автоматических повторяющихся транзакций, но вы можете добиться этого с помощью скриптов или просто копирования-вставки каждый месяц. Теги помогают позже убедиться, что вы не пропустили месяц, или быстро суммировать годовую аренду.) Некоторые пользователи используют функцию периодических транзакций через фреймворк импортёров Beancount для автоматической генерации таких записей, но это продвинутое использование за рамками данного материала. Главное — эта транзакция ясно показывает, куда ушли ваши деньги — расход на жильё — и ваш уменьшенный банковский остаток. Ошибка, за которой стоит следить: если вы делите расходы или у вас соседи по квартире, вы можете платить лишь часть аренды; в этом случае вы можете разделить транзакцию на вашу часть и часть, которую платит кто-то другой (возможно, записывая другую часть как Income:Reimbursements, если вам возмещают). В нашем простом случае мы платим полную сумму.
  • Пенсионный взнос: 2025-09-15 $500 переводится с расчётного счёта на инвестиционный счёт 401(k). Это не расход, а скорее перевод активов из одной формы (деньги) в другую (пенсионный фонд). Транзакция дебетует Assets:Investment:401k и кредитует Assets:Bank:Checking. Мы помечаем её тегом #retirement для ясности. После этого остаток вашего расчётного счёта уменьшится на 500, а остаток счёта 401k в книге увеличится на то, что представляют собой 500 USD (в зависимости от того, как вы отслеживаете инвестиции, вы можете впоследствии купить на эти деньги паи паевого фонда — это была бы ещё одна транзакция на инвестиционном счёте, например покупка X паёв фонда по цене Y, с выводом денег с актива 401k). В базовой личной книге вы можете просто рассматривать 401k как накопительный счёт и периодически обновлять его остаток или записывать взносы таким образом и, возможно, использовать котировки цен для роста. Важно то, что эта транзакция — перевод, а не расход — она наращивает ваши активы. Многие инструменты бюджетирования считали бы пенсионные взносы «расходами» (поскольку они уходят с вашего расчётного счёта), но в бухгалтерских терминах это просто перемещение денег в другой карман. Это различие помогает вам понимать норму сбережений в противовес расходам.

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

Если бы у нас была транзакция по оплате счёта кредитной карты, она выглядела бы как перевод денег с Checking на обязательство CreditCard (например, Liabilities:CreditCard:Visa 100 USD / Assets:Bank:Checking -100 USD). Это вернуло бы остаток кредитной карты обратно вниз (возможно, до нуля, если вы оплатили её полностью) и соответственно уменьшило ваш банковский остаток, без влияния на счета расходов — потому что вы уже записали расходы в момент покупки. Обязательно обрабатывать кредитные карты таким образом для точного отслеживания личных финансов. Вы также можете пометить платёж тегом (некоторые используют #cc-payment или подобное) или включить период выписки в описание для ясности.

Резюме: Книга личных финансов в Beancount помогает внести дисциплину и структуру в отслеживание денег. Категоризируя транзакции счетами (и, при желании, тегами), вы можете создавать содержательные отчёты: месячные расходы по категориям, годовые итоги, сколько вы сэкономили, и так далее. Подход двойной записи означает, что каждый доллар учтён: если остаток счёта уменьшился, он куда-то ушёл (другой счёт увеличился). Это выявляет ошибки и предотвращает распространённую проблему «пропавших денег» в более простых инструментах отслеживания. С автоматизацией вы можете импортировать большинство транзакций и затем просто просматривать и классифицировать их, что делает поддержание вполне осуществимым. Со временем вы создаёте всеобъемлющий финансовый дневник — он может даже обрабатывать такие вещи, как разделение счетов с друзьями (используя счета капитала или счета к получению/к оплате), отслеживание амортизации кредита или эффективности инвестиций, если вы решите расшириться в эти области. Даже в самом базовом виде (как показано во фрагменте) Beancount даёт вам ясность в ежедневных расходах, повторяющихся обязательствах и прогрессе к долгосрочным целям (например, пенсионным сбережениям). И поскольку это обычный текст, у вас полный контроль: вы можете писать скрипты, делать запросы или интегрировать его с другими инструментами (например, с веб-интерфейсом Fava для удобного просмотра). Короче говоря, эта настройка превращает ваши личные финансы в данные, которые вы можете анализировать и которым можете доверять, оставаясь при этом достаточно простой, чтобы не превратиться в рутину.


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

Источник: https://beancount.io/ru/docs/industry-specific-setups