Skip to main content

2 posts tagged with "QuickBooks"

View all tags

Глибокий аналіз моделей прибутку Pilot та провідного бухгалтерського програмного забезпечення

· 25 min read
Mike Thrift
Mike Thrift
Marketing Manager

Як генеральному директору beancount.io, розуміння бізнес-моделей прибутку лідерів галузі Pilot та основного бухгалтерського програмного забезпечення/послуг, таких як QuickBooks, Xero, Bench та Wave, є вирішальним для формування стратегії. Цей звіт проаналізує бізнес-моделі цих компаній з таких аспектів, як методи ціноутворення, типи клієнтів, джерела доходу, позиціонування продукту та диференціація, а також канальні стратегії та охоплення ринку. Він особливо детально розбере модель та переваги Pilot і, нарешті, надасть порівняльну таблицю постачальників.

Pilot: Бізнес-модель та унікальні переваги

2025-05-30-analysis-of-major-accounting-software

Модель ціноутворення та потоки доходів: Pilot пропонує онлайн-послуги з ведення фінансового обліку за моделлю річної підписки, з багаторівневим ціноутворенням, що базується на масштабі щомісячних витрат компанії-клієнта та необхідному обсязі послуг. Базова послуга з ведення бухгалтерського обліку раніше починалася приблизно з $499 на місяць (для компаній з щомісячними витратами до $15 000). (Примітка: Починаючи з 2025 року, Pilot запустив дешевший базовий план "Essentials", що починається від $199/місяць, для задоволення базових потреб у веденні бухгалтерського обліку мікро- та малого бізнесу.) Основний дохід Pilot надходить від абонентської плати, де клієнти сплачують фіксовану щомісячну/річну плату за безперервні послуги з ведення бухгалтерського обліку. Крім того, Pilot генерує додатковий дохід через додаткові фінансові послуги, такі як послуги з подання податкової декларації з податку на прибуток підприємств (виставляються щорічно) та консультаційні послуги фінансового директора (виставляються щомісячно). Pilot не пропонує власну функцію розрахунку заробітної плати безпосередньо, натомість зосереджуючись на основних фінансових послугах, таких як бухгалтерський облік та підготовка податкових декларацій.

Тип клієнта та позиціонування продукту: Заснована у 2017 році, Pilot зосереджується на обслуговуванні стартапів та малих і середніх підприємств (МСП), особливо швидкозростаючих технологічних стартапів. Вона позиціонує себе як "єдиний фінансовий бек-офіс" для малого бізнесу, надаючи не лише професійне ведення бухгалтерського обліку, а й підтримку старшого фінансового радника (фінансового директора), і навіть спеціалізовані послуги, такі як заявки на податкові пільги за НДДКР. Pilot з самого початку наголошує на використанні обліку за методом нарахування (а не касового методу), забезпечуючи, щоб компанії, що швидко зростають, могли в будь-який час відповідати вимогам інвесторів та відповідності без болісної майбутньої конверсії. Це робить Pilot особливо придатним для компаній з потребами у фінансуванні та швидко зростаючою складністю бізнесу. Pilot також використовує власне програмне забезпечення та штучний інтелект для підвищення ефективності та точності. Наприклад, у 2023 році Pilot запустив функцію "Pilot GPT", інтегруючи генеративний ШІ OpenAI у бухгалтерський процес для підвищення точності ведення бухгалтерського обліку та надання глибших фінансових даних. Pilot заявляє, що, поєднуючи програмне забезпечення ШІ з досвідченою бухгалтерською командою, він обслуговує понад 1700 швидкозростаючих клієнтів, надаючи малим компаніям можливості фінансового аналізу "рівня великої компанії". Ця модель "інтеграції людини та машини" не тільки зменшує повторювані завдання, такі як ручне введення даних, але й дозволяє бухгалтерам присвячувати більше часу фінансовому управлінню та консалтингу високого рівня.

Відмінні переваги: На відміну від традиційного бухгалтерського програмного забезпечення, Pilot пропонує повністю керований бухгалтерський облік. Користувачам не потрібно самостійно використовувати бухгалтерське програмне забезпечення; натомість вони передають на аутсорсинг всю функцію фінансового обліку команді Pilot. Унікальні аспекти Pilot: 1) Глибока автоматизація – використання алгоритмів для автоматичної класифікації транзакцій, підключення до даних банківських та торгових платформ тощо, тим самим підвищуючи ефективність та точність; 2) Професійне командне обслуговування – кожен клієнт має виділену бухгалтерську команду зі США для підтримки, доступну для запитань та професійних відповідей через повідомлення в додатку або електронну пошту; 3) Широкий спектр розширених послуг – окрім щомісячного ведення бухгалтерського обліку, Pilot може надавати індивідуальні послуги, такі як подання податкових декларацій, підготовка до аудиту фінансової звітності, і навіть управління заробітною платою та кредиторською заборгованістю (потребує індивідуальних планів); 4) Система, орієнтована на компанії, що зростають – Pilot підтримує складні потреби, такі як консолідація кількох реєстрів, кількох юридичних осіб, облік запасів, та пропонує послуги часткового фінансового директора для допомоги компаніям у фінансовому плануванні та підтримці залучення коштів. Порівняно зі своїми основними конкурентами, Pilot більше схожий на "технологічну бухгалтерську фірму": він управляє фінансами клієнтів за допомогою передових програмних інструментів та ШІ, у поєднанні з виділеною командою бухгалтерів. Ця модель дозволяє стартапам, які не мають внутрішніх фінансових команд, отримувати доступ до високоякісного фінансового управління.

