Перейти до основного вмісту
Beancount.io Logo

Бухгалтерія для фірм з аудиту коду: як обліковувати статичні аудити, погодинне виправлення помилок та перепродані підписки SAST

Опубліковано Останнє оновлення 9 хв. читанняMike ThriftMike Thrift
Бухгалтерія для фірм з аудиту коду: як обліковувати статичні аудити, погодинне виправлення помилок та перепродані підписки SAST

Запитайте засновника невеликої фірми з аудиту коду про їхню модель доходу, і ви зазвише отримаєте збентежену паузу перед відповіддю "ну... і те, і інше?" Компанія, що займається статичним аналізом аудиту, рідко обирає щось одне. Один клієнт платить 6500 доларів за двотижневий статичний огляд застарілого додатку на Rails. Інший платить 40 доларів за розробника на місяць за постійну підписку SAST, яку фірма перепродає та налаштовує. Третій платить за індивідуальним тарифом за "повний пакет аудиту", який поєднує статичний аналіз, динамічне тестування та роботи з виправлення помилок, що оплачуються погодинно. Три угоди, три різні правила визнання доходу та один план рахунків, який зазвичай не пристосований для їх розрізнення.

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

Три потоки доходу, приховані в одному бізнесі

Перш ніж правильно щось обліковувати, потрібно розділити, що саме ви продаєте, оскільки кожен елемент поводиться по-різному в обліку.

1. Статичні аудити (фіксований обсяг, проведені у певний момент часу). Аналіз вихідного коду — перевірка відповідності стандартам, залежностей та конвеєрів CI/CD, архітектурний огляд — зазвичай оцінюється в діапазоні 5000–8000 доларів за визначений обсяг. Це окремий результат роботи: звіт, наданий у певну дату, з чітко визначеним завершенням.

