Цикл бухгалтерського обліку, у стилі Beancount
Фінансові звіти не з’являються за допомогою магії. Це кінцевий продукт структурованого, повторюваного процесу, відомого як цикл бухгалтерського обліку. Хоча принципи універсальні, інструменти, якими ви користуєтесь, можуть кардинально змінити досвід. Цей посібник проведе вас через цикл бухгалтерського обліку з акцентом на Beancount, потужний інструмент бухгалтерського обліку у вигляді простого тексту.
Ми побачимо, як підхід Beancount, орієнтований на текст, усуває нудні кроки, що варто автоматизувати, і які звіти дають найчіткішу картину вашого фінансового здоров’я. 🧑💻
TL;DR: Робочий процес у Beancount
- Capture & Journal: Записуйте кожну операцію як чистий запис подвійного запису у вашому
.beancount
текстовому файлі. - Validate & Reconcile: Використовуйте твердження
balance
, щоб підтвердити, що ваш головний журнал відповідає банківським випискам, і запускайтеbean-check
для виявлення помилок. - Review: Створіть незкоригований пробний баланс для швидкої перевірки.
- Adjust: Додайте записи для нарахувань, відстрочок, амортизації та інших елементів кінця періоду.
- Re-review: Перевірте скоригований пробний баланс, щоб переконатися, що все правильно.
- Publish & Close: Створіть звіт про прибутки та збитки, баланс та звіт про грошові потоки. Закриття книг є необов’язковим у Beancount, оскільки звіти враховують дати.
Цей процес можна візуалізувати так:
Крок 1: Захоплення та реєстрація операцій
Це базовий крок. Кожна фінансова подія — продаж, покупка, банківська ко місія — має бути зафіксована. У Beancount ви робите це, створюючи транзакції у простому текстовому файлі, зазвичай названому main.beancount
або розподіленому на кілька файлів за роками.
Кожна транзакція повинна відповідати правилам подвійного запису, тобто сума всіх записів має дорівнювати нулю. Beancount забезпечує це автоматично.
2025-08-10 * "Walmart" "Purchase of office supplies"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
- Pro‑Tip: Використовуйте теги типу
#project-phoenix
або#client-acme
, щоб додати виміри до ваших даних. Це робить запити та звіти надзвичайно гнучкими.
Гігієна звірки ✅
Найпотужніша функція для забезпечення точності — твердження балансу. В кінці звітного періоду (наприклад, в кінці місяця) ви вказуєте, яким має бути баланс рахунку.
2025-08-31 balance Assets:Bank:Checking 12345.67 USD
Якщо сума всіх транзакцій, що впливають на Assets:Bank:Checking
до цієї дати, не дорівнює 12345.67 USD
, Beancount виведе помилку. Це просте директивне перетворює ваш журнал у самоперевірковий документ.
Для тих, хто заповнює історичні дані, директива pad
може автоматично створити балансуючу транзакцію, щоб ваші початкові залишки відповідали першому твердженню.
Крок 2: «Постинг у головну книгу» (безкоштовно !)
У традиційних системах ви спочатку записуєте записи у «журнал», а потім окремим кроком «постинг» копіюєте їх у «загальну книгу».
У Beancount ваш .beancount
файл є і журналом, і головною книгою. Коли ви пишете і зберігаєте транзакцію, вона вже поститься. Окремого кроку немає. Ця прямота — ключова перевага простого текстового обліку: те, що бачите, — це те, що отримуєте.
Крок 3: Підготовка незкоригованого пробного балансу
Перш ніж робити коригування, потрібна швидка перевірка «все підраховано?». Пробний баланс — це простий звіт, що перелічує кожен рахунок і його підсумковий залишок. Загальна сума дебетових залишків має дорівнювати загальній сумі кредитових.
Створити його можна простим запитом:
bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"
Або, для більш візуального підходу, відкрийте ваш журнал у Fava (веб‑інтерфейс Beancount) і перейдіть до звіту «Trial Balance». Шукайте аномалії — активний рахунок з кредитовим залишком або витратний рахунок з дивним значенням.
Крок 4: Внесення коригувальних записів
Коригувальні записи важливі для точного звітування за нарахувальним принципом. Вони гарантують, що доходи визнаються, коли вони зароблені, а витрати — коли вони понесені, незалежно від моменту грошового потоку.
Типові коригування:
- Нарахування: Визнання доходу, який ви вже заробили, але ще не виставили рахунок, або витрати, які вже понесли, але ще не сплатили.
- Відстрочки: Обробка передплат. Якщо клієнт сплатив за рік послуг наперед, ви реєструєте це як зобов’язання (
Liabilities:UnearnedRevenue
) і щомісяця визнаєте 1/12 доходу. - Негрошові статті: Амортизація активів.
- Виправлення: Корекція помилок або додавання пропущених пунктів з банківських виписок, напр иклад, невеликих процентних виплат.
Приклад: Нарахування доходу
Ви завершили проєкт 31 серпня, але рахунок надішлете лише у вересні. Щоб визнати дохід у правильному періоді (серпень), створюємо коригувальний запис:
2025-08-31 * "Accrue revenue for client project #1042"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD
Приклад: Амортизація
У вашій компанії є графік амортизації активів. В кінці періоду ви реєструєте витрату:
2025-12-31 * "Annual depreciation on computer equipment"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD
Крок 5: Запуск скоригованого пробного балансу та валідація
Після внесення коригувань знову запустіть звіт пробного балансу. Це ваш скоригований пробний баланс. Він містить фінальні цифри, які будуть використані у фінансових звітах.
Тоді ж варто виконати вбудовану перевірку Beancount:
bean-check main.beancount
К оманда перевіряє синтаксис, правила балансування та твердження. Якщо вона не виводить нічого, ваші книги механічно коректні.
Крок 6: Публікація фінансових звітів 📊
Ось і нагорода. Використовуючи цифри зі скоригованого пробного балансу, ви можете створити ключові фінансові звіти. Найпростіший спосіб — через Fava, яка надає інтерактивні звіти з можливістю деталізації.
- Звіт про прибутки та збитки (P&L): Показує ваші доходи та витрати за період, підсумовуючись чистим прибутком або збитком.
- Баланс: Станом на певну дату відображає, що ви маєте (активи), що винні (зобов’язання) та ваш власний капітал (Equity).
- Звіт про грошові потоки: Пояснює, звідки надходили гроші і куди вони йшли, узгоджуючи початковий і кінцевий грошовий залишок.
Для кастомних звітів використовуйте мову запитів Beancount (BQL). Ось запит для міс ячного звіту про прибутки та збитки:
-- P&L for August 2025
SELECT account, sum(position)
WHERE account '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;
Крок 7: Закриття книг (за бажанням)
У традиційному обліку процес «закриття» передбачає створення записів, які обнуляють усі тимчасові рахунки (доходи та витрати) і пере носять чистий прибуток у рахунок власного капіталу Retained Earnings. Це формально скидає тимчасові рахунки на наступний рік.
У Beancount цей крок зазвичай не потрібен. Звіти Fava орієнтуються на дати; якщо ви запитуєте P&L за 2025 рік, він використає лише дані 2025 року. Баланси не «переливаються». Більшість користувачів залишають їх без змін.
Проте, якщо вам потрібне формальне закриття для відповідності вимогам чи звітності перед акціонерами, це можна зробити простим транзакційним записом наприкінці року, який переносить суми доходів і витрат у Equity:Retained-Earnings
.
Практичний чек‑лист місячного закриття
Ось повторюваний чек‑лист для закриття книг кожного місяця за допомогою Beancount.
- Capture: Імпортуйте всі транзакції з банків та кредитних карт. Вручну введіть готівкові витрати чи інші позабанківські операції.
- Reconcile: Додайте твердження
balance
для всіх банківських рахунків, кредитних карт та кредитних ліній, зіставляючи їх зі виписками. - Review: Перегляньте незкоригований пробний баланс у Fava. Дослідіть будь‑які дивні або неочікувані залишки. Перевірте прострочені неоплачені рахунки (
Assets:AccountsReceivable
) або борги (Liabilities:AccountsPayable
). - Adjust: Запишіть нарахування доходу/витрат, відстрочений дохід та необхідні виправлення.
- Validate: Запустіть
bean-check
. Перегляньте фінальний скоригований пробний баланс. - Publish: Створіть P&L та Баланс. Надішліть їх зацікавленим сторонам або збережіть у архіві.
- Wrap-up: За потреби виконайте запис закриття. Заархівуйте копію ваших
.beancount
файлів за цей період.
Чому Beancount виділяється у циклі бухгалтерського обліку
- Прозорість і аудитність: Ваш журнал — це текстовий файл. Ви можете використовувати
git
для контролю версій вашої фінансової історії, переглядати зміни за допомогоюdiff
і співпрацювати з бухгалтером у зрозумілому, однозначному форматі. - Повний контроль: Ви самі визначаєте план рахунків. Ви не прив’язані до структури постачальника ПЗ. Ваші дані належать вам назавжди, у відкритому форматі.
- Неперевершена потужність: Поєднання SQL‑подібних запитів (BQL) і багатого веб‑інтерфейсу (Fava) дає вам можливість розрізати, аналізувати і розуміти ваші фінанси без меж.