Стратегія каналів та охоплення ринку: Pilot використовує модель прямих продажів для залучення клієнтів, маркетингу в спільнотах стартапів та побудови репутації серед стартап-інкубаторів та портфельних компаній венчурних фондів. Він також генерує ліди клієнтів МСП через онлайн-контент-маркетинг (наприклад, фінансові посібники для стартапів, звіти). Його послуги наразі переважно охоплюють компанії в Сполучених Штатах, оскільки стандарти фінансової звітності та податкові декларації тісно пов'язані з місцевими нормами. Pilot наголошує на підтримці, що надається командою зі США, для забезпечення безперебійного спілкування та професійних стандартів. Ця модель високоякісного обслуговування також означає, що Pilot зосереджується на ринку США (особливо на центрах технологічних стартапів) і ще не розширився значно по всьому світу.

QuickBooks: Модель прибутку та особливості

Модель ціноутворення та джерела доходу: QuickBooks (належить Intuit) працює за типовою бізнес-моделлю програмного забезпечення як послуги (SaaS), з регулярними абонентськими платежами як основним джерелом доходу. QuickBooks Online пропонує кілька тарифних планів підписки залежно від функціоналу (наприклад, Simple Start, Self-Employed, Small Business, Advanced), що виставляються щомісяця або щорічно. Станом на 2023 рік QuickBooks Online мав понад 7 мільйонів онлайн-передплатників по всьому світу. Окрім підписок на програмне забезпечення, Intuit отримує прибуток, пропонуючи користувачам QuickBooks додаткові фінансові послуги з доданою вартістю, включаючи послуги з розрахунку заробітної плати та послуги з обробки платежів. Наприклад, користувачі можуть доплачувати за QuickBooks Payroll (щомісячна плата залежить від кількості працівників та рівня обслуговування) для обробки заробітної плати. Коли користувачі виставляють рахунки та приймають онлайн-платежі через QuickBooks, Intuit стягує комісію (відсоткову ставку) з транзакцій за кредитними картками або банківськими переказами. Крім того, Intuit також генерує дохід через програми навчання та сертифікації (наприклад, плата за навчання для сертифікації ProAdvisor для бухгалтерів). Загалом, QuickBooks має різноманітні джерела доходу: абонентська плата за базове бухгалтерське програмне забезпечення формує базу регулярних доходів, доповнюючись платою за фінансові послуги та додаткові модулі, що становить його основну модель прибутку.

Тип клієнтів: QuickBooks обслуговує широкий спектр клієнтів, включаючи індивідуальних підприємців, фрілансерів, малі підприємства, а також деякі середні підприємства та фахівців з бухгалтерського обліку. QuickBooks Online пропонує різні рівні, від версій для індивідуальних підприємців/самозайнятих до розширених версій, задовольняючи потреби в бухгалтерському обліку бізнесів, починаючи від операцій однієї особи до компаній з десятками працівників. Згідно з бізнес-аналізом Intuit, основними користувачами QuickBooks традиційно були малі підприємства з 1–10 працівниками. Останніми роками, щоб охопити більших клієнтів, QuickBooks також розширює функціонал для обслуговування складніших середніх підприємств (наприклад, пропонуючи більш детальний контроль дозволів, звітність для кількох юридичних осіб та інші розширені функції). Бухгалтери та бухгалтерські фірми також є значною групою користувачів QuickBooks — Intuit залучає фахівців з бухгалтерського обліку використовувати QuickBooks для своїх клієнтів через програму ProAdvisor, тим самим опосередковано розширюючи охоплення QuickBooks серед малих підприємств.

