Перейти до основного вмісту

Вступ до Beancount.io

Цей посібник узагальнює найкращі практики ведення обліку у вигляді звичайного тексту за допомогою потужного інструменту з відкритим кодом – Beancount. Він охоплює основні принципи, базовий та розширений синтаксис, практичні приклади для складних активів і стратегії довгострокового управління книгою обліку.

Частина 1: "Чому" - Основи Розумного Бухгалтерського Обліку

Перш ніж занурюватися в "як", важливо зрозуміти "чому". Ефективний бухгалтерський облік є основою управління особистими фінансами та необхідним кроком до фінансової ясності та свободи.

Вихід за межі Відстеження Витрат: Шлях до Фінансової Ясності

Прості програми для відстеження витрат показують, куди пішли ваші гроші. Надійна система обліку показує вам це та багато іншого: вона надає повну картину вашого фінансового стану, включаючи ваш власний капітал, грошовий потік і результати ваших інвестицій. Основна мета – спостережливість — отримання чіткого, заснованого на даних розуміння вашого фінансового життя, що дозволяє вам приймати обґрунтовані рішення, оцінювати ризики та працювати над довгостроковими цілями, такими як вихід на пенсію.

Чому Подвійний Запис? Сила Збалансованої Системи

На відміну від одинарного бухгалтерського обліку (простий перелік витрат), метод подвійного запису фіксує кожну транзакцію як потік вартості між принаймні двома рахунками. Його основним принципом є фундаментальне бухгалтерське рівняння:

Активи=Зобов’язання+Власний капітал (Чиста вартість)\text{Активи} = \text{Зобов'язання} + \text{Власний капітал (Чиста вартість)}

Ця система гарантує, що ваші книги завжди збалансовані, що значно зменшує кількість помилок. Вона надає повну фінансову картину, створюючи важливі звіти, такі як Баланс (чим ви володієте і що винні) і Звіт про прибутки та збитки (що ви заробили та витратили).

Частина 2: Початок роботи з Beancount

Beancount – це потужний інструмент на основі Python для ведення обліку у вигляді звичайного тексту.

Ваш Перший Погляд з Fava на Beancount.io

Beancount.io надає потужне середовище, яке поєднує в собі механізм Beancount з мобільним додатком (iOS, Android) і веб-додатком - Fava, фантастичним веб-інтерфейсом для візуалізації вашої книги обліку. Встановлення не потрібне. Коли ви використовуєте платформу, ви безпосередньо взаємодієте з текстовим редактором для вашого файлу книги обліку (наприклад, main.bean) і бачите, як оновлюються звіти, згенеровані Fava, в режимі реального часу.

Fava бере звичайний текст, який ви пишете, і перетворює його на інтерактивні діаграми, фінансові звіти та списки транзакцій, які можна фільтрувати, надаючи вам чітке уявлення про ваші фінансові звіти.

П'ять Основних Типів Рахунків

Beancount використовує п'ять типів рахунків верхнього рівня, які формують структуру вашої книги обліку:

Тип РахункуОписТиповий Баланс
AssetsТе, чим ви володієте (готівка, банківські рахунки, інвестиції, нерухомість).Позитивний
LiabilitiesТе, що ви винні (заборгованість за кредитною карткою, позики, іпотека).Негативний
IncomeЗвідки надходять гроші (зарплата, премії, відсотки).Негативний
ExpensesКуди йдуть гроші (їжа, оренда, подорожі, податки).Позитивний
EquityВаша чиста вартість; використовується для початкових залишків.Негативний

Рівняння Beancount

Beancount застосовує власну версію бухгалтерського рівняння, де сума всіх проводок у всій вашій книзі обліку дорівнює нулю:

Активи+Витрати+Зобов’язання+Дохід+Власний капітал=0\text{Активи} + \text{Витрати} + \text{Зобов'язання} + \text{Дохід} + \text{Власний �капітал} = 0

Ось чому, за домовленістю, рахунки Доходу, Зобов'язань і Власного капіталу мають від'ємні значення — вони є джерелами коштів, які збільшують ваші Активи та Витрати.

Частина 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" "Щотижневі покупки"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USD

Для зручності, якщо транзакція має лише дві проводки, ви можете пропустити суму у другому рядку, і Beancount обчислить її автоматично.

2024-07-28 * "Trader Joe's" "Щотижневі покупки"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover

Балансування на Рівні Транзакцій: Що ще важливіше для щоденного використання, кожна окрема транзакція також має бути збалансована — сума всіх проводок в межах однієї транзакції має дорівнювати нулю. Якщо транзакція не збалансована, Beancount покаже таку помилку:

Beancount Error Alert

Обробка Багато валютних Транзакцій (@ і @@)

Beancount чудово підходить для багато валютного обліку.

  • Використовуйте @, щоб вказати ціну конвертації за одиницю.
  • Використовуйте @@, щоб вказати загальну вартість конвертації.
; Купівля авіаквитка в EUR карткою USD
2024-08-01 * "Lufthansa" "Авіаквиток до Берліна"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR коштували мені 545 USD в цілому
Liabilities:CreditCard:US:Discover -545.00 USD

Частина 4: Забезпечення Точності - Мистецтво Звірки

Ключовою практикою для підтримки точної книги обліку є регулярна звірка. Це передбачає порівняння залишків у вашій книзі обліку Beancount з офіційними виписками з ваших фінансових установ.

Автоматизація Перевірок за допомогою Тверджень Балансу (balance)

Директива balance є вашим основним інструментом для автоматизованих перевірок. Ви стверджуєте, що на певну дату рахунок мав певний залишок. Beancount видасть помилку, якщо обчислений залишок не збігається з вашим твердженням. Це неоціненно для швидкого виявлення помилок.

Примітка: Твердження балансу перевіряє стан рахунку на початку вказаного дня (до будь-яких транзакцій у цей день).

; З вашої щомісячної виписки з кредитної картки
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"

Виправлення Помилок та Ініціалізація Залишків

Коли ви починаєте свою книгу обліку або знаходите розбіжність, яку не можете відстежити, вам потрібно внести коригування. Стандартною практикою є використання спеціального рахунку Equity.

; Ініціалізація готівкового рахунку при запуску вашої книги обліку
2020-01-01 * "Початковий Залишок" "Налаштування готівкового рахунку"
Assets:Cash:Wallet 200.00 USD
Equity:Opening-Balances -200.00 USD

Рахунок Equity:Opening-Balances містить суми, які надходять до вашої книги обліку з невідомих або зовнішніх джерел.

Для швидких виправлень, коли точна розбіжність не важлива, директива pad може автоматично скоригувати залишок рахунку, щоб відповідати наступному твердженню balance, зарезервувавши різницю на рахунок власного капіталу. Використовуйте це з обережністю, оскільки це може приховати більші проблеми. Явні коригування, як правило, безпечніші.

Частина 5: Розширені та Реалістичні Шаблони Транзакцій

Відстеження Боргів: Управління Дебіторською та Кредиторською Заборгованістю

Подвійний бухгалтерський облік ідеально підходить для відстеження грошей, які винні вам (Assets:Receivables) або ви винні (Liabilities:Payable).

Приклад: Ви платите за групову вечерю в розмірі 90 доларів, і ваш друг Боб винен вам за свою частку в розмірі 45 доларів.

  1. Запишіть початкові витрати та дебіторську заборгованість:

    2024-08-05 * "Місце для вечері" "Вечеря з Бобом"
    Expenses:Food:Restaurant 45.00 USD ; Ваша частка
    Assets:Receivables:Bob 45.00 USD ; Боб винен вам
    Assets:Bank:US:Chase:Checking -90.00 USD
  2. Коли Боб повертає вам гроші:

    2024-08-06 * "Боб" "Повернув мені гроші за вечерю"
    Assets:Bank:US:Chase:Checking 45.00 USD
    Assets:Receivables:Bob -45.00 USD

Рахунок Assets:Receivables:Bob тепер дорівнює нулю, і ваші книги ідеально збалансовані.

Активи vs. Витрати: Купівля Автомобіля та Амортизація

Велика покупка, така як автомобіль, не є простою витратою; це придбання активу, який з часом втрачає вартість (амортизація).

  1. Запишіть покупку як актив:

    2023-01-15 * "Дилер Toyota" "Купівля нового автомобіля"
    Assets:Car:ToyotaCamry 30000.00 USD
    Assets:Bank:US:Chase:Checking -30000.00 USD
  2. Запишіть річну амортизацію: Припустимо, ви оцінюєте, що автомобіль втрачає 3000 доларів США на рік. Наприкінці року ви записуєте це як витрату.

    2023-12-31 * "Амортизація" "Річна амортизація вартості автомобіля"
    Expenses:Depreciation:Car 3000.00 USD
    Assets:Car:ToyotaCamry -3000.00 USD

Після цього запису ваш рахунок Assets:Car:ToyotaCamry правильно відображає нову вартість автомобіля (27 000 доларів США), і ви належним чином врахували вартість використання як витрату за цей рік.

Частина 6: Глибоке Занурення - Моделювання Складних Активів Реального Світу

Приклад 1: Облік Нерухомості

Будинок часто є вашим найбільшим активом і зобов'язанням. Ось як його моделювати.

  1. Створіть Рахунки та Власний Товар:

    2022-01-01 commodity HOUSE_123MAIN
    name: "Власність за адресою 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
  2. Запишіть Покупку: Припустимо, ви купуєте будинок за 500 тис. доларів з початковим внеском у 100 тис. доларів і позикою в 400 тис. доларів.

    2022-03-15 * "Розрахункова Компанія" "Придбання 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
  3. Запишіть Щомісячні Іпотечні Платежі: Ваш щомісячний платіж складається з основної суми (зменшує зобов'язання) та відсотків (витрати).

    2022-04-01 * "Іпотечний Банк" "Щомісячний Іпотечний Платіж"
    Liabilities:Mortgage:HomeLoan 800.00 USD ; Основна сума
    Expenses:Home:Interest 1200.00 USD ; Відсотки
    Assets:Bank:US:Chase:Checking -2000.00 USD
  4. Відстеження Зростання (Нереалізований Прибуток): Ринкова вартість будинку змінюється. Щоб відстежувати це, не впливаючи на вашу офіційну чисту вартість (оскільки прибуток не реалізується, поки ви не продасте), ви можете використовувати директиву ціни з "віртуальною" валютою.

    ; Ціна покупки є реальною базою витрат
    2022-03-15 price HOUSE_123MAIN 500000.00 USD

    ; Оновлена ринкова оцінка є нереалізованим прибутком
    2024-01-01 price HOUSE_123MAIN 550000.00 USD.UNREALIZED

Це дозволяє вам бачити приблизну вартість на діаграмах Fava, не збільшуючи неналежним чином ваш баланс.

Приклад 2: Відстеження Обмежених Акцій (RSU)

RSU є поширеною формою винагороди акціями. Облік їх передбачає відстеження початкового надання, подій надання та утримання податків.

  1. Початкове Налаштування: Створіть товари для наділених (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:Salary:Hooli:RSU
    2021-01-01 open Expenses:Taxes:Federal
  2. Запишіть Початкове Надання: Ця транзакція показує загальне надання, що переходить на рахунок ненаділених активів.

    2021-02-01 * "Hooli" "Початкове Надання RSU"
    Assets:Grant:Unvested 1000 HOOL.UNVEST
    Income:Grant:Awards -1000 HOOL.UNVEST
  3. Запишіть Подію Надання: Це ключова транзакція. Коли акції надаються, ви визнаєте дохід, сплачуєте податки (часто продаючи частину акцій) і отримуєте чисті акції. Припустимо, 100 акцій надаються за ціною 150 доларів США за акцію.

    2022-02-01 * "Hooli" "Подія Надання RSU"
    ; Визнайте загальний дохід 100 * $150 = $15,000
    Income:Salary:Hooli:RSU -15000.00 USD

    ; Покажіть податки, сплачені з цього доходу
    Expenses:Taxes:Federal 4000.00 USD
    Expenses:Taxes:State 1000.00 USD

    ; Ви отримуєте чисті акції (припустимо, 60 акцій) за їх базовою вартістю
    Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD}

    ; Інші 40 акцій були продані для покриття $6000 податків.
    ; Ця транзакція збалансовує дохід, податки та отримані акції.
    ; Ми також повинні показати зменшення ненаділених акцій.
    Assets:Grant:Unvested -100 HOOL.UNVEST
    Expenses:Grant:Vested 100 HOOL.UNVEST

Ця єдина, збалансована транзакція правильно моделює всю подію: ненадане надання зменшується, дохід визнається, податки сплачуються, а чисті надані акції з'являються на вашому брокерському рахунку з правильною базовою вартістю для майбутніх розрахунків прибутку від капіталу.

Частина 7: Управління Проєктами для Вашої Книги Обліку

У міру зростання вашої книги обліку організація стає ключовою.

Використання Системи Контролю Версій (Git) для Захисту Ваших Даних

Оскільки ваша книга обліку є текстовим файлом, вона ідеально підходить для контролю версій за допомогою Git. Це дає вам повну історію всіх змін, захищаючи вас від випадкових видалень або помилок. Увага: Ваші фінансові дані є дуже чутливими. Використовуйте приватний репозиторій на таких сервісах, як GitHub/GitLab, або розмістіть свій власний.

Організація за допомогою Тегів (#) і Посилань (^)

Beancount надає два способи групування транзакцій поза рахунками:

  • Теги (#): Використовуйте для подій або проєктів. Ви можете відфільтрувати всі транзакції, пов'язані з певною поїздкою, наприклад. 2024-07-20 * "Hotel" "Відень" #trip-europe-2024
  • Посилання (^): Використовуйте для з'єднання фінансово пов'язаних транзакцій, які відбуваються в різний час, таких як зняття готівки та пов'язана банківська комісія.

Масштабована Стратегія для Структурування Ваших Файлів (include)

Одним великим файлом важко керувати. Використовуйте директиву include, щоб розділити вашу книгу обліку на кілька файлів. main.bean:

; Головний файл книги обліку

; Глобальні параметри
option "title" "Моя Особиста Книга Обліку"
option "operating_currency" "USD"

; Включіть оголошення рахунків та інші файли
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

Надійна організаційна стратегія, в порядку пріоритетності:

  1. За Подією: Створіть окремий файл для великої, самодостатньої події (наприклад, trip-europe-2024.bean).
  2. За Категорією/Одержувачем Платежу: Для дуже регулярних транзакцій, що повторюються, таких як рахунки за комунальні послуги або заробітна плата, згрупуйте їх у власний файл (наприклад, recurring-rent.bean).
  3. За Рахунком: Для транзакцій, тісно пов'язаних з певним рахунком (відсотки, комісії, платежі за кредитною карткою), розгляньте можливість створення файлу, специфічного для рахунку.
  4. За Датою: Для всіх інших загальних транзакцій ефективним є просте розділення за роком (2024.bean) або місяцем (2024/07.bean).

Частина 8: Висновок

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

Початок роботи з Beancount.io

Beancount.io – це сучасна хмарна платформа управління фінансами, яка перетворює ваші текстові записи транзакцій на вичерпні фінансові звіти, включаючи звіти про прибутки та збитки, баланси та пробні баланси. Поєднуючи надійність звичайних текстових файлів із потужними інструментами візуалізації, Beancount.io допомагає вам підтримувати точний контроль над своїм фінансовим життям, отримуючи при цьому цінну інформацію про результати ваших інвестицій.

Розпочніть свою фінансову подорож з Beancount.io - Безкоштовно протягом нашого промо-періоду!

Expenses

Income Statement

Balance Sheet