Blog

Your Software CapEx Split Is a Management Estimate. It Should Be Evidence.

Jirka Bachel5 min read

TL;DR: Most software capitalization splits are a management estimate dressed up as a number. They come from Jira tickets, quarterly surveys, and a spreadsheet nobody can re-run, and none of it is primary support an auditor will accept. The fix is to stop asking people what they built and read it from the code itself.

The number ships. The evidence never does.

Here is how software capitalization works at most companies. Finance needs a CapEx and OpEx split for the quarter. Finance asks engineering. Engineering asks Jira. Jira returns tickets that are proxied, partial, and quietly gamed. Someone rounds to a familiar percentage, the number ships, and the close moves on.

Three quarters later an external auditor asks one question: how was that split derived? The room goes quiet, because the honest answer is a blend of story points, a survey, and a controller’s judgment. As one finance lead put it to me: “We just round to 40% CapEx. Always have.”

Under IAS 38 and ASC 350-40, capitalized software cost is meant to rest on evidence of the work performed. A text field in a ticketing tool, on its own, rarely clears that bar.

The three ways teams report CapEx, and why each one breaks

Ticket-based. Story points are a negotiation tool, not a ledger. Labels drift, tickets get reopened, scope shifts mid-sprint. The percentage a controller signs rests on fields that were never meant to be accounting records.

Survey-based. Asking engineers each quarter what they worked on produces best-effort recollection, which is a management estimate, not a measurement. It burns engineering days every close, misses contractors and offshore teams entirely, and returns a different answer depending on who you ask and when. “I genuinely don’t remember what I shipped in March” is the usual result.

Spreadsheet-based. The moment FP&A needs to restate a prior period, for a new capitalization policy, an acquisition, or an R&D credit study under IRC Section 41, the work starts from zero. A spreadsheet has no rewind button. You spend weeks of finance time and still cannot defend the number.

Read it from the code instead

Your repository already holds the record of what engineering actually did: every commit, every diff, every file touched, every refactor, the ownership and dependency graph, and the complexity of each task. That is the primary support finance has been approximating with surveys all along.

Four-step pipeline turning git history into an audit-grade CapEx ledger: coding activity, classification, accounting policy, and reporting.
Your git history, turned into an audit-grade ledger in four steps: coding activity, classification, your accounting policy, and reporting.

So classify the work at the source. Navigara reads the repository directly and classifies every unit of work the moment it lands, as capitalizable development or operating expense, against your written policy. No timesheets, no survey forms, no ticket-hygiene project. The split reflects real engineering effort and complexity rather than commit count.

Commit list with each commit classified as CapEx or OpEx, for example a feature as CapEx and a dependency bump as OpEx.
Each commit is classified as CapEx or OpEx the moment it lands, against your written policy.

This is the same principle behind everything we build: engineering should be measured from the artifact it produces, the code, not from what people remember about it. It is how we score output as Engineering Throughput Value, and it is what turns a capitalization split from a guess into something you can hand an auditor.

Restate any quarter, going back years

Because the source of truth is your git history and not a snapshot of someone’s timesheet, you can apply today’s capitalization policy to last year, the year before, or the year of an acquisition. Policy changed? Re-run it. Auditor wants Q3 2024 under the new rules? Re-run it. M&A reconciliation across two separate code histories? Re-run it. Restatements under IAS 8 and ASC 250 stop being a fire drill and become a query, with the underlying evidence intact.

Timeline reconstructing CapEx across prior years under a current policy, with quarters reconstructed, commits reclassified, and variance versus ledger.
Apply today’s policy to any prior period, reconcile acquisitions, and hold variance against the ledger.

Every hour pinned to a SHA

This is the part auditors actually care about. Each cell in the report drills down to the commits, the diffs, and the exact policy rule that classified them. When someone asks why a line item is CapEx, the answer is not “engineering told us.” It is a specific change and a signed policy version.

Immutable audit log of classification events, each tied to a commit SHA and policy rule, including an override with a reason and a sealed quarter.
Every line item drills down to the commit, the diff, and the policy rule that classified it.

It is also built for where the standards are going. Under ASU 2025-06, ASC 350-40 replaces the old stage-gate model with a principles-based threshold, and the same engine reports against either basis. Coverage is 100% of contributors, including the bots, vendors, and contractors that surveys quietly drop. Variance against the ledger stays under your materiality threshold. SOC 2 Type 2 covers data security today, and SOC 1 Type 2 is on the roadmap for the ICFR-relevant controls.

From a guess to a system of record

The status quo is a report built from what people remember: engineers losing one to two days a quarter, contractors missing from the totals, no way to restate, and errors surfacing at year-end instead of at commit time. The alternative is a report derived from your repository, produced automatically, and defensible down to the SHA.

If you own the capitalization number, that is the difference between hoping the audit goes well and knowing it will. See how automated CapEx and OpEx reporting works, or bring your policy manual and a repository to a 30-minute walkthrough and leave with a real CapEx report derived from your own commits, under your own policy.

Frequently asked questions

How do you calculate a software CapEx and OpEx split?
Classify the engineering work itself rather than estimating it. Navigara reads the git repository directly, code paths, diffs, refactors, ownership, dependency graph, and task complexity, and classifies every commit at the moment it lands as capitalizable development or operating expense against your written policy. No timesheets or surveys are involved, so the split reflects measured effort instead of recollection.
Is a Jira-based or survey-based CapEx split audit-defensible?
On its own, rarely. Story points are negotiation tools, labels drift, and tickets get reopened, so they were never meant to be accounting records. Quarterly engineer surveys are best-effort recollection, a management estimate that misses contractors and varies by who is asked. Under IAS 38 and ASC 350-40, capitalized cost should rest on evidence of the work performed, which means primary support that ties to specific changes.
Can you restate prior-period software capitalization under a new policy?
Yes. Because the source of truth is your git history rather than a timesheet snapshot, today's capitalization policy can be applied to any prior quarter, including the period of an acquisition. That makes restatements under IAS 8 and ASC 250, M&A reconciliations, and R&D credit studies under IRC Section 41 a re-run rather than a from-scratch project, with the evidence trail intact.
Which accounting standards does this support?
CapEx and OpEx classification runs under IAS 38, ASC 350-40, and ASC 985-20, and reports against both the legacy stage-gate model and the principles-based threshold introduced by ASU 2025-06. SOC 2 Type 2 covers data security today, with SOC 1 Type 2 on the roadmap for ICFR-relevant controls.

More from the blog