Позиціонування продукту та диференціація: Як одне з найзріліших бухгалтерських програмних забезпечень у галузі, QuickBooks позиціонується як універсальний та комплексний фінансовий інструмент. Його переваги включають: 1) Багатий функціонал – що охоплює модулі для категоризації доходів та витрат, звітності, управління грошовими потоками бізнесу, дебіторської/кредиторської заборгованості, запасів, проєктів, допомоги у підготовці податкової звітності тощо; 2) Добре розвинена екосистема – вона може похвалитися величезним ринком сторонніх додатків та інтеграціями, з понад 1000 додатків, що можуть підключатися до даних QuickBooks (таких як POS-системи, платформи електронної комерції, інструменти для звітності про витрати тощо), дозволяючи користувачам додавати функціонал за потребою; 3) Висока частка ринку – QuickBooks займає домінуючу позицію на ринку бухгалтерського програмного забезпечення для малого бізнесу в США, отримуючи вигоду від довіри до бренду та великої бази користувачів; 4) Розширені послуги – Intuit пропонує послуги, такі як Payroll та Payments, користувачам QuickBooks, створюючи комплексне фінансове рішення для малого бізнесу. Це також дає QuickBooks вищий потенціал середнього доходу на користувача (ARPU) порівняно з конкурентами (користувачі можуть купувати його фінансові послуги на додаток до програмного забезпечення). Також варто зазначити, що QuickBooks насамперед надає програмні інструменти і не пропонує безпосередньо послуги з ведення бухгалтерського обліку людиною. Однак Intuit нещодавно запустив онлайн-бухгалтерію «QuickBooks Live» як послугу з доданою вартістю, де професійні бухгалтери на платформі Intuit надають послуги щомісячної звірки для передплатників QuickBooks, вартістю близько $300–$700 на місяць (залежно від масштабу бізнесу). Це свідчить про те, що QuickBooks розширює свою продуктову систему, включаючи послуги, але загалом його основне позиціонування залишається таким: надання можливості користувачам або їхнім бухгалтерам самостійно вести бухгалтерський облік за допомогою програмного забезпечення. Це принципово відрізняється від повністю керованих послуг, таких як Pilot та Bench.

Стратегія каналів та охоплення ринку: Канали продажів QuickBooks включають прямі онлайн-продажі та партнерів: З одного боку, Intuit продає підписки безпосередньо малим підприємствам через свій офіційний веб-сайт, часто пропонуючи пробні знижки (наприклад, знижка 50% на перші три місяці для нових користувачів) для залучення клієнтів. З іншого боку, Intuit створив величезну партнерську мережу бухгалтерів (ProAdvisor), заохочуючи бухгалтерів рекомендувати або перепродавати QuickBooks своїм клієнтам, пропонуючи їм знижки або комісії. Ця стратегія зробила QuickBooks стандартною системою бухгалтерського обліку для малого бізнесу для багатьох бухгалтерських фірм. Щодо охоплення ринку, материнська компанія QuickBooks, Intuit, має корені в США, але також запустила локалізовані версії в кількох країнах (наприклад, Канада, Велика Британія, Австралія). Станом на зараз QuickBooks має користувачів у понад 100 країнах світу, з понад 7 мільйонами глобальних онлайн-користувачів. Однак його найбільшим ринком залишається Північна Америка, тоді як в інших регіонах він стикається з конкуренцією з боку Xero та місцевого програмного забезпечення. Intuit також виходить на нові ринки через придбання або інвестиції, але загалом вплив бренду QuickBooks зосереджений в англомовних країнах, досягаючи проникнення на ринок через онлайн-маркетинг, видимість у пошукових системах та партнерські рекомендації.

Xero: Модель прибутку та характеристики

Модель ціноутворення та джерела доходу: Xero, компанія з Нової Зеландії, що розробляє хмарне бухгалтерське програмне забезпечення, використовує чисту модель SaaS на основі підписки. Xero отримує прибуток переважно за рахунок стягнення плати за підписку на програмне забезпечення з клієнтів малого бізнесу. Xero пропонує різні тарифні плани підписки, що базуються на різних масштабах та потребах (наприклад, рівні Early, Growing, Established на ринку США та Starter, Standard, Premium в інших країнах), з поступовим збільшенням функціональності та обсягу оброблюваних бізнес-операцій, а також щомісячним зростанням плати за підписку. Ця багаторівнева стратегія ціноутворення на основі функціональності забезпечує Xero стабільний та передбачуваний регулярний дохід. Станом на 2023 рік Xero мала понад 4,4 мільйона платних передплатників у більш ніж 180 країнах світу. Окрім основних бухгалтерських підписок, Xero також генерує певний дохід за рахунок додаткових послуг. Наприклад, Xero пропонує власний модуль управління заробітною платою (як платний додаток або включений до планів вищого рівня в деяких країнах), а також додаткові функціональні модулі управління витратами та управління проектами, які стягуються або через тарифні плани вищого рівня підписки, або як окремі додаткові підписки. Крім того, Xero має величезний ринок сторонніх додатків, що дозволяє клієнтам підписуватися на інтегровані сторонні додатки; з 2021 року Xero отримує 15% «частки доходу від рефералів» від підписок на сторонні додатки, замовлені через її магазин додатків. Це означає, що Xero може отримувати певну комісію, коли користувачі платять за деякі інтегровані додатки. Таким чином, джерела доходу Xero, окрім плати за підписку, також включають плати за додаткові преміум-функції та комісії за сторонні послуги, формуючи диверсифікований склад.

