跳转到主要内容

代码审计公司的簿记方法:如何记录静态审计、按小时计费的修复工作以及转售的SAST订阅

发布日期 最后更新 阅读需 1 分钟Mike ThriftMike Thrift
代码审计公司的簿记方法:如何记录静态审计、按小时计费的修复工作以及转售的SAST订阅

如果你问一家精品代码审计公司的创始人他们的收入模式是什么,通常你会得到一个困惑的停顿,然后回答“嗯……两者都有?”一家静态分析审计公司很少会只选择一个方向。一位客户为对一个遗留 Rails 应用进行为期两周的静态审查支付 6,500 美元。另一位客户为该公司转售并配置的持续 SAST 订阅,按每位开发者每月 40 美元付费。第三位客户为“完整审计包”支付定制费率,该包结合了静态分析、动态测试以及按小时计费的修复工作。三种交易,三种不同的收入确认规则,以及一个通常无法区分它们的会计科目表。

对于现在的技术服务企业来说,这确实是一种普遍形态:最初作为纯服务型事务所起步的安全和代码质量咨询公司,越来越倾向于在其审计工作之外,同时转售或贴牌销售 SAST(静态应用安全测试)工具,因为客户既想要一次性的意见报告,也想要 CI 中持续的扫描器。由此产生的簿记问题非常具体,以至于大多数通用的“咨询公司”建议都会忽略它。

隐藏在同一业务中的三种收入流

在你能正确记账之前,你需要区分你实际在销售什么,因为每一种在账簿上的表现都不同。

1. 静态审计(固定范围,时点交付)。 源代码审查——标准合规性、依赖项和 CI/CD 流水线检查、架构审查——对于定义好的范围,通常定价在 5,000 到 8,000 美元之间。这是一个离散的可交付成果:一份报告,在特定日期交付,并有明确的结束点。

2. 动态审计和完整审计包(固定范围或按小时计费,通常基于里程碑)。 在负载或对抗条件下测试系统行为,费用在 8,000 到 16,000 美元之间,而结合了静态、动态和修复工作的“完整审计包”通常需要定制报价,并根据里程碑或工时计费。审计师资历、代码库规模和质量、文档质量、监管范围(医疗和金融审计需要更深入的数据追踪和权限验证)以及时间压力都会影响价格——这意味着两个标有相同名称的审计,其底层成本结构可能截然不同。

3. SAST 订阅(周期性,转售或经销商利润)。 这个市场的工具端已经整合为按席位 SaaS 定价模式:捆绑了 SAST、SCA、密钥扫描和 IaC 检查的广泛平台,起价约为每位用户每月 15 到 20 美元;单一功能的点工具价格在每位用户每月 10 到 15 美元之间;大型供应商的企业合同,针对几百个应用,每年可能超过 10 万美元。当一家审计公司转售或捆绑其中一个平台——进行配置、调整误报规则、并从订阅中获取利润——该收入是周期性的,而非项目制的,并且根据你在合同中是作为委托人还是代理人,这笔收入可能是也可能不是你的收入。

将这三者都归为“咨询收入”,正是导致损益表不再能告诉你有关业务任何有用信息的原因。

为什么收入确认实际上有所不同

根据 ASC 606(或其相近的国际等效准则),会计问题是承诺的商品或服务的控制权何时转移给客户——对于上述每种收入流,答案都不同。

  • 固定范围的静态或动态审计 通常在时点确认,即在报告交付并被接受时——或者,如果按里程碑计费,则在每个里程碑完成时确认。如果你在事先开具 50% 的发票,在交付时再开具 50%,那么订金在报告交付之前是一项负债(未实现收入),而不是支票兑现当天的收入。
  • 按小时计费的修复和实施工作工时履行时确认,这意味着你需要一个机制来处理未开票时间——在一个期间内完成但尚未开票的工作——将其作为一项资产(未开票应收账款/在制品)显示,而不是直到开票日期才出现。这是项目制簿记中最常见的扭曲之一:公司在一个月看起来无利可图,而下个月又利润极高,纯粹是因为开票延迟,而不是因为基础工作发生了变化。
  • 转售的 SAST 订阅 在订阅期内按期分摊确认——按月或按年,与客户实际使用该工具的期间相匹配。如果你作为转售商,扮演的是代理人(安排供应商提供软件)而非委托人(承诺自己提供软件),那么你只应确认你的利润,而不是订阅的总价——将全部转付金额记为收入,而你在经济上只是一个计费渠道,这会虚增你的收入,并错误地陈述你的实际利润率。

正确判断委托人与代理人的区别,其重要性不仅在于符合公认会计准则(GAAP):它决定了一份损益表显示订阅收入为 180,000 美元、利润率为 8%,另一份正确显示佣金收入为 14,400 美元、利润率为 100%。贷款机构、保险公司以及任何基于你的数字构建估值倍数的人,都会对这两份损益表做出截然不同的解读——而只有其中一份接近真实情况。

实用的会计科目表

一家运行所有三种收入流的代码审计公司,最好在科目层面分离收入(通常也包括销货成本),而不是事后在电子表格中简单地打标签:

  • 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. 将转售的转付款项视为总收入。 如上所述——这会虚增收入数字,看起来不错,直到买方的尽职调查团队(讽刺的是,他们做的正是你公司销售的那种技术尽职调查)解开这个结并重新评估业务。
  4. 没有单独跟踪受监管行业的业务。 医疗和金融服务审计在范围上(数据追踪、访问控制验证)要大得多,而且通常承担更多的责任风险——如果你的账簿没有分离这部分收入及其相关成本,你就无法判断你的合规密集型业务相对于你的常规静态审查是否真正盈利。

