All articles
Compliance & Evidence

Using GitHub Commits as R&D Tax Incentive Evidence

Can GitHub commit history support an R&D Tax Incentive claim? What AusIndustry and the ATO accept, what commits can't prove, and how to make it defensible.

Written and reviewed by George Walch, Founder and R&D Tax Expert, Rand Advisory8 min read

Key takeaways

  • GitHub commit history is genuine contemporaneous evidence of when R&D work happened and what changed, but it cannot on its own prove a hypothesis existed or that the outcome was unknown in advance.
  • Neither Division 355 nor AusIndustry mandates a particular tool, so version control is accepted as one of a range of records showing a systematic progression of work.
  • Commits become strong evidence when they reference the hypothesis, the variable being tested, the result observed and the approach abandoned, not just "fix bug".
  • Commit history also carries the ATO side of the claim: every R&D hour must tie to a specific registered activity, and timestamped commits make that apportionment defensible.
  • Retrofitting or rewriting commit history after year end destroys its evidentiary value, as Absolute Vision Technologies [2022] AATA 2319 showed for after-the-fact documents.
On this page

Using GitHub commits as R&D evidence is legitimate: commit history is contemporaneous, attributed, and one of the few records most software teams already produce without being asked. What it cannot do is carry the claim alone.

Commits prove that work happened, when, and by whom. They rarely prove that the outcome was unknown in advance or that a hypothesis was formed before the code was written, and those are the limbs on which claims actually fail.

What commits prove, and what they don't

A commit is a timestamped, attributed record of a change that is difficult to alter without leaving a trace. That makes it excellent evidence of the observation stage of a systematic progression of work, and of the expenditure nexus (who spent time on what). It is weak evidence of the two things AusIndustry scrutinises hardest: that a competent professional could not have known the outcome in advance, and that a hypothesis existed before the experiment.

The test in s 355-25(1) of the Income Tax Assessment Act 1997 requires experimental activities whose outcome cannot be known in advance, determined by a systematic progression that proceeds from hypothesis to experiment, observation and evaluation, and leads to logical conclusions. A repository shows the middle of that arc clearly and the ends barely at all.

Does AusIndustry accept GitHub commits as evidence?

Yes. No tool is mandated by the legislation or by AusIndustry, and the business.gov.au R&D Tax Incentive guidance and the ATO's guidance on keeping records and calculating your notional deductions both describe categories of records rather than named systems.

Version control is accepted for the same reason lab notebooks are: it is created at the time, it is hard to alter innocently, and it is attributable to a person. The requirement is contemporaneity, not format, so records must be made while the R&D is being conducted and kept for at least five years after the claim is made.

In Absolute Vision Technologies [2022] AATA 2319, documents prepared after the fact for an internal review were not accepted as contemporaneous, and there was marked discord between the records and the activities as registered. See our guide to contemporaneous evidence for the full record set.

Mapping commit evidence to the statutory test

The table below shows where repository history is load-bearing under s 355-25(1) and where you need something else.

Element of s 355-25(1)What commits and PRs can showWhat you still need
Outcome unknown in advanceLittle to nothingPrior-art and patent search results, literature review, expert statements, dated before the work started
Purpose of generating new knowledgeWeak signal onlyProject plans, meeting records, expenditure approvals stating the R&D purpose
HypothesisOnly if written into the PR or issueA dated note or experimental plan stating the hypothesis and its basis, before experiments
ExperimentBranch structure, config changes, test harnesses, variables alteredTest protocols specifying what was varied, held constant and measured
ObservationStrong: commit timestamps, CI runs, benchmark output, failed buildsRaw data logs where results live outside the repo
Evaluation and conclusionsPR discussion, revert commits, ADRsAnalysis notes recording negative results and the next hypothesis

The pre-work evidence of a worldwide knowledge gap is the single most common missing piece in software claims.

Commit and branch hygiene for R&D traceability

You do not need a special workflow. You need messages and structures that a reviewer who has never met your team can read two years later.

Write messages that carry the reasoning

  1. Name what was being tested, not only what changed: "test whether batched writes hold p99 under 200ms at 10k concurrent sessions" beats "perf tweak".
  2. Record the result, including failures: "approach rejected, latency degraded above 4k sessions, next attempt uses sharded queue".
  3. Reference the issue or experiment ID so the commit joins a chain rather than sitting alone.
  4. Keep reverts and abandoned branches. Deleted dead ends destroy the evidence that the outcome was genuinely uncertain.

Use branches and PRs as experiment boundaries

Name experimental branches so they map to a registered activity, for example exp/sync-conflict-resolution. Put the hypothesis and the acceptance criteria in the PR description before merging, and let the review thread capture the evaluation.

Never rewrite history for a claim

Git history is not truly immutable, which is exactly why rewriting it for a claim is so damaging. Force-pushed rewrites, squashed histories that erase failed attempts, and bulk message edits after year end are the version-control equivalent of backdating a file note. Rewrites usually leave traces, in reflogs, forks, CI logs and platform event histories, and any inconsistency between those traces and your submitted evidence is exactly what a reviewer will find.

Jira and linked issue trackers

Issue trackers close the gaps commits leave. A ticket can hold the hypothesis, the acceptance criteria, the literature reviewed and the conclusion, all with creation and transition timestamps, and it links to the commits that implemented the work.

