Software Development Accounting under GAAP: An Overview
Effective software development accounting enables businesses to accurately identify and present costs incurred throughout the software development lifecycle. These costs are either capitalized as assets or expensed through the P&L statement depending on their nature, the current development phase, and the software’s intended use. Consistent and accurate accounting requires understanding the timing and purpose of each cost. This overview summarizes key cost types and their treatment across development stages for both internal-use software and software developed for sale, lease, or marketing. Relevant accounting guidance is primarily found in FASB Accounting Standards Codification (ASC) 350 for internal-use software and ASC 985 for software developed for sale, though application often relies on management’s professional judgement.
Generally accepted accounting principles (GAAP) include two categories of software development costs that are based on the software’s intended use: software developed for internal use and software developed for sale. Internal-use software supports the business’ operations and does not generate direct revenue. When a business develops software for sale or lease, it does so with the intent and an established plan to market the software for sale to customers. Each category is subject to its own distinct accounting rules, as discussed in the sections below. Once management determines the intended use of the software, it must assess its development costs as the project progresses.
Internal-Use Software
The internal-use software development life cycle under GAAP consists of three phases:
- Preliminary project
- Application development
- Post-implementation/Operation
The Preliminary Project phase involves developing concepts, evaluating alternatives, selecting vendors, and assessing overall feasibility before defining the final solution and beginning development. The Application Development phase involves coding, configuration, testing, and system implementation. Then, once the software is ready for its intended use, the Post-implementation/Operation phase begins, which involves training, maintenance, bug fixes, and updates to minor features. The appropriate accounting treatment for internal-use software development costs changes throughout the progression of these phases, so it is critical to clearly identify when each phase begins and ends.
Costs incurred during the Preliminary Project phase are expensed because the software’s design is not yet defined. During Application Development, direct labor and third-party costs required to build and test the software are capitalized as assets. The capitalization period ends, and the Post-implementation/Operation phase begins, when the software is ready for its intended use, at which point the capitalized costs must then be amortized on a straight-line basis over the software’s estimated useful life. Post-implementation/Operation costs for training, maintenance, and routine updates are expensed as incurred. Consistently applying these criteria and documenting the start and end of each phase is essential for proper accounting treatment.
Software Developed for Sale
While some of the terminology here is different, accounting for the costs of software developed for sale or lease is conceptually very similar to the process described above for internal-use software. The process begins with the pre-technological feasibility phase, which includes planning, design, and early coding and testing activities performed to ensure that the product’s design specifications and performance requirements can be achieved (i.e. establishing technological feasibility). To complete this phase, the business must have competed a detail program design and/or a working prototype model. Costs incurred during this phase are expensed as incurred. Once technical feasibility has been achieved, subsequent development costs can then be capitalized as long as they are incurred before the software is available for general release to customers, at which point the project moves into the post-release phase when costs are again expensed. Post-release costs will often include maintenance, routine updates and customer support. As with internal-use software, once the capitalization period ends for software developed for sale, the capitalized costs are then amortized to expense over the expected useful life of the software.
Software development accounting requires careful assessment of the relevant costs incurred, in addition to when and how the software will be used. By clearly identifying the software’s purpose, tracking its development, and consistently applying capitalization criteria, organizations can produce reliable financial reports that are audit and investor ready.



