GAAP Rules for Capitalization of Software: Complete Scenario Guide
At Salesken, our finance team and engineering team spoke completely different languages when it came to software costs. Engineering would say "we refactored the payment service" and finance would ask "is that capitalizable?" Neither side understood the other's framework. I ended up building a shared decision tree — basically the scenarios in this guide — so both teams could classify work consistently without a 30-minute debate every sprint.
The most practical way to understand GAAP software capitalization is by scenario. While the standards provide principles, finance teams and auditors need to apply those principles to specific real-world situations: What happens when you build a new product? Add a feature? Fix bugs? Refactor code? Migrate infrastructure?
This guide walks through 10 common scenarios with clear GAAP guidance for each, including the authoritative citations, GAAP treatment (capitalize or expense), and practical considerations.
Scenario Quick-Reference Table
| Scenario | Capitalizable? | GAAP Standard | Key Factor |
|---|---|---|---|
| New product development (Phase 2) | YES | ASC 985-20 | After technological feasibility |
| Feature enhancements | MAYBE | ASC 350-40 or 985-20 | Depends on whether it extends asset life |
| Bug fixes and maintenance | NO | ASC 350-40-35-2 | Period costs by definition |
| Code refactoring for performance | NO | ASC 350-40-35-2 | Doesn't create new functionality |
| Platform migration (cloud to on-premise) | MAYBE | ASC 350-40 | Depends on whether it's development or maintenance |
| Technical debt reduction | NO | ASC 350-40-35-2 | Considered maintenance, not enhancement |
| Infrastructure upgrades | MAYBE | Property, Plant & Equipment | Depends on capitalization threshold |
| Mobile app development | YES | ASC 985-20 or 350-40 | Depends on intended customer base |
| API development | MAYBE | ASC 350-40 or 985-20 | Depends on whether internal-use or to be sold |
| Compliance and security updates | NO | ASC 350-40-35-2 | Required maintenance activities |
Scenario 1: New Product Development (SaaS Product)
Situation: Your team begins developing a new SaaS product intended for external sale. You're building a cloud-based project management tool to launch next year.
GAAP Treatment: CAPITALIZE (after technological feasibility is established)
Standard: ASC 985-20 (software to be sold)
Phase Analysis:
| Phase | Activity | Treatment |
|---|---|---|
| Conceptualization | Market research, competitive analysis, technology evaluation | EXPENSE (Stage 1) |
| Feature specification | Requirements gathering, architecture design, team planning | EXPENSE (Stage 1) |
| Technological feasibility | Working prototype or detailed program design | TRANSITION POINT |
| Development | Coding, testing, feature implementation | CAPITALIZE (Stage 2) |
| Beta testing | External user testing before release | EXPENSE (Stage 3) |
| Launch | Product released to market | Stage 4 begins |
Key GAAP Citation: ASC 985-20-25-1 states "Software development costs are capitalized when the technological feasibility of the software product has been established and the entity has made the commitment to produce the software product."
Practical Example:
You decide to build a project management SaaS product. Through February, your team researches the market and designs architecture (EXPENSED). In March, you complete a functional prototype that demonstrates the core features work as designed. This is the "technological feasibility" point.
February costs (EXPENSED):
- Product manager salary (1 month): $8,000
- 2 engineers' salaries (research/design): $16,000
- Prototype/proof of concept server costs: $1,000
- Total expensed: $25,000
March onwards (CAPITALIZED):
- Engineering team developing full product: $32,000/month
- Testing and quality assurance: $4,000/month
- Bug fixes for product (pre-launch): $2,000/month
- Development infrastructure: $800/month
Total capitalized during development phase: ~$300,000 (10 months at $30,000+/month)
Once product launches: transition to Stage 4 (post-release), future bug fixes and maintenance expense
Audit Checkpoint: Document when technological feasibility was achieved. This is the critical moment for capitalization eligibility. Auditors will request the prototype, design documents, or working model that demonstrates feasibility.
Scenario 2: Adding a Major Feature to Existing Product
Situation: You've sold your project management SaaS for two years. Now you're adding AI-powered task recommendations, a substantial feature enhancement requiring 6 months of development by 3 engineers.
GAAP Treatment: CAPITALIZE (likely)
Standard: ASC 985-20-35-4 (enhancements to existing software)
Analysis: The key question is whether this feature is a "maintenance update" or a "material enhancement." ASC 985-20-35-4 allows capitalization of enhancements that result in new or improved functionality. However, routine maintenance (minor bug fixes, performance patches) is expensed.
The Test:
- Does the enhancement create new functionality for customers? YES → Capitalize
- Does it extend the life of the product? YES → Capitalize
- Does it improve future revenue generation? YES → Capitalize
- Is it a required maintenance activity? NO → Capitalize
- Is it a bug fix or performance optimization of existing features? NO → Expense
AI-powered recommendations create new functionality, improve customer experience, and can justify higher pricing or retention. This is a capitalizable enhancement.
AI Feature Development:
- Product manager (6 months): $36,000
- 3 engineers (6 months): $144,000
- ML training infrastructure: $12,000
- Testing and data setup: $8,000
Total enhancement cost: $200,000
Accounting treatment: CAPITALIZE as software asset
Amortization period: 3-5 years (same as base product)
Annual amortization: $40,000-$66,666
Journal Entry:
DR: Capitalized Software - Enhancements $200,000
CR: Cash / Payroll Payable / etc. $200,000
(Amortize over 3-5 years along with base product)
Audit Checkpoint: Document that this is a material feature enhancement, not routine maintenance. Provide:
- Feature specification and requirements
- Customer communication about new functionality
- Project approval and authorization
- Estimation of useful life impact
Scenario 3: Bug Fixes and Maintenance Patches
Situation: Every quarter, your engineering team spends time fixing bugs reported by customers, patching security vulnerabilities, and optimizing performance. Last quarter: $40,000 in engineering time.
GAAP Treatment: EXPENSE immediately
Standard: ASC 350-40-35-2 and ASC 985-20-35-2 (both standards agree)
Rule: Maintenance costs, bug fixes, and performance optimization of existing software are treated as period costs and expensed immediately.
The Distinction:
- Bug Fix: "The system wasn't correctly calculating daily totals" (EXPENSE)
- Enhancement: "The system now shows predictive analytics for task completion" (CAPITALIZE)
Bug fixes restore functionality to the design specification. They don't create new value; they restore intended value.
Common Dispute with Auditors: Some organizations try to capitalize bug fixes for "important" bugs. Auditors will reject this. A critical bug fix is still a bug fix. Period.
Quarterly Bug Fix and Maintenance Costs:
- Security patches: $8,000 → EXPENSED
- Performance optimization: $12,000 → EXPENSED
- Bug fixes (customer reported): $15,000 → EXPENSED
- Infrastructure maintenance updates: $5,000 → EXPENSED
Total quarterly: $40,000 → ALL EXPENSED
Accounting treatment:
DR: Software Maintenance Expense $40,000
CR: Cash / Payroll Payable $40,000
Why This Matters: If you have 10 engineers on your product team and 30% of their time goes to maintenance ($150,000/quarter), that's $600,000/year of expensed costs. This is correct GAAP treatment and must hit your P&L.
Audit Checkpoint: Maintain logs of bug fixes, security patches, and maintenance activities. Auditors may spot check a sample to verify these are truly maintenance, not enhancements capitalized as maintenance.
Scenario 4: Code Refactoring and Technical Debt Reduction
Situation: Your codebase has accumulated technical debt over three years. You dedicate a sprint to refactoring the order processing module, improving code quality and maintainability. Cost: $25,000 in engineering labor.
GAAP Treatment: EXPENSE immediately
Standard: ASC 350-40-35-2
Rule: Refactoring and technical debt reduction don't create new functionality or enhance the asset. They maintain the asset's operability. This is maintenance.
The Logic: Yes, better code improves future productivity and reduces future bugs. But GAAP doesn't capitalize "future benefit" from code quality improvements. You capitalize only when you create new functionality or demonstrably extend useful life.
Contrast to a Legitimate Enhancement:
- Refactoring order processing module: EXPENSE (it works the same, just cleaner code)
- Adding new international payment method to order processing: CAPITALIZE (new functionality)
Technical Debt Reduction:
- Refactoring legacy code: $25,000 → EXPENSED
Accounting:
DR: Software Maintenance Expense $25,000
CR: Payroll Payable $25,000
The Audit Challenge: Auditors may question whether refactoring disguises an enhancement. If the refactored code creates new capabilities or enables new features, that portion might be capitalizable. But pure code quality improvements are maintenance.
Red Flag: If your team says "this refactoring will save us 20% on future development time," auditors will assume it's maintenance (no new functionality) and demand expensing.
Scenario 5: Platform Migration (On-Premise to Cloud)
Situation: You migrate your internal ERP system from on-premise Oracle to cloud-based SAP. The project costs $400,000 and takes 4 months.
GAAP Treatment: MIXED (depends on activity)
Standard: ASC 350-40 (internal-use software)
Analysis: A platform migration involves multiple activities with different treatments:
| Activity | Treatment | Reasoning |
|---|---|---|
| Planning and requirements gathering | EXPENSE | Phase 1 (Preliminary) |
| Data transformation and mapping | CAPITALIZE | Creates new data structures/processes |
| Custom integrations built | CAPITALIZE | Creates new assets you control |
| Vendor migration services | EXPENSE | Service costs, not asset creation |
| Your team testing and validation | EXPENSE | Testing and QA activities |
| New infrastructure setup | CAPITALIZE | Asset creation (IT infrastructure) |
Cost Breakdown:
Migration Project Costs:
Phase 1 (Preliminary - EXPENSED):
- Requirements assessment: $15,000
- Vendor evaluation: $10,000
- Migration planning: $15,000
Subtotal: $40,000 → EXPENSED
Phase 2 (Development - CAPITALIZED):
- Data transformation and ETL development: $80,000
- Custom integration APIs: $70,000
- Reporting queries customized for new system: $60,000
- New cloud infrastructure setup: $50,000
Subtotal: $260,000 → CAPITALIZED
Phase 3 (Post-Implementation - EXPENSED):
- Parallel system testing: $30,000
- Training and documentation: $20,000
- Cutover support: $10,000
- Vendor services: $40,000
Subtotal: $100,000 → EXPENSED
Total Migration Cost: $400,000
Total Capitalized: $260,000
Total Expensed: $140,000
Journal Entries:
During migration (capitalize Phase 2 activities):
DR: Capitalized Software - ERP Implementation $260,000
DR: Software Implementation Expense $140,000
CR: Cash / Accounts Payable $400,000
After migration (place into service):
DR: Software Asset - SAP Cloud ERP $260,000
CR: Construction in Progress $260,000
Annual amortization:
DR: Amortization Expense ($260,000 / 5 years) $52,000
CR: Accumulated Amortization - Software $52,000
Scenario 6: Technical Debt Elimination via Rewrite
Situation: You rewrite a mission-critical fraud detection system from legacy Perl to modern Python, improving performance 300x and enabling new machine learning features. Cost: $180,000 over 5 months.
GAAP Treatment: CAPITALIZED (likely, but with nuance)
Standard: ASC 350-40
The Key Distinction: A rewrite that ONLY improves performance and reliability is maintenance (expense). A rewrite that creates NEW functionality or SIGNIFICANTLY extends useful life may be capitalizable.
Analysis:
- Improving performance 300x: Technical maintenance
- Enabling new ML features: New functionality
- The ML capabilities portion is new and capitalizable
- The performance-only portion is maintenance and expensed
Practical Segregation:
Fraud Detection Rewrite:
Portion for performance optimization: $100,000
(Rewriting in Python, architectural improvements)
Treatment: EXPENSED (maintains operability, doesn't create new value)
Portion for new ML capabilities: $80,000
(Building new fraud prediction models, real-time scoring)
Treatment: CAPITALIZED (new functionality)
Total Project: $180,000
Capitalized: $80,000
Expensed: $100,000
Journal Entry:
DR: Software Maintenance Expense $100,000
DR: Capitalized Software - ML Enhancement $80,000
CR: Cash / Payroll Payable $180,000
Audit Checkpoint: Document the new capabilities enabled by the rewrite. If the rewrite enables ONLY performance improvement, auditors will demand expensing. If it enables new functionality, you have a capitalization case.
Scenario 7: Infrastructure Upgrade (Servers, Databases)
Situation: Your hosting costs are escalating, so you consolidate from 12 servers to 3 enterprise-grade servers, reducing operating costs by 40%. Capital cost: $50,000. Annual maintenance: $10,000.
GAAP Treatment: CAPITALIZE (as Property, Plant & Equipment)
Standard: ASC 360 (Property, Plant & Equipment)
Analysis: Servers and infrastructure are tangible fixed assets, not software. Capitalize them as PP&E, then depreciate over 3-5 years.
Server Upgrade:
- 3 new enterprise servers: $40,000
- Installation, networking, configuration: $10,000
Total: $50,000
Accounting:
DR: Property, Plant & Equipment - Servers $50,000
CR: Cash $50,000
Annual depreciation (5-year useful life):
DR: Depreciation Expense ($50,000 / 5 years) $10,000
CR: Accumulated Depreciation - Servers $10,000
Note: The software running on those servers (your databases, applications) is already capitalized and amortized separately. Don't double-count. The infrastructure (the servers themselves) is PP&E.
Scenario 8: Mobile App Development
Situation: You develop an iOS mobile app to be sold in the App Store to customers for $9.99/user. Development cost: $150,000.
GAAP Treatment: CAPITALIZE (after technological feasibility)
Standard: ASC 985-20 (software to be sold)
Analysis: A mobile app to be sold is a software product. It follows ASC 985-20, just like web-based products.
Mobile App Development:
Phase 1 (Conceptualization):
- Market research, competitive analysis: $10,000 → EXPENSED
- App specification and design: $15,000 → EXPENSED
Transition: Technical feasibility established (design complete, development authorized)
Phase 2 (Development):
- iOS development: $60,000 → CAPITALIZED
- Testing and QA: $25,000 → CAPITALIZED
- App Store submission preparation: $10,000 → CAPITALIZED
Subtotal Phase 2: $95,000 → CAPITALIZED
Phase 3 (Pre-Release):
- Beta testing: $10,000 → EXPENSED
- Marketing materials: $5,000 → EXPENSED
Phase 4 (Post-Release):
- Bug fixes and patches: → EXPENSED
- New features: → CAPITALIZED (enhancements)
Total Capitalized: $95,000
Total Expensed: $40,000+
Amortization: 3-5 year useful life (mobile app technology evolves quickly, so 3 years is common)
Scenario 9: API Development (Internal vs. External)
Situation A (Internal): You build an API to integrate your fraud detection system with your lending platform. Neither is sold externally. Cost: $60,000.
GAAP Treatment: CAPITALIZE
Standard: ASC 350-40
Analysis: You're creating an internal-use software asset (the API) that connects systems. This is capital development, following ASC 350-40 Phase 2 rules.
Situation B (External): You sell API access to third-party developers to connect to your platform. Cost: $60,000.
GAAP Treatment: CAPITALIZE
Standard: ASC 985-20
Analysis: You're developing software to be sold (the API product). This follows ASC 985-20 rules for software products.
Both scenarios capitalize the cost, but under different standards. The key distinction is intent (internal vs. sale), not the activity itself.
Scenario 10: Compliance and Security Updates
Situation: New compliance regulations require encryption changes to your customer data handling. You spend $45,000 upgrading your cryptographic libraries and rewriting data protection code.
GAAP Treatment: EXPENSE immediately
Standard: ASC 350-40-35-2
Rule: Compliance and security updates maintain the software's ability to operate legally and safely. They don't create new functionality or extend useful life. Therefore, they're maintenance costs.
Compliance Upgrade:
- Cryptographic library replacement: $20,000 → EXPENSED
- Code updates for GDPR compliance: $15,000 → EXPENSED
- Security testing and validation: $10,000 → EXPENSED
Total: $45,000 → ALL EXPENSED
Accounting:
DR: Software Compliance and Security Expense $45,000
CR: Payroll Payable / Cash $45,000
Exception: If compliance updates coincidentally enable NEW functionality (e.g., encryption changes enable new analytics capabilities), the new functionality portion may be separable and capitalizable.
Quick-Reference Decision Tree
START: I'm spending money on software/development work
├─ Is it for an external product or software to be sold?
│ ├─ YES
│ │ ├─ Is technological feasibility established? (ASC 985-20)
│ │ │ ├─ YES → CAPITALIZE (Stage 2)
│ │ │ └─ NO → EXPENSE (Stage 1)
│ │ └─ Is it a bug fix or maintenance?
│ │ └─ YES → EXPENSE (post-release)
│ │
│ └─ NO (Internal use only)
│ ├─ Is a project approved and in development?
│ │ └─ YES (Phase 2) → CAPITALIZE
│ │
│ └─ Is it preliminary or post-implementation?
│ ├─ Preliminary → EXPENSE (Phase 1)
│ └─ Post-impl → EXPENSE (Phase 3)
├─ Does it fix bugs or maintain current functionality?
│ └─ YES → EXPENSE (always)
│
├─ Does it create new functionality or significantly enhance?
│ └─ YES → CAPITALIZE (enhancement)
│
└─ Does it improve code quality, performance, or architecture?
└─ Without new functionality → EXPENSE (maintenance)
Common Capitalization Worksheet
Use this table to assess any software-related spending:
| Cost Item | Capitalizable? | GAAP Standard | Key Evidence Needed |
|---|---|---|---|
| Market research | NO | ASC 985-20-25-1 | Document as Stage 1 (conceptual) |
| Architecture design (Phase 2) | YES | ASC 350-40 | Phase transition documentation |
| Developer salaries (Phase 2) | YES | ASC 350-40 | Time tracking, project assignment |
| Vendor license (perpetual) | YES | ASC 350-40 | License agreement, receipt |
| Vendor SaaS subscription | NO* | ASU 2018-15 | Subscription agreement, expensed annually |
| Implementation services | MAYBE | ASU 2018-15 | Configuration vs. service labor analysis |
| Bug fixes | NO | ASC 350-40-35-2 | Issue tickets, classification as fix vs. enhancement |
| New features (Phase 2) | YES | ASC 350-40 | Feature requirements, project tracking |
| Code refactoring | NO | ASC 350-40-35-2 | Document as technical maintenance |
| Infrastructure (servers) | YES | ASC 360 | Asset tag, depreciation schedule |
*Except configuration costs that create capitalizable assets under ASU 2018-15
The Path Forward
Consistent, defensible software capitalization decisions require:
- Clear policies defining which activities fall into which category
- Contemporaneous documentation of phase transitions and work classification
- Detailed cost tracking by activity type, not just total project cost
- Audit readiness with time records, project plans, and authorization documents
Organizations using tools like Glue gain significant advantage. By automatically monitoring code repositories and development activities, Glue creates an ongoing audit trail that identifies phases, classifies work types, and supports capitalization decisions with actual development artifacts—no spreadsheets or reconstructed timesheets required.
Your financial statements depend on getting these scenarios right.
Ready to ensure accurate scenario-based software capitalization? Glue automatically tracks engineering work and categorizes it according to GAAP rules, creating audit-ready documentation for every scenario. Connect with our financial engineering team to see how intelligent work classification transforms your capitalization process.
Related Reading
- Software Capitalization: The Complete Guide for Engineering-Finance Teams
- Capitalizing Software Development Costs: A CFO's Complete Guide
- Capitalizing Software Implementation Costs Under GAAP
- Capitalized Software GAAP: ASC 350-40 vs ASC 985-20 Compliance
- Engineering ROI: How to Measure and Communicate Business Value
- Technical Debt: The Complete Guide for Engineering Leaders