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

Beancount проти hledger: який інструмент текстового бухгалтерського обліку підходить саме вам?

· 9 хв. читання
Mike Thrift
Mike Thrift
Marketing Manager

Якщо ви вирішили керувати своїми фінансами за допомогою текстового обліку (plain-text accounting), ви вже зробили розумний вибір. Ваші фінансові дані зберігатимуться в людиночитаних файлах, які ви повністю контролюєте, відстежуються за допомогою системи контролю версій і вільні від залежності від конкретних постачальників програмного забезпечення. Але тепер постає наступне питання: який інструмент обрати?

Beancount та hledger — це два найпопулярніші інструменти текстового обліку (PTA) на сьогодні. Обидва мають відкритий вихідний код, активно підтримуються та здатні впоратися з усім: від особистих бюджетів до складних інвестиційних портфелів. Проте вони використовують принципово різні підходи до того, як ви записуєте, перевіряєте та аналізуєте свої фінансові дані.

2026-03-17-порівняння-beancount-та-hledger-текстовий-облік

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

Основна філософія: Суворість проти гнучкості

Найбільша різниця між Beancount та hledger полягає не у функціях, а у підході.

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

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

Жоден із підходів не є об'єктивно кращим. Якщо ви цінуєте можливість виявити помилки до того, як вони перетворяться на години налагодження, суворість Beancount є перевагою. Якщо ви хочете почати швидко і віддаєте перевагу гнучкості, поступливість hledger буде плюсом.

Синтаксис та формат даних

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

Синтаксис Beancount

2026-03-15 * "Whole Foods" "Weekly groceries"
Expenses:Food:Groceries 85.42 USD
Liabilities:CreditCard:Visa

Ключові правила:

  • Дати використовують формат ISO 8601 (YYYY-MM-DD)
  • Валюти мають бути написані великими літерами (наприклад, USD, EUR) — без символів на кшталт $ або
  • Назви рахунків повинні складатися принаймні з двох компонентів, розділених двокрапкою (наприклад, Expenses:Food)
  • Описи мають бути рядками в лапках
  • Усі рахунки повинні бути явно відкриті за допомогою директиви open

Синтаксис hledger

2026-03-15 Whole Foods | Weekly groceries
expenses:food:groceries $85.42
liabilities:creditcard:visa

Ключові правила:

  • Більш гнучкі формати дат
  • Дозволені символи валют, такі як $ та
  • Назви рахунків можуть бути написані малими літерами та бути більш довільними
  • Описи не потребують лапок
  • Немає потреби попередньо оголошувати рахунки

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

Цілісність та перевірка даних

Саме тут Beancount по-справжньому виділяється.

Підтвердження балансу (Balance Assertions)

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

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

Відстеження активів (Inventory Tracking)

Для тих, хто відстежує інвестиції, це дуже важливо. Beancount забезпечує суворе ведення активів: ви не можете продати акції, які ніколи не купували, і він точно відстежує собівартість (cost basis). Це запобігає «витоку собівартості» — непомітній помилці, коли розрахунки приросту капіталу починають розходитися з реальністю.

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

Категорії рахунків

Beancount вимагає, щоб кожен рахунок належав до однієї з п'яти категорій: Активи (Assets), Зобов'язання (Liabilities), Доходи (Income), Витрати (Expenses) або Власний капітал (Equity). Це обмеження дозволяє йому автоматично створювати належні балансові звіти та звіти про прибутки та збитки.

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

Інтерфейс користувача та звітність

Beancount + Fava

Визначною особливістю Beancount є Fava — відшліфований веб-інтерфейс, який забезпечує:

  • Інтерактивні діаграми та графіки (тренди чистої вартості, розбивка витрат, доходи проти витрат)
  • Деревоподібні візуалізації (treemaps) для категорій витрат
  • Потужну фільтрацію за рахунком, тегом, періодом часу та отримувачем платежу
  • Мову запитів для спеціальних звітів
  • Вбудований редактор для ваших файлів леджера

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

Інтерфейси hledger

hledger використовує підхід із кількома інтерфейсами:

  • CLI: Багаті можливості звітування через командний рядок із десятками вбудованих команд (balance, register, incomestatement, cashflow та інші)
  • hledger-ui: Термінальний інтерфейс для інтерактивного перегляду рахунків та транзакцій
  • hledger-web: Простіший веб-інтерфейс для базового перегляду та введення даних

CLI в hledger потужніший «з коробки», ніж у Beancount. Якщо ви віддаєте перевагу роботі в терміналі та хочете отримувати швидкі звіти, які можна автоматизувати скриптами, hledger — чудовий вибір.

Продуктивність

hledger написаний на Haskell і обробляє приблизно 25 000 транзакцій на секунду. Для більшості користувачів, які ведуть особисті фінанси, обидва інструменти працюють фактично миттєво. Але якщо ви керуєте величезним масивом даних — транзакціями за багато років для кількох організацій — «сира» швидкість hledger дає йому перевагу.

