同じ明細200本を計算しました。丸める位置と方法を変えるだけで、税額が311,178円から311,348円まで動きます。
差は169円ですが、明細が増えるほど広がります。5000本では254円の差が出ました。
同じ明細を、丸める位置と方法を変えて計算しました。どれも計算としては正しいのに、合計が一致しません。
消費税計算で端数の扱いがどれだけ効くのかを、実際に計算して確かめました。用意したのは明細200本・税率10%です。
単価は端数の出やすい値にしました。税抜の合計は3,112,586円です。ここから税額を出します。
// 明細ごとに丸めてから足す const perLine = lines.reduce((a, l) => a + f(l.price * l.qty * RATE), 0); // 先に足してから丸める const perInvoice = f(sub * RATE);
端数処理の位置 方法 税額 税込の合計 請求書ごととの差 請求書ごと 切り捨て 311,258円 3,423,844円 - 請求書ごと 四捨五入 311,259円 3,423,845円 - 請求書ごと 切り上げ 311,259円 3,423,845円 - 明細ごと 切り捨て 311,178円 3,423,764円 -80円 明細ごと 四捨五入 311,264円 3,423,850円 +5円 明細ごと 切り上げ 311,348円 3,423,934円 +89円
上の表を見てください。税額は311,178円から311,348円まで動きます。同じ明細に対する計算です。
違いは2か所から来ます。明細ごとに丸めるか、足してから丸めるかという位置と、切り捨て・四捨五入・切り上げという方法です。
請求書ごとに丸める場合、方法を変えても差は1円です。1回しか丸めないので、差が積み上がりません。
明細ごとに丸めると200回丸めます。1回あたり1円未満の差が、200本ぶん積み重なります。
明細の本数 税抜の合計 差
10本 99,597円 +2円
50本 772,099円 +2円
200本 2,991,296円 +17円
1000本 14,860,942円 +61円
5000本 74,030,964円 +254円
10本なら2円ですが、5000本では254円になりました。丸める回数が増えるほど、差が積み上がります。
額としては小さく見えます。ところが請求書の合計が1円でも合わないと、経理では止まります。金額の大小の問題ではありません。
同じ明細でも、丸め方の組み合わせで税額が動く。
税率だけでは決まりません。何に対して、どの単位で、どう丸めるかを決める必要があります。
消費税計算は、税率を掛けるだけでは終わりません。決めることが3つあります。
4番目が実務では効きます。自社の計算が正しくても、相手の計算と1円違えば突き合わせが止まります。
1番目については、多くの仕組みで割引を適用したあとの金額に税を掛けます。Stripeの説明も、小計に割引を適用した後に税金を計算するとしています。
同じ説明は、割引は税率自体には影響せず、税額のみが計算されるとしています。率は変わらず、掛ける相手が変わるという整理です。
税率が2つ以上ある請求書では、単位の話がさらに効きます。税率ごとに分けて計算するのが基本の形です。
明細ごとに丸めるか、税率ごとにまとめてから丸めるかで、前の節と同じ種類の差が出ます。混ぜて1回で丸めることはできません。
どの丸め方が正しいかは、制度と契約で決まります。国や時期によって求められる形が違い、取引先との取り決めが優先される場面もあります。この記事で示しているのは、決め方によってどれだけ差が出るかという大きさだけです。実際の判断は、適用される規則と顧問の税理士に確認してください。
確かめ方は単純です。同じ請求書を両方の方式で計算し、差が出るかどうかを見ます。
消費税計算がどう実装されているかは、コードを読むより計算して比べるほうが速いです。
1番目が要点です。単価が100円の倍数だと差が出ません。端数が出ない明細で試しても、何も分かりません。
比べるには内訳が要ります。税額だけが返ってきて、どう計算したか分からない仕組みでは、突き合わせができません。
Stripeの説明も、各取引の税金の内訳が詳細に表示されるとしています。内訳が取れるかどうかは、選ぶときの条件になります。
差が出たら、どちらが間違いかを決める前に、取引先とどちらで合わせるかを決めます。制度上どちらも認められる場合があります。
そのうえで、決めた方式を記録に残してください。あとから差が出たとき、意図した設計なのか事故なのかを切り分けられます。請求の失敗をどう扱うかは督促・リトライの記事で扱います。
端数の出る明細で、両方の方式を計算して突き合わせる。
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る