Ledger – 消費税のあつかい

総額表示の義務化

消費税が導入されたのは1989年です。 32年後の今月(2021年4月)から商品・サービス類の「 総額表示 」が義務化されました。しかしかなり以前から実態としては小売レベルの値段札やレシートは「 内税 」表示が主流です。内税にすれば税負担を意識させずに庶民のお財布から税金を抜くことができますものね。

ところで家計レベルでは消費税額をきちんと計算・捕捉する必要はありません。内税のまま記帳して消費金額に埋め込んでしまうのが普通でしょう。

しかし 消費税以外 の税金は家計でも把握されていることが多いと思います。たとえば所得税や住民税、固定資産税、それから自動車関係の税金、酒税などは通年で合算するとかなりの金額になります。

じつは消費税もこれらの税金とくらべて遜色のない金額が取られています。日々少しずつだからピンとこないだけです。家計でも、できれば簡単かつ正確に消費税として徴収されている金額を把握したいものです。

家計簿アプリや簡易経理システムでは、消費税を取り出してその金額を算出・表示する機能が組み込まれているものがいろいろあるようです。また電卓風な製品にも工夫をこらしたものがあります。

Ledgerをつかえば、それらの製品やアプリにくらべてはるかに簡単に消費税をトラッキングできます。

自動転記+仮想アカウント

ここでは消費税を(固定費と同じように) 自動転記 (automated transaction)+ 仮想アカウント (virtual account)で算出する方法を説明します。

やることはLedgerファイルの冒頭部に次の 4行 を書き足すだけです。

= /^Expenses:Food/
    (Expenses:VAT)                   .07407407407407407407
= /^Expenses/ and not ( /food/ or /租税公課/ )
    (Expenses:VAT)                   .09090909090909090909

これはLedgerの 自動転記 (automated transaction)記法で書かれています。
第1番目のトランザクションは次のような意味になります。

「これ以降のトランザクションにおいて、すべてのExpenses:Foodアカウントは、その支出額に .07407407407407407407 を乗じた金額を(Expenses:VAT)という仮想アカウントの支出として転記しなさい」

.07407407407407407407 という数字にはコモディティ(=通貨記号)がありません。これは0.08/1.08 の値、つまり内税で表示された金額を1.08で割って0.08を掛けた 定数 です。「この定数を元の金額に掛けなさい」という意味になります。

第2番めのトランザクションは、food(税率8%)と租税公課(無税) 以外 の支出には消費税が10%になることをLedgerに教えています(注1)。

サンプルLedgerファイル

日々のトランザクションは普通に「内税」ベースで記帳します。つぎの例( sample.ledger )では「ハックドラッグ」だけが「外税」です。

= /^Expenses:Food/
    (Expenses:VAT)                    .07407407407407407407
= /^Expenses/ and not ( /food/ or /租税公課/ )
    (Expenses:VAT)                   .09090909090909090909
;;
2021/03/08 * カフェ
    ; 店内で食べたのでVAT=10%
    Expenses:外食                                500 JPY
    Liabilities:Visa

2021/03/08 * McDonald's
    ; テイクアウトだったのでVAT=8%
    Expenses:Food                               635 JPY
    Liabilities:Visa

2021/03/08 * ハックドラッグ
    ; 外税レシート
    Expenses:医薬品      (floor ( 2,380 JPY * 1.10 ))
    Expenses:Food       (floor ( 644 JPY * 1.08 ))
    Assets:Cash

2021/03/08 * イトーヨーカドー
    Expenses:Food                        3,199 JPY
    Assets:Cash

(floor ( 2,380 JPY * 1.10 ))floor は小数点以下の切り捨て関数です。

クエリの例

この sample.ledger に対するクエリ例は次の通りです。

<1. 税込みの支出総額を知りたい>
$ ledger bal ^expenses -f sample.ledger
	     8,214 JPY  Expenses
	     2,618 JPY    医薬品
	     4,529 JPY    Food
	       500 JPY    外食
	       567 JPY    VAT
  --------------------
	     8,214 JPY
<2. 消費税額を知りたい>
$ ledger reg vat -f sample.ledger
2021/03/08 カフェ          (Expenses:VAT)         45 JPY       45 JPY
2021/03/08 McDonald's      (Expenses:VAT)         47 JPY       92 JPY
2021/03/08 ハックドラッグ    (Expenses:VAT)        238 JPY      330 JPY
2021/03/08 イトーヨーカドー   (Expenses:VAT)        237 JPY      567 JPY

<3. 税抜きの支出総額を知りたい>
$ ledger bal ^expenses and not vat -f sample.ledger
	     7,647 JPY  Expenses
	     2,618 JPY    医薬品
	     4,529 JPY    Food
	       500 JPY    外食
  --------------------
	     7,647 JPY

上の 例3. では、VATが 仮想アカウント なので、 and not vat の代わりに --real とか --actual とかしても結果は同じです。

このようにLedgerファイルのトップに消費税の定義を書いておくだけで、トランザクションごとにいちいち消費税のエントリを書かなくても、全トランザクションについて仮想アカウントで税の金額を計算してくれる、これはほんとうに強力な機能です。

注意するところ

Ledger — 固定費のトラッキング」でも紹介したように、自動転記+仮想アカウントによる方法には aux-date をrespectしてくれないという不都合があります(注2)。そこまで細かいことを気にせずに使う限りでは、この方法はとても簡単です。

消費税アカウントは仮想アカウントなので、他の経理計算には影響を与えません。とりあえずLedgerファイルの冒頭に 4行 を追加して使ってみると良いと思います。

最後に

Ledgerによる消費税の取り扱いについては、書き溜めた下書きがこの数倍以上あります。話が細かくなりすぎるので、ここでは思いっきり短く要点だけに絞って書きました。もしかしたら絞りすぎたかもしれません。それについては後日のフォローということでご容赦ください。

Footnotes:


  1. みなさんご存知の通り、ガソリン税や酒税やタバコ税は「税に税をかける」悪名高き 二重課税 になっています。しかし今のところ、所得税や住民税には消費税はかかっていません。まだ独立した司法が日本で活きていた時代=2010年には最高裁で「年金型生保に二重課税 所得税は違法 国が逆転敗訴」と二重課税が違法の判決がでましたが、そのうち、この国ではどんなものにも 裁量行政 で課税される日が来てもおかしくないような気がします。😎 ↩︎

  2. どなたか「自動転記+仮想アカウント」でaux-dateを扱う方法をご存知であればぜひ教えて頂きたいと思います。 ↩︎