Тип клієнта: Клієнтами Xero є переважно малі підприємства, що охоплюють стартапи, торговців у різних галузях, а також бухгалтерські фірми, які обслуговують клієнтів малого бізнесу. Xero зародилася на ринку Океанії, накопичивши велику кількість користувачів малого бізнесу в Австралії та Новій Зеландії, і швидко розширилася через бухгалтерські канали. Xero наголошує на своїх тісних стосунках з бухгалтерськими партнерами; багато бухгалтерських фірм рекомендують Xero своїм клієнтам та отримують знижки через партнерську програму Xero, тим самим зменшуючи вартість впровадження для клієнтів. Це робить Xero схожою на QuickBooks за цільовими клієнтами (обидві широко обслуговують мікро/малі підприємства та фінансових агентів), але з регіональним фокусом: Xero має надзвичайно високу частку ринку у своїй рідній Австралії/Новій Зеландії, досягла значного зростання у Великій Британії та Європі, і прагне наздогнати частку ринку QuickBooks у Північній Америці. Типовий клієнт Xero може бути невеликою компанією з 1-50 співробітниками, яка потребує професійного фінансового управління, але не бажає використовувати складні та дорогі системи корпоративного рівня. Xero також пропонує недорогі плани для мікропідприємств (наприклад, плани Starter/Early), що дозволяє фізичним особам-підприємцям використовувати офіційний інструмент подвійної бухгалтерії за низьку щомісячну плату.

Позиціонування продукту та диференціація: Xero позиціонується як глобальна бухгалтерська платформа, створена в хмарі. Її диференціація відображається в: 1) Відмінному користувацькому досвіді – інтерфейс Xero зручний, естетично привабливий та інтуїтивно зрозумілий (просуваючи свою філософію «красивого бізнесу»), що робить його відносно легким для початку роботи для власників малого бізнесу, незнайомих з бухгалтерією, що було однією з причин її швидкої популярності на міжнародних ринках на ранніх етапах; 2) Хмарній співпраці – Xero наголошує на можливості для власників малого бізнесу та їхніх зовнішніх бухгалтерів переглядати бухгалтерські книги разом у хмарі, досягаючи безперешкодної співпраці; 3) Відкритій інтеграції – Xero має відкритий API та величезну екосистему додатків, пропонуючи понад 1000 інтерфейсів сторонніх додатків, наприклад, інтеграцію з електронною комерцією, POS, CRM, платіжними системами тощо. Ця відкрита стратегія дозволяє малим підприємствам використовувати Xero як центральний фінансовий хаб та розширювати індивідуальні бізнес-процеси; 4) Постійних інноваціях – Xero щомісяця постійно оновлює свої хмарні функції, додаючи функціональні можливості на основі потреб клієнтів та галузі. Наприклад, Xero постійно покращує свою локалізацію, щоб адаптуватися до ринкових вимог у таких сферах, як відповідність податковим системам різних країн, вимогам до виставлення рахунків та обліку в кількох валютах. Стратегічна відмінність між Xero та QuickBooks полягає в тому, що Xero не має стільки власних додаткових фінансових послуг, як Intuit; натомість вона більше зосереджується на чистій функціональності програмного забезпечення та партнерських інтеграціях. Xero не запустила власну команду бухгалтерських послуг (на відміну від Pilot/Bench), але є твердим постачальником платформ бухгалтерського програмного забезпечення, надаючи можливість бухгалтерам та власникам малого бізнесу використовувати програмне забезпечення. Це позиціонування принесло їй визнання багатьох бухгалтерських фірм по всьому світу. Загалом, Xero відрізняється високою зручністю використання та здатністю до глобального розширення, конкуруючи віч-на-віч з QuickBooks.

Канальна стратегія та охоплення ринку: Xero використовує двосторонню ринкову стратегію: з одного боку, вона безпосередньо залучає кінцевих користувачів – малі підприємства – через онлайн-маркетинг та безкоштовні пробні версії; з іншого боку, вона глибоко розвиває мережі бухгалтерів та фахівців з обліку. Xero створила офіційну партнерську програму Xero, запрошуючи бухгалтерські фірми та фірми з обліку стати сертифікованими консультантами та впроваджувати Xero для своїх клієнтів; ці партнери отримують знижки та відшкодування на основі кількості платних клієнтів, яких вони залучають, а також перераховуються як рекомендовані консультанти на офіційному веб-сайті Xero. Ця модель допомагає Xero швидко будувати довіру та схвалення на нових ринках. З точки зору регіонального охоплення, Xero розпочала свою діяльність у Новій Зеландії та наразі має офіси в кількох великих регіонах світу, включаючи Австралію, Велику Британію, США, Канаду та частини Азії. Xero займає лідируючу позицію у хмарному обліку для малого бізнесу в Австралії та Новій Зеландії, і підтримує швидкий темп зростання на ринку Великої Британії (користуючись перевагами ініціативи Великої Британії «Оподаткування в цифрі»). У США та Канаді, хоча частка ринку Xero все ще відстає від QuickBooks, вона накопичила значну базу користувачів і продовжує інвестувати в розширення. Крім того, Xero далі охоплює клієнтів малого бізнесу через співпрацю з банками (наприклад, партнерство з RBC у Канаді для пропозиції спільної брендованої версії) та інші канали. Таким чином, стратегія охоплення ринку Xero наголошує на інтернаціоналізації та зростанні, керованому партнерами, конкуруючи з QuickBooks в англомовних країнах та досліджуючи ринки в інших регіонах, які ще не домінують сильне місцеве програмне забезпечення.

