Back to Insights
// // insight

Capitalizing Software Development Costs: An Engineering Leader's Guide to ASC 350-40, CapEx Tracking, and Ven…

Under US GAAP (ASC 350-40), software development costs are capitalized as CapEx during the Application Development stage once management authorizes funding and technical feasibility is established. Preliminary research, architecture spikes, post-launch maintenance, and bug fixes must be expensed as OpEx. Capitalizable expenses include direct developer payroll, contractor billables, and dedicated development infrastructure tied to new capabilities.

Published September 8, 2026 · Reviewed by the NextGen engineering team

ASC 350-40 Explained in Plain Engineering Terms

Engineering leaders rarely care about accounting codification until their CFO asks why $400,000 of contractor spend hit the P&L as operating expenses instead of being capitalized on the balance sheet.

Under US GAAP, internal-use software accounting falls under ASC 350-40 (Internal-Use Software). If your team builds cloud platforms, internal workflow engines, or enterprise SaaS products where customers buy a service rather than a downloadable binary, ASC 350-40 governs how you account for developer time and vendor contracts.

The accounting core relies on a strict line between capital expenditures (CapEx) and operating expenses (OpEx):

  • CapEx (Capitalized): Costs added to the balance sheet as an asset and amortized over the software's useful life (typically 3 to 5 years). This improves EBITDA in the year the code is written.
  • OpEx (Expensed): Costs recognized immediately on the income statement in the month they occur. This hits operating margins immediately.

To qualify for capitalization, a project must meet two criteria simultaneously:

  1. Management authorization: Executive leadership or the board has formally approved funding for the project.
  2. Probable completion: The engineering leadership agrees the project is technically feasible and intends to complete and deploy it.

Before this threshold is crossed, every hour spent is OpEx. The moment the threshold is crossed, coding and testing become CapEx. Once the feature is deployed to production, capitalization stops immediately.

The Three Project Stages: What Qualifies as CapEx vs. OpEx

Financial auditors do not audit your codebase; they audit your project phases. ASC 350-40 divides software creation into three distinct stages. Knowing where your team's work falls prevents audit adjustments at year-end.

StageAccounting ClassificationEligible Engineering ActivitiesNon-Eligible / Expensed Activities
1. Preliminary Project Stage100% OpExArchitecture spike evaluation, vendor selection, proof-of-concept coding, feasibility testing.Business requirements gathering, competitor analysis, hardware scoping.
2. Application Development Stage100% CapExWriting production code, configuring middleware, building API integrations, running unit/UAT tests.User training, manual data scrubbing, administrative overhead.
3. Post-Implementation Stage100% OpExDefect resolution (bug fixes), routine maintenance, performance tuning, minor tweaks.Creating user manuals, help desk setup, server maintenance.

Major Upgrades vs. Routine Maintenance

Not all work done after deployment is OpEx. If your team builds a new module that adds significant new functionality—such as adding a real-time event pipeline to an existing batch application—that work enters a new Application Development Stage and qualifies for CapEx.

If the work merely keeps the application running (e.g., upgrading a React dependency from v17 to v18 or fixing a memory leak), it is routine maintenance and must be expensed as OpEx.

Capitalizing Agile Teams: Tracking Effort Without Timesheet Mutiny

The biggest friction point in software accounting is tracking developer time. Accounting wants 15-minute time tracking; senior engineers want to burn down tickets. Forcing engineers to fill out manual timesheets yields junk data and lowers morale.

Modern engineering organizations solve this by mapping CapEx rules to Jira, GitHub, or Linear workflows rather than timesheets.

The Epic-Based Allocation Framework

Instead of tracking individual hours, categorize work at the Epic level during sprint planning:

  1. Classify the Epic: Label Epics as either CapEx: New Capability or OpEx: Maintenance/Tech Debt.
  2. Track Story Points or Dev Days: Measure completed story points or assigned engineer-days per Epic within a sprint cycle.
  3. Apply Blended Cost Rates: Multiply the engineering capacity dedicated to CapEx Epics by your organization's loaded payroll rate.

To calculate direct labor cost per engineer, use total fully burdened compensation:

Fully Burdened Hourly Rate = (Base Salary + Payroll Taxes + Benefits + Health Insurance) / 2080 Hours

Bonus structures and equity grants (RSUs) are usually excluded from capitalizable software costs under standard GAAP interpretations. When working with third-party software development teams, calculating CapEx is simpler because vendor invoices provide explicit billable rates for engineering time. You can benchmark standard domestic engineering labor costs against the Engineering Cost Index 2026 to ensure your internal labor rates align with US market standards.

How to Structure Vendor SOWs to Pass Audit Scrutiny

If you engage an external engineering firm for a $120,000 to $500,000 modernization project, your finance team will want to capitalize as much of that contract as possible under ASC 350-40.

If your Statement of Work (SOW) is poorly written, auditors will reject the capitalization request and force the entire invoice amount into OpEx.

SOW Mechanics That Protect CapEx Eligibility

To ensure your vendor SOW passes accounting audit standards, enforce these five structural rules:

  • Separate phases explicitly: Do not bundle research, development, and support into a single line item. Create distinct milestone payments for Preliminary Scoping (OpEx), Core Build & Integration (CapEx), and Post-Launch Hypercare (OpEx).
  • Define clear deliverable milestones: Tie payments to concrete technical outputs (e.g., "Delivery and deployment of Payment Gateway Integration v1.0 to Staging Environment") rather than generic monthly retainer phrases like "Engineering capacity for Q3."
  • Isolate data migration costs: If the vendor is writing scripts to transform legacy schema into new database schemas, break this out. Scripting the transformer tool is CapEx; manually scrubbing bad records or running the database load execution is typically OpEx.
  • Detail license and hosting line items: Ensure third-party software licenses or cloud staging infrastructure used during the build phase are itemized separately from post-launch production hosting.
  • Document proof of production delivery: Maintain formal sign-off receipts for major vendor deliverables. Auditors want to see that the asset actually went live. You can review how our teams structure transparent, milestone-driven technical delivery by reviewing our production proof cases and delivery artifacts.
