Перейти к основному содержимому
Beancount.io Logo

Настройка Beancount для стартапов

Практичная, готовая к копированию базовая конфигурация для ведения бухгалтерии стартапа в текстовом формате. Подходит для этапов от посевного раунда до серии A. Это не юридическая или налоговая консультация.


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

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

1) Что вы настроите

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

  • Единый источник истины — реестр, управляемый в Git (main.beancount), предоставляющий полную и проверяемую историю финансов вашей компании.
  • Fava для красивых отчётов и графиков. Fava — это веб-интерфейс для Beancount, который превращает ваши текстовые файлы в интерактивные отчёты о прибылях и убытках, балансовые отчёты и анализ движения денежных средств.
  • Структуру для импортёров, которую вы сможете добавить позже для автоматизации ввода транзакций с вашего банковского счёта, кредитной карты, PayPal и Stripe. Мы начнём с ручного ввода, чтобы изучить систему, а затем автоматизируем процессы.
  • Готовый к учёту по методу начисления план счетов, разработанный для современных стартапов, с встроенной поддержкой отложенных доходов, расходов будущих периодов и обязательств по зарплате.
  • Основы для посевного финансирования, включая понятные примеры учёта SAFE-соглашений (как обязательств или капитала) и конвертируемых займов с процентами.

2) Структура проекта (добавьте в свой репозиторий)

Начните с создания следующей структуры каталогов внутри Git-репозитория вашей компании. Такая организация поддерживает ваш реестр чистым и масштабируемым.

/ledger
  main.beancount
  /includes
    accounts.beancount
    opening-balances.beancount
    policies.beancount
  /documents
    /bank
    /invoices
    /receipts
  /importers              # необязательно; добавьте при автоматизации импорта CSV
    bank_importer.py
    card_importer.py
  • main.beancount: центральный файл, объединяющий все компоненты.
  • /includes: содержит ваш план счетов, начальные остатки и учётную политику.
  • /documents: место для хранения PDF-файлов банковских выписок, счетов и квитанций для создания чистой аудиторской цепочки.
  • /importers: место, где будут находиться ваши будущие Python-скрипты для разбора банковских CSV-файлов.

3) Минимальный и разумный main.beancount

Это точка входа в ваш реестр. Здесь задаются несколько глобальных параметров и подключаются остальные файлы. Скопируйте это содержимое в ledger/main.beancount и настройте заголовок.

option "title" "Acme, Inc. Ledger"
option "operating_currency" "USD"
option "documents" "ledger/documents"
 
include "includes/accounts.beancount"
include "includes/opening-balances.beancount"
include "includes/policies.beancount"
 
; Если позже вы добавите импортёры, добавьте строки плагинов здесь.
; plugin "beancount.plugins.implicit_prices"

4) Стартовый план счетов (сначала метод начисления)

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

Поместите это в includes/accounts.beancount. Не стесняйтесь удалять счета, которые вам сейчас не нужны.

; --- Активы ---
1970-01-01 open Assets:Bank:Checking              USD
1970-01-01 open Assets:Bank:Savings                USD
1970-01-01 open Assets:AR                         USD         ; Дебиторская задолженность
1970-01-01 open Assets:Prepaid:Software            USD
1970-01-01 open Assets:Prepaid:Insurance           USD
1970-01-01 open Assets:Deposits                    USD         ; Гарантийные депозиты
1970-01-01 open Assets:Equipment                   USD
1970-01-01 open Assets:Intangibles                 USD
1970-01-01 open Assets:Crypto:BTC                  BTC
1970-01-01 open Assets:Other
 
; --- Обязательства ---
1970-01-01 open Liabilities:AP                     USD         ; Кредиторская задолженность
1970-01-01 open Liabilities:CreditCard:Corporate   USD
1970-01-01 open Liabilities:DeferredRevenue        USD
1970-01-01 open Liabilities:Payroll:Withholding    USD
1970-01-01 open Liabilities:Payroll:EmployerTaxes  USD
1970-01-01 open Liabilities:SalesTax:CA            USD
1970-01-01 open Liabilities:SAFE                   USD
1970-01-01 open Liabilities:NotesPayable           USD
1970-01-01 open Liabilities:Other
 
; --- Собственный капитал ---
1970-01-01 open Equity:CommonStock                 USD
1970-01-01 open Equity:APIC                        USD         ; Дополнительный оплаченный капитал
1970-01-01 open Equity:SAFE                        USD         ; Если вы классифицируете SAFE как капитал
1970-01-01 open Equity:RetainedEarnings            USD
1970-01-01 open Equity:OpeningBalances             USD
 