Bench: Модель прибутку та характеристики

Модель ціноутворення та джерела доходу: Bench – це компанія, що надає послуги онлайн-аутсорсингу бухгалтерського обліку, зі штаб-квартирою в Канаді, але яка переважно обслуговує малі підприємства Північної Америки. Бізнес-модель Bench схожа на модель Pilot, також заснована на абонентській платі: клієнти сплачують фіксовану щомісячну плату, а Bench призначає професійних бухгалтерів для щомісячної організації їхніх рахунків та надання фінансової звітності. Ціни Bench є відносно доступними, з двома основними планами для малого бізнесу: базові бухгалтерські послуги починаються приблизно від $299/місяць, а пакет, що включає послуги з річного подання податкової звітності, коштує приблизно $499/місяць. Оновлена інформація вказує, що ціни на підписку Bench у 2024 році коливаються від $249 до $349/місяць, залежно від того, чи включені такі послуги, як подання податкової звітності. Основним джерелом доходу Bench є ці щомісячні абонентські плати за послуги, які збираються щомісяця або щорічно відповідно до обраного клієнтом плану. Крім того, Bench пропонує деякі послуги за одноразову плату, такі як відновлення бухгалтерського обліку (для підприємств, які відстають у веденні бухгалтерського обліку на місяці або навіть роки, що включає введення та очищення історичних даних) та консультації з вирішення податкових питань, які є проєктами за запитом, що додають цінності. Загалом, дохід Bench переважно зосереджений навколо "базових бухгалтерських підписок + додаткових послуг з подання податкової звітності".

Тип клієнта: Bench орієнтується на власників малого бізнесу, стартапи та фрилансерів, які не мають власного бухгалтерського відділу. Їхні цільові клієнти, як правило, менші за масштабом, з відносно простими бізнесами, але бажають професійного управління своїми фінансами. Сам Bench надає бухгалтерський облік за модифікованим касовим методом, що переважно підходить для невеликих бізнес-моделей. Багато клієнтів Bench – це підприємці з помірними річними доходами та обсягами транзакцій, такі як власники невеликих інтернет-магазинів, консультанти, агенти та оператори ресторанів, які обирають Bench, щоб заощадити час на веденні бухгалтерського обліку. Bench менш відомий у стартап-колах, ніж Pilot, але має певну частку ринку в традиційному секторі малого бізнесу — особливо серед мікропідприємств, які не потребують складного фінансового обліку і потребують лише базового дотримання податкового законодавства. Важливо зазначити, що типові клієнти, яких обслуговує Bench, часто мають досить базові фінансові потреби: наприклад, не включаючи консолідовану звітність для кількох локацій або дочірніх компаній, а також складні вимоги до обліку запасів або відкладеного доходу SaaS. Тому Bench зосереджує свої послуги на "знятті тягаря з власників дуже малого бізнесу".

Позиціонування продукту та диференціація: Bench описується не як традиційне програмне забезпечення, а як рішення "програмне забезпечення + людські послуги". Його позиціонування характеризується наступним: 1) Повністю керований сервіс – Як і Pilot, Bench надає команду бухгалтерів-людей для ведення бухгалтерського обліку клієнтів, а не просто продає програмне забезпечення. Після того, як клієнти завантажують квитанції та підключають банківські рахунки через веб-інтерфейс або додаток Bench, команда Bench щомісяця категоризує транзакції, завершує банківські звірки та видає звіти про прибутки та збитки, баланси тощо наприкінці місяця; 2) Власна платформа – Bench розробив власну бухгалтерську платформу, де клієнти можуть переглядати фінансові звіти та спілкуватися. Однак Bench не використовує універсальне програмне забезпечення (наприклад, QuickBooks), що означає, що якщо клієнти залишать Bench у майбутньому, їхні фінансові дані потребуватимуть конвертації для міграції в інші системи; 3) Інтегровані податкові послуги – Bench пропонує допомогу з поданням податкової звітності як опцію (координуючи з партнерськими сертифікованими бухгалтерами для заповнення податкових декларацій), яку клієнти можуть обрати в пакеті, що робить це комплексним сервісом "бухгалтерський облік + подання податкової звітності"; 4) Цінова конкурентоспроможність – Порівняно з Pilot, ціни Bench значно нижчі, позиціонуючи його як економічне рішення. Наприклад, Bench пропонує безкоштовний пробний період на перший місяць, щоб знизити бар'єр для входу для клієнтів, а його загальна вартість є більш привабливою для мікропідприємств з обмеженим бюджетом. Обмеження Bench полягає в його меншій глибині послуг: він не пропонує стратегічний консалтинг фінансового директора, не підтримує складні фінансові сценарії, а для стартапів, що швидко розвиваються та залучають фінансування, бухгалтерський облік за касовим методом Bench може не відповідати суворим вимогам до фінансової звітності. Таким чином, сам Bench визнає, що він зосереджений на обслуговуванні "дуже малих підприємств", і коли бізнес клієнтів стає складнішим, їм може знадобитися перейти на бухгалтерський облік за методом нарахування та більш розширені послуги. Основна відмінність між Bench і Pilot полягає в їхній цільовій клієнтурі — Bench більше схожий на економічний аутсорсер бухгалтерського обліку для мікробізнесу, наголошуючи на "економії вашого часу та зусиль шляхом ведення ваших книг", тоді як Pilot орієнтується на компанії, орієнтовані на зростання, з вищими фінансовими вимогами.