BAD SOW LINE ITEM (Forced to 100% OpEx by Auditors):
"Engineering services for platform modernization and ongoing support: $250,000"

GOOD SOW LINE ITEM STRUCTURE (Audit-Defensible CapEx Split):
- Milestone 1: Technical Spikes & Architecture Spec (OpEx) ......... $30,000
- Milestone 2: Core Engine Development & API Build (CapEx) ....... $160,000
- Milestone 3: End-to-End Integration Testing (CapEx) .............. $40,000
- Milestone 4: Post-Launch Bug Fixes & Hypercare (OpEx) ........... $20,000

Edge Cases: AI Model Training, Data Pipelines, and Cloud Infra

Modern cloud and AI workloads introduce accounting edge cases that traditional GAAP rules did not explicitly anticipate. Here is how leading technical accounting teams handle them:

1. Fine-Tuning LLMs and Training AI Models

Evaluating whether an open-source model (like Llama 3) meets your latency needs is Preliminary (OpEx). However, writing the custom orchestration logic, build infrastructure, data preparation pipelines, and wrapper code to integrate model inference into your application falls under Application Development (CapEx). Raw API usage fees paid to model vendors during development can usually be capitalized if dedicated solely to build-stage testing.

2. Cloud Infrastructure Costs During Development

Production cloud infrastructure is 100% OpEx. However, AWS or Azure sandbox environments provisioned specifically to support developers during the Application Development stage (such as temporary staging clusters or automated CI/CD pipeline infrastructure) can be capitalized as direct expenses of software creation.

3. Data Pipelines vs. Data Cleanse

Building a reusable Apache Kafka or Snowflake data pipeline to ingest, transform, and route telemetry into a new application is capitalizable software development. Running that pipeline to backfill historical legacy data into the new platform is considered a data conversion activity and must be expensed as OpEx under ASC 350-40-25-3.

The Audit Trail: What Finance Needs from Jira and GitHub

When annual audit season arrives, big four accounting firms or external auditors select a sample of capitalized software projects and request corroborating evidence. They do not want verbal assurances from the VP of Engineering; they want system artifacts.

Your team must maintain a clean trail connecting dollars spent to code shipped:

  1. Project Approval Memos: Signed product strategy documents showing when executive leadership officially approved funding for the feature build (marking the start of Stage 2).
  2. Jira Epic Audits: Exported reports showing completed issues, story points, or assigned dev hours under capitalized Epics during the capitalizable window.
  3. GitHub Commit Logs & Pull Requests: PR records demonstrating that active code development occurred precisely between the project authorization date and the production deployment date.
  4. Deployment Sign-Offs: Release management logs showing the exact date the feature was deployed to production (marking the end of Stage 2 and the immediate cessation of capitalization).

If your team cannot prove the end date of a project, auditors may invalidate the capitalization for the entire quarter, forcing a material earnings adjustment.

What This Means for Your Team

Navigating ASC 350-40 isn't about turning senior developers into accountants. It's about putting structured delivery boundaries around how work is planned, contracted, and executed.

By setting up clear Jira Epic classifications, separating maintenance from net-new capabilities, and requiring vendor SOWs to break out discovery, build, and support line items, you protect your engineering budget while giving your CFO the precise audit trail they require.

If you are planning a critical platform build, cloud migration, or legacy system modernization and need an senior engineering partner who understands how to deliver high-velocity code under audit-ready SOW mechanics, get in touch with our team.

Frequently asked

Can agile software development costs be capitalized under ASC 350-40?
Yes, agile development costs can be capitalized under ASC 350-40 during the Application Development stage. Teams must track effort by mapping features or story points to specific CapEx Epics rather than relying on manual developer timesheets. Once a sprint backlog item is deployed to production, capitalization for that specific feature ends.
What developer expenses are eligible for capitalization?
Direct developer base salaries, payroll taxes, employee health benefits, and third-party contractor invoices directly tied to building new capabilities qualify for capitalization. Bonuses, equity grants (RSUs), executive oversight, and general administrative overhead must be expensed as OpEx.
How should vendor Statements of Work (SOWs) be structured for software accounting?
Vendor SOWs must separate project phases into distinct line items and milestones rather than bundling fees into generic monthly retainers. Preliminary architecture spikes and post-launch maintenance must be explicit OpEx items, while core feature engineering and integration milestones are itemized as CapEx.
Are cloud hosting and AI API costs capitalizable during development?
Cloud infrastructure and AI API fees incurred exclusively for development and staging environments during the Application Development stage can be capitalized as direct project costs. Production cloud hosting, ongoing inference fees, and operational monitoring environments must always be expensed as OpEx.
What is the difference between major software upgrades and routine maintenance?
Major software upgrades add significant new functionality or capabilities to an application and qualify for capitalization under a new Application Development stage. Routine maintenance, minor bug fixes, security patches, and library dependency updates merely maintain existing performance and must be expensed as OpEx.

More answers in Insights or see AI development services.

// let's build something

Start your project request

Tell us what you're building — engineering capacity, AI, QA, cloud, or a fixed-scope software engagement. Our NYC team responds within one business day.

// what to expect
  • Response within 1 business day
  • 30-minute discovery conversation
  • Recommended engagement model & pricing
  • NYC-focused — in-person available
Start Project Request

Inbound sales only. All form information is encrypted in transit.