; --- Доходы (отрицательные остатки) ---
1970-01-01 open Income:Revenue:SaaS                USD
1970-01-01 open Income:Revenue:Services            USD
1970-01-01 open Income:Other                       USD
 
; --- Расходы ---
1970-01-01 open Expenses:COGS                      USD
1970-01-01 open Expenses:Payroll:Wages             USD
1970-01-01 open Expenses:Payroll:EmployerTaxes     USD
1970-01-01 open Expenses:Benefits                  USD
1970-01-01 open Expenses:Contractors               USD
1970-01-01 open Expenses:Software:Subscriptions    USD
1970-01-01 open Expenses:Cloud                     USD
1970-01-01 open Expenses:Rent                      USD
1970-01-01 open Expenses:Meals                     USD
1970-01-01 open Expenses:Travel                    USD
1970-01-01 open Expenses:Marketing                 USD
1970-01-01 open Expenses:Legal                     USD
1970-01-01 open Expenses:Accounting                USD
1970-01-01 open Expenses:Insurance                 USD
1970-01-01 open Expenses:BankFees                  USD
1970-01-01 open Expenses:Taxes:Income              USD
1970-01-01 open Expenses:Taxes:Sales               USD
1970-01-01 open Expenses:Other                     USD

Примечания

  • Счета доходов отрицательные, потому что они представляют кредиты в двойной записи. Не беспокойтесь об этом; Fava автоматически меняет знаки в отчётах, поэтому ваша выручка будет отображаться как положительное число в отчёте о прибылях и убытках.
  • Начните с узких и целенаправленных категорий. Гораздо проще добавить новые счета позже, чем разбираться с запутанным, излишне детализированным планом счетов.

5) Начальные остатки (первый день)

Первая транзакция в вашем реестре задаёт основу. Она фиксирует начальное состояние ваших счетов на день начала учёта. Поместите эту транзакцию в includes/opening-balances.beancount, откорректировав дату и суммы в соответствии с вашей реальной стартовой позицией.

2025-01-01 * "Начальные остатки"
  Assets:Bank:Checking              5,000.00 USD
  Liabilities:CreditCard:Corporate   -500.00 USD
  Equity:OpeningBalances           -4,500.00 USD

Эта запись устанавливает, что компания начала с $5,000 на банковском счёте и $500 задолженности по кредитной карте. Счёт Equity:OpeningBalances — это специальный счёт, используемый для обеспечения баланса транзакции до нуля, как того требует двойная бухгалтерия.


6) Типовые транзакции стартапа (копирование и вставка)

Вот шаблоны для наиболее распространённых финансовых событий на ранней стадии стартапа. Копируйте, вставляйте и адаптируйте их под свои нужды.

Покупка акций основателями (простая, только в валюте)

Когда основатели покупают свои первоначальные акции по номиналу, денежные средства поступают в компанию и фиксируются как капитал. Ваша таблица капитализации (Carta, Pulley или электронная таблица) является источником истины для количества акций; реестр просто фиксирует доллары.

2025-01-05 * "Покупка акций основателем по номиналу"
  Assets:Bank:Checking                800.00 USD
  Equity:CommonStock                   -0.80 USD
  Equity:APIC                        -799.20 USD
  ; 8,000,000 обыкновенных акций по $0.0001 — количество ведётся вне реестра

(Необязательно) Отслеживание собственных акций как товара

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

2025-01-05 commodity ACME
  name: "Acme, Inc. Common"
 
2025-01-05 * "Выпуск акций основателям"
  Assets:Bank:Checking                800.00 USD
  Equity:APIC                        -799.20 USD
  Equity:CommonStock           -8,000,000 ACME {0.0001 USD}

Поступление средств по SAFE (выберите классификацию)

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

; (A) Классификация как капитал (промежуточный)
2025-02-01 * "Post-money SAFE — SeedFund"
  Assets:Bank:Checking            500,000.00 USD
  Equity:SAFE                    -500,000.00 USD
 
; (B) Классификация как обязательство (до конвертации)
2025-02-01 * "Post-money SAFE — SeedFund"
  Assets:Bank:Checking            500,000.00 USD
  Liabilities:SAFE               -500,000.00 USD

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

Конвертируемый займ с начисленными процентами

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

2025-03-01 * "Конвертируемый займ — 6% годовых"
  Assets:Bank:Checking            250,000.00 USD
  Liabilities:NotesPayable       -250,000.00 USD
 
2025-06-30 * "Начисление процентов по займу за Q2"
  Expenses:Interest                 3,750.00 USD
  Liabilities:NotesPayable         -3,750.00 USD
  ; 250,000 * 6% * 0.25 = 3,750

