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

Цикл бухгалтерського обліку, у стилі Beancount

· 8 хвилин читання
Mike Thrift
Mike Thrift
Marketing Manager

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

Ми побачимо, як підхід Beancount, орієнтований на текст, усуває нудні кроки, що варто автоматизувати, і які звіти дають найчіткішу картину вашого фінансового здоров’я. 🧑‍💻

2025-08-13-the-accounting-cycle-beancount-style


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) дає вам можливість розрізати, аналізувати і розуміти ваші фінанси без меж.

Копіюй‑вставляй фрагменти для старту

Простий план рахунків:

option "title" "My Personal Ledger"
option "operating_currency" "USD"

;; --- Accounts ---
1970-01-01 open Assets:Bank:Checking
1970-01-01 open Assets:AccountsReceivable
1970-01-01 open Liabilities:CreditCard
1970-01-01 open Liabilities:UnearnedRevenue
1970-01-01 open Equity:Owner:Capital
1970-01-01 open Equity:Retained-Earnings
1970-01-01 open Income:Consulting
1970-01-01 open Expenses:Office:Supplies
1970-01-01 open Expenses:Software
1970-01-01 open Expenses:Depreciation

Корисний BQL‑запит:

-- Find all customers with an outstanding balance
SELECT payee, sum(position)
WHERE account = 'Assets:AccountsReceivable'
GROUP BY payee
HAVING sum(position) > 0
ORDER BY sum(position) DESC;

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