Стратегія каналів та охоплення ринку: Bench переважно залучає клієнтів через онлайн-маркетинг. Орієнтуючись на власників малого бізнесу, Bench рекламується в пошукових системах та соціальних мережах, а також веде контентний блог, пропонуючи фінансові та податкові знання для залучення потенційних клієнтів. Щодо каналів "сарафанного радіо", рекомендації щодо Bench можна знайти в деяких спільнотах власників малого бізнесу та стартап-форумах. Крім того, Bench співпрацює з деякими платформами послуг для малого бізнесу для рефералів, такими як платформи електронної комерції або бізнес-банки, які можуть рекомендувати Bench як варіант бухгалтерського обліку. Охоплення послугами Bench наразі переважно в Сполучених Штатах, а також він приймає канадських клієнтів (Bench походить з Ванкувера, Канада). Як стартап, Bench пройшов кілька раундів фінансування для розширення своєї користувацької бази, але зіткнувся з операційними труднощами у 2023 році та був придбаний та інтегрований американською податковою та фінансовою компанією (названою Employer.com). Це свідчить про те, що його розширення переважно зосереджувалося на північноамериканському ринку, без глибокого проникнення в інші країни. Бізнес-модель Bench значною мірою залежить від масштабованих операцій та ефективності людських послуг, що робить швидкість його розширення відносно повільнішою, ніж у компаній-розробників програмного забезпечення, але він все ж здобув довіру тисяч клієнтів малого бізнесу через модель прямих онлайн-продажів.

Wave: Модель прибутку та характеристики

Модель ціноутворення та потоки доходу: Wave — це відоме безкоштовне хмарне бухгалтерське програмне забезпечення, яке тривалий час працювало за фріміум-моделлю. Основні інструменти бухгалтерського обліку, виставлення рахунків та управління квитанціями надаються користувачам абсолютно безкоштовно, без функціональних чи часових обмежень. Wave сам не стягує з користувачів плату за підписку на програмне забезпечення, але отримує прибуток через пов'язані плати за фінансові послуги. Зокрема, основні джерела доходу Wave подвійні: По-перше, комісійні збори за обробку платежів (Payments by Wave). Користувачі малого бізнесу можуть виставляти рахунки клієнтам через Wave та приймати онлайн-платежі. Wave інтегрує функції оплати кредитними картками та банківськими переказами, стягуючи певний відсоток від суми транзакції (наприклад, близько 2,9% + 30¢ за платежі кредитною карткою). Цей дохід від комісій за обробку платежів, після відрахування витрат, сплачених платіжним шлюзам (таким як Stripe), значною мірою стає доходом Wave. По-друге, плата за підписку на послуги з розрахунку заробітної плати (Payroll by Wave). Wave пропонує інструменти для розрахунку заробітної плати для користувачів зі США та Канади, стягуючи щомісячну базову плату (близько $20–$35 USD) плюс плату за кожного працівника. Клієнти, які використовують безкоштовний бухгалтерський облік Wave і вирішують обробляти заробітну плату працівників у ньому, повинні сплачувати абонентську плату за цю послугу. У минулому Wave також отримував певний дохід від показу реклами в інтерфейсі програмного забезпечення, але повністю видалив рекламу, починаючи з 2017 року, щоб зосередитися на монетизації послуг. Варто зазначити, що Wave був придбаний американським податковим гігантом H&R Block за 537 мільйонів доларів у 2019 році, і завдяки цьому почав пропонувати послуги з доданою вартістю, такі як податкове консультування (наприклад, платні консультації з бухгалтерами щодо податкових питань). Станом на 2022 рік, за своєю повністю безкоштовною стратегією, Wave досяг річного доходу приблизно 100 мільйонів доларів за рахунок вищезгаданих фінансових послуг, що свідчить про значну базу користувачів та обсяг транзакцій.