2. Динамічні аудити та повні пакети аудиту (фіксований обсяг або погодинні, часто з оплатою за етапами). Тестування поведінки системи під навантаженням або в умовах протидії коштує 8000–16000 доларів, а комбінований "повний пакет аудиту" (статичний + динамічний + виправлення) зазвичай оцінюється індивідуально та оплачується за етапами або годинами. Кваліфікація аудитора, обсяг бази коду та якість документації, регуляторний обсяг (аудити для охорони здоров'я та фінансів вимагають глибшого відстеження даних та перевірки дозволів), а також терміновість — все це впливає на ціну, тобто два аудити з однаковою назвою можуть мати абсолютно різну структуру витрат.

3. Підписки SAST (регулярні, перепродані або з маржею посередника). На ринку інструментів спостерігається консолідація навколо ціноутворення SaaS на одного користувача: широкі платформи, що поєднують SAST, SCA, сканування секретів та перевірки IaC, починаються приблизно від 15–20 доларів на користувача на місяць, вузькоспеціалізовані інструменти для однієї функції коштують у діапазоні 10–15 доларів на користувача, а корпоративні контракти від великих постачальників можуть перевищувати 100 000 доларів на рік для кількох сотень застосунків. Коли аудиторська фірма перепродає або включає одну з таких платформ у свій пакет — налаштовуючи її, оптимізуючи правила хибних спрацьовувань та беручи маржу з підписки — цей дохід є регулярним, а не проєктним, і він може бути або не бути вашим доходом, залежно від того, чи виступаєте ви в ролі принципала чи агента за договором.

Об'єднання всіх трьох у "консалтинговий дохід" — це саме те, через що звіт про прибутки та збитки (P&L) перестає давати будь-яку корисну інформацію про бізнес.

Чому визнання доходу насправді відрізняється

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

  • Статичний або динамічний аудит з фіксованим обсягом зазвичай визнається у момент часу, коли звіт надано та прийнято — або, якщо оплата відбувається за етапами, визнається в міру завершення кожного етапу. Якщо ви виставляєте рахунок на 50% авансом і 50% після надання, аванс є зобов'язанням (не зароблений дохід) до моменту відправки звіту, а не доходом у день надходження чека.
  • Погодинне виправлення помилок та впровадження визнається в міру виконання годин, що означає необхідність механізму для невиставленого часу — роботи, виконаної в періоді, але ще не виставленої в рахунку — який має відображатися як актив (невиставлений рахунок до отримання / незавершене виробництво), а не зникати до дати виставлення рахунку. Це найпоширеніша причина викривлення в проєктній бухгалтерії: фірма виглядає неприбутковою в місяць виставлення рахунку та надзвичайно прибутковою наступного, виключно через затримку виставлення рахунків, а не через зміни в самій роботі.
  • Перепродана підписка SAST визнається рівномірно протягом терміну дії підписки — щомісяця або щорічно, відповідно до періоду, коли клієнт має фактичний доступ до інструменту. Якщо ви є посередником і дієте як агент (організовуєте надання програмного забезпечення постачальником), а не принципал (самостійно зобов'язуєтесь надати програмне забезпечення), ви повинні визнавати лише свою маржу, а не валову ціну підписки — облік повної суми транзиту як доходу, коли ви економічно є лише платіжним каналом, завищує ваші валові показники та спотворює реальний відсоток маржі.

Правильне визначення відносин "принципал проти агента" важливе не лише з точки зору відповідності GAAP: це різниця між звітом P&L, який показує 180 000 доларів доходу від підписок з маржею 8%, і тим, який коректно показує 14 400 доларів комісійного доходу з маржею 100%. Кредитори, страхові компанії та всі, хто будує мультиплікатори оцінки на основі ваших цифр, читатимуть ці два звіти P&L дуже по-різному — і лише один з них є близьким до правди.

Практичний план рахунків

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

  • Income:Audits:Static
  • Income:Audits:Dynamic
  • Income:Consulting:Remediation (погодинний)
  • Income:Subscriptions:SAST-Margin (тільки ваша комісія/маржа, якщо ви агент)
  • Income:Subscriptions:SAST-Gross (якщо ви принципал і перепродаєте повний контракт)
  • Liabilities:UnearnedRevenue:Audits
  • Assets:UnbilledReceivables:Consulting

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

Де фірми насправді помиляються

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

  1. Відображення депозитів за підписку як доходу негайно. Якщо клієнт передплачує річну ліцензію SAST, яку ви перепродаєте, ці гроші є зобов'язанням до завершення періоду дії покриття — врахування всього доходу в першому місяці завищує показники кварталу, в якому він надійшов, та занижує всі наступні квартали.
  2. Ніколи не відстежувати невиставлені години. Погодинна робота з виправлення помилок, виконана ближче до кінця місяця, але виставлена в рахунку наступного місяця, все одно має відображатися як актив у правильному періоді, інакше ваша маржа виглядатиме так, ніби вона різко коливається без операційних причин.
  3. Врахування транзиту посередника як валового доходу. Як зазначено вище — це завищує валові показники, що виглядає добре, доки команда з due diligence покупця (за іронією долі, виконуючи таку ж технічну перевірку, яку продає ваша фірма) не розгорне це і не переоцінить бізнес.
  4. Відсутність окремого обліку для проєктів у регульованих галузях. Аудити для охорони здоров'я та фінансових послуг мають значно більший обсяг (відстеження даних, перевірка контролю доступу) і, як правило, більший ризик відповідальності — якщо ваші книги не розділяють цей дохід та пов'язані з ним витрати, ви не зможете визначити, чи є ваші проєкти з високими вимогами до відповідності насправді прибутковими порівняно із загальними статичними оглядами.

Практичний приклад: один рахунок, три різні проводки

Припустимо, ваша фірма уклала в березні договір з клієнтом на статичний аудит вартістю 7000 доларів (50% аванс, 50% після надання), 20 годин погодинного виправлення помилок за ставкою 175 доларів за годину, які будуть виставлені в квітні, та перепродана підписка SAST за ціною 18 доларів за робоче місце на місяць для їхньої команди з 40 розробників, де ваша фірма залишає собі маржу в 4 долари за робоче місце, а решту передає постачальнику.

  • Березневий аванс (3500 доларів): Дебет "Cash" (Грошові кошти), кредит Liabilities:UnearnedRevenue:Audits (Не зароблений дохід: Аудити). Доходу ще немає — ви не надали звіт.
  • Квітневе надання звіту: Дебет Liabilities:UnearnedRevenue:Audits та залишок дебіторської заборгованості 3500 доларів, кредит Income:Audits:Static на повну суму 7000 доларів. Дохід відображається в місяці, коли роботу було фактично прийнято, а не в місяці, коли було отримано будь-який з чеків.
  • Години виправлення помилок у березні (виконані, але ще не виставлені в рахунку): Якщо 8 з 20 годин було виконано в березні, але рахунок виставляється в квітні, дебет Assets:UnbilledReceivables:Consulting (Невиставлені рахунки до отримання: Консалтинг) та кредит Income:Consulting:Remediation (Дохід від консалтингу: Виправлення помилок) за ці 8 годин (1400 доларів) у березні; решта 12 годин (2100 доларів) проводяться звичайним чином у квітні, коли як робота, так і рахунок припадають на один місяць.
  • Щомісячна підписка SAST: Якщо ви дієте як агент, лише щомісячна маржа в розмірі 160 доларів (40 робочих місць × 4 долари) відображається на Income:Subscriptions:SAST-Margin; транзит у розмірі 720 доларів (40 × 18 доларів) проходить через кліринговий рахунок стосовно суми, яку ви заборгували постачальнику, ніколи не потрапляючи до вашого звіту про прибутки та збитки. Якщо ваш договір натомість робить вас принципалом — ви є стороною, яка обіцяє програмне забезпечення клієнту, навіть якщо постачальник надає його "під капотом" — повні 720 доларів визнаються як дохід, а витрати постачальника в розмірі 560 доларів обліковуються як COGS, що в результаті дає той самий чистий прибуток, але дуже різні (і, якщо ви не є принципалом, суттєво оманливі) валові показники.

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

Чому це важливіше, ніж раніше

Попит на базову послугу зростає з помітної причини: покупці, які проводять технічну перевірку належної обачності (due diligence), все частіше розглядають код та стан безпеки як матеріальні для умов угоди, а не як формальність — технічні висновки регулярно змінюють оцінку вартості на 15-30%, і значна частка очікуваної синергії угод тепер залежить від якості інтеграції, яку аудит коду виявляє до закриття угоди. Якщо вашу власну фірму колись придбають, рекапіталізують або включать до більшого процесу due diligence, перше, що зробить фінансова команда покупця, — це те саме, що ваша аудиторська команда робить з кодом клієнта: розбере журнал на частини та перевірить, чи цифри витримують перевірку. Бізнес із планом рахунків, який уже розділяє дохід від фіксованої плати, погодинної оплати та маржі від підписок, відповість на це питання за хвилини, а не за тижні.

Ведіть власну бухгалтерію так само чисто, як код, який ви аудите

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

Поділитися цією статтею

9 хв. читання

Бухгалтерський облік консалтингу з хаос-інжинірингу: розділення доходу від ігрових днів і маржі від перепродажу інструментів

Як консалтингові компанії з хаос-інжинірингу мають розділяти дохід від аудиту…

bookkeeping
consulting
7 хв. читання

Бухгалтерія для фірми фракційного фінансового директора: Як вести власні книги тим, хто продає фінансову ясність

Як фірма фракційного фінансового директора має структурувати власну…

bookkeeping
consulting
9 хв. читання

Бухгалтерія для шкіл парапланеризму та дельтапланеризму: рейтинги, спорядження та дохід, затриманий через погоду

Як налаштувати бухгалтерію для школи парапланеризму або дельтапланеризму —…

bookkeeping
small-business
9 хв. читання

Бухгалтерія для бізнесу з дресирування собак: облік приватних занять, групових класів та доходу від програм утримання+тренування

Як дресирувальникам собак обліковувати приватні заняття, групові класи та…

bookkeeping
small-business
9 хв. читання

Бухгалтерський облік для медичних біллінгових служб: як відмови у виплатах впливають на ваш власний грошовий потік

Початковий рівень відмов у виплатах сягнув 11,8% у 2026 році, і біллінгові…

healthcare
bookkeeping