一个实例:一张发票,三种不同的记账分录

假设你的公司在三月份与一位客户签订合同,包括一个 7,000 美元的静态审计(50% 订金,50% 交付时支付),20 小时按小时计费的修复工作(每小时 175 美元,将在四月份开票),以及一个转售的 SAST 订阅(每个席位每月 18 美元,针对其 40 人的开发团队),你的公司保留每个席位 4 美元的利润,其余部分转付给供应商。

  • 三月份订金(3,500 美元): 借记现金,贷记 Liabilities:UnearnedRevenue:Audits。尚未产生收入——你还没有交付报告。
  • 四月份报告交付: 借记 Liabilities:UnearnedRevenue:Audits 和剩余的 3,500 美元应收账款,贷记 Income:Audits:Static 全额 7,000 美元。收入在实际工作被接受的月份给出,而非任何一张支票兑现的月份。
  • 三月份修复工时(已完成但尚未开票): 如果 20 个工时中有 8 个是在三月份完成的,但发票在四月份发出,那么在三月借记 Assets:UnbilledReceivables:Consulting,贷记 Income:Consulting:Remediation,金额为这 8 个小时的费用(1,400 美元);剩余的 12 个小时(2,100 美元)在四月份正常记录,此时工作和发票都在同一个月。
  • 每月 SAST 订阅: 如果你是作为代理人,那么只有每月 160 美元的利润(40 个席位 × 4 美元)记入 Income:Subscriptions:SAST-Margin;720 美元的转付款项(40 × 18 美元)通过一个结算科目流转,以抵消你欠供应商的款项,永远不会触及你的损益表。如果你的合同反而让你成为委托人——你是向客户承诺软件的一方,即使供应商在幕后提供——那么全额 720 美元确认为收入,560 美元的供应商成本记为销货成本,最终净利润相同,但收入数字截然不同(并且,如果你不是委托人,则会具有实质性的误导性)。

三笔交易,三种不同的时间规则,而且——关键是——第二笔交易正是许多小型审计公司看起来在四月份表现不佳的原因,而实际上业务本身没有任何变化。未开票工时的分录正是为了确保三月份的数字真实可靠。

为什么这件事比以前更重要

对基础服务的需求正在增长,原因值得注意:进行技术尽职调查的买家越来越多地将代码和安全状况视为交易条款的重要材料,而非一种形式——技术发现通常会使估值讨论变动 15% 到 30%,而相当一部分预期的交易协同效应现在依赖于整合质量,这正是代码审计在交易完成前能够实际揭示的内容。如果你自己的公司有朝一日被收购、重组或引入更大的尽职调查流程,买方财务团队做的第一件事,恰恰是你审计团队对客户代码库所做的:分解账本,检查数字是否经得起推敲。一个拥有已能分离固定费用、按小时计费和订阅利润收入的会计科目表的公司,可以在几分钟内回答这个问题,而不是几周。

让你自己的账簿像你审计的代码一样整洁

运营一个混合审计与订阅的业务,意味着你的收入确认有三种不同的规则共处一室,而电子表格很少能长期一致地强制执行这种区分。Beancount.io 提供透明、版本控制、易于比较差异的纯文本会计——对于已经习惯于思考可审计历史的技术团队来说,这是一个自然的选择。免费开始使用,让你自己的财务记录像你销售的审计服务一样严谨。

分享这篇文章

阅读需 9 分钟

混沌工程咨询公司记账指南:将演练日收入与工具转售利润分开核算

混沌工程咨询公司应如何将韧性审计、演练日引导、自动化搭建和工具转售收入拆分到独立的账簿科目中——包括许可证转付的 ASC 606…

bookkeeping
consulting
阅读需 7 分钟

兼职CFO公司的簿记:当你以财务清晰度谋生时如何构建自己的账簿

一家兼职CFO公司应如何构建自己的账簿?预聘金(每月3,000–15,000美元)在赚取之前是递延收入负债,未开票的在制品应计入资产负债表,收入应按计费模式拆分…

bookkeeping
consulting
阅读需 9 分钟

滑翔伞与悬挂滑翔学校记账指南:等级评定、装备及天气导致的收入延迟

如何为滑翔伞或悬挂滑翔学校建立记账体系——根据USHPA等级级别区分双人飞行与单人飞行收入;将价值4500–9000美元的滑翔伞/座袋/备份伞作为折旧固定资产进…

bookkeeping
small-business
阅读需 9 分钟

训犬业务簿记:追踪私教课、团体课程和寄宿训练收入

训犬师应如何分别核算私教课、团体课程和寄宿训练套餐——使用递延收入处理预付系列课程,通过销货成本跟踪寄宿费用,并对教练进行清晰的1099与W-2分类。

bookkeeping
small-business
阅读需 9 分钟

医疗计费服务记账:理赔拒付如何冲击你自己的现金流

2026年初次理赔拒付率达到11.8%,而按收款额收取4-10%费用的计费服务,每一次拒付都直接反映在自己的账面上。本文提供实用指南:在理赔实际获赔时确认费用收…

healthcare
bookkeeping