That link matters because the tribunal has repeatedly refused to accept asserted process. In GQHC [2024] AATA 409, hypotheses had to be scientific, specific and capable of being validated or invalidated rather than commercial aims, and observation and evaluation had to be evidenced rather than asserted. Maintaining adequate documentation was treated as part of the systematic progression itself.

Separately, the ticket trail is what lets you allocate work across core and supporting activities and show why each allocation is reasonable.

In the AAT's 2023 decision in Active Sports Management, the contemporaneous formation of a hypothesis was described as the essential starting point of the activities. A ticket created before the branch is exactly that artefact.

The expenditure nexus

Commit and ticket history also feeds the ATO side of the claim, because every R&D hour must tie to a specific registered activity through a reasonable apportionment method. Timesheets or equivalent time records remain the primary nexus; commits and tickets are what make the numbers in them credible.

Worked example

Take one engineer on a $160,000 salary with $24,000 of on-costs. Time records supported by commits and tickets show 45% of their year on a registered core activity.

  1. Total salary and on-costs: $160,000 + $24,000 = $184,000.
  2. Apportionment supported by commits and tickets: 45%.
  3. Notional R&D expenditure: $184,000 x 45% = $82,800.

The offset applied to that figure depends on aggregated turnover and the company tax rate: a company under $20M aggregated turnover claims the refundable offset at its company tax rate plus 18.5 percentage points. Our end-to-end guide to the R&D Tax Incentive sets out the rates and thresholds in full.

This is illustrative only. Integrity rules such as the at-risk, conducted-for and clawback provisions can change the outcome, and the offset itself is a matter for the company's tax agent.

What a reviewer will test

The apportionment percentage is the number a reviewer will test, and repository history is how you defend it. Expect questions about how the split between R&D and non-R&D work was derived, and about how core work was separated from supporting work.

In the ATO-cited Tier Toys and Ozone Manufacturing matters, the absence of contemporaneous records meant the taxpayers could not show the expenditure was anything more than normal business expenditure. That is the failure a clean commit-to-activity trail prevents, and it is a recurring theme in ATO reviews and audits.

Common mistakes

  • Treating the whole repository as the claim. A core activity is a knowledge gap, not a repo, a sprint or a team. Most applications land on three to seven core activities.
  • Registering the product, not the experiment. The registration narrative must describe the knowledge gap and the experiment. Commit volume is not an argument.
  • No prior-art trail. Without a dated search or literature review, there is nothing to answer the "why couldn't a competent professional know this" field. Absolute Vision failed partly on exactly this.
  • Backfilling messages before an audit. Retrospective edits invite the same finding as Absolute Vision: records that do not match the activities as registered.
  • Ignoring the excluded categories. Commits on internal administration software can fall foul of the s 355-25(2)(h) exclusion regardless of how difficult the work was. See software eligibility.
  • Counting all committed time as core. Environment setup, tooling and test frameworks are usually supporting activities, grouped into a few broad categories per stream rather than one per ticket.

Turning engineering signals into a registration

The practical problem is not whether commits count. It is that the useful signal sits across thousands of commits, tickets and PRs, and someone has to allocate it to activities and hours before it becomes evidence.

Rand does that mapping directly from GitHub and Jira, allocates hours against each stream, and produces the field-by-field content the AusIndustry registration form requires (sources investigated, why the outcome could not be known, hypothesis, experiment, evaluation, conclusions, new knowledge) with the underlying signals attached.

Your repository is already most of an evidence file. The work is connecting it to a hypothesis that existed first, a knowledge gap you can point to in the literature, and an hour allocation you can defend three years from now.

ShareLinkedIn𝕏X

Frequently asked questions

Are GitHub commits alone enough to prove an R&D claim?
No. Commits are useful contemporaneous evidence of when work happened and what changed, but AusIndustry and the ATO also expect evidence of the hypothesis, the experiment and the evaluation: technical notes, test results, benchmark output or design documents that explain the uncertainty being addressed.
Does AusIndustry specifically require GitHub or version control records?
No specific tool is mandated. AusIndustry accepts a range of contemporaneous records that show a systematic progression of work under s 355-25(1). Version control is commonly used because it timestamps activity automatically, but it must be connected to the underlying technical uncertainty.
Can commit messages alone demonstrate technical uncertainty?
Rarely. A message like "fix bug" shows a change occurred, not why the outcome was uncertain or what was being tested. Messages that name the hypothesis, the variable altered, the result observed or the approach abandoned are far stronger, because they evidence observation and evaluation rather than asserting it.
How far back should GitHub history go to support a claim?
It should cover the full income year claimed, ideally from when the eligible activities began. Records must be contemporaneous with the work and kept for at least five years after the claim is made. Rewriting history or backfilling messages after year end weakens or destroys their evidentiary value.
Should commit evidence be kept separately from the AusIndustry registration?
Yes. The registration describes core and supporting activities at a summary level in fixed fields. Commit history, pull requests and linked issue-tracker records are the underlying substantiation held on file for an ATO or AusIndustry review, and they must match what was registered.
Do commits help with the expenditure side of the claim?
Indirectly. Commits and pull requests evidence which engineer worked on which activity and when, which supports a reasonable apportionment of salary and on-costs between R&D and non-R&D work. The ATO still expects timesheets or equivalent time records as the primary nexus.

Keep reading