Claudeで寄附金の受領証明書を年末にまとめて発行する手順
寄附台帳から受領証明書の差し込み用データを作り、金額・日付の転記ミスを検算するまでの流れです。認定NPO法人の税額控除で受領証に必要な記載事項も押さえます。
年末は、寄附者から受領証明書の問い合わせが集中する時期です。台帳は事務局のExcelにあり、証明書はWordに手で打ち込む。この運用で起きやすいのは、金額の桁違いと受領日の取り違えです。
Claudeに任せられるのは、台帳から差し込み用データを作る作業と、転記ミスを機械的に洗い出す検算です。発行の可否や記載内容の最終確認は人が持ちます。この記事では、その分担でどう組むかを手順にします。
受領証に何が書かれている必要があるか
作業の前に、受領証の記載事項を固めます。ここが曖昧なまま差し込み用データを作ると、全件を作り直すことになります。
寄附金控除を受ける側の確定申告では、寄附した団体から交付を受けた「寄附金の受領証(領収書)」の添付か提示が必要です(国税庁タックスアンサーNo.1150)。電磁的記録を印刷した書面も含まれます。
認定NPO法人等への寄附で税額控除を受ける場合は、さらに細かく定められています(No.1263)。証明する書類には次の内容が入っている必要があります。
認定NPO法人等への寄附で受領証に入れる内容
寄附者の住所・氏名
書類に寄附者の住所と氏名が記載されたものであることが前提です。
寄附金の額
控除額の計算の基になる金額です。
受領した旨と受領年月日
いつ受け取ったかが分かる日付です。
特定非営利活動に関する事業に関連する旨
その寄附が、法人の特定非営利活動に関する事業に関連するものだという記載です。
受領した法人の名称
認定NPO法人等の名称です。
認定NPO法人等への寄附では、寄附者は寄附金控除と税額控除のうち有利なほうを選べます(No.1263)。どちらを選ぶかは寄附者の側で決まるため、団体側は、どちらの申告にも使える内容の受領証を1種類出しておくと運用が一本化できます。
受領年月日が必要という点は、設計に効きます。年末にまとめて1枚で発行する場合も、寄附ごとの日付と金額を明細として持たせておくのが安全です。台帳の列を、この記載事項からさかのぼって決めます。
発行できるかを台帳で先に仕分ける
すべての入金が受領証の対象になるわけではありません。No.1263は、寄附をした人に特別の利益が及ぶと認められるものと、出資に関する業務に充てられることが明らかなもの(令和3年4月1日以降に支出するもの)を除くとしています。返礼品付きの寄附や会費まじりの入金がある団体は、台帳にこの区別の列が要ります。
もう一つの条件が、認定の有効期間です。認定NPO法人等の寄附金は、認定の有効期間内に支払われたものに限って適用されます。有効期間は認定の日から5年、特例認定は3年で、更新の申請は期間満了の6か月前から3か月前までの間です(特例認定に更新はありません)。有効期間は所轄庁が公示する事項に含まれており、認定法人の名簿は内閣府のNPO法人ポータルサイトで確認できます。年をまたいで期限が切れる団体は、期限日以降の入金を別扱いにする必要があります。
台帳に最低限ほしい列は次のとおりです。
| 列名 | 中身 | 使い道 |
|---|---|---|
| 台帳ID | 中身入金1件ごとの一意な番号 | 使い道重複と抜けの検出 |
| 寄附者ID | 中身氏名の代わりに振る番号 | 使い道Claudeに渡す際の匿名化 |
| 受領日 | 中身YYYY-MM-DD | 使い道受領年月日の記載、年の範囲確認 |
| 金額 | 中身円の整数 | 使い道合計の検算 |
| 特別の利益 | 中身有 / 無 | 使い道発行対象の仕分け |
| 出資 | 中身有 / 無 | 使い道発行対象の仕分け |
氏名と住所をClaudeに渡さずに進める
寄附者の氏名と住所は個人情報です。差し込み用データをClaudeに作らせる段階では、氏名と住所の列を渡す必要がありません。上の表のとおり、台帳側に「寄附者ID」を振り、氏名と住所は別ファイルに残します。
Claudeが作るのは、寄附者IDごとの件数・合計額・明細を持つ表です。氏名と住所は、できあがった表を手元のWordやExcelの差し込み印刷でIDに結び付けて入れます。名簿を預ける範囲を絞れば、Claudeに渡るデータの機微も下がります。
台帳から差し込み用データを作る
Claudeのファイル作成機能は、CSVのアップロードとコード実行によるデータ処理、結果のファイルのダウンロードに対応しています。Free・Pro・Maxでは設定の「機能(Capabilities)」で「コード実行とファイル作成」をオンにして使います。
差し込み用データができるまで
- 1
台帳をCSVで書き出す
氏名と住所の列を除き、上の表の6列だけを残します。
- 2
Claudeに依頼する
CSVを添付し、下の依頼文で変換と検算を指示します。
- 3
結果を人が確認する
要確認の一覧と合計額を、元の台帳の集計と突き合わせます。
- 4
差し込み印刷で発行する
寄附者IDで氏名・住所の別ファイルと結び付け、受領証を作ります。
依頼文の例です。計算をClaudeの暗算に任せず、コードで実行させるのが要点です。
添付のledger.csvは2026年分の寄附台帳です。次を行ってください。
1. 計算はすべてPythonで実行し、暗算で答えないこと
2. 特別の利益と出資がどちらも「無」の行だけを対象にする
3. 受領日が2026年でない行、金額が0以下の行、台帳IDが重複する行は
対象から外し、理由を付けて一覧にする
4. 寄附者IDごとに件数・合計額・明細(受領日と金額)を持つ
merge.csvを作る
5. 最後に、対象行の件数と合計額を表示する転記ミスを検算するスクリプト
同じ処理は、手元のPythonでも動かせます。Claudeに書かせたコードを人が読めるようにしておくと、年が変わっても再利用できます。次は、依頼文の条件を満たす最小の形です。
import csv
from collections import defaultdict
from datetime import date
YEAR = 2026
with open("ledger.csv", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
errors, per_donor, seen = [], defaultdict(list), set()
for r in rows:
rid = r["台帳ID"]
amount = int(r["金額"])
d = date.fromisoformat(r["受領日"])
if rid in seen:
errors.append(f"{rid}: 台帳IDが重複")
continue
seen.add(rid)
if amount <= 0:
errors.append(f"{rid}: 金額が0以下")
continue
if d.year != YEAR:
errors.append(f"{rid}: 受領日が{YEAR}年ではない")
continue
if r["特別の利益"] != "無" or r["出資"] != "無":
errors.append(f"{rid}: 特別の利益または出資が「無」でない")
continue
per_donor[r["寄附者ID"]].append((rid, d, amount))
with open("merge.csv", "w", encoding="utf-8", newline="") as f:
w = csv.writer(f)
w.writerow(["寄附者ID", "件数", "合計額", "明細"])
for donor, items in sorted(per_donor.items()):
items.sort(key=lambda x: x[1])
detail = " / ".join(
f"{d.isoformat()} {a:,}円" for _, d, a in items)
w.writerow([donor, len(items), sum(a for *_, a in items), detail])
total = sum(a for v in per_donor.values() for *_, a in v)
print(f"対象行 {sum(len(v) for v in per_donor.values())} 件 / 合計 {total:,} 円")
print("要確認:", *errors, sep="\n- ") if errors else print("要確認なし")python3 check.py次の5行の台帳で試すと、出力は次のようになります(動作を確かめるための架空の例です)。
台帳ID,寄附者ID,受領日,金額,特別の利益,出資
L001,D01,2026-03-10,10000,無,無
L002,D01,2026-11-02,5000,無,無
L003,D02,2026-12-01,3000,有,無
L004,D03,2025-12-30,2000,無,無
L001,D01,2026-03-10,10000,無,無対象行 2 件 / 合計 15,000 円
要確認:
- L003: 特別の利益または出資が「無」でない
- L004: 受領日が2026年ではない
- L001: 台帳IDが重複D01には2件・15,000円の明細が作られ、L003とL004、末尾に重複して現れたL001は発行対象に入らず要確認に回ります。重複した行は最初の1行だけが残るので、二重に計上されません。要確認の行は、発行しないと決めるか、台帳側を直して再実行するかを人が選びます。
合計が合っているかをどう確かめるか
スクリプトが出す合計は、「対象にした行だけ」の合計です。台帳全体の合計から要確認の行の合計を引いた額と一致するかを、最後に別経路で確かめます。
合計が合わないときの切り分け
- Q要確認の行を含めた全行の合計が、会計ソフトの寄附金収入と一致するか?答えが一致しない答えがはい
台帳への入力漏れか、入金日のずれです。会計側の仕訳日と台帳の受領日を並べて突き合わせます。
- Q全行の合計から要確認の行を引いた額が、対象行の合計と一致するか?答えが一致しない答えがはい
スクリプトの条件が台帳の列の表記と合っていません。「有」「無」の表記ゆれ(全角・空白)を疑います。
対象行の合計が確定
寄附者IDごとの合計額の総和も、対象行の合計と一致するか確かめて、発行に進みます。
Claudeに「合っていますか」と聞くだけでは検算になりません。コードの出力値と、会計ソフトの集計という二つの独立した数字を、人が並べて見るのが検算です。
年末にまとめて発行するときの落とし穴
落とし穴
受領日を発行日で置き換えてしまう
年末に一括発行すると、証明書の日付欄に発行日を入れたくなります。No.1263が求めるのは「受領年月日」で、寄附を受け取った日です。明細の列に受領日を持たせ、発行日は別の欄に分けます。
落とし穴
認定の有効期間が切れた後の入金を含める
認定の有効期間内に支払われた寄附金が対象です。有効期間が年の途中で切れる団体は、その日付以降の入金を台帳の別列で区別し、スクリプトにも条件として加えます。
落とし穴
同じ人の寄附者IDが分かれる
表記ゆれで同じ人に複数のIDが振られると、合計額が分散し、1人あたりの金額が小さい受領証が出ます。IDの付番は、台帳の入力時点で名寄せしておきます。
Claudeが担う範囲と、人が持つ範囲
差し込み用データの生成、条件に合わない行の抽出、集計は、コード実行の得意な領域です。一方で、返礼品が寄附者への特別の利益に当たるかの判断や、その寄附が特定非営利活動に関する事業に関連するかどうかの確認は、台帳の「有 / 無」を決める段階で人が済ませておく項目です。Claudeは決められた列の値を機械的に拾うだけで、判断そのものは担いません。
寄附者の側から見た年末調整や確定申告の書類づくりについては、Claudeで確定申告・年末調整の下書きを作るときの注意点に整理があります。記入漏れの点検は年末調整の記入漏れをClaudeで点検する方法が詳しい内容です。寄付データの読み取りがGivebutterにある団体は、ClaudeとGivebutterの連携で台帳のCSVを作る手間を減らせます。
まとめ
受領証の発行で手間がかかるのは、文面を作る作業よりも、台帳の数字が正しいかの確認です。台帳に受領日・特別の利益・出資の列を持たせ、氏名と住所を除いたCSVからコードで差し込み用データと要確認の一覧を作る。合計は、スクリプトの出力と会計ソフトの集計を人が並べて確かめる。この流れなら、Claudeを使っても責任の所在が崩れません。