What is R&D capitalization?
Capitalization means recording a cost as an asset on the balance sheet and deducting (amortizing) it over several years, instead of expensing the full amount in the year it was incurred. For software companies, the question of whether engineering work must be capitalized or can be expensed shows up in two separate rulebooks — tax law and accounting standards (GAAP) — and the answer in both cases depends on what kind of work your engineers actually did.Why classification is the hard part
Whether for the R&D credit, Section 174 tracking, or GAAP capitalization, the common bottleneck is evidence: auditors consistently reject flat “magic percentages” (for example, capitalizing 70% of all engineering payroll with no support). Defensible approaches tie the determination to the actual work items — tickets, PRs, and commits — classified by what the work really was. That artifact-level audit trail is what this report produces automatically.How Weave classifies your work
Weave uses an AI agent to classify every merged PR as R&D or Non-R&D against the qualifying criteria of your configured tax jurisdiction:
Each classification records a confidence score and a written reasoning, giving you a PR-level
audit trail. Work involving technological uncertainty and experimentation tends to qualify;
routine bug fixes, UI polish, documentation, and standard CRUD work tends not to. When in doubt,
the classifier is deliberately conservative. You can sharpen results for your organization by
adding custom qualifying and non-qualifying criteria in settings.
What the report shows
The report lives at Reports → R&D Capitalization and supports month, quarter (default), and year granularities. Data is shown for completed periods only.PR classification tab
- Executive summary — your Organization R&D percentage (weighted by code output) and Estimated R&D wages for the period, plus a per-employee table: Total PRs, R&D PRs, R&D %, Period salary, and Est. R&D wages. Authors who aren’t paid in the jurisdiction’s currency are listed separately under Excluded from R&D analysis with the reason.
- PR classifications — the audit trail: every PR with its R&D / Non-R&D badge, confidence, code output, and the classifier’s reasoning.
Project breakdown tabs
If you configure project breakdown fields, each one gets its own tab showing code output and PR count by category — as an overview pie chart and table, and for Jira custom fields, over-time and by-team charts. PRs without a category appear as Uncategorized, and you can drill down from any chart to the underlying PRs. The open tab is saved in the page URL, so you can share a link that opens a specific breakdown directly.How Jira custom field categories are assigned
A Jira custom field breakdown (for example, a work type field) assigns each PR a category in three steps:- PR to issue. Weave links the PR to Jira issues by issue key, as described in linking tasks to PRs. PRs that aren’t linked to a Jira issue aren’t included in the breakdown.
- Issue to epic. Weave finds the issue’s epic. A sub-task without its own epic uses its parent issue’s epic.
- Category lookup. Weave reads your configured custom field in this order and uses the first
value it finds:
- The epic’s value
- The value on the epic’s parent, then on that parent’s parent (for example, an initiative)
- Your fallback rules, if configured (labels first, then issue types)
- The issue’s own value
Weave syncs Jira data roughly every 3 hours, and each sync only picks up issues and epics that
changed in Jira since the last sync. Renaming an option in the Jira field’s configuration doesn’t
mark issues as changed, so Weave checks for renamed options separately about once a day. After a
rename, the old option name can show for up to a day.
How estimated R&D wages are calculated
For each included author in a period:- R&D % = the author’s code output on R&D-classified PRs ÷ their total code output. Weights by output rather than PR count, so large qualifying projects count for more than one-line fixes.
- Period salary comes from your HR data when available; otherwise it falls back to your organization’s hourly rate.
- Est. R&D wages = period salary × R&D %.
Setting it up
1
Enable the add-on
R&D capitalization is a paid add-on. If you don’t have it yet, you can subscribe directly from
the report page — it shows pricing and a checkout flow, whether or not you already have a base
Weave subscription.
2
Choose your tax jurisdiction
Go to Organization settings → R&D capitalization and pick your jurisdiction under
Classification settings. Optionally add custom qualifying or non-qualifying criteria.
3
Connect salary data
Connect HR data for per-person salaries, or set an organization hourly
rate as a fallback.
4
Add project breakdowns (optional)
Under Project breakdown fields, add a Project name breakdown or a Jira custom
field breakdown, with optional fallback rules based on labels or issue types.