Годовая продажа SaaS (отложенный доход + ежемесячное признание)

Это краеугольный камень учёта по методу начисления. Когда клиент предоплачивает год, вы не зарабатываете всю эту выручку сразу. Вы относите её на обязательство (DeferredRevenue), а затем признаёте 1/12 каждый месяц.

2025-03-10 * "Годовая подписка — AcmeCo — INV-001"
  Assets:AR                       1,200.00 USD
  Liabilities:DeferredRevenue    -1,200.00 USD
  narration: "SaaS годовая предоплата"
 
2025-03-20 * "Оплата INV-001"
  Assets:Bank:Checking            1,200.00 USD
  Assets:AR                      -1,200.00 USD
 
; Признание 1/12 (повторяйте ежемесячно или скриптом)
2025-04-01 * "Признание выручки 1/12 — INV-001"
  Liabilities:DeferredRevenue       100.00 USD
  Income:Revenue:SaaS              -100.00 USD

Расходы будущих периодов и амортизация

Это обратная сторона отложенного дохода. Когда вы предоплачиваете услугу (например, годовое программное обеспечение или страховку), вы фиксируете её как актив (Prepaid), а затем «амортизируете» или списываете часть каждый месяц.

2025-03-01 * "Годовая предоплата за ПО"
  Assets:Prepaid:Software         1,200.00 USD
  Assets:Bank:Checking           -1,200.00 USD
 
2025-04-01 * "Амортизация предоплаты 1/12"
  Expenses:Software:Subscriptions   100.00 USD
  Assets:Prepaid:Software          -100.00 USD

Расчёт зарплаты (чистые денежные средства, с удержаниями + налогами работодателя)

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

2025-04-15 * "Зарплата — 15 апреля"
  Expenses:Payroll:Wages          15,000.00 USD
  Expenses:Payroll:EmployerTaxes   1,200.00 USD
  Liabilities:Payroll:Withholding -4,000.00 USD
  Assets:Bank:Checking           -12,200.00 USD

Сбор и перечисление налога с продаж (пример для Калифорнии)

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

2025-05-10 * "Счёт #123 — облагается налогом в Калифорнии"
  Assets:AR                       1,088.75 USD
  Income:Revenue:SaaS              -999.00 USD
  Liabilities:SalesTax:CA           -89.75 USD
 
2025-06-05 * "Оплата #123"
  Assets:Bank:Checking            1,088.75 USD
  Assets:AR                      -1,088.75 USD
 
2025-07-20 * "Перечисление налога с продаж в Калифорнии за Q2"
  Liabilities:SalesTax:CA            89.75 USD
  Assets:Bank:Checking              -89.75 USD

Валютные операции и криптовалюта (лёгкий подход)

Beancount изначально поддерживает несколько валют. Используйте директивы price для записи обменных курсов и синтаксис {} для указания себестоимости в конкретных транзакциях.

2025-03-01 price EUR 1.0832 USD
 
2025-03-02 * "Платеж AWS в EU"
  Expenses:Cloud                     90.00 EUR
  Liabilities:CreditCard:Corporate  -90.00 EUR
 
2025-03-05 * "Покупка BTC для тестирования"
  Assets:Crypto:BTC                   0.0200 BTC {3400.00 USD}
  Assets:Bank:Checking           -3,400.00 USD

7) Использование Fava (отчёты одной командой)

Fava — это блестящий веб-интерфейс, который оживляет данные Beancount. Это награда за ваш тщательный ввод данных.

  • Установка: $ pip install fava
  • Запуск: $ fava ledger/main.beancount
  • Полезные представления: Отчёт о прибылях и убытках, Балансовый отчёт, Журнал (для фильтрации по счетам/тегам) и Запросы (для кастомных SQL-подобных запросов).

Быстрые фильтры Fava:

  • account:DeferredRevenue: Показать всю активность по счёту отложенных доходов.
  • tag:#invoice-001: Помечать транзакции, связанные с конкретным счётом, и фильтровать по ним.
  • from:2025-01-01 to:2025-12-31: Сосредоточиться на конкретном финансовом периоде.

