免税事業者からの仕入れ — 経過措置の控除割合
インボイス発行事業者でない相手からの課税仕入れでも、一定割合は控除できます。 この割合が令和8年度税制改正で段階的なものに変わりました。
控除割合と適用期間
| 課税仕入れを行った日 | 控除割合 |
|---|---|
| 2023-10-01 〜 2026-09-30(令和5年10月1日から3年間) | 80% |
| 2026-10-01 〜 2028-09-30(令和8年10月1日から2年間) | 70% |
| 2028-10-01 〜 2030-09-30(令和10年10月1日から2年間) | 50% |
| 2030-10-01 〜 2031-09-30(令和12年10月1日から1年間) | 30% |
| 2031-10-01 〜(令和13年10月1日以降) | 0%(控除不可) |
改正前は「令和8年10月1日から50%」でしたが、改正後は70%・50%・30%と段階を踏み、 終了が令和13年9月30日まで延びています。二次情報には改正前の記載が残っているものが多いので、 実装するときは必ず一次情報で確認してください。
あわせて入った「1億円の控除限度額」
一のインボイス発行事業者以外の者からの課税仕入れの合計額(税込み)が、その年又は事業年度で 1億円(改正前:10億円)を超える場合には、その超えた部分の課税仕入れについて適用できません。
令和8年10月1日以後に開始する課税期間から適用されます。 割合とは別枠の上限で、しかも年間・相手先ごとの累計で決まります。 1枚の請求書だけを見て判定することはできないので、システムでは 「相手先ごとの年間累計」を別に持つ必要があります。
実装での持ち方
割合はコードに直接書かず、期間と割合の表として外に出すことを勧めます。 制度は今後も変わります。テーブルの版(いつ時点の理解か)も一緒に持っておくと、 «この計算はどの改正まで反映されているのか» を後から追えます。
use Foovar\JpInvoice\TransitionalMeasure;
$rate = TransitionalMeasure::rateFor(new DateTimeImmutable('2026-10-01'));
$rate->percent; // 70
$rate->applyTo(10000); // 7000
TransitionalMeasure::SCHEDULE_VERSION; // '2026-08-17'
制度開始前など表の範囲外の日付は、0% を返すのではなく例外にしています。 「控除できない(0%)」と「判定できない」は意味が違うためです。