研究開発税制の試験研究費を集計 — Claudeで控除額を試算する手順
仕訳明細から試験研究費に当たる行を仕分け、一般試験研究費の税額控除を概算する手順です。Claude Codeに任せる分類と、スクリプトで固定する計算の分担を示します。
研究開発税制(一般試験研究費の額に係る税額控除制度)の控除額は、試験研究費の額に、増減割合などから決まる税額控除割合を掛けて出します。手間がかかるのは計算式より前の工程です。仕訳明細の数千行から、試験研究費に入る行だけを拾う作業になります。この仕分けの下書きをClaude Codeに作らせ、控除額の計算は固定したスクリプトに任せると、検算しやすい試算表ができます。最終的な可否は、税理士と経理が条文と証憑で決める判断です。
試験研究費に入る費用の条件
国税庁のタックスアンサー(No.5442)によると、制度の対象は青色申告書を提出する法人です。事業年度ごとに、試験研究費の額に一定割合を掛けた金額を法人税額から控除できます。
対象になる試験研究費の額は、損金の額に算入される費用のうち、製品の製造や技術の改良、考案、発明に係る試験研究のために要するものです。この試験研究は、新たな知見を得るため、または利用可能な知見の新たな応用を考案するために行うものに限られます。範囲に入る費用は次の3種類です。
- 試験研究に要する原材料費、人件費、経費
- 他の者に委託して試験研究を行う場合に、受託者へ支払う費用
- 技術研究組合法の第9条第1項で賦課される費用
人件費には条件が付いています。専門的知識をもってその試験研究の業務に専ら従事する者に係るものだけが対象です。売上原価などの原価の額は除かれます。他の者から費用に充てるために支払を受ける金額があれば、その分も差し引きます。
新たな役務の開発に係る試験研究(情報解析専門家がソフトウェアで分析し、見つけた法則を使って役務を設計する場合など)も、別の要件つきで対象です。ただし、この記事の仕分けルールでは「製品・技術の試験研究」を中心に扱います。
仕訳明細を仕分ける軸は「費目」と「除外条件」
条文の言い回しから、仕訳1行に付ける区分を決められます。区分は、対象になりうる費目と、除外される理由の2系統に分けます。
| 区分 | 条文上の位置づけ | 経理が見る証憑 |
|---|---|---|
| material | 条文上の位置づけ試験研究の原材料費 | 経理が見る証憑購入伝票、使用先のプロジェクト |
| labor | 条文上の位置づけ専ら従事する者の人件費 | 経理が見る証憑従事者の名簿、工数表 |
| expense | 条文上の位置づけ試験研究に要する経費 | 経理が見る証憑請求書、用途の記録 |
| outsourcing | 条文上の位置づけ委託先へ支払う費用 | 経理が見る証憑委託契約書、納品物 |
| cogs | 条文上の位置づけ売上原価等の原価(除外) | 経理が見る証憑原価計算の配賦表 |
| asset | 条文上の位置づけ固定資産などの取得に要した金額(除外が基本) | 経理が見る証憑固定資産台帳 |
| offset | 条文上の位置づけ他者から受けた支払(控除) | 経理が見る証憑受託契約、入金明細 |
| unclear | 条文上の位置づけ摘要だけでは判断できない | 経理が見る証憑経理が個別に確認 |
asset は、研究開発費として損金経理した金額のうち、棚卸資産や固定資産の取得に要した金額とされるべき費用を指します。ただし、事業の用に供するときに対象の試験研究の用に供する固定資産は、この除外から外れます。この例外の当てはめは状況ごとに変わるので、unclear に回して経理が決める運用が安全です。
摘要が「試験用部材」「外注解析」のような行は、題名だけで区分を絞れます。「消耗品費」「業務委託費」だけの行は、プロジェクトコードや部門まで見ないと区分が決まりません。Claude Codeに期待するのは、決まらない行を unclear に残すことです。
Claude Codeの作業手順
試算までの作業の流れ
- 1
入力を3つ用意する
仕訳明細のCSV(日付、勘定科目、摘要、金額、部門、プロジェクトコード)、従事者の工数表、過去3事業年度の試験研究費と売上金額の表を揃えます。
- 2
区分ルールをファイルにする
条文の読み替えを
rules.mdに書いておきます。毎回プロンプトで説明するより、判断がぶれません。 - 3
Claude Codeに仕訳を分類させる
非対話モードで、仕訳1行ごとに区分と根拠を返させます。決まらない行は
unclearにします。 - 4
経理が unclear と根拠を点検する
分類の結果を、証憑と照らして直します。控除額の計算に進むのは、この点検の後です。
- 5
スクリプトで控除額を試算する
区分ごとの合計を集計し、税額控除割合と上限額を計算します。計算は固定のスクリプトで行い、Claude Codeに暗算させません。
区分ルールをrules.mdに置く
次のような断片を rules.md に置きます。区分名や運用は各社の実情に合わせて変えてください。
# 試験研究費の区分ルール
- material/labor/expense/outsourcing: 試験研究プロジェクト
(コード R で始まるもの)に属する費用のみ
- labor: 工数表に「専従」と記録された者の人件費だけ。兼務者は unclear
- cogs: 製品の原価に配賦される費用(製造部門の費用など)
- offset: 受託研究の入金など、他者から費用に充てるために受けた支払
- 摘要とコードから判断できない行は unclear にする。推測で埋めない
- 根拠は摘要かプロジェクトコードからの引用で示す兼務者を unclear にする理由は、条文が「専ら従事する者」と書いているためです。兼務者の人件費をどう扱うかは、タックスアンサーのこのページに記載がありません。判断は税理士に任せる領域です。
非対話モードで区分案をJSONで受け取る
claude -p は標準入力のデータを読ませられます。--output-format json と --json-schema を組み合わせると、スキーマに沿った出力が structured_output フィールドに入ります。スクリプトから呼ぶときは --bare を付けると、手元のフックやMCPサーバー、CLAUDE.mdを読み込まず、どの端末でも同じ条件で動きます。そのためルールはCLAUDE.mdではなく rules.md に書き、標準入力で渡します(--append-system-prompt-file で渡す方法もあります)。--bare はサブスクリプションのログインを使わないので、環境変数 ANTHROPIC_API_KEY(Claude Consoleで発行)か、--settings の apiKeyHelper が必要です。Pro/Maxのログインで動かすなら --bare を外します。その場合は手元のCLAUDE.md、フック、MCPサーバーも読み込まれます。オプションの詳細はclaude -pオプションの解説にあります。
まず出力の形を schema.json に書きます。
{
"type": "object",
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"row_id": {"type": "string"},
"category": {
"type": "string",
"enum": ["material", "labor", "expense", "outsourcing",
"cogs", "asset", "offset", "unclear"]
},
"evidence": {"type": "string"}
},
"required": ["row_id", "category", "evidence"]
}
}
},
"required": ["rows"]
}実行は次のとおりです。ルールと仕訳を標準入力にまとめて流します。
{ cat rules.md; echo; echo '--- journal.csv ---'; cat journal.csv; } | \
claude --bare -p "rules.md に従い、全仕訳を分類して" \
--output-format json --json-schema "$(cat schema.json)" \
> result.jsonresult.json の structured_output.rows に、仕訳ごとの区分と根拠が入ります。仕訳が数千行あるなら、勘定科目や月ごとにファイルを分けて回すと、失敗時のやり直しが小さく済みます。次のような形で返る想定です(形式の例であり、実際の出力ではありません)。
{"row_id": "J-0412", "category": "material",
"evidence": "摘要「試験用部材 R-2031」、コード R-2031"}控除額の計算はスクリプトに固定する
税額控除割合は、条件分岐の多い式です。令和8年4月1日から令和9年3月31日までに開始する事業年度では、試験研究費の増減割合ごとに次の式が定められています。
税額控除割合の場合分け
増減割合が12%を超える
11.5% + (増減割合 − 12%) × 0.375
0%以上12%以下
11.5% − (12% − 増減割合) × 0.25
0%に満たない
8.5% − 満たない部分の割合 × 8.5 / 30(マイナスは0%)
設立事業年度、または比較試験研究費が0
8.5%
割合は小数点以下3位未満を切り捨て、上限は14%です。試験研究費割合(試験研究費の額 ÷ 平均売上金額)が10%を超えると、控除割増率(上限10%)が加わります。控除額の上限は調整前法人税額の25%で、増減割合が4%を超えるときなどに加算や減算があります。
用語も押さえておきます。比較試験研究費の額は、適用年度開始の日の3年前から前日までに開始した各事業年度の試験研究費の合計を、その事業年度数で割った額です。平均売上金額は、適用年度と、その開始の日の3年前から前日までに開始した各事業年度の売上金額を、事業年度数で割った額です。
この式をClaude Codeに書かせたスクリプトにして、同じ入力から常に同じ結果が出る状態にします。次は、上の式を実装した例です。
import math
def floor3(x):
return math.floor(x * 1000 + 1e-9) / 1000
def credit_rate(rd, past_rd, sales, past_sales):
cmp_rd = sum(past_rd) / len(past_rd)
avg_sales = (sales + sum(past_sales)) / (1 + len(past_sales))
ratio = rd / avg_sales
if cmp_rd == 0:
base, inc = 0.085, None
else:
inc = (rd - cmp_rd) / cmp_rd
if inc > 0.12:
base = 0.115 + (inc - 0.12) * 0.375
elif inc >= 0:
base = 0.115 - (0.12 - inc) * 0.25
else:
base = max(0.0, 0.085 - (-inc) * 0.085 / 0.30)
base = floor3(base)
if ratio > 0.10:
bonus = min(0.10, floor3((ratio - 0.10) * 0.5))
base = floor3(base + base * bonus)
return min(base, 0.14), inc, ratio上限額の計算は、cap_amount(調整前法人税額, 増減割合, 試験研究費割合) のような別関数に分けます。25%の基本枠に、増減割合が4%を超える加算(最大5%)と、試験研究費割合が10%を超える上乗せ(最大10%)を足す形です。ベンチャー企業の上乗せ(調整前法人税額の15%)は別枠なので、該当する法人は引数を足します。
手計算で固定した値と突き合わせる
スクリプトの正しさは、手計算した1件で確かめます。次の設定を使います。
| 項目 | 値 |
|---|---|
| 適用年度の試験研究費 | 値3,000万円 |
| 過去3事業年度の試験研究費 | 値2,400万円、2,500万円、2,600万円 |
| 適用年度の売上金額 | 値10億円 |
| 過去3事業年度の売上金額 | 値8億円、9億円、9億円 |
| 調整前法人税額 | 値2,000万円 |
手計算の筋道は次のとおりです。
- 比較試験研究費の額は、(2,400万 + 2,500万 + 2,600万) ÷ 3 = 2,500万円
- 増減割合は、(3,000万 − 2,500万) ÷ 2,500万 = 20%
- 平均売上金額は、(10億 + 8億 + 9億 + 9億) ÷ 4 = 9億円。試験研究費割合は約3.3%で、10%以下
- 税額控除割合は、11.5% + (20% − 12%) × 0.375 = 14.5%。上限の14%に切り詰められる
- 税額控除限度額は、3,000万円 × 14% = 420万円
- 上限額は、2,000万円 × 25% = 500万円に、増減割合による加算(20% − 4%) × 0.625 = 10%(上限5%なので5%)の100万円を足した600万円
限度額420万円が上限額600万円より小さいため、この例の控除額は420万円です。上のスクリプトに同じ入力を渡して、420万円が出ることを確かめます。ずれたら、計算式のどこかを書き間違えています。
境界も数件確かめます。増減割合が0%ちょうどなら税額控除割合は11.5% − 12% × 0.25 = 8.5% になります。増減割合が−20%なら8.5% − 20% × 8.5 / 30 = 約2.83% で、切り捨てると2.8%です。この2件は、条文の式から手で出せる値なので、テストに入れておくと式の取り違えを拾えます。
申告前に確認する制度の条件
試算の前提として、次の点を確認しておきます。
- 中小企業者かどうか: 一般型を適用する事業年度は、中小企業者向けの技術基盤強化の制度(No.5444)を適用できません。中小企業者は基本的に資本金1億円以下の法人で、中小型は税額控除割合が12%から、上限17%です。どちらが有利かは、同じ試験研究費で両方を試算して比べます
- 国外に委託した試験研究: 国外で行われる委託の試験研究費は、割合を乗じた額が対象です。令和8年4月1日から令和9年3月31日までに開始する事業年度は70%、翌年度に開始する事業年度は60%になります。医薬品等の有効性・安全性を確認する一定の臨床試験の委託は全額が対象です。区分に
outsourcing_abroadを加える手があります - 他制度との重複: 試験研究費を含む減価償却資産について、この制度で税額控除を受けた場合、他の制度による特別償却や税額控除は重複して適用できません
- 手続き: 確定申告書等に、控除対象の試験研究費の額、試験研究費の額、控除を受ける金額を記載し、計算の明細書を添付します
- 通算法人: 適用関係の一部が異なります。通算法人は、この記事の試算をそのまま使わず、専門家に確認してください
会計の研究開発費との違い
自社利用ソフトウェアの制作工数を仕分ける場合は、会計上の研究開発費と資産計上の線引きが論点でした。Claude Codeでソフトウェアの資産計上と工数を仕分ける手順は、会計の区分を扱います。税額控除では、会計で研究開発費として費用処理した金額が、そのまま試験研究費の額になるとは限りません。条文は、人件費を専ら従事する者に限り、売上原価等を除き、他者からの支払を差し引くからです。会計の区分表と、この記事の税務の区分表は、別の列として持つと混ざりません。
工数の集計そのものは、スプレッドシート側で組む方法もあります。士業事務所の工数集計は、Claude for Excelで工数を集める流れを扱っています。
つまずきやすい点
落とし穴
兼務者の人件費を対象に含めてしまう
条文は、人件費について「専ら従事する者に係るもの」と書いています。研究開発部門に所属していても、製造や営業を兼ねている者は、そのまま含められません。工数表に専従かどうかの列を用意し、不明な者は unclear にします。
- 売上原価に入る費用の混入: 試験研究に使った部材でも、製品の原価に配賦された分は対象外です。仕訳の勘定科目が製造原価か販管費かを、区分ルールに入れておきます
- 受託研究の入金の控除漏れ: 費用に充てるために他者から受けた支払は、試験研究費の額から差し引きます。支出の側だけを集計すると、過大になります
- 新規設立や比較年度が0の年: 設立事業年度や比較試験研究費が0の年度は、税額控除割合が8.5%になる分岐に入ります。過去データの欠けた年を空欄のまま渡さないようにします
- 分類結果の鵜呑み: Claude Codeが返す根拠は、摘要やコードからの引用です。引用元に書かれていない事実(その部材が本当に試験研究に使われたか)までは確かめられません。使途の裏づけは、経理が証憑で取ります
まとめ
仕訳の仕分けは、手数のかかる割に条文の言い回しで決まる部分が多く、Claude Codeの下書きが効きます。決まらない行を unclear に残させ、計算をテスト済みのスクリプトに固定する分担にすると、経理が見るべき箇所がはっきりします。申告では、中小型との比較、国外委託の割合、他制度との重複を、税理士と一緒に点検してください。