8) Чек-лист ежемесячного закрытия (15–45 минут)

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

  • Банк/кредитные карты: Импортируйте или вручную введите все транзакции. Сверьте остатки с выписками.
  • Дебиторская/кредиторская задолженность: Проведите все выставленные счета и полученные счета; отметьте оплаченные как погашенные.
  • Выручка: Проведите ежемесячные записи о признании выручки по всем предоплаченным контрактам.
  • Расходы будущих периодов: Амортизируйте 1/12 (или соответствующую долю) всех расходов будущих периодов.
  • Зарплата: Отразите журнальную запись из отчёта вашего зарплатного провайдера.
  • Налог с продаж: Отразите обязательство по налогу с продаж за месяц.
  • Посевные инструменты: Начислите проценты по конвертируемым займам.
  • Контрольные проверки:
    • Соответствует ли выручка в отчёте о прибылях и убытках вашим ожидаемым MRR/ARR?
    • Согласуются ли скорость расходования средств и взлётная полоса с вашим финансовым планом?
    • Выполняется ли $ bean-check без ошибок? Выглядят ли отчёты Fava корректно?
  • Коммит в Git с кратким и последовательным сообщением (например, close: 2025-04).

9) Метаданные и документы (упростите аудит)

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

  • Добавляйте метаданные, такие как payee:, narration:, invoice:, customer: или link:, к транзакциям для ясности.
  • Прикрепляйте исходные PDF-файлы (счета, квитанции, банковские выписки) в папку ledger/documents/ и связывайте их с помощью тега метаданных document:.
  • Используйте теги (#payroll, #saas, #vendor-aws, #invoice-001) для лёгкой фильтрации и анализа.

Пример:

2025-03-10 * "Годовая подписка — AcmeCo" #saas #invoice-001
  payee: "AcmeCo"
  invoice: "INV-001"
  document: "documents/invoices/INV-001.pdf"
  Assets:AR                       1,200.00 USD
  Liabilities:DeferredRevenue    -1,200.00 USD

10) Импорт позже (когда будет время)

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

Типичный порядок действий для импортёров:

  1. Банковский CSV → Assets:Bank:Checking
  2. CSV кредитной карты → Liabilities:CreditCard:Corporate
  3. Отчёты о выплатах Stripe/PayPal → Сопоставление выручки и денежных средств

Храните импортёры в /ledger/importers и проверяйте сгенерированные ими транзакции так же, как любые другие изменения кода.


11) Политики (поместите в includes/policies.beancount)

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

  • Метод начисления; признавайте SaaS-выручку пропорционально.
  • Функциональная валюта — USD; фиксируйте курсы валют по дневному или транзакционному курсу.
  • Порог капитализации (например, предметы дороже $2,500 становятся Assets:Equipment; в противном случае они списываются сразу).
  • Командировки/Питание: Деловая цель должна быть задокументирована в поле narration.
  • Запись капитала: Явно укажите, используете ли вы метод только в валюте или акции как товар.
  • SAFE/займы: Задокументируйте выбранную классификацию (обязательство или капитал).

Пример policies.beancount:

; Политика: метод начисления, выручка откладывается и признается ежемесячно.
; Политика: функциональная валюта USD. Курсовые разницы выводятся из данных о цене/себестоимости.
; Политика: капитализировать материальные активы дороже $2,500 с линейной амортизацией за 3 года.
; Политика: SAFE учитываются как обязательства до конвертации в раунде с оценкой.

12) Быстрое устранение неполадок

  • Выручка выглядит отрицательной в журнале: Это нормально! Доход — это кредит. В отчётах Fava она будет отображаться как положительное число.
  • Остатки не сходятся к нулю: Вероятно, у вас незавершённая транзакция. Сумма проводок транзакции должна быть равна нулю. Используйте представление журнала Fava, чтобы найти проблему. В качестве временной меры вы можете добавить балансирующую проводку на счёт Equity:Suspense, чтобы файл стал корректным, а затем расследовать и исправить корневую причину.
  • Несовпадения курсов валют: Убедитесь, что у вас есть директивы price на соответствующие даты или что вы указываете себестоимость в вашей функциональной валюте, например, 90.00 EUR {97.49 USD}.

13) Что отслеживать вне реестра (сохраняйте ссылки)

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

  • Таблица капитализации: Используйте Carta, Pulley или электронную таблицу. Связывайте подписанные закрывающие документы из ваших финансовых операций в Beancount.
  • Согласия совета директоров, опционный план, отчёты 409A: Храните их в безопасном месте и добавляйте метаданные link: к соответствующим операциям с капиталом.
  • Налоговые декларации: Храните финальные PDF-файлы и привязывайте их к транзакции закрытия года.

Готовый стартовый файл (всё в одном)

Если вы предпочитаете начать с одного файла, прежде чем переходить к структуре include, вы можете просто вставить содержимое файлов из разделов выше в один большой main.beancount. Вы всегда сможете отрефакторить его позже по мере роста вашего реестра.

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