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

59 дописів з тегом "Beancount"

Переглянути всі теги

Шпаргалка Beancount

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

Приклад назви рахунку

Assets:US:BofA:Checking

шпаргалка-uk

Типи рахунків

Assets          +
Liabilities -
Income -
Expenses +
Equity -

Товари

CNY, EUR, CAD, AUD
GOOG, AAPL, RBF1005
HOME_MAYST, AIRMILES
HOURS

Директиви

Загальний синтаксис

YYYY-MM-DD <Directive> <Parameters...>

Відкриття та закриття рахунків

2001-05-29 open Expenses:Restaurant
2001-05-29 open Assets:Checking USD,EUR ; Обмеження за валютою

2015-04-23 close Assets:Checking

Оголошення товарів (Необов'язково)

1998-07-22 commodity AAPL
name: "Apple Computer Inc."

Ціни

2015-04-30 price AAPL   125.15 CNY
2015-05-30 price AAPL 130.28 CNY

Примітки

2013-03-20 note Assets:Checking "Зателефонував, щоб запитати про знижку"

Документи

2013-03-20 document Assets:Checking "шлях/до/виписки.pdf"

Транзакції

2015-05-30 * "Деякий опис цієї транзакції"
Liabilities:CreditCard -101.23 CNY
Expenses:Restaurant 101.23 CNY

2015-05-30 ! "Cable Co" "Phone Bill" #tag ˆlink
id: "TW378743437" ; Метадані
Expenses:Home:Phone 87.45 CNY
Assets:Checking ; Ви можете пропустити одну суму

Проводки

  ...    123.45 USD                             Просто
... 10 GOOG {502.12 USD} З вартістю за одиницю
... 10 GOOG {{5021.20 USD}} З загальною вартістю
... 10 GOOG {502.12 # 9.95 USD} З обома вартостями
... 1000.00 USD @ 1.10 CAD З ціною за одиницю
... 10 GOOG {502.12 USD} @ 1.10 CAD З вартістю та ціною
... 10 GOOG {502.12 USD, 2014-05-12} З датою
! ... 123.45 USD ... З прапорцем

Твердження балансу та доповнення

; Перевіряє суму лише для вказаної валюти:
2015-06-01 balance Liabilities:CreditCard -634.30 CNY

; Автоматичне вставлення транзакції для виконання наступного твердження:
2015-06-01pad Assets:Checking Equity:Opening-Balances

Події

2015-06-01 event "місцезнаходження" "Нью-Йорк, США"
2015-06-30 event "адреса" "123 Мей Стріт"

Опції

option "заголовок" "Моя особиста книга обліку"

Інше

pushtag #поїздка-до-перу
...
poptag #поїздка-до-перу
; Коментарі починаються з крапки з комою

Магія обліку в текстових файлах з Beancount

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

Відкрийте для себе магію обліку в текстових файлах з Beancount

Банер Beancount.io

Вступ

2023-04-18-вступ-до-beancount

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

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

Що таке Beancount?

Beancount — це система обліку в текстових файлах з відкритим вихідним кодом, створена Мартіном Блезом (Martin Blais). Натхненний системою Ledger Джона Віглі (John Wiegley), Beancount прагне забезпечити надійний і стійкий метод управління особистими фінансами та фінансами малого бізнесу за допомогою текстових файлів. За допомогою Beancount ви можете легко відстежувати свої доходи, витрати, інвестиції та багато іншого.

Чому Beancount?

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

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

Основні концепції Beancount

Щоб ефективно використовувати Beancount, важливо зрозуміти його основні концепції:

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

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

Щоб почати використовувати Beancount, виконайте ці прості кроки:

  • Встановіть Beancount: Встановіть Beancount на свою систему, використовуючи надані інструкції з встановлення для вашої операційної системи.
  • Створіть свій файл Beancount: Створіть новий текстовий файл з розширенням .beancount (наприклад, my_finances.beancount).
  • Визначте свої рахунки: Використовуйте директиву "open" для визначення рахунків, які ви будете використовувати у своїх транзакціях.
  • Записуйте транзакції: Використовуйте директиву "txn" для запису ваших фінансових транзакцій.

Або просто зареєструйтесь на https://beancount.io. Ось кілька прикладів обліку в текстових файлах -

Приклад 1: Базова транзакція

2023-04-01 open Assets:Checking
2023-04-01 open Expenses:Groceries

2023-04-10 txn "Grocery Store" "Buying groceries"
Assets:Checking -50.00 USD
Expenses:Groceries 50.00 USD

У цьому прикладі ми відкриваємо два рахунки: Assets:Checking (Активи:Поточний) та Expenses:Groceries (Витрати:Продукти). 10 квітня 2023 року ми записуємо транзакцію на купівлю продуктів на суму 50 доларів США. Транзакція зменшує залишок на рахунку Assets:Checking на 50 доларів США (дебет) та збільшує залишок на рахунку Expenses:Groceries на 50 доларів США (кредит).

Приклад 2: Транзакція доходу та витрат

2023-04-01 open Assets:Checking
2023-04-01 open Income:Salary
2023-04-01 open Expenses:Rent

2023-04-05 txn "Employer" "Salary payment"
Assets:Checking 2000.00 USD
Income:Salary -2000.00 USD

2023-04-06 txn "Landlord" "Monthly rent payment"
Assets:Checking -1000.00 USD
Expenses:Rent 1000.00 USD

У цьому прикладі ми відкриваємо три рахунки: Assets:Checking (Активи:Поточний), Income:Salary (Дохід:Зарплата) та Expenses:Rent (Витрати:Оренда). 5 квітня 2023 року ми записуємо транзакцію виплати зарплати на суму 2000 доларів США. Транзакція збільшує залишок на рахунку Assets:Checking на 2000 доларів США (кредит) та зменшує залишок на рахунку Income:Salary на 2000 доларів США (дебет). 6 квітня 2023 року ми записуємо транзакцію оплати оренди на суму 1000 доларів США. Транзакція зменшує залишок на рахунку Assets:Checking на 1000 доларів США (дебет) та збільшує залишок на рахунку Expenses:Rent на 1000 доларів США (кредит).

Приклад 3: Переказ між рахунками

2023-04-01 open Assets:Checking
2023-04-01 open Assets:Savings

2023-04-15 txn "Bank" "Transfer from Checking to Savings"
Assets:Checking -500.00 USD
Assets:Savings 500.00 USD

У цьому прикладі ми відкриваємо два рахунки: Assets:Checking (Активи:Поточний) та Assets:Savings (Активи:Ощадний). 15 квітня 2023 року ми записуємо транзакцію переказу 500 доларів США з поточного рахунку на ощадний. Транзакція зменшує залишок на рахунку Assets:Checking на 500 доларів США (дебет) та збільшує залишок на рахунку Assets:Savings на 500 доларів США (кредит).

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

Генерування звітів та аналіз даних

Beancount постачається з набором потужних інструментів для генерування фінансових звітів, включаючи баланси, звіти про прибутки та збитки тощо. Ви також можете використовувати Fava, веб-інтерфейс для Beancount, для візуалізації та взаємодії з вашими фінансовими даними. https://beancount.io побудовано на основі Fava з ліцензією MIT.

Висновок

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

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

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

Покращення вашого досвіду Beancount за допомогою користувацьких посилань та запитів

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

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

У цьому посібнику ми покажемо вам, як:

  • Додавати посилання швидкого доступу до бічної панелі Fava
  • Використовувати SQL-запити для розширеної фільтрації та аналізу
  • Налаштовувати свій робочий процес для щомісячних оглядів або виявлення аномалій

Навіщо налаштовувати Fava?

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

Проблеми, які це вирішує:

  • Повторна навігація за часовими діапазонами
  • Фільтрація транзакцій за вкладеними рахунками
  • Швидше виявлення від'ємних залишків або аномалій

✨ Користувацькі посилання бічної панелі

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

Додайте ці рядки до вашого файлу Beancount:

2021-01-01 custom "fava-sidebar-link" "Current Month" "/jump?time=month"
2021-01-01 custom "fava-sidebar-link" "Last Month" "/jump?time=month-1"
2021-01-01 custom "fava-sidebar-link" "Clear All" "/jump?account=&time=&filter="

Що вони роблять:

  • Поточний місяць: Відкриває перегляд транзакцій, відфільтрованих за поточним місяцем.
  • Минулий місяць: Миттєво переходить до попереднього місяця — чудово для оглядів наприкінці місяця.
  • Очистити все: Скидає фільтри, знову показуючи всі записи.

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

🔍 Користувацькі SQL-запити

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

SELECT account, units(sum(position)), sum(position)
WHERE number(units(position)) < 0
AND account ~ '.*:BCM:.*'
AND date >= DATE(2021,12,9)
AND date < DATE(2022,1,9)

Розбір:

  • account ~ '.*:BCM:.*': Фільтрує рахунки, що містять :BCM: у своїй назві.
  • number(units(position)) < 0: Позначає від'ємні залишки (наприклад, перевищені бюджети).
  • Фільтри дати звужують результат до певного 1-місячного вікна.

Варіанти використання:

  • Виявлення помилок, таких як дубльовані витрати або неправильні проводки
  • Проведення аудиту конкретного постачальника або категорії
  • Швидке отримання дієвих висновків для бюджетування

🛠 Професійна порада: Комбінуйте посилання + запити

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

  • Використовуючи посилання "Поточний місяць", щоб розпочати свій огляд
  • Відкриваючи вкладку збережених запитів в іншій панелі
  • Одночасно переглядаючи обидва — спочатку фільтруйте, потім заглиблюйтесь

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

Заключні думки

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

Бонус: Якщо ви використовуєте користувацькі звіти Fava, ви можете навіть створювати повноцінні інформаційні панелі, адаптовані до ваших ритуалів особистих фінансів.

Готові взяти під контроль?

Почніть з малого: додайте посилання "Поточний місяць". Потім створюйте власні запити. Ваше майбутнє "я" подякує вам.

Хочете більше таких порад? Підпишіться на нашу розсилку новин або досліджуйте більше рецептів Beancount на Beancount.io.

Прогнозування майбутніх транзакцій у Beancount

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

Існує плагін для Beancount, який прогнозує майбутні повторювані транзакції. Як його застосувати в beancount.io? Додайте наступний вміст до вашого файлу обліку.

; import the plugin
plugin "fava.plugins.forecast"

; add a monthly HOA fee
2022-05-30 # "HOA fee [MONTHLY]"
Expenses:Hoa 1024.00 USD
Assets:Checking -1024.00 USD

Знімок екрана плагіна прогнозування

2022-05-30-плагін-прогнозування

І тоді ви побачите прогноз на графіку чистого прибутку.

Плагін прогнозування

Тег [MONTHLY] вище означає, що він повторюватиметься вічно. Якщо у вас є більше умов для застосування, спробуйте [MONTHLY UNTIL 2022-06-01], [MONTHLY REPEAT 5 TIMES], [YEARLY REPEAT 5 TIMES], або [WEEKLY SKIP 1 TIME REPEAT 5 TIMES].

Створення та відстеження рахунків-фактур за допомогою Beancount

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

Простий текстовий шаблон, повторюваний робочий процес та один запит для “Хто мені ще винен?”


2022-02-12-crafting-tracking-invoices-with-beancount

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

Хоча спеціалізовані SaaS-додатки можуть надсилати стильні, автоматизовані PDF-файли, вони часто мають щомісячну плату та блокують ваші дані в власному сховищі. Легкий, текстовий підхід з використанням Beancount пропонує потужну альтернативу. Ви можете перетворити кожен рахунок-фактуру на чіткий набір бухгалтерських записів, отримуючи всі переваги контролю версій, потужних метаданих та миттєвих запитів — без необхідності підписки.


Мінімально життєздатний рахунок-фактура (поля, які ніколи не слід пропускати)

Перш ніж торкнутися вашої книги обліку, вам потрібен професійний рахунок-фактура. Формат може бути простим, але вміст має бути точним. Ці поля, запозичені з перевіреної часом практики малого бізнесу, є обов'язковими.

  • Реквізити продавця: Назва вашої компанії та фізична адреса.
  • Реквізити клієнта: Ім'я вашого клієнта та (в ідеалі) його адреса.
  • Номер рахунку-фактури: Унікальний, послідовний ідентифікатор, який ніколи не повторюється. INV-045 йде після INV-044.
  • Дати виставлення та оплати: Чітко вкажіть, коли було виставлено рахунок-фактуру та коли очікується оплата.
  • Позиції рахунку: Чіткий опис послуг або товарів, а також кількість, ставка та загальна сума за позицією.
  • Проміжний підсумок, податок та загальна сума: Покажіть розрахунок, щоб клієнт міг легко його зрозуміти.
  • Додаткові примітки: Місце для подяки, інструкцій з переказу коштів або наданого клієнтом номера замовлення на покупку.

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

Завантажте наші шаблони тут: beancount.io/invoice‑templates (Доступні у форматах Google Docs, Word, Sheets, Excel та PDF)


Запис рахунку-фактури у вашій книзі обліку

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

1. Коли ви виставляєте рахунок-фактуру:

Ви створюєте транзакцію, яка переміщує загальну суму з вашого рахунку Income на Assets:AccountsReceivable. Це створює цифровий борг у ваших книгах.

; 2025‑07‑21 Рахунок-фактура № 045  Веб-дизайн спринт для Acme Corp.
2025-07-21 * "Acme Corp" "INV-045 Веб-дизайн спринт"
Assets:AccountsReceivable 3500.00 USD ; due:2025-08-04
Income:Design:Web
invoice_id: "INV-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"

Тут ви дебетуєте AccountsReceivable та кредитуєте свій рахунок Income. Зверніть увагу на багаті метадані: дата оплати, унікальний invoice_id та навіть пряме link: до PDF-файлу, який ви надіслали.

2. Коли клієнт платить:

Коли гроші надходять на ваш банківський рахунок, ви записуєте другу транзакцію, щоб "закрити" борг. Це переміщує баланс з AccountsReceivable на ваш розрахунковий рахунок.

2025-08-01 * "Acme Corp" "Оплата INV-045"
Assets:Bank:Checking 3500.00 USD
Assets:AccountsReceivable
invoice_id: "INV-045"

Баланс для INV-045 в Assets:AccountsReceivable тепер дорівнює нулю, а ваші книги ідеально збалансовані.

Додайте PDF-файл: Метадані link: особливо потужні при використанні з Fava, веб-інтерфейсом Beancount. Fava відобразить клікабельне посилання безпосередньо в поданні транзакції, тому вихідний документ завжди знаходиться на відстані одного кліку. Цей робочий процес був передбачений ще в 2016 році в запиті на функцію (GitHub).


Один запит для переліку всіх відкритих рахунків-фактур

Отже, хто вам ще винен гроші? З цією системою вам не потрібно шукати електронні листи чи електронні таблиці. Вам потрібен лише один простий запит.

Збережіть наступне як файл з назвою open-invoices.sql:

SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Assets:AccountsReceivable"
AND balance != 0
ORDER BY
date;

Тепер запустіть його з командного рядка:

bean-query books.beancount open-invoices.sql

За лічені секунди ви отримаєте чіткий, актуальний звіт про всі неоплачені рахунки-фактури, що показує ідентифікатор рахунку-фактури, клієнта, дату виставлення та суму заборгованості. Не потрібно додаткове програмне забезпечення.


Автоматизуйте рутинну роботу

Перевага простого тексту - це можливість написання скриптів. Ви можете автоматизувати нудні частини цього робочого процесу.

  • Шаблон + Pandoc = PDF: Підтримуйте свій шаблон рахунку-фактури в Markdown. Невеликий скрипт Python може заповнити змінні (ім'я клієнта, позиції рахунку, номер рахунку-фактури), а інструмент командного рядка Pandoc може миттєво перетворити його на професійний PDF-файл.
  • Git Pre-commit Hook: Якщо ви зберігаєте свою книгу обліку в Git, простий pre-commit hook може виконувати перевірки перед збереженням вашої роботи. Він може перевірити, чи кожен новий invoice_id є унікальним, чи транзакції збалансовані до нуля, та чи файл, на який посилається link: метадані, дійсно існує.
  • Cron Job: Налаштуйте заплановане завдання (cron job) для запуску вашого запиту open-invoices.sql щоночі та надсилання вам зведення електронною поштою. Ви починатимете кожен день, точно знаючи, кому потрібно надіслати дружнє нагадування.

Реалістичне застереження

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

Для більшості фрілансерів та невеликих магазинів цей ручний крок - це невелика ціна за надійну, перевіряєму та безкоштовну систему бухгалтерського обліку, яку ви повністю володієте та контролюєте (beancount.io).


Наступні кроки

Готові взяти під контроль свої рахунки-фактури? Ось як почати.

  1. Завантажте шаблон та використовуйте його для створення свого наступного реального рахунку-фактури, переконавшись, що використовуєте послідовний номер рахунку-фактури.
  2. Зберігайте надіслані PDF-файли в окремій папці, наприклад docs/invoices/, та використовуйте ключ метаданих link: у своїй транзакції Beancount, щоб посилатися на них.
  3. Збережіть запит open-invoices.sql та зробіть його запуск частиною вашого щотижневого фінансового огляду.

Бухгалтерський облік у простому тексті не означає відмову від точності чи контролю — це просто означає, що база даних може бути оброблена grep. З простим шаблоном та наведеними вище фрагментами коду ви будете отримувати оплату швидше та підтримувати свої книги в бездоганному стані.

Коригувальні проводки в Beancount: Ваше налаштування на кінець місяця

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

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

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

2022-01-25-adjusting-entries-in-beancount-your-month-end-tune-up


Чому коригувальні проводки важливі

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

  • Точність нарахувань: Коригувальні проводки є рушієм методу нарахування. Вони переміщують доходи та витрати в той період, коли вони були фактично зароблені або понесені, незалежно від того, коли відбувся рух грошових коштів. Це відповідає основним принципам визнання доходів та зіставлення, які є основою сучасного бухгалтерського обліку (AccountingCoach.com).

  • Надійні КПІ: Ключові показники ефективності є настільки ж добрими, як і дані, на яких вони базуються. Такі показники, як валова маржа, чистий прибуток та прогнози руху грошових коштів, відображають правду лише після того, як відстрочки, нарахування та оцінки будуть належним чином проведені (Corporate Finance Institute).

  • Чистий аудит: Чіткі коригування на кінець місяця створюють чіткий запис вашої фінансової логіки. Це допомагає аудиторам (і вам у майбутньому) легко відстежити, що змінилося і чому, створюючи впевненість у ваших цифрах (Accountingverse).


Шість поширених категорій (зі фрагментами Beancount)

Ось шість найпоширеніших типів коригувальних проводок з прикладами того, як їх записувати у вашому журналі Beancount. Зверніть увагу на використання метаданих, таких як adj:"accrual", щоб ці записи було легко знайти та проаналізувати пізніше.

1. Нарахований дохід

Це стосується доходу, який ви заробили, але ще не виставили рахунок або не отримали оплату.

2025-07-31 * "Консалтинг—липневі години"
Assets:AccountsReceivable 12000.00 USD
Income:Consulting
; adj:"accrual" period:"Jul-25"

2. Нараховані витрати

Витрати, які ви понесли, але ще не оплатили, наприклад, рахунок за комунальні послуги, який надійде наступного місяця.

2025-07-31 * "Адвокат—липневий гонорар"
Expenses:Legal 2500.00 USD
Liabilities:AccruedPayables
; adj:"accrual"

3. Відстрочений (незароблений) дохід

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

2025-07-31 * "Річна передплата SaaS (визнання 1/12)"
Liabilities:UnearnedRevenue 833.33 USD
Income:SaaS
; adj:"deferral"

4. Передоплачені (відстрочені) витрати

Коли ви оплачуєте витрати авансом (наприклад, річний страховий поліс), ви списуєте частину цієї суми щомісяця.

2025-07-31 * "Страхування—1 міс. витрат з передоплати"
Expenses:Insurance 400.00 USD
Assets:PrepaidInsurance
; adj:"deferral"

5. Амортизація

Цей запис розподіляє вартість довгострокового активу (наприклад, комп'ютера або транспортного засобу) протягом терміну його корисного використання.

2025-07-31 * "Амортизація Mac Studio"
Expenses:Depreciation 1250.00 USD
Assets:Computers:AccumDepr
; asset_id:"MAC-03" adj:"estimate"

6. Резерв сумнівних боргів

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

2025-07-31 * "Резерв на безнадійні борги (2% від ДЗ)"
Expenses:BadDebt 700.00 USD
Assets:AllowanceForBadDebt
; basis:"A/R" rate:0.02 adj:"estimate"

Повторюваний робочий процес

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

  • Використовуйте окремий файл. Зберігайте всі коригування за період в одному місці, наприклад, adjustments-2025-07.bean. У вашому основному файлі журналу використовуйте директиву include, щоб імпортувати його останнім. Це гарантує, що коригування застосовуються безпосередньо перед створенням остаточних звітів.

  • Стандартизуйте свої метадані. Завжди використовуйте послідовні ключі та значення метаданих, такі як adj:"accrual|deferral|estimate" та period:"Jul-25". Це спрощує запит та перегляд певних типів коригувань.

  • Виконайте попередню перевірку. Перед тим, як зафіксувати зміни в Git, запустіть bean-check у вашому файлі коригувань, щоб виявити будь-які помилки або незбалансовані проводки.

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

    bean-query main.bean "SELECT account, SUM(number) WHERE meta('adj') AND meta('period') = 'Jul-25' GROUP BY account"

Поради щодо швидкого усунення несправностей 🤔

  • Чи зростає ваш баланс Liabilities:UnearnedRevenue? Перегляньте етапи вашого контракту. Можливо, ви визнаєте дохід занадто повільно порівняно з роботою, яку ви виконуєте.

  • Чи є ваш баланс Assets:PrepaidInsurance від’ємним? Ви, ймовірно, списуєте його швидше, ніж дозволяє графік активу. Перевірте свій графік амортизації.

  • Чи погіршується ваш період оборотності дебіторської заборгованості (DSO) після нарахувань? Ваш нарахований дохід може маскувати основні проблеми зі стягненням. Поєднайте цей КПІ зі звітом про старіння дебіторської заборгованості, щоб виявити клієнтів, які прострочують платежі, перш ніж це стане проблемою з рухом грошових коштів.


Заключні думки

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

Сформуйте звичку до закриття місяця, і ваші цифри будуть такими ж точними, як і ваша інженерія.

Щасливого балансування!

Революціонізація управління особистими фінансами з Beancount.io

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

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

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

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

Миттєвий доступ до вашого хмарного реєстру Beancount у будь-який час, будь-де

Не кожен є ентузіастом командного рядка, і саме тому ми створили Beancount.io — менеджер особистих фінансів для кожного. Ось як це працює:

Для інтенсивної роботи користувачі Beancount все ще можуть використовувати свої комп'ютери для редагування або перегляду реєстру за допомогою браузерів, відвідуючи https://beancount.io або синхронізуючись з Dropbox. Це зберігає гнучкість інструментів командного рядка, не втрачаючи при цьому крос-пристроєвого доступу хмарного рішення.

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

Майк Тріфт, інженер з бекенду, що працює над цим продуктом, говорить:

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

Чжі Лі, інженер-програміст з Facebook, розповідає нам:

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

Ви можете зареєструватися зараз на https://beancount.io/sign-up/ або завантажити додаток для iOS чи додаток для Android. Ми спростили реєстрацію, щоб зібрати мінімально можливу інформацію від вас для запуску сервісу. Потім ви отримаєте попередньо налаштований порожній реєстр, готовий для негайного додавання записів.

Часті запитання

Чи буде beancount.io продавати мої дані реєстру третім сторонам?

  • Ні. Ми зобов'язуємося зберігати ваші дані захищеними та приватними, і ми ніколи не будемо продавати ваші дані реєстру.

Чи захищені мої дані?

  • Так. Ми захищаємо вашу електронну пошту та реєстр за допомогою AES256, ваш пароль — за допомогою BCrypt, а ваші мережеві запити — за допомогою SSL.

Чи зашифровані мої дані реєстру наскрізним шифруванням?

  • Ні. Через технічні обмеження нам все ще доводиться розшифровувати ваші дані в пам'яті під час індексації файлу реєстру на виробничих серверах. Тому ми обмежуємо прямий доступ для будь-кого з членів нашої команди. На жаль, ми не можемо реалізувати це в Intel SGX або будь-якому безпечному сховищі через високі витрати.

Чи є це надійним сервісом, якому я можу довіряти протягом наступних кількох років?

  • Так. Ми вперше запустили Beancount.io 4 липня 2019 року, і вже більше двох років ми безпечно та надійно експлуатуємо цей сервіс. Тому у нас немає причин не продовжувати його роботу в майбутньому.

Чи можу я запросити нові функції та спонсорувати проєкт?

  • Так. Будь ласка, не соромтеся звертатися до нас за адресою https://t.me/beancount для будь-яких відгуків та підтримайте нас, ставши Pro-користувачем за адресою https://beancount.io/pricing.

Посібник з міграції з QuickBooks до Beancount

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

Етап 1: Експорт даних із QuickBooks

Міграція даних за п'ять років починається з вивантаження всіх записів із QuickBooks у придатному для використання форматі. QuickBooks Desktop та QuickBooks Online мають різні опції експорту:

2021-12-01-from-quickbooks-to-plain-text-a-migration-playbook

1.1 QuickBooks Desktop – Опції експорту

IIF (Intuit Interchange Format): QuickBooks Desktop може експортувати списки (як-от план рахунків, клієнти, постачальники) у текстові файли .IIF. У QuickBooks Desktop перейдіть до Файл → Утиліти → Експорт → Списки до IIF, а потім виберіть потрібні списки (наприклад, План рахунків, Клієнти, Постачальники). Це створить текстовий файл, що містить назви рахунків, їхні типи та дані списків. IIF — це пропрієтарний, але текстовий формат, який відносно легко аналізувати. Використовуйте його для отримання вашого Плану рахунків та списків контактів для подальшого використання в Beancount.

Головна книга/Журнал через CSV: Для експорту транзакцій QuickBooks Desktop не надає повного експорту в один клік, але можна використовувати звіти. Рекомендований метод — експортувати Головний журнал (усі транзакції) за потрібний період. У QuickBooks Desktop відкрийте Звіти → Бухгалтер та податки → Журнал, встановіть Дати від найранішої транзакції до сьогодні, та натисніть Експорт → Excel. Збережіть результат як CSV, видаливши заголовки/нижні колонтитули звіту та порожні стовпці. Переконайтеся, що числові дані чисті: вони мають містити центи (наприклад, 3.00, а не 3), не мати зайвих лапок, символів валют або подвійних мінусів у CSV. CSV-файл повинен мати стовпці, такі як Дата, № транзакції, Назва, Рахунок, Примітка, Дебет, Кредит, Залишок (або єдиний стовпець "Сума" залежно від формату звіту).

Порада: QuickBooks Desktop 2015+ також може експортувати транзакції через діалогове вікно Знайти. Використовуйте Редагувати → Знайти → Розширений пошук, встановіть діапазон дат на п'ять років, а потім експортуйте результати у CSV. Увага: Деякі версії обмежують експорт 32,768 рядками. Якщо у вас дуже великий обсяг даних, експортуйте їх по роках (або меншими частинами), щоб уникнути обрізання, а потім об'єднайте їх. Переконайтеся, що діапазони дат не перетинаються, щоб уникнути дублікатів.

Інші формати (QBO/QFX/QIF): QuickBooks Desktop може імпортувати банківські транзакції через файли .QBO (Web Connect) або .QFX/.OFX, але для експорту з QuickBooks вони зазвичай не використовуються. Якщо ваша мета — витягти лише банківські транзакції, ви, можливо, вже маєте їх у форматі QBO/OFX від вашого банку. Однак для повного експорту книги дотримуйтесь IIF та CSV. QuickBooks Desktop не може безпосередньо експортувати у QIF (Quicken Interchange Format) без сторонніх інструментів. Якщо ви все ж знайдете спосіб отримати QIF, зауважте, що деякі інструменти для ведення обліку (старі версії Ledger 2.x) могли читати QIF, але для нашого процесу краще працювати з CSV.

1.2 QuickBooks Online – Опції експорту

Вбудований експорт в Excel/CSV: QuickBooks Online (QBO) надає інструмент Експортувати дані. Перейдіть до Налаштування ⚙ → Інструменти → Експортувати дані. У діалоговому вікні експорту на вкладці Звіти виберіть дані (наприклад, Головна книга або Список транзакцій), а на вкладці Списки — списки (план рахунків тощо), оберіть Усі дати та експортуйте в Excel. QuickBooks Online завантажить ZIP-архів, що містить кілька файлів Excel для вибраних звітів та списків (наприклад, Звіт про прибутки та збитки, Балансовий звіт, Головна книга, Клієнти, Постачальники, План рахунків тощо). Потім ви можете конвертувати ці файли Excel у CSV для обробки.

Звіт про деталізацію транзакцій: Якщо стандартний експорт QBO не містить єдиного файлу Головної книги, ви можете вручну створити детальний звіт:

  1. Перейдіть до Звіти та знайдіть Деталізація транзакцій за рахунком (або Головна книга в деяких версіях QBO).
  2. Встановіть Період звіту на повний п'ятирічний діапазон.
  3. В опціях звіту встановіть Групувати за = Немає (щоб перелічити окремі транзакції без проміжних підсумків).
  4. Налаштуйте стовпці, щоб включити принаймні: Дата, Тип транзакції, Номер, Назва (Одержувач/Клієнт), Примітка/Опис, Рахунок, Дебет, Кредит (або єдиний стовпець Сума), та Залишок. Включіть будь-який клас або місцезнаходження, якщо вони використовуються.
  5. Запустіть звіт, а потім Експортуйте в Excel.

Це дасть детальну книгу всіх транзакцій. Збережіть її як CSV. Кожен рядок представлятиме одне проведення (запис) транзакції. Пізніше вам потрібно буде згрупувати рядки за транзакціями для конвертації.

План рахунків та інші списки: QuickBooks Online може експортувати план рахунків через Бухгалтерія → План рахунків → Пакетні дії → Експортувати в Excel. Зробіть це, щоб отримати назви та типи рахунків. Так само експортуйте Клієнтів, Постачальників тощо, якщо хочете перенести імена для метаданих.

API QuickBooks Online (Необов'язково): Для програмного підходу Intuit надає REST API для даних QBO. Досвідчені користувачі можуть створити додаток QuickBooks Online (потрібен акаунт розробника) та використовувати API для отримання даних у форматі JSON. Наприклад, ви можете запитати ендпоінт Account для плану рахунків та ендпоінти звітів JournalEntry або GeneralLedger для транзакцій. Існують Python SDK, як-от python-quickbooks, що є обгортками для API. Однак використання API включає OAuth-аутентифікацію і є надмірним для одноразової міграції, якщо ви не віддаєте перевагу автоматизації. У більшості випадків ручний експорт у CSV/Excel є простішим та менш схильним до помилок.


Етап 2: Трансформація та очищення даних

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

2.1 Аналіз експортованих даних QuickBooks за допомогою Python

Використання Python забезпечить точність та відтворюваність трансформації. Ми окреслимо скрипти для двох ключових завдань: імпорту плану рахунків та конвертації транзакцій.

Імпорт та зіставлення рахунків: Важливо налаштувати ваші рахунки в Beancount перед додаванням транзакцій. Рахунки QuickBooks мають типи (Банк, Дебіторська заборгованість, Витрати тощо), які ми зіставимо з ієрархією Beancount (Активи, Зобов'язання, Доходи, Витрати тощо). Наприклад, ми можемо використовувати таке зіставлення:

# Відповідність типу рахунку QuickBooks до кореневої категорії Beancount
AccountTypeMap = {
'BANK': 'Assets',
'CCARD': 'Liabilities',
'AR': 'Assets', # Дебіторська заборгованість як актив
'AP': 'Liabilities', # Кредиторська заборгованість як зобов'язання
'FIXASSET': 'Assets',
'OASSET': 'Assets', # Інший актив
'OCASSET': 'Assets', # Інший поточний актив
'LTLIAB': 'Liabilities', # Довгострокове зобов'язання
'OCLIAB': 'Liabilities', # Інше поточне зобов'язання
'EQUITY': 'Equity',
'INC': 'Income',
'EXP': 'Expenses',
'EXINC': 'Income', # Інший дохід
'EXEXP': 'Expenses', # Інша витрата
}

Використовуючи експорт IIF з QuickBooks Desktop або CSV-файл списку рахунків з QBO, ми отримуємо назву та тип кожного рахунку. Потім:

  • Створюємо назви рахунків Beancount: QuickBooks іноді використовує двокрапки (:) у назвах рахунків для позначення субрахунків (наприклад, “Поточні Активи:Розрахунковий”). Beancount використовує ту саму нотацію для ієрархії. Часто можна використовувати назву безпосередньо. Якщо назви рахунків QuickBooks не починаються з категорії, додайте зіставлену категорію. Наприклад, рахунок QuickBooks типу BANK з назвою "Розрахунковий" стане Assets:Розрахунковий у Beancount. Рахунок EXP (витрати) "Харчування" стане Expenses:Харчування і т.д.

  • Забезпечуємо валідність назв: Видаліть або замініть будь-які символи, які можуть заплутати Beancount. QuickBooks дозволяє символи на кшталт & або / у назвах. Розумно видалити або замінити спеціальні символи (наприклад, замінити & на and, видалити слеші або пробіли). Також переконайтеся, що всі назви рахунків унікальні після трансформації — QuickBooks міг дозволяти однакові назви субрахунків під різними батьківськими, що нормально, але в Beancount повна назва (з батьківськими) має бути унікальною. За потреби перейменуйте або додайте кваліфікатор для їх розрізнення.

  • Генеруємо відкриття рахунків: У Beancount кожен використаний рахунок повинен бути відкритий за допомогою директиви open. Ви можете вибрати дату перед вашою першою транзакцією (наприклад, якщо мігруєте дані за 2019–2023 роки, використовуйте 2018-12-31 або ще ранішу дату для всіх відкриттів). Скрипт запише рядки на кшталт: 2018-12-31 open Assets:Checking USD 2018-12-31 open Expenses:Meals USD для кожного рахунку (припускаючи, що USD є основною валютою). Використовуйте відповідну валюту для кожного рахунку (див. нотатки про мультивалютність нижче).

Конвертація транзакцій: Основна складність полягає в конвертації експортованих транзакцій QuickBooks (CSV) у записи Beancount. Кожна транзакція QuickBooks (рахунок-фактура, рахунок, чек, журнальний запис тощо) може мати кілька проведень (рядків), які необхідно зібрати в одну транзакцію Beancount.

Ми використаємо CSV-рідер Python для ітерації по експортованих рядках та накопичення проведень:

import csv
from collections import defaultdict

# Читаємо всі рядки з CSV журналу QuickBooks
rows = []
with open('quickbooks_exported_journal.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for line in reader:
rows.append(line)

# Групуємо рядки за транзакцією (припускаючи, що '№ транзакції' ідентифікує транзакції)
transactions = defaultdict(list)
for line in rows:
trans_id = line.get('Trans #') or line.get('Transaction ID') or line.get('Num')
transactions[trans_id].append(line)

Тепер transactions — це словник, де кожен ключ — це ID/номер транзакції, а значення — список проведень для цієї транзакції. Далі ми конвертуємо кожну групу в Beancount:

def format_date(qb_date):
# Дати в QuickBooks можуть бути у форматі "12/31/2019"
m, d, y = qb_date.split('/')
return f"{y}-{int(m):02d}-{int(d):02d}"

output_lines = []
for trans_id, splits in transactions.items():
# Сортуємо проведення за порядком, якщо потрібно (зазвичай вони йдуть по порядку)
splits = sorted(splits, key=lambda x: x.get('Line') or 0)
first = splits[0]
date = format_date(first['Date'])
payee = first.get('Name', "").strip()
memo = first.get('Memo', "").strip()
# Заголовок транзакції
output_lines.append(f"{date} * \"{payee}\" \"{memo}\"")
if first.get('Num'): # додаємо номер, якщо є
output_lines.append(f" number: \"{first['Num']}\"")
# Проходимо по кожному проведенню/запису
for split in splits:
acct_name = split['Account'].strip()
# Зіставляємо назву рахунку QuickBooks з рахунком Beancount (використовуючи попередню мапу)
beancount_acct = account_map.get(acct_name, acct_name)
# Визначаємо суму зі знаком:
amount = split.get('Amount') or ""
debit = split.get('Debit') or ""
credit = split.get('Credit') or ""
if amount:
# Деякі експорти мають один стовпець "Сума" (негативний для кредитів)
amt_str = amount
else:
# Якщо окремі стовпці "Дебет"/"Кредит"
amt_str = debit if debit else f"-{credit}"
# Видаляємо коми в числах для безпеки
amt_str = amt_str.replace(",", "")
# Додаємо валюту
currency = split.get('Currency') or "USD"
amt_str = f"{amt_str} {currency}"
# Примітка/опис для проведення
line_memo = split.get('Memo', "").strip()
comment = f" ; {line_memo}" if line_memo else ""
output_lines.append(f" {beancount_acct:<40} {amt_str}{comment}")
# Кінець транзакції – порожній рядок
output_lines.append("")

Ця логіка скрипта виконує наступне:

  • Форматує дату в YYYY-MM-DD для Beancount.

  • Використовує отримувача (Name) та примітку (Memo) для опису транзакції. Наприклад: 2020-05-01 * "ACME Corp" "Оплата рахунку" (Якщо отримувача немає, можна використати Тип транзакції QuickBooks або залишити лапки порожніми).

  • Додає метадані number, якщо є номер (номер чека, рахунку-фактури тощо).

  • Ітерує по кожному рядку проведення:

    • Зіставляє назву рахунку QuickBooks з рахунком Beancount за допомогою словника account_map (заповненого на етапі роботи з планом рахунків).
    • Визначає суму. Залежно від вашого експорту, у вас може бути один стовпець Сума (з позитивними/негативними значеннями) або окремі стовпці Дебет та Кредит. Наведений вище код обробляє обидва випадки. Він забезпечує, що кредити представлені як негативні суми для Beancount (оскільки в Beancount для кожного проведення використовується одне число зі знаком).
    • Додає валюту (припускаючи USD, якщо немає окремого стовпця з валютою).
    • Записує рядок проведення Beancount з рахунком, сумою та коментарем з примітки до рядка. Наприклад: Assets:Checking 500.00 USD ; Депозит Income:Sales -500.00 USD ; Депозит Це відображає депозит у $500 (з Доходів на Розрахунковий рахунок).
  • Після переліку всіх проведень, транзакцію відокремлює порожній рядок.

Обробка мультивалютності: Якщо ваші дані QuickBooks включають кілька валют, додайте код валюти до кожного проведення (як показано вище). Переконайтеся, що рахунки в іноземних валютах відкриті з цією валютою. Наприклад, якщо у вас є банківський рахунок в EUR, ви б вивели open Assets:Bank:Checking EUR, і транзакції на цьому рахунку використовуватимуть EUR. Beancount підтримує мультивалютні книги й відстежуватиме неявні конвертації, але вам може знадобитися додати записи про курси, якщо ви хочете бачити конвертацію в базову валюту у звітах. Також рекомендується оголосити вашу основну операційну валюту на початку файлу Beancount (наприклад, option "operating_currency" "USD").

Запуск конвертації: Збережіть скрипт Python (наприклад, як qb_to_beancount.py) і запустіть його на ваших експортованих файлах. Він повинен створити файл .beancount, що містить усі рахунки та транзакції.

2.2 Обробка крайніх випадків та очищення даних

Під час трансформації звертайте увагу на ці поширені проблеми та способи їх вирішення:

  • Невідповідності в назвах рахунків: QuickBooks може мати назви рахунків, що конфліктують з ієрархічними назвами Beancount. Наприклад, у QuickBooks може бути два різні батьківські рахунки, кожен із субрахунком "Страхування". У Beancount Expenses:Insurance має бути унікальним. Вирішіть це, перейменувавши один з них (наприклад, "Страхування-Авто" проти "Страхування-Здоров'я") перед експортом або зіставте їх з унікальними рахунками Beancount у вашому скрипті. Послідовні правила іменування (без спеціальних символів та використання ієрархії) заощадять вам головний біль. Використовуйте підхід з файлом перепризначення, якщо потрібно: ведіть CSV або словник "стара назва" → "нова назва Beancount" і застосовуйте його під час конвертації (наш приклад коду використовує account_map і може завантажувати перевизначення з файлу).

  • Дати та формати: Переконайтеся, що всі дати мають послідовний формат. Наведений вище скрипт нормалізує M/D/Y до формату ISO. Також слідкуйте за проблемами фіскального та календарного року, якщо ваш п'ятирічний період перетинає кінець року. Beancount не зважає на межі фіскального року, але ви можете пізніше захотіти розділити файли за роками для зручності.

  • Числова точність: QuickBooks обробляє валюту з центами, тому робота в центах зазвичай не є проблемою. Всі суми в CSV ідеально повинні мати два десяткових знаки. Якщо якісь суми перетворилися на цілі числа (без десяткової частини) або мають коми/дужки (для негативних значень), очистіть їх у скрипті (видаліть коми, перетворіть (100.00) на -100.00 тощо). Експорт у CSV, якщо зроблений правильно (згідно з інструкціями), вже повинен уникнути цих проблем з форматуванням.

  • Від'ємні суми та знаки: Звіти QuickBooks іноді показують негативні значення як -100.00, (100.00) або навіть --100.00 у певних експортах Excel. Крок очищення повинен обробляти це. Переконайтеся, що дебети та кредити кожної транзакції збалансовані до нуля. Beancount вимагатиме цього (якщо не збалансовано, він видасть помилку під час імпорту).

  • Дублікати транзакцій: Якщо вам довелося експортувати транзакції партіями (наприклад, рік за роком або рахунок за рахунком), будьте обережні, щоб об'єднати їх без перекриття. Перевірте, чи перша транзакція року не є також останньою з попередньої партії тощо. Легко випадково продублювати кілька транзакцій на межах. Якщо ви підозрюєте дублікати, ви можете відсортувати кінцеві записи Beancount за датою та шукати ідентичні записи, або використовувати унікальні теги транзакцій Beancount для їх виявлення. Одна зі стратегій — включати номери транзакцій QuickBooks як метадані (наприклад, використовувати № транзакції або номер рахунку-фактури як тег txn або метадані quickbooks_id), а потім переконатися, що дублікатів цих ID немає.

  • Незбалансовані проведення / Транзитні рахунки: QuickBooks може мати дивні випадки, як-от транзакція з дисбалансом, який QuickBooks автоматично скоригував на рахунок “Початковий власний капітал” або “Нерозподілений прибуток”. Наприклад, при встановленні початкових залишків на рахунках QuickBooks часто проводить різницю на рахунок власного капіталу. Вони з'являться в експортованих транзакціях. Beancount вимагатиме явного балансування. Вам може знадобитися ввести рахунок власного капіталу для початкових залишків (зазвичай Equity:Opening-Balances), щоб відобразити дії QuickBooks. Хорошою практикою є створення запису про початкові залишки в перший день вашої книги, який встановлює стартові баланси всіх рахунків (див. Етап 5).

  • Крайні випадки з мультивалютністю: При використанні кількох валют експорт з QuickBooks може містити всі суми в домашній валюті або в їхній рідній валюті. Ідеально отримати дані в рідній валюті для кожного рахунку (звіти QuickBooks Online зазвичай так роблять). У Beancount кожне проведення несе валюту. Якщо QuickBooks надав обмінні курси або конвертацію в домашню валюту, ви можете проігнорувати їх і покластися на записи про ціни Beancount. Якщо QuickBooks не експортував обмінні курси, вам може знадобитися вручну додати записи про ціни (наприклад, за допомогою директиви price Beancount) для ключових дат, щоб відповідати оцінці. Однак для базової цілісності книги достатньо, щоб транзакції балансувалися у своїх оригінальних валютах — нереалізовані прибутки/збитки не потрібно явно записувати, якщо ви не хочете мати такі ж звіти.

  • Дебіторська / Кредиторська заборгованість: QuickBooks відстежує деталі рахунків-фактур та рахунків (терміни оплати, статус оплати тощо), які не будуть повністю перенесені в просту книгу. Ви отримаєте транзакції по ДЗ та КЗ (рахунки-фактури, що збільшують ДЗ, платежі, що зменшують ДЗ тощо), але не документи рахунків-фактур або баланси клієнтів за кожним рахунком. Як результат, після міграції ви повинні перевірити, чи баланси ваших рахунків ДЗ та КЗ у Beancount дорівнюють відкритим балансам клієнтів/постачальників у QuickBooks. Якщо вам потрібно відстежувати рахунки-фактури, ви можете використовувати метадані Beancount (наприклад, включити тег invoice або посилання). Номери рахунків-фактур QuickBooks повинні були перейти в поля Num або Memo — наш скрипт зберігає Num як number: "..." у метаданих транзакції.

  • Неактивні або закриті рахунки: Експорт IIF може включати неактивні рахунки (якщо ви вибрали їх включення). Це нормально — імпортувати їх (вони просто не матимуть транзакцій і нульовий баланс, якщо справді неактивні). Ви можете позначити їх як закриті в Beancount після дати останньої транзакції за допомогою директиви close. Це підтримує вашу книгу в порядку. Наприклад: 2023-12-31 close Expenses:OldAccount ; закрито після міграції Це необов'язково і в основному для чистоти.

Ретельно очистивши та зіставивши дані, як описано вище, ви отримаєте файл книги Beancount, який структурно відображає ваші дані з QuickBooks. Наступний крок — перевірити, чи він також чисельно відповідає QuickBooks.


Етап 3: Перевірка та звірка даних

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

3.1 Звірка за оборотним балансом

Звіт оборотний баланс (або пробний баланс) перелічує кінцеві залишки всіх рахунків (з дебетами та кредитами, або позитивними/негативними значеннями) і в сумі має давати нуль. Запуск оборотного балансу в обох системах на ту саму дату — найшвидший спосіб підтвердити загальну точність.

  • У QuickBooks: Сформуйте звіт Оборотний баланс на останній день фінального року (наприклад, 31 грудня 2023 року). Цей звіт показує баланс кожного рахунку. Експортуйте його або запишіть ключові показники.

  • У Beancount: Використовуйте звіти Beancount для генерації оборотного балансу. Один з легких способів — через командний рядок:

    bean-report migrated.beancount balances

    Звіт balances є оборотним балансом, що перелічує всі рахунки та їхні залишки. Ви також можете відкрити файл у Fava (веб-інтерфейс Beancount) і подивитися розділ Balances або Balance Sheet. Кожен залишок рахунку в Beancount повинен збігатися з оборотним балансом QuickBooks. Наприклад, якщо QuickBooks показує Дебіторська заборгованість = 5,000 грн, то рахунок Assets:Accounts Receivable у Beancount повинен мати загальну суму 5,000 грн (дебет). Якщо Дохід від продажів = 200,000 грн, то Income:Sales у Beancount повинен показувати 200,000 грн (кредит, що може відображатися як -200,000, якщо використовується оборотний баланс, який представляє кредити як негативні значення).

Якщо є розбіжності, знайдіть їх:

  • Перевірте, чи не відсутній або не є зайвим цілий рахунок (чи не забули ми рахунок, чи не включили той, що був закритий до періоду міграції?).
  • Якщо баланс не збігається, заглибтеся: QuickBooks може сформувати Account QuickReport або деталізацію книги для цього рахунку, і ви можете порівняти її з регістром Beancount для цього рахунку (bean-report migrated.beancount register -a AccountName). Іноді розбіжності виникають через відсутню або дубльовану транзакцію.

Також перевірте, що сума всіх рахунків дорівнює нулю в оборотному балансі Beancount (він друкує загальну суму, яка повинна бути нульовою або дуже близькою до нуля). Beancount забезпечує подвійний запис, тому якщо у вас є будь-який ненульовий дисбаланс, це означає, що активи мінус зобов'язання-капітал не зійшлися в нуль, що вказує на проблему (яку QuickBooks зазвичай теж не допустив би, але це могло статися, якщо деякі дані були втрачені).

3.2 Порівняння залишків на рахунках

Крім оборотного балансу, ви можете порівняти конкретні фінансові звіти:

  • Балансовий звіт: Сформуйте Балансовий звіт у QuickBooks на кінцеву дату та балансовий звіт у Beancount (bean-report migrated.beancount balsheet). Це схоже на оборотний баланс, але організовано за Активами, Зобов'язаннями, Власним капіталом. Цифри повинні збігатися за категоріями. Для більш детальної перевірки порівняйте загальні суми основних рахунків: грошові кошти, ДЗ, основні засоби, КЗ, власний капітал тощо.

  • Звіт про прибутки та збитки (Income Statement): Сформуйте Звіт про прибутки та збитки за п'ятирічний період (або рік за роком) у QuickBooks та в Beancount (bean-report migrated.beancount income для звіту про прибутки за весь період). Чистий прибуток з Beancount повинен дорівнювати прибутку з QuickBooks для кожного періоду. Якщо ви мігрували всі п'ять років, сукупний чистий прибуток повинен збігатися. Ви також можете порівняти окремі суми доходів та витрат, щоб переконатися, що жодна категорія не була пропущена або подвоєна.

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

3.3 Автоматизовані перевірки цілісності

Використовуйте власні інструменти перевірки Beancount:

  • bean-check: Запустіть bean-check migrated.beancount. Це проаналізує файл і повідомить про будь-які помилки в синтаксисі або балансуванні. Якщо скрипт щось пропустив, наприклад, невідкритий рахунок або незбалансовану транзакцію, bean-check позначить це. Чистий прохід (без виводу) означає, що файл принаймні внутрішньо узгоджений.

  • Асерції залишків (Balance Assertions): Ви можете додати явні асерції залишків у книгу для ключових рахунків як додаткову перевірку. Наприклад, якщо ви знаєте залишок на банківському рахунку на певну дату, додайте рядок: 2023-12-31 balance Assets:Bank:Checking 10000.00 USD Тоді bean-check переконається, що в книзі на цю дату залишок дійсно становить 10,000 USD. Це необов'язково, але може бути корисним для важливих рахунків. Ви можете взяти кінцеві залишки з QuickBooks (наприклад, на кінець кожного року) і підтвердити їх у файлі Beancount. Якщо будь-яка асерція не пройде, Beancount повідомить про різницю.

  • Перевірка оборотного балансу за періодами: Якщо бажаєте, ви можете зробити перевірку по періодах. Для кожного року порівняйте чисту зміну. Наприклад, чистий прибуток у QuickBooks 2020 проти Beancount 2020 тощо, щоб переконатися, що кожен рік правильно закрився на власний капітал (QuickBooks автоматично переносить чистий прибуток на Нерозподілений прибуток кожного нового року; в Beancount ви просто побачите сукупний власний капітал). Якщо ви бачите розбіжності, це може вказувати на проблему в даних конкретного року.

  • Кількість транзакцій та дублікати: Підрахуйте кількість транзакцій у QuickBooks та Beancount. QuickBooks не показує пряму кількість легко, але ви можете оцінити її, підрахувавши рядки в CSV (кожен заголовок транзакції проти проведень). У Beancount швидкий спосіб — підрахувати кількість входжень txn або * " у файлі. Вони повинні бути рівними або трохи більшими, ніж у QuickBooks (якщо ви додали транзакції початкових залишків або коригування). Значна розбіжність означає, що щось могло бути пропущено або продубльовано. Наше використання унікальних ID в метаданих може допомогти: якщо ви підозрюєте дублікати, знайдіть у файлі Beancount той самий номер чека або рахунку-фактури, що з'являється двічі, коли не повинен.

  • Статус звірки: Ми включили метадані rec: "y" або "n" на основі статусу звірки в QuickBooks у нашому скрипті (як rec у прикладі). Це не є стандартною функцією Beancount (Beancount не відстежує звірені/незавершені транзакції так само, як Ledger), але це може бути корисною метаданою. Ви можете перевірити, чи всі звірені в QuickBooks транзакції присутні. Зрештою, нова звірка банківських рахунків у Beancount (використовуючи ваші виписки) може бути остаточним доказом того, що нічого не пропущено.

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


Етап 4: Фіксація даних у книзі Beancount

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

4.1 Організація файлів книги та конфігурація

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

  • Основний файл книги: наприклад, ledger.beancount — це точка входу, яка може include інші файли. Він може містити глобальні опції, а потім включати річні файли.
  • Файл рахунків: Визначте план рахунків та початкові залишки. Наприклад, accounts.beancount з усіма директивами open (згенерованими скриптом). Тут ви також можете перелічити товари (валюти).
  • Файли транзакцій: Один на рік, наприклад, 2019.beancount, 2020.beancount і т.д., що містять транзакції за цей рік. Це зберігає кожен файл у керованому розмірі та дозволяє зосередитися на конкретному році, якщо потрібно. Альтернативно, ви можете розділити за сутностями або рахунками, але поділ за часом є простим для фінансових даних.

Приклад основного файлу:

option "title" "Моя бізнес-книга"
option "operating_currency" "USD"

include "accounts.beancount"
include "2019.beancount"
include "2020.beancount"
...
include "2023.beancount"

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

Beancount не вимагає кількох файлів — ви можете мати один великий файл — але наведена вище структура покращує ясність та контроль версій. Згідно з найкращими практиками Beancount, варто використовувати чіткі заголовки розділів та логічно групувати пов'язані записи.

4.2 Встановлення початкових залишків та власного капіталу

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

  • Книги з нуля: Якщо п'ятирічний період починається з моменту заснування бізнесу (наприклад, ви почали використовувати QuickBooks у січні 2019 року з усіма рахунками на нулі, крім початкового капіталу), то вам може не знадобитися окрема транзакція початкових залишків. Перші транзакції у 2019 році (наприклад, початкове фінансування на банківський рахунок) природним чином встановлять початкові баланси. Просто переконайтеся, що будь-який початковий капітал або попередній нерозподілений прибуток враховані через транзакції з власним капіталом.

  • Книги в середині процесу (часткова історія): Якщо ви почали використовувати QuickBooks раніше, і 2019 рік — це середина, то на 1 січня 2019 року кожен рахунок мав залишок, перенесений з попереднього періоду. QuickBooks мав би їх як початкові залишки або нерозподілений прибуток. У Beancount типово створювати запис про початкові залишки на день перед датою початку:

    • Використовуйте рахунок власного капіталу під назвою Equity:Opening-Balances (або подібний) для компенсації суми всіх початкових залишків.
    • Приклад: якщо на 31.12.2018 р. Грошові кошти становили 10,000 грн, а ДЗ — 5,000 грн, а КЗ — 3,000 грн (кредит), ви б написали транзакцію: 2018-12-31 * "Початкові залишки" Assets:Cash 10000.00 UAH Assets:Accounts Receivable 5000.00 UAH Liabilities:Accounts Payable -3000.00 UAH Equity:Opening-Balances -12000.00 UAH Це залишає на Opening-Balances негативну суму (–12 тис. грн), що балансує запис. Тепер усі рахунки активів/зобов'язань починають 2019 рік з правильними залишками. Це повинно відображати будь-які "Нерозподілені прибутки" QuickBooks або перенесені залишки.
    • Альтернативно, використовуйте директиви Beancount pad та balance: для кожного рахунку ви можете pad його з Opening-Balances та підтвердити залишок. Це більш автоматизований спосіб. Наприклад: 2018-12-31 pad Assets:Cash Equity:Opening-Balances 2018-12-31 balance Assets:Cash 10000.00 UAH Це каже Beancount вставити будь-який необхідний запис (на Opening-Balances), щоб Грошові кошти дорівнювали 10000 UAH на цю дату. Зробіть це для кожного рахунку. Результат схожий, але написання явної транзакції, як у першому методі, також є простим.
  • Нерозподілений прибуток: QuickBooks не експортує явно транзакцію “Нерозподілений прибуток” — він просто його обчислює. Після міграції ви можете помітити, що Equity:Retained Earnings дорівнює нулю, якщо ви його не створили. У Beancount нерозподілений прибуток — це просто прибуток попередніх років. Ви можете створити рахунок нерозподіленого прибутку і переносити на нього прибуток попередніх років у перший день кожного нового року, або просто дозволити власному капіталу бути сумою всіх доходів/витрат (що з'являється у розділі Власний капітал у звітах). Для прозорості деякі користувачі щорічно створюють закриваючі записи. Це необов'язково і в основному для презентації. Оскільки ми мігрували всі транзакції, прибуток за кожен рік природним чином згортатиметься, якщо ви запускаєте звіт за рік.

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

4.3 Фіналізація та контроль версій

Тепер, коли дані у форматі Beancount і структуровані, розумно зафіксувати файли у репозиторії системи контролю версій (наприклад, git). Кожну зміну в книзі можна відстежувати, і ви маєте аудиторський слід усіх модифікацій. Це головна перевага текстової бухгалтерії. Наприклад, у QuickBooks зміни можуть бути нелегко порівняти, але в Beancount ви можете бачити різницю рядок за рядком. Як зазначають деякі користувачі, з Beancount ви отримуєте прозорість та можливість скасовувати зміни, якщо потрібно — кожен запис можна пов'язати з історією змін.

Розгляньте можливість позначити комміт цієї початкової міграції як v1.0 або подібним чином, щоб ви знали, що він представляє стан книг, імпортованих з QuickBooks. Надалі ви будете вводити нові транзакції безпосередньо в Beancount (або імпортувати з банківських виписок тощо), і ви можете використовувати звичайні практики розробки програмного забезпечення (коммітити щомісяця або щодня, використовувати гілки для експериментів тощо).

Налаштування Fava або інших інструментів: Fava — це веб-інтерфейс для Beancount, який полегшує перегляд звітів. Після фіксації запустіть fava ledger.beancount, щоб переглянути фінансові звіти та порівняти їх з вашими звітами QuickBooks востаннє. Ви можете легше помітити невеликі відмінності в інтерфейсі (наприклад, рахунок, який повинен бути нульовим, але показує невеликий залишок, вказує на відсутній закриваючий запис або випадкову транзакцію).

Правила іменування та послідовність: Тепер у вас повний контроль, тому забезпечте послідовність:

  • Всі рахунки повинні мати чіткі назви, що починаються з великих літер назв категорій (Assets, Liabilities тощо). Якщо якісь виглядають дивно (наприклад, Assets:assets:SomeAccount через розбіжність регістру з QuickBooks), перейменуйте їх у файлі рахунків та оновіть транзакції (швидкий пошук/заміна у файлі може це зробити, або використовуйте bean-format Beancount або мультикурсор редактора).
  • Символи товарів (коди валют) повинні бути послідовними. Для USD використовуйте USD скрізь (не $ або US$). Для інших використовуйте стандартні коди (EUR, GBP, UAH тощо). Ця послідовність важлива для пошуку цін та звітів Beancount.
  • Видаліть будь-які тимчасові або фіктивні рахунки, які могли бути створені (наприклад, якщо ви використовували Expenses:Miscellaneous для невідомих рахунків у скрипті як універсальний варіант, спробуйте усунути їх, правильно зіставивши всі рахунки).

Закриття QuickBooks: На цьому етапі ви повинні мати паралельні книги в Beancount, які збігаються з QuickBooks. Деякі обирають вести обидві системи паралельно протягом короткого періоду, щоб переконатися, що нічого не було пропущено. Але якщо перевірка надійна, ви можете “закрити” книги QuickBooks:

  • Якщо це корпоративне середовище, розгляньте експорт усіх вихідних документів QuickBooks (рахунки-фактури, рахунки, квитанції) для архівів, оскільки їх не буде в Beancount, якщо ви не прикріпите їх вручну.
  • Зберігайте резервну копію даних QuickBooks (як файл компанії, так і експортовані файли).
  • Надалі ведіть книгу Beancount як основну систему обліку.

Зафіксувавши дані в книзі Beancount, ви завершили процес міграції. Останній крок — провести аудит і продемонструвати узгодженість фінансової звітності, щоб переконати себе (і будь-яких зацікавлених сторін чи аудиторів), що міграція пройшла успішно.


Етап 5: Аудит після міграції та приклади

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

5.1 Перевірка фінансової звітності

Створіть ключові фінансові звіти з QuickBooks та Beancount на ті самі дати та порівняйте їх:

  • Балансовий звіт на 31 грудня 2023 року: Порівняйте загальні суми Активів, Зобов'язань та Власного капіталу рядок за рядком. Вони повинні збігатися. Наприклад, якщо QuickBooks показував Загальні активи = 150,000 грн та Загальні зобов'язання + Власний капітал = 150,000 грн, балансовий звіт Beancount повинен показувати ті ж самі суми. Якщо ви структурували рахунки трохи інакше (скажімо, об'єднали деякі субрахунки), врахуйте це при порівнянні або розбийте до наступного рівня, щоб переконатися, що суми рівні.

  • Звіт про прибутки та збитки 2019–2023: Переконайтеся, що загальний Дохід, загальні Витрати та Чистий прибуток за кожен рік (або за весь діапазон) ідентичні. Невеликі відмінності можуть виникнути, якщо QuickBooks робив деякі округлення у звітах, але транзакції зазвичай несуть центи точно, тому чистий прибуток повинен бути точним. Якщо прибуток будь-якого року відрізняється, заглибтеся в дані цього року — це часто є індикатором відсутнього або дубльованого запису в цьому періоді.

  • Різниці в оборотному балансі: Якщо можливо, створіть таблицю, де ви перелічите кожен рахунок та залишок з QuickBooks проти Beancount. Оскільки ми очікуємо, що вони збігатимуться, це може бути стовпець з нульовою різницею. Це, по суті, перехресна перевірка оборотного балансу, яку ми обговорювали, але її запис допомагає задокументувати це.

5.2 Приклад порівняння (до та після)

Нижче наведено приклад фрагмента, що демонструє узгодженість даних. Припустимо, наш оборотний баланс QuickBooks на 31 грудня 2023 року був таким:

РахунокБаланс QuickBooks (31.12.2023)
Активи
  Assets:Bank:Checking12,500.00 грн (дебет)
  Assets:Accounts Receivable3,200.00 грн (дебет)
Зобов'язання
  Liabilities:Credit Card-1,200.00 грн (кредит)
  Liabilities:Loans Payable-5,000.00 грн (кредит)
Власний капітал
  Equity:Opening-Balances-7,500.00 грн (кредит)
  Equity:Retained Earnings-2,000.00 грн (кредит)
  Equity:Current Year Profit0.00 грн

У Beancount, після імпорту та проведення всіх транзакцій до 2023 року, звіт bean-report balances (оборотний баланс) видає:

РахунокБаланс Beancount (31.12.2023)
Активи
  Assets:Bank:Checking12,500.00 UAH (дебет)
  Assets:Accounts Receivable3,200.00 UAH (дебет)
Зобов'язання
  Liabilities:Credit Card-1,200.00 UAH (кредит)
  Liabilities:Loans Payable-5,000.00 UAH (кредит)
Власний капітал
  Equity:Opening-Balances-7,500.00 UAH (кредит)
  Equity:Retained Earnings-2,000.00 UAH (кредит)
  Equity:Profit (2019-2023)0.00 UAH

(Примітка: розділи власного капіталу можуть бути структуровані по-різному; ключовим є збіг загальних сум. Тут "Прибуток (2019-2023)" у Beancount відіграє роль поточного річного прибутку/нерозподіленого прибутку разом, показуючи нуль, оскільки прибуток був закритий на Нерозподілений прибуток.)

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

Крім того, якщо ми запустимо Звіт про прибутки та збитки за 2023 рік:

  • QuickBooks: Дохід 50,000 грн, Витрати 48,000 грн, Чистий прибуток 2,000 грн.
  • Beancount: Дохід 50,000 грн, Витрати 48,000 грн, Чистий прибуток 2,000 грн (який потім був закритий на Нерозподілений прибуток або з'являється у розділі Власний капітал у балансовому звіті на кінець року).

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

5.3 Поради щодо аудиту

  • Якщо аудитору або зацікавленій стороні потрібне запевнення, представте фінансову звітність до і після пліч-о-пліч. Прозорість Beancount може насправді спростити аудит, оскільки ви можете швидко відстежити кожне число зі звіту до вихідного запису (особливо використовуючи функцію деталізації Fava).
  • Зберігайте резервну копію QuickBooks та експортовані CSV як частину вашого аудиторського сліду. Задокументуйте будь-які коригування, зроблені під час міграції (наприклад, “Перейменовано рахунок X на Y для послідовності” або “Розділено транзакцію Z на два записи для ясності”, якщо ви робили такі зміни).
  • Надалі впроваджуйте регулярні перевірки в Beancount. Наприклад, щомісячна звірка банківських рахунків та асерція їхнього кінцевого залишку допомагає виявляти будь-які проблеми з даними або помилки в записах. Міграція дає хороший базовий рівень; підтримання дисципліни в новій системі забезпечить подальшу точність.

Нарешті, відсвяткуйте завершення міграції: ви успішно перенесли п'ять років бухгалтерських даних з QuickBooks до Beancount. Дані тепер у легкому, версіонованому текстовому форматі з повною цілісністю подвійного запису. Ви експортували дані, трансформували їх за допомогою скриптів Python, перевірили цілісність через оборотні баланси та звіти, і зафіксували їх у добре організованій книзі Beancount. Цей комплексний процес гарантує, що книга Beancount є точною, вірною копією ваших книг QuickBooks за п'ятирічний період, що налаштовує вас на спрощений облік у майбутньому.

Представляємо багатофайлову підтримку в Beancount

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

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

Ось як це використовувати:

Файл > створити новий файл

Багатофайлова підтримка однієї бухгалтерської книги

Перейдіть на вкладку редактора файлів у лівій навігаційній бічній панелі. Потім відкрийте спадне меню "Файл" і натисніть "Створити новий файл".

Файл > створити новий файл

Назвіть свій новий файл

Дайте своєму файлу дійсну назву та збережіть його. Усі назви файлів повинні закінчуватися на ".bean".

Назвіть свій новий файл

Включіть файл

Це важливий крок: ви повинні включити щойно створений файл у main.bean.

Наприклад, якщо ви додали stock.bean, тоді вкажіть include "stock.bean" у main.bean.

Включіть файл

Оновіть та перейдіть до файлу

Оновіть сторінку, і ви побачите, що файл з'явиться у спадному меню "Файл".

Оновіть та перейдіть до файлу

Перейменувати або видалити файл

Перейшовши до файлу, ви можете перейменувати або видалити його у спадному меню "Редагувати".

Перейменувати або видалити файл

Виникли проблеми?

Задавайте питання в https://t.me/beancount.

Оновлення Fava до версії 1.19: Ключові зміни та покращення

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

Ми оновили програмне забезпечення Fava з відкритим кодом, ліцензоване за MIT, до версії 1.19. Ось зміни з моменту нашого останнього оновлення:

  • v1.19 (18.05.2021)
    • міграція з опцій conversion та interval на опцію default-page
    • додано опцію invert-income-liabilities-equity
    • оновлення до CodeMirror 6
    • додано болгарський переклад
    • інші невеликі покращення та виправлення помилок
  • v1.18 (16.01.2021)
    • кілька невеликих покращень та різні виправлення помилок.

Відчуваєте захоплення? Спробуйте зараз за посиланням https://beancount.io/ledger/

2021-07-16-upgrade-fava-to-1-19

Маєте запитання? Ми будемо поруч з вами за посиланням https://t.me/beancount :)