Коригування бізнес-моделі: Важливо зазначити, що Wave скоригував свою стратегію ціноутворення на початку 2024 року. Після багатьох років абсолютної безкоштовності Wave оголосив про додавання платного рівня підписки — продовжуючи пропонувати постійно безкоштовну версію (Starter), він представив платний план Pro за 20 канадських доларів (CAD $20) (приблизно $15 USD) на місяць, надаючи опцію для користувачів, які потребують розширених функцій. Платна версія розблокує деякі розширені можливості або пріоритетну підтримку, тоді як безкоштовна версія зберігає базові функції бухгалтерського обліку та виставлення рахунків. Тим часом користувачі обох версій все ще можуть купувати додаткові послуги, такі як Payroll та Payments, за потребою. Цей крок має на меті забезпечити Wave більш стабільний потік доходу для підтримки безперервних інвестицій у продукт. Керівництво Wave заявило, що вони завжди підтримуватимуть безкоштовний рівень для залучення мікропідприємств-стартапів, але коли бізнес користувачів зростає і має складніші потреби, вони можуть обрати оновлення до платного плану, таким чином дозволяючи Wave трансформуватися від "залучення трафіку" до "зростання монетизації".

Тип клієнта: Wave орієнтується на мікропідприємства, індивідуальних підприємців та фрілансерів, які дуже чутливі до ціни. Типовий користувач Wave може бути дуже малим бізнесом (менше 10 співробітників, або навіть лише власник, який виконує кілька ролей). Їм часто бракує спеціалізованих бухгалтерських знань, і вони обирають Wave, оскільки він безкоштовний та простий у використанні. Простий, дружній інтерфейс Wave та базові функції достатні для задоволення потреб цих невеликих операцій у веденні бухгалтерського обліку та підготовці податкової звітності. Для початківців власників онлайн-магазинів, фрілансерів-дизайнерів та консультантів-одинаків Wave пропонує безкоштовну альтернативу ручному веденню бухгалтерського обліку, таким чином накопичуючи мільйони таких користувачів. Звичайно, коли ці підприємства стають більшими та складнішими, вони можуть перейти на більш комплексне платне програмне забезпечення, таке як QuickBooks або Xero. Але Wave захопив величезний ринок "довгого хвоста": мікропідприємців, які не бажають або не можуть платити за програмне забезпечення. Wave монетизується за рахунок плати за послуги, перетворюючи грошовий потік цих безкоштовних користувачів на дохід (наприклад, якщо платежі за рахунками проходять через його платіжний канал, це генерує комісії за обробку). Таким чином, його клієнти включають як повністю безкоштовних користувачів (які використовують лише базові функції), так і користувачів платних послуг (які використовують функції платежів та розрахунку заробітної плати). Нещодавно представлений план Pro від Wave орієнтований на існуючих користувачів, яким потрібно більше функцій, пропонуючи розширені звіти про прострочену дебіторську забор

Порівняльний аналіз Pilot та основних конкурентів

На основі вищезгаданого аналізу очевидно, що Pilot, QuickBooks, Xero, Bench та Wave мають різні бізнес-моделі. Pilot та Bench належать до категорії "технологічно-орієнтованих послуг фінансового аутсорсингу", дозволяючи клієнтам мати професійні команди, які виконують їхню бухгалтерію за підпискою. Натомість, QuickBooks та Xero є чистими програмними моделями, що ліцензують користувачів або їхніх бухгалтерів для самостійного виконання фінансової роботи за допомогою інструментів. Wave йде абсолютно іншим шляхом, виходячи на ринок з безкоштовними інструментами та монетизуючись через фінансові послуги. Унікальні переваги Pilot порівняно з іншими полягають у високому ступені автоматизації в поєднанні з інтеграцією професійних послуг, орієнтуючись на потреби клієнтів, що швидко зростають, та надаючи комплексне рішення від ведення бухгалтерії до підготовки податкової звітності та фінансового консалтингу. Це робить його дуже привабливим для стартапів, яким потрібно заощадити час та зусилля, вимагаючи при цьому високої якості. QuickBooks та Xero, з іншого боку, відзначаються масштабом ринку та екосистемою, маючи мільйони користувачів та численні інтеграції, а також багаторічний досвід накопичення бренду та широке функціональне покриття, хоча вони вимагають від користувачів інвестувати час у їх використання. Bench схожий на Pilot, але позиціонується в нижчому ціновому сегменті, будучи дешевшим, але з відносно обмеженим функціоналом, придатним лише для дуже малих підприємств. Найбільша конкурентна перевага Wave полягає в тому, що він безкоштовний; знижуючи бар'єр для входу, він залучив велику кількість користувачів, а його модель прибутку більше залежить від масштабу користувачів та обсягу транзакцій, ніж від високих комісій за окремого користувача.

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