Beancount (v3) отримав нове ядро парсера на C++, що значно покращило продуктивність порівняно з оригінальною реалізацією на Python. Для типового особистого використання або малого бізнесу ви не помітите різниці.

Розширюваність та плагіни

Плагіни Beancount

Beancount має нативну систему плагінів на Python, яка є надзвичайно потужною. Плагіни можуть:

  • Автоматично розділяти транзакції (наприклад, спільні витрати)
  • Генерувати повторювані транзакції
  • Застосовувати власні правила валідації
  • Трансформувати дані в процесі обробки

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

Розширення hledger

hledger пропонує можливості розширення через:

  • Правила імпорту CSV для автоматизації банківських виписок
  • Власні скрипти звітів, що використовують вивід CLI
  • HTTP-JSON API для створення інтеграцій
  • Додаткові команди на базі Haskell

Система імпорту CSV в hledger вважається особливо вдалою — вона дозволяє легко автоматизувати імпорт виписок за допомогою файлів правил, які зіставляють стовпці CSV з проводками по рахунках.

Початок роботи та поріг входження

hledger: Нижчий поріг входження

З hledger зазвичай простіше почати:

  • Встановлення одного бінарного файлу (чудова кросплатформна підтримка, включаючи Windows)
  • Створення файлу та миттєвий початок запису транзакцій
  • Немає потреби заздалегідь оголошувати рахунки або дотримуватися суворих правил іменування
  • Вичерпна та якісно підтримувана документація
  • Активна спільнота з ресурсами, дружніми до новачків

Beancount: Більше налаштувань, більше структури

Beancount вимагає більше зусиль на старті:

  • Встановлення Python та Beancount (а також Fava для веб-інтерфейсу)
  • Необхідність оголошувати рахунки перед їх використанням
  • Дотримання суворих синтаксичних правил з першого дня
  • Вивчення п'яти основних категорій рахунків

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

Спільнота та екосистема

Обидва проєкти мають активні спільноти, готові допомогти:

  • Beancount: Активна розсилка, зростаюча екосистема сторонніх інструментів (імпортери, плагіни, розширення для Fava) та міцна спільнота Python-розробників
  • hledger: Часті релізи (приблизно щокварталу), розлога документація, активні чат-канали та ширша спільнота plaintextaccounting.org

Обидва інструменти виграють від загального руху текстової бухгалтерії, що означає наявність спільних ресурсів, імпортерів та знань спільноти.

Міграція між інструментами

Якщо ви почнете з одного інструменту і захочете змінити його пізніше, міграція можлива, але не є тривіальною:

  • З hledger на Beancount: Використовуйте hledger print -o tmp.beancount як відправну точку, а потім скоригуйте синтаксис (додайте оголошення рахунків, виправте формати валют, змініть структуру назв рахунків)
  • З Beancount на hledger: Інструмент bean-report може експортувати дані, хоча зазвичай потрібні ручні виправлення

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

Таблиця швидкого порівняння

ХарактеристикаBeancounthledger
Мова програмуванняPython/C++Haskell
Суворість синтаксисуСувораГнучка
Оголошення рахунківОбов'язковеОпціональне
Найкращий UIFava (веб)CLI + TUI
Відстеження інвестиційВідмінноДобре
Система плагінівПлагіни PythonСкрипти + API
Імпорт CSVЧерез імпортериВбудовані правила
Поріг входженняКрутішийПологіший
Перевірки балансуНезалежні від порядкуЗалежні від порядку у файлі
ПродуктивністьШвидко (v3)Дуже швидко
Підтримка WindowsДобреВідмінно

Що обрати?

Обирайте Beancount, якщо ви:

  • Хочете гарну веб-панель для візуалізації ваших фінансів
  • Відстежуєте інвестиції та потребуєте точної обробки бази вартості (cost basis)
  • Надаєте перевагу системі, яка вчасно виявляє помилки та забезпечує узгодженість
  • Впевнено почуваєтеся з Python і хочете потужну розширюваність через плагіни
  • Цінуєте організацію файлів, незалежну від порядку записів

Обирайте hledger, якщо ви:

  • Віддаєте перевагу роботі в терміналі зі швидкими звітами, що автоматизуються скриптами
  • Хочете швидко почати з мінімальними налаштуваннями
  • Потребуєте відмінної підтримки Windows
  • Надаєте перевагу гнучкому синтаксису, який адаптується до вашого стилю
  • Хочете отримувати часті оновлення та активну підтримку

Щира правда: обидва інструменти чудові. Спільнота текстової бухгалтерії відкрита для всіх, незалежно від обраного інструменту, а навички, які ви здобудете в одному з них, легко переносяться в інший. Оберіть той, що більше відповідає вашому робочому процесу, спробуйте його протягом місяця і змініть, якщо виникне потреба.

Спростіть відстеження фінансів за допомогою Beancount.io

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