コンテンツにスキップ

判定ロジック

税抜換算・端数処理・複数商品同時購入・中途入社退職月の日割り。購入時リアルタイム判定の実装要件。

本ページは非課税判定ロジックを、運用・システム実装の観点で整理したものです。数値は法令・通達の記載精度に合わせて記載しています。

  1. 直接支払いの原則

    会社負担額は会社がスマリテに直接支払い、従業員は自己負担分のみ支払う(現物支給性を担保)。

  2. 本人負担50%以上の厳守=端数処理

    端数で本人負担が50%を割らないよう、「会社負担は切り捨て・本人負担は切り上げ」

  3. 税抜判定の原則

    50%判定・月7,500円上限判定は、すべて税抜価格で行う。

  • 商品税抜価格 / 適用税率(8% or 10%)
  • 商品の補助対象区分(食事/飲料/対象外)
  • 当月累積会社負担額(税抜・従業員ごと・月初0時リセット)
  • 月額補助上限(税抜・デフォルト7,500円・按分設定可)
  • 会社負担率(最大50%・デフォルト50%)
  1. 補助対象区分チェック
    • 対象外 — 補助不適用で100%本人負担
    • 要確認 — 補助不適用、または警告表示(運用方針で選択)
  2. 会社負担額・本人負担額の仮算定(端数処理)

    仮・会社負担(税抜)= floor(税抜価格 × 会社負担率) ← 切り捨て

    仮・本人負担(税抜)= 税抜価格 − 仮・会社負担(税抜) ← 差引=切り上げ側

  3. 本人負担率バリデーション

    仮・本人負担(税抜) ÷ 税抜価格 ≥ 0.5 か?

    • false — 設定エラー → 購入ブロック
  4. 月次上限チェック

    当月累積会社負担 + 仮・会社負担 ≤ 上限額 か?

    • 上限内 — 確定。is_tax_exempt = true
    • 上限超過 — 企業設定により分岐(下表
  5. 消費税・最終請求額の確定

    本人負担(税込)= floor(本人負担税抜 × (1+税率))

    会社負担(税込)= floor(会社負担税抜 × (1+税率))

  6. 決済・ログ記録

    確定した金額で決済し、監査用ログを保存します。

税務通信に基づく公式計算手順(月次合算)

Section titled “税務通信に基づく公式計算手順(月次合算)”

各食事の(価額−本人負担)を月で合算 → 税率別(弁当8%/社食10%)に税抜化 → 合算 → 10円未満切捨て → 7,500円判定(税務通信3894-Q12)。

パターン 挙動 非課税
①超過ブロック(推奨デフォルト) 解錠せず決済エラー。「上限到達・自己負担100%に切替を」と通知
②残枠のみ会社負担 残枠分(上限−累積)だけ会社負担、超過分は全額本人 true(残枠分のみ)
③超過分のみ課税 採用不可 — 超過すると会社負担全額が課税。「超過分だけ課税」という運用は成立しない

端数処理の具体例(税抜825円・会社負担率50%)

Section titled “端数処理の具体例(税抜825円・会社負担率50%)”
  • 単純計算:825 × 0.5 = 412.5円
  • 会社負担(税抜)= 412円(切り捨て)
  • 本人負担(税抜)= 413円(差引)
  • 本人負担率 = 413 ÷ 825 = 50.06%(50%以上を確実に満たす)

合計額で50%判定せず、商品ごとに自己負担率と税率(8%/10%)を判定・計算し、その合計を1トランザクションとして記録します(飲料単体の非課税除外や税率誤計算を防ぐため)。

日割り上限 = 月額補助上限 × (月中の在籍日数 ÷ 当月の日数) 円未満切り捨て

不当な給与課税を避ける合理的按分。雇用形態別の按分ルールは就業規則・福利厚生規程で明文化してください。

設定パターン別のシミュレーション例

Section titled “設定パターン別のシミュレーション例”

企業ごとに「月額上限」「雇用形態別の按分」「1日あたりの利用回数上限」を設定できます。同じ計算ルールでも設定次第で結果が変わる例を示します(金額はすべて税抜・会社負担率50%を前提とした説明用の試算です)。

ケース1:標準設定(正社員・月上限7,500円・回数制限なし)

Section titled “ケース1:標準設定(正社員・月上限7,500円・回数制限なし)”

1食700円(税抜)の弁当を毎営業日1回利用、月20営業日の場合。

項目 内容
1食あたり会社負担 700円 × 50% = 350円
月間累計(20日) 350円 × 20日 = 7,000円
判定 上限7,500円以内 → 全額非課税

上限まで500円分の余裕があるため、月途中で単価の高い商品(例:850円の弁当)を数回購入しても超過しにくい設定です。

ケース2:雇用形態別に上限を分ける設定

Section titled “ケース2:雇用形態別に上限を分ける設定”

同じ会社の中で、雇用形態ごとに月額上限を分けて設定する例です(Q&Aの按分目安を前提)。

雇用形態 月額上限(税抜) 1食700円を毎日利用した場合の月間会社負担 上限到達までの日数目安
正社員(フルタイム) 7,500円 350円×20日=7,000円 上限内(約21日で到達)
パート(週4日以上) 5,000円 350円×16日(週4日×4週)=5,600円 約14日で上限到達
パート(週3日以下) 3,000円 350円×12日(週3日×4週)=4,200円 約8〜9日で上限到達

上限に到達した従業員は、以降その月は上限超過時のパターン(①ブロックまたは②残枠のみ会社負担)に従って自動的に切り替わります。上限が低い雇用形態ほど、月の後半で自己負担100%に切り替わるタイミングが早くなります。

ケース3:1日あたりの利用回数上限を設定する場合

Section titled “ケース3:1日あたりの利用回数上限を設定する場合”

「1日1回まで」と「1日2回まで(朝食+昼食など)」を比較した例です。

設定 1日の利用イメージ 判定の考え方
1日1回まで 昼食のみ弁当700円を購入 通常どおり商品単位で判定(会社負担350円)
1日2回まで 朝食(軽食300円)+昼食(弁当700円)を購入 商品ごとに判定し合算(会社負担150円+350円=500円)。月次累計にはこの日の合計500円を加算

回数制限を緩めるほど月次上限への到達が早まるため、「1日2回まで」を許可する場合は月額上限を高めに設定するか、上限超過時のパターンを②(残枠のみ会社負担)にしておくと運用が安定します。

ケース4:中途入社月の日割り計算

Section titled “ケース4:中途入社月の日割り計算”

6月15日入社(6月は30日間)、月額上限7,500円の正社員の場合。

日割り上限 = 7,500円 × (16日 ÷ 30日) = 4,000円(円未満切り捨て)

入社日から月末までの在籍日数16日分(15日〜30日)で按分し、6月の月額上限は4,000円になります。7月以降は通常の7,500円に戻ります。

ケース5:上限到達時の挙動の違い(①ブロック vs ②残枠のみ)

Section titled “ケース5:上限到達時の挙動の違い(①ブロック vs ②残枠のみ)”

月額上限3,000円のパート従業員が、当月すでに2,800円まで会社負担を使っている状態で、750円の弁当を購入しようとした場合。

パターン 会社負担 本人負担 結果
①超過ブロック 0円(購入不可) 決済エラーとなり、自己負担100%での購入に切り替える必要がある
②残枠のみ会社負担 残枠200円(3,000−2,800)まで 750円−200円=550円 その場で購入でき、残枠分は非課税のまま確定

どちらの設定でも、月7,500円(雇用形態別の上限がある場合はその上限)を1円でも超えることはありません。

月額上限ギリギリの税込設計は税率の実態次第で超過し得ます。税抜7,500円に対し余裕を持った税込金額(目安:税込8,000円以下)での運用設計を推奨します。8%と10%が混在する場合は特に注意してください。