ПостачальникМодель прибутку та стратегія ціноутворенняОсновна клієнтська базаОсновні джерела доходуПозиціонування продукту та характеристики
PilotТехнологічно-орієнтована послуга фінансового обліку; Річна підписка, плата залежить від розміру клієнта (Essentials від \199/міс., типово від ~\499+/міс.).Стартапи, що швидко зростають, МСП (особливо в галузі технологій та електронної комерції)Плата за підписку на бухгалтерські послуги; Плата за послуги подання податкової звітності; Плата за консультаційні послуги фінансового директора.Комплексне AI + людське рішення для ведення бухгалтерії, що наголошує на автоматизації та підтримці професійної команди, пропонує ведення обліку за методом нарахування та індивідуальні фінансові послуги, замінює внутрішній бухгалтерський відділ.
QuickBooksБухгалтерське програмне забезпечення SaaS; Багатоверсійна місячна підписка (рівні за функціями, ~$15-$100+/міс.), плюс додаткові модулі.Приватні підприємці, малі підприємства, бухгалтерські фірми (основна маса малих підприємств <10 співробітників)Плата за підписку на програмне забезпечення; Плата за послуги розрахунку заробітної плати (за співробітника/міс.); Комісія за обробку платежів; Дохід, пов'язаний з екосистемою (наприклад, сертифікація навчання).Багатофункціональне хмарне бухгалтерське програмне забезпечення з великою базою користувачів та екосистемою сторонніх розробників. Позиціонується як загальний фінансовий інструмент, вимагає роботи користувача або бухгалтера; нещодавно додано Live людське ведення бухгалтерії.
XeroХмарне бухгалтерське програмне забезпечення SaaS; Місячна підписка, багаторівневі плани (Starter/Standard/Premium) з масштабованими функціями та обмеженнями.Малі підприємства, стартапи; Мережа бухгалтерів-партнерів (що представляють багато малих підприємств)Плата за підписку на програмне забезпечення; Плата за додаткові функції (наприклад, розрахунок заробітної плати, витрати); Комісія магазину додатків (15% від продажів інтегрованих послуг сторонніх розробників).Глобальна хмарна бухгалтерська платформа, "народжена в хмарі", висока зручність використання. Позиціонується як інструмент для спільної фінансової роботи, сильна в відкритих API та багатих інтеграціях; дохід переважно від програмного забезпечення, без власних бухгалтерських послуг.
BenchОнлайн-сервіс аутсорсингу бухгалтерії; Місячна підписка, фіксована ціна пакета (бухгалтерія ~$299/міс., бухгалтерія + податки ~$499/міс., річна знижка).Власники мікро- та малих підприємств (обмежений дохід/транзакції, без штатного бухгалтера)Плата за підписку на бухгалтерські послуги; Плата за послуги подання податкової звітності (у пакеті або окремо); Плата за відновлення обліку та інші одноразові послуги.Економічний аутсорсинг послуг бухгалтерії + податків, надає професійну команду для ведення бухгалтерії та простих звітів. Позиціонується як фінансовий помічник для малого бізнесу, програмне забезпечення + людина, але базові функції, лише касовий метод обліку, без розширених фінансових консультацій. Нижча ціна, обмежений обсяг послуг.
WaveМодель Freemium; Основне бухгалтерське програмне забезпечення постійно безкоштовне. Новий платний рівень Pro ~$15/міс. з 2024 року для оновлень.Індивідуальні та мікропідприємці (надзвичайно економні, фінансово прості користувачі)Комісії за обробку платіжних транзакцій; Плата за підписку на послуги розрахунку заробітної плати; (Невелика сума від платних преміум-підписок, нові податкові консультації тощо).Безкоштовна бухгалтерська платформа, наголошує на простоті використання та нульовому бар'єрі для входу, залучаючи величезну кількість мікрокористувачів безкоштовними інструментами. Монетизується шляхом вбудовування фінансових послуг, таких як платежі та розрахунок заробітної плати. Відносно базові функції, задовольняє потреби простого ведення бухгалтерії/виставлення рахунків, додаткові послуги орієнтовані на Північну Америку.

Таблиця: Порівняння моделей прибутку та позиціонування Pilot проти QuickBooks, Xero, Bench, Wave та інших основних бухгалтерських програм/послуг.

Підсумок: Як новий гравець на ринку послуг фінансового обліку, Pilot перевершує традиційне програмне забезпечення за глибиною послуг завдяки своїй інноваційній моделі, що поєднує програмне забезпечення та людський досвід. QuickBooks та Xero домінують за широтою ринку завдяки своїм великим базам користувачів та функціональним екосистемам. Bench пропонує недорогий варіант людського ведення бухгалтерії, але має обмежену масштабованість. Wave, з іншого боку, займає нішу своєю безкоштовною стратегією, завойовуючи увагу мікропідприємств, а потім монетизуючись через фінансові послуги. Для підприємців, таких як ті, що працюють з beancount.io, глибоке розуміння схожості та відмінностей цих моделей є корисним для визначення власного позиціонування продукту: чи йти шляхом програмного забезпечення на основі інструментів, рішення на основі послуг, або досліджувати нову модель freemium + додана вартість. Успіхи та виклики цих компаній стануть безцінними орієнтирами для розробки бізнес-стратегії.

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

· 29 min read
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 за п'ятирічний період, що налаштовує вас на спрощений облік у майбутньому.