• #法人税
  • #e-Tax
  • #XTX
  • #ロードマップ
  • #実装計画
開発アクティブ

法人税XTX生成エンジン 開発ロードマップ

背景

税理士事務所の業務において、会計帳簿作成よりも電子申告データ作成が最大のボトルネックであることが判明。

  • 会計ソフトからの出力 → 手入力で申告書作成 → e-Tax送信
  • この「手入力」部分を自動化することで大幅な効率化が可能

XTX形式調査 および 技術仕様調査 の結果、XTX生成までは実装可能と判断。


ゴール

会計データ → [XTX生成エンジン] → XTXファイル → e-Taxソフトで署名・送信

電子署名・直接送信はe-Taxソフトに委譲し、XTX生成に集中する。


Phase 1: 基盤構築

1.1 XSDスキーマ解析ツール

目的: 国税庁のXSDファイルからTypeScript型定義を自動生成

成果物:

  • XSDパーサー(TypeScript)
  • 型定義生成スクリプト
  • 生成された型定義ファイル(types/etax/hojin.ts等)

対象スキーマ:

スキーマ説明ファイル数
HOA110別表1(各事業年度の所得)14バージョン
HOA140別表4(所得金額計算)複数
HOA150別表5(利益積立金等)複数
General共通型定義1

1.2 入力データ構造設計

目的: 会計ソフトからの入力を受け付ける統一的なデータ構造

interface HoujinzeiInput {
  // 基本情報
  company: {
    name: string;
    nameKana: string;
    address: string;
    representative: string;
    fiscalYearStart: Date;
    fiscalYearEnd: Date;
    capital: number;
    taxOfficeCode: string;
  };

  // 決算データ
  financials: {
    revenue: number;           // 売上高
    costOfSales: number;       // 売上原価
    grossProfit: number;       // 売上総利益
    sgaExpenses: number;       // 販管費
    operatingIncome: number;   // 営業利益
    ordinaryIncome: number;    // 経常利益
    netIncome: number;         // 当期純利益
  };

  // 税務調整項目
  taxAdjustments: TaxAdjustment[];

  // 前期データ(繰越欠損金等)
  previousYear?: PreviousYearData;
}

Phase 2: 計算エンジン

2.1 別表4 - 所得金額の計算

入力: 決算書の当期純利益 + 税務調整項目 出力: 課税所得金額

計算ロジック:

当期純利益
+ 加算項目(損金不算入)
  - 交際費等の損金不算入額
  - 役員給与の損金不算入額
  - 減価償却超過額
  - 引当金繰入超過額
  - ...
- 減算項目(益金不算入)
  - 受取配当等の益金不算入額
  - ...
= 所得金額(または欠損金額)

2.2 別表5(1) - 利益積立金額の計算

入力: 前期末利益積立金 + 当期の増減 出力: 期末利益積立金額

2.3 別表5(2) - 租税公課の納付状況

入力: 法人税・住民税・事業税の納付データ 出力: 租税公課明細

2.4 別表1 - 法人税額の計算

入力: 別表4の所得金額 出力: 納付すべき法人税額

計算ロジック:

所得金額 × 税率 = 法人税額
- 税額控除
- 中間納付額
= 差引確定法人税額

2.5 別表間の連動

別表4 → 所得金額 → 別表1(1)欄
別表5(1) → 利益積立金期末残高 → 別表4検算
別表5(2) → 租税公課 → 別表4加減算
別表1 → 確定法人税額 → 別表5(2)

Phase 3: XTX出力

3.1 XML生成モジュール

入力: 計算済みの各別表データ 出力: e-Taxソフトで読み込み可能なXTXファイル

function generateXTX(data: {
  beppyo1: Beppyo1Data;
  beppyo4: Beppyo4Data;
  beppyo5_1: Beppyo5_1Data;
  beppyo5_2: Beppyo5_2Data;
}): string {
  // XMLBuilder使用
  // スキーマバリデーション
  // UTF-8エンコーディング
  return xtxContent;
}

3.2 バリデーション

  • XSDスキーマによる構造検証
  • 必須項目チェック
  • 計算整合性チェック(別表間の連動確認)

3.3 e-Taxソフト連携テスト

  1. 生成したXTXをe-Taxソフトで読み込み
  2. エラーがないことを確認
  3. 表示内容が正しいことを確認

成功基準

Phase 1完了基準

  • XSDから型定義が自動生成できる
  • 入力データ構造が確定している
  • サンプルデータで型チェックが通る

Phase 2完了基準

  • 別表4の計算が正しく動作する
  • 別表1の計算が正しく動作する
  • 別表間の連動が正しく動作する
  • 単体テストが全てパスする

Phase 3完了基準

  • XTXファイルが生成できる
  • e-Taxソフトでエラーなく読み込める
  • 3件以上の実データでテスト完了

技術スタック

用途技術
言語TypeScript
XMLパースfast-xml-parser
XML生成fast-xml-parser (XMLBuilder)
スキーマ検証libxmljs2 または xsd-schema-validator
テストVitest
型生成自作スクリプト(XSD → TypeScript)

リスクと対策

リスク影響対策
スキーマの年次更新毎年メンテナンス必要型生成を自動化し、更新作業を最小化
計算ロジックの誤り税額が間違う実際の申告データと突合テスト
e-Taxソフトとの互換性読み込みエラー早期に実機テスト実施
eLTAX未対応地方税は手動Phase 4で対応検討

関連ドキュメント


次のアクション

  1. 今すぐ: Phase 1.1 XSDパーサーの実装開始
  2. その後: 別表4の計算ロジックをTypeScriptで実装
  3. 検証: サンプルデータで計算結果を検証