There is a reason people typically associate the Research and Development Tax Credit with software and technology companies. The R&D Tax Credit actually applies to a wide variety of industries, although technology, clean-rooms and white lab coats often come to mind.
Note: The scope of this article relates to commercial software vendors who license the use of their software to end users. The development of software for a company's own internal use is not covered.
Developing new software and research and development go hand-in-hand. You can’t have the former without the latter. So naturally, there are bound to be expenses that qualify for the R&D Tax Credit if your company is developing or has recently developed new software.
Software development generally happens in seven main phases, and you'll likely find activities that qualify for the R&D Tax Credit in all of them.
Here are the seven phases of the Software Development Lifecycle:
- Requirements & Analysis
- Systems Design
- Development & Coding
- Testing & Integration
- Operations, Maintenance, and Enhancements
The first step is to define the scope of the problem and determine potential solutions. This is where the organization identifies whether or not new software is required to solve a business problem that broadly exists in the market(s) they serve. Next steps in this phase include confirming general requirements, estimating cost, time, resources, and benefits, and estimating the potential return on investment to determine if viable solutions exist.
Here are some typical questions to be answered in the planning phase:
- What is the business problem to be solved?
- What approach should we take to solve the business problem?
- What are the primary capabilities, functions and features?
- What benefits will the users receive?
- What resources are required?
- What are the costs?
- How much time will it take?
- What does the competitive landscape look like?
- Does this give us a unique competitive advantage?
- Will this help prevent competitors from entering the market?
- What’s the size of the market?
- What’s the estimated return on investment?
2. Requirements and Analysis
Once potential solutions are identified, a software company moves on to detailed information/requirements gathering and analysis. This is the time to analyze the needs of the end users to ensure the systems being considered will meet their expectations. The end result of this step is to have confirmed the business needs, determined how those needs will be met, identified who will be responsible for which pieces of the project, and established timelines and budget.
Here are a few activities related to gathering requirements and performing systems analysis that are likely to qualify as R&D:
- Gathering Detailed Information
- Defining Requirements
- Prioritizing Requirements.
- Developing User-Interface (UI) Dialogs
- Defining Functional Requirements
Find more information on these activities and Phase 2 of the SDLC in our blog on Software Requirements and Analysis.Back to top
3. Systems Design
This is where end users will define their detailed business requirements for the proposed system. This should include the necessary specs, functions, features and operational requirements. Considerations include the essential hardware and/or software components, structure (networking/cloud capabilities), processes, and procedures that will allow the system to meet its objectives.
The systems design phase often involves incorporating deliverables from the requirements and analysis phases into a detailed design with enough specificity so the developers can write the code. Here are some qualifying activities involved in the phase:
- Developing logical and physical designs.
- Producing meta-data, data dictionaries and data flow charts.
- Evaluating and deciding on programming languages, databases, hosting environments and security infrastructure.
4. Development and Coding
Work begins in earnest during this step as programmers, network engineers, database developers and others begin executing to create the project deliverables. This phase typically involves translating the requirements and specifications developed to date into code within the required technical environment to ensure the user and business needs are met.
In addition to all the core technical, development / coding related activities, here are a few activities that usually qualify:
- Developing and documenting test and user acceptance criteria
- Iterative process of testing and updating code to achieve the desired result
- Technical, environmental, system and program documentation
- Supervisors' / managers' time involved in leading, directing and coaching the staff performing qualifying activities
A specific example of an activity that does not qualify is development of user/help documentation that may occur during this phase.Back to top
5. Testing and Integration
When Development and Coding is complete – and after the programmers finish their initial testing – a Quality Assurance (QA) professional will follow up with additional tests to check for errors, bugs, interoperability, and to determine if the proposed design meets the documented business goals. Verification and validation will also be performed by the end users to ensure the software’s operational readiness.
Specific activities could include:
- Developing a testing plan, strategy, and process for implementation
- Designing test cases
- Building test cases
- Executing test cases
- Documenting and analyzing results
- Correcting any identified defects
- Repeating the process until all defects are eliminated
When the code has been written, thoroughly tested and signed off by the end users, the process of implementation begins. The programs are then put into production which may be, in itself, a very complex undertaking based on how significant the impact of the new software is on the operation as it relates to data migration, system integration, cut-over processes and procedures, user and operational training, etc.
All activities involved in getting the programs and environment ready for implementation/production use likely qualify for the credit. A few general areas are:
- Environment set-up
- Data conversion
- Code deployment
- Monitoring and maintenance utilities
Activities that typically don’t qualify are:
- Writing user documentation
- User training
7. Operations, Maintenance, and Enhancements
The final iterative and ongoing step improves and fine-tunes the system as desired to enhance performance, add new capabilities, or meet additional user requirements. Depending on the scope of the work, the process may begin again at step one or any of the following steps.
As mentioned, types of activities that usually qualify are enhancements or improvements made over time to meet changing or evolving customer needs. Examples of ongoing activities that would not qualify include:
- Routine post-production support
- On-going technical updates
- Bug fixes
- Cosmetic changes
- Developing user documentation
So, it’s important to be thinking in terms of “enhancements” vs. “maintenance.” Learn more about the Software Maintenance step of the SDLC and how it qualifies for the R&D Tax Credit.
As you can see, every phase of the SDLC involves research and development. It’s also important to note that many of the aforementioned phases include points where your business may have to stop and start over if the solutions identified aren’t working as projected. This could add even more activities that could qualify for the R&D Tax credit.
The Four-Part Test
Once you’ve identified potential qualifying activities, run it through the four-part test to verify. The four parts of the test are:
- Permitted Purpose. This is the activity intended to make or improve either a product or process that results in improved function, performance, reliability, quality or cost efficiency.
- Technical Uncertainty. This is the activity intended to eliminate technical uncertainty when developing or improving a product or process related to methodology, design, techniques, formulas or inventions.
- Process of Experimentation. This is the activity that includes a process of experimentation to eliminate or resolve technical uncertainty. During the process, various alternatives and approaches are evaluated by modeling, simulation, trial and error, prototyping and other methods.
- Technological in Nature. The process of experimentation must rely on the hard sciences (engineering, physics, biology, chemistry, computer science).
Applying for the R&D Tax Credit can be a complex process. Consult with your R&D Tax professional for advice and information regarding the potential tax benefit of the credit.Back to top