所得税額控除の計算をClaudeで検算する — 受取利息は全額、配当は按分
法人が受け取る預金利子や配当から引かれた源泉所得税を、法人税から差し引く計算の手順です。全額控除と所有期間按分の分かれ目、原則法と簡便法の式、Claudeに任せる検算を扱います。
法人が預金利子や配当を受け取るとき、支払う側が源泉所得税と復興特別所得税を差し引いて渡します。この差し引かれた額は、法人税から引けます。これが所得税額控除です。利子は原則として全額が対象で、配当などの一部は「元本を持っていた期間に対応する部分」だけが対象です。Claudeに任せられるのは、支払通知の整形と按分の検算まで。控除を受けるかどうかの判断と、申告書への記載は人が行います。
ここで扱うのは法人税です。国税庁のタックスアンサーNo.5760の対象税目は法人税で、個人の確定申告は別の仕組みになります。
控除できる額は3つの段階で決まる
支払通知を眺めて源泉徴収額を足せば終わり、とはなりません。順番に絞り込む形です。
控除額を決める順番
- 1
源泉徴収された額を拾う
対象は、所得税法などの規定で源泉徴収された所得税と復興特別所得税の合計(以下、所得税等の額)です。
- 2
全額か、所有期間の按分かを決める
利子は原則として全額です。配当などは区分によって、元本を所有していた期間に対応する部分だけになります。
- 3
法人税額と比べる
控除する額がその事業年度の法人税額より多いときは、控除しきれない金額が還付されます。
控除を受けるには、確定申告書等に別表6(1)を付けて、控除を受けたい金額と計算の明細を書きます。Claudeが出した数字をそのまま申告書に写すのではなく、別表6(1)に載せる前の下書きとして使う位置づけです。
受取利息は全額、配当は区分で按分が要るか決まる
Claudeに最初に頼みたいのは、各行がどちらに当たるかの仕分けです。按分が必要になるのは、タックスアンサーが次の5つを挙げているものだけです。
| 区分 | 按分 |
|---|---|
| 内国法人から受ける剰余金の配当・利益の配当・剰余金の分配・金銭の分配 | 按分必要 |
| 集団投資信託の収益の分配 | 按分必要 |
| 国外投資信託の配当等 | 按分必要 |
| 国外株式等の配当等 | 按分必要 |
| 一定の短期公社債以外の割引債の償還差益 | 按分必要 |
| 上の5つに当たらないもの | 按分原則として全額 |
預金の利子は5つの列挙に入っていません。そのため、通常は全額が控除の対象と読めます。ただし、これは列挙に当たらないという消去法の読みです。商品ごとの区分は、支払通知や目論見書で確かめてください。
列挙の各項目には、除外される範囲が付いています。1つ目の配当には、特定公社債等を運用する投資信託の受益権と社債的受益権に係るもの、資本剰余金の減少に伴うもの、分割型分割によるもの、株式分配が含まれません。2つ目の集団投資信託からは、合同運用信託、公社債投資信託、公社債等を運用する投資信託(特定社債等を運用する投資信託を除く)が外れます。
落とし穴
割引債の償還差益は、取得者と償還を受ける者が違うことがある
割引債の取得者と償還を受ける者が異なる場合、所得税額控除を受けるのは償還を受ける者です。途中で売買した債券は、誰の控除になるかを先に確かめます。
用語の違いにも気をつけます。No.5760は集団投資信託の例外を、特定社債等を運用する投資信託と書きます。一方、同じ国税庁のNo.5761(分配時の調整外国税の相当額控除)は、特定公社債等を運用する投資信託と書いています。どちらの語が商品に当てはまるかは、Claudeに断定させず、人が目論見書の区分を読んで決める行です。
原則法と簡便法で、控除額はどれだけ変わるか
按分が必要な行は、2つの方法のどちらかで計算します。事業年度ごとに、いずれかを選べます。
按分の2つの計算方法
原則的な方法
所得税等の額に、「分母の期間のうち元本を所有していた月数」を「配当等の計算の基礎となった期間の月数」で割った値を掛けます。
簡便法
期首と期末に持っていた元本の数から割合を出します。区分ごとに、その区分に属するすべての元本へ同じ方法を当てはめます。
簡便法の式は、計算の基礎となった期間が1年以下かどうかで変わります。Aは期間の開始時に所有していた元本の数、Bは終了時に所有していた元本の数です。
| 計算期間 | 簡便法の式 |
|---|---|
| 1年以下 | 簡便法の式所得税等の額 × (A+(B−A)×1/2)÷B |
| 1年を超える | 簡便法の式所得税等の額 × (A+(B−A)×1/12)÷B |
簡便法は、元本を「株式および出資」と「集団投資信託の受益権」に分け、さらに計算期間が1年を超えるものと以下のものに分けます。区分した上で、銘柄ごとに式を当てはめます。
同じ行でも、2つの方法で結果はずれます。手元の例で、所得税等の額が100,000円、計算期間が12か月、所有していた月数が8か月、期首1,000株・期末1,500株の銘柄を見ます。原則法は100,000×8÷12で66,666円(円未満切り捨ての表示)。簡便法は100,000×(1,000+500×1/2)÷1,500で83,333円です。期中に買い増した銘柄では簡便法のほうが大きく出ます。
どちらを選ぶかは、事業年度ごとの申告上の判断です。Claudeには両方の数字を並べさせ、選ぶ作業は人に残します。
落とし穴
期末の元本数が期首より少ない行は、式の外にある
タックスアンサーの式は、期首の数Aと期末の数Bを並べるだけで、期末が期首より少ない(一部を売却した)場合の扱いを説明していません。式をそのまま当てると、割合が1を超える結果になります。この行はClaudeに「要確認」として止めさせ、別表6(1)の記載要領や税理士で確認します。
Claudeに渡す表と、頼み方
支払通知は、金融機関ごとに書式が違います。Claudeに頼むのは、まず1行1銘柄の表への転記です。列は次の7つに絞ると、後の検算が簡単です。
| 列 | 内容 |
|---|---|
| 銘柄 | 内容預金名・株式名・投資信託名 |
| 区分 | 内容利子 / 配当 など(Claudeが案を出し、人が確定) |
| 所得税等の額 | 内容通知にある源泉所得税と復興特別所得税の合計 |
| 計算期間月数 | 内容配当等の計算の基礎となった期間の月数 |
| 所有月数 | 内容その期間のうち元本を所有していた月数 |
| 期首数・期末数 | 内容簡便法で使う、期間の開始時と終了時の元本数 |
PDFや画像の通知を読ませるときは、数字の読み違いが一番のリスクです。源泉徴収額は転記後に通知の原本と1行ずつ見比べます。指示文は、例えば次のようにします。
添付の支払通知を、1行1銘柄のCSVに書き出してください。
列: 銘柄,区分,所得税等の額,計算期間月数,所有月数,期首数,期末数
- 所得税と復興特別所得税が別々に書かれていれば、合計を所得税等の額にする
- 通知に書かれていない値は推測せず、空欄にして「要確認」の列を足す
- 区分は「利子」か「配当」の案を付け、その根拠になった通知の記載を引用する
- 金額は通知の数字のまま。丸めない区分の欄はClaudeの案です。利子と配当の仕分けは、通知の「配当」「利子」の表記で大半が決まりますが、投資信託の分配は種類で扱いが分かれるので、人が最後に確定します。
検算スクリプトで原則法と簡便法を並べる
表ができたら、計算は表計算の数式でも、短いスクリプトでもかまいません。式を人が読めるコードにしておくと、Claudeが出した数字を後から追えます。手順の型は、危険物の指定数量の倍数をClaude Codeで計算し検算する手順と同じで、計算式をコードに固定してから数字を出させます。
次のスクリプトは、利子は全額、配当は原則法と簡便法の両方を出します。期末が期首より少ない行は計算せず「要確認」にします。
import csv, sys
from math import floor
FULL = {"利子"} # 列挙の5つに当たらず、全額が対象
PRORATE = {"配当"} # 所有期間に対応する部分だけが対象
def principle(tax, period, held):
return tax * held / period
def simple(tax, period, a, b):
if b < a: # 期末が期首より少ない行は人に回す
return None
k = 1 / 2 if period <= 12 else 1 / 12
return tax * (a + (b - a) * k) / b
def yen(x):
return "要確認" if x is None else f"{floor(x):,}"
rows = list(csv.DictReader(open(sys.argv[1], encoding="utf-8")))
print("銘柄\t全額\t原則法\t簡便法")
for r in rows:
tax = int(r["所得税等の額"])
if r["区分"] in FULL:
print(f'{r["銘柄"]}\t{tax:,}\t-\t-')
elif r["区分"] in PRORATE:
p = principle(tax, int(r["計算期間月数"]), int(r["所有月数"]))
s = simple(tax, int(r["計算期間月数"]),
int(r["期首数"]), int(r["期末数"]))
print(f'{r["銘柄"]}\t{tax:,}\t{yen(p)}\t{yen(s)}')
else:
print(f'{r["銘柄"]}\t区分「{r["区分"]}」は未定義です')入力のCSVは、通知の数字ではない架空の4行です。
銘柄,区分,所得税等の額,計算期間月数,所有月数,期首数,期末数
A銀行定期預金,利子,15315,,,,
甲社株,配当,100000,12,8,1000,1500
乙投信,配当,30000,6,6,2000,2000
丁投信,配当,20000,18,9,1000,1500python3 -I koujo_check.py shotoku_koujo.csv出力の例です。
銘柄 全額 原則法 簡便法
A銀行定期預金 15,315 - -
甲社株 100,000 66,666 83,333
乙投信 30,000 30,000 30,000
丁投信 20,000 10,000 13,888丁投信は計算期間が18か月なので、簡便法は1/12の式になります。所有9か月の原則法は10,000円、簡便法は13,888円です。乙投信のように期首と期末の数が同じなら、簡便法は全額になります。
端数は、このスクリプトでは円未満を切り捨てて表示しているだけです。No.5760には端数処理の規定が載っていません。実際の申告では、別表6(1)の記載要領と会社の処理に合わせて、スクリプトの floor を直します。
Claudeにスクリプトを書かせるときは、式の符号(Aが期首、Bが期末)と、1年以下・1年超の分岐を、式を見ながら自分の目で確かめてください。式を取り違えると、全行が同じ向きにずれて、行ごとの検算では気づけません。
別表6(1)に載せる前の確認
計算結果を別表6(1)に載せる前に、周辺の取り扱いを3点確かめます。
数字を載せる前の3点
控除を受けるかどうかで損金の扱いが変わる
所得税額控除を受けた所得税等の額は、その事業年度の所得の金額の計算上、損金の額に算入されません。控除を受けなかった場合は、損金の額に算入されます。
控除しきれない分は還付になる
控除する額が法人税額より多い事業年度は、控除しきれない金額が還付されます。試算の最後に、その事業年度の法人税額と比べる行を足します。
集団投資信託の外国税は別の控除
集団投資信託の収益の分配で、外国で課された税に相当する額が源泉所得税から引かれているときは、分配時の調整外国税の相当額控除(No.5761)が別にあります。
3つ目は、Claudeに仕分けさせる表で漏れやすい点です。5760の所得税等の額には分配時の調整外国税の相当額が含まれず、5761で別に計算します。5761が定める所有期間の按分も、対象の切り方が5760と逆です。5760が按分を求めるのは配当等のうち列挙されたもの。5761で按分の対象になるのは、合同運用信託、公社債投資信託、公社債等を運用する投資信託(特定公社債等を運用する投資信託を除く)以外の集団投資信託の分です。表に「外国税の額」の列を足し、5761の計算が別にいることを区別しておきます。
Claudeに任せない部分
次の判断は、数字を出す前に人が決めます。
- 利子か配当か、按分が要る区分かの確定(投資信託は種類で扱いが分かれます)
- 原則法と簡便法のどちらを選ぶか(事業年度ごとの選択)
- 控除を受けるか、受けずに損金算入にするか
- 期末が期首より少ない行の扱い
Claudeの出力は、上の4点を人が決めた後の計算の検算に向いています。同じ型の検算は、インボイス経過措置の仕入税額控除を割合別に集計する手順や、住宅ローン控除をExcelで試算する手順にもあります。どちらも、税の式を人が決め、Claudeには計算と突き合わせを任せる構成です。
最終的に申告書へ載せる数字は、通知の原本と別表6(1)の記載要領に当たり直します。税理士に依頼している場合は、Claudeの下書きと原則法・簡便法の比較表をそのまま渡すと、選択の相談が早く済みます。