令和5年は政府が決定した「電子帳簿保存法」および「インボイス制度」が始まる年です。同時にそれは猶予期間の終わりであり、今年この対応を終えなければ、これはペナルティのある法令になります。自分も今この法制度対応の為、非常に切迫した状態にありますが、社内を見回すと正確に理解していない人、過剰に反応してる人と様々で、経理屋もやってた自分からするとザワザワした感じがします。

この法制度対応は何も大規模なソリューションを入れないと出来ないというものでもなく、またそれが必要ということを法制度で謳ってるものでもありません。そこで、中小企業向けに低コストでこの法対応準備が出来ないかな?ということで以下にまとめ、Google Driveでそれを実現する手法を考えます。

順次機能を追加して更新していく予定です。

今回利用するシステム

今回は小規模で開始できるGoogle Driveを利用した方法ですが、後述の共有ドライブを利用した手法となるため、最大で50万ファイルになります。すべてを永年保存という事であれば、Google Cloud Storageを置き場にすることでこの制限はなくなります。

Google Vaultを利用する事を考慮する場合は、アカウントはBusiness Plus以上としています。これについても後述で解説します。

※現在まだ、インボイス請求書発行とマスタ編集機能が未搭載ですが、電帳法対応部分は完成済み。ただし、PDFからのOCR部分は利用する請求書の様式によって調整が必要です。

Google Apps ScriptでCloud Storageにファイルをアップする【GAS】

Google Apps ScriptでVault APIを叩く【GAS】

法令概要とシステム要件

電子帳簿保存法

概要

対応期限:2023年12月31日迄

インボイス制度の話題と合わせて語られる事が多い電子帳簿保存法ですが、これはもともと存在していた法令(1998年7月1日施行)で、元々の目的は電子データで取得した請求書等の税金に係る書類については紙媒体ではなく所定の要件の元にHDD等で保存してもOKだよ、というペーパーレスを目的とした法令でした。つまりまだ任意の状態です。2022年1月に改正法施行なので、現在は猶予期間なのです。

今回話題になってるのはその「法改正」が行われた内容であって、「電子データで取得したものについては、電子データで保存しなさい」という義務化なのです。これまで印刷した紙媒体で全部保存してた所は、紙媒体で保存が許されなくなります。但し元々紙媒体のものについては、紙媒体のままでの保存で当面問題ないとのこと。早とちりして全部電子データに何が何でも保存しなければならないと過剰に反応する必要は無いのです(将来的に紙媒体自体消える可能性がありますが)。

また、この保存に関しては要件がありいくつか満たさなければならず、単純にHDDに保存すれば良いという訳でないという点が「ソリューションが必要」と言われてる理由の1つです。その要件は

  1. 登録・修正・削除の履歴が残る事
  2. 登録情報の検索が行えるようにする事(※1)
  3. またその際にタイムスタンプが必要(※2)
  4. 2022年1月施行時に遡って紙媒体を電子化する場合、所轄の税務署長に適用届出書を提出する必要があります。
  5. 控え(写し)についても同様の保存義務があります。

一方で電子帳簿にすることで以下のメリットがあります

  • 電子帳簿にする(スキャン)ことで、紙媒体の7年保存が不要となり、そのためのスペース確保や保存コストが不要になります(電子データであっても、7年保存の義務はあります)(※3)
  • ペーパーレスを一気に進めてFAX、プリンタの撤廃の足がかりになります。
  • 検索性を持たせることで業務の軽減化や単純化に繋がります。
  • 改ざんや紛失のリスクを低減することが出来ます。

※1:この要件はファイル名、日付、相手方、金額が理路整然と整理されていれば不要になる予定とのこと。

※2:Google WorkspaceはJIIMA認証を受けてるサービスであるため、タイムスタンプの付与に代えて運用が可能です(要件の保存、検索、閲覧、出力ができる為)

※3:法人は7年、個人事業者は5年の保存義務があります。

注意点

施行後電子化した場合について、紙媒体のスキャン後の書類については2022年1月以降のものについては廃棄しても大丈夫とのこと。但し、入力期間を過ぎて電子化した場合や、プリンタの最大出力を超えるサイズの読み取りをした場合は紙媒体原本の保存も必要。電子化していない場合には、当たり前ですが紙媒体による7年保存の義務は当然あります。

なお、この紙媒体のスキャンは以前は非常に多くの要件が設定されていて、電子化の妨げになっていたとのことで、解像度や階調、大きさ、入力者による情報の確認については廃止されています。但しこれは財務諸表に関しては除外です。詳しくはこちらのページがまとまっているので参照してみましょう。スキャナ要件についてはこちらのページが詳しいです。

フリーランスや個人事業主の場合、発行請求書が紙媒体の場合、相手側から取引を断られる可能性もあるため、紙媒体での発行は今後はやめ、後述のインボイス対応も合わせて行うようにしましょう。

古い情報が残っていたり、またその古い情報を元にソリューション展開してる企業があるため、混乱してる原因の1つがこの注意点になります。

また、現場あるあるですが請求日付を後から変えたり、金額を実際の取引額と異なる金額で調整したりなどの行為は「改ざん」に該当する為、電帳法ではペナルティに該当します(こういうこと平然とやってる事務さんがいますが違法です)。

罰則規定

違反に該当する行為を行うと、個人事業者の場合は「青色申告の承認取り消し」、法人の場合は「会社法976条に基づき、100万円以下の過料」という罰則規定があります。規則に則った書類の保存を行っていない、虚偽の記帳や保存などがこれに該当します。

インボイス制度

概要

対応期限:2023年9月30日迄

インボイス制度何かと話題になっていますが、要約すると企業毎にコードを振って、そのコードを元に売り手・買い手の消費税額を正確に計算集計し、適切に「消費税」を納めるという制度。簿記会計で言えば仮払消費税と仮受消費税の計算を全事業者に事実上義務付けするようなものです(但し、OECD加盟国でインボイス制度を導入していない国は日本と米国のみなので、本来は入れるのは筋です)。

故にフリーランスや売上が1000万円未満の免税事業者であればこれまで、納税が免除されていたものが事実上無くなるという事。この事実上というのがポイントで、企業相手に取引をしていた方々はインボイスの番号を持っていない場合(免税事業者のままでいた場合)、相手から取引を断られる可能性が非常に高いということ(相手も相手企業の番号がなければ、その分の消費税額を自身の仮受消費税から相殺出来ない為 - 仕入額控除のこと)。

その為、適格請求書発行事業者として登録する必要があり、請求書に番号を記載、8%および10%のそれぞれの消費税額を記載した請求書を発行する必要性があります。

但し、2026年9月30日を期限に2割特例が有り、これを期に免税事業者⇒適格請求書発行事業者になった者を対象に、納税額を2割にする制度があります(猶予期間といえます)。

請求書に記載するインボイス番号は、T + 法人番号となっており、法人番号は13桁の数値となっており、これはその値をもって国税庁のWeb APIを利用すれば簡単に検索できるようになっています。

罰則規定

違反に該当する行為を行うと、「1年以下の懲役または50万円以下の罰金」となります。取引事実を仮装した書類・偽造、登録番号の貸借、偽りの記載はすべて違法行為であり、処罰の対象となります。努力義務ではないのです。

システム要件

これら電帳法対応およびインボイス制度対応に於いて、Google Drive運用する上での要件としては、とりわけ改ざんや紛失防止と検索性の維持等を鑑みた場合に、以下のような構成を取ります。

  1. 保存先はGoogle Driveの共有ドライブ機能を利用する(故にBusiness Standard以上が必要:1360円/月/1名)。管理者以外は削除も置換も出来ないようにします。
  2. 全員にBusiness Standardのライセンス付与となると高額になるため、専用のテナントを用意して少数のアカウントのみアクセス可能にしておく。
  3. 理路整然と記録する為と検索性の確保の土台はGoogle Spreadsheetを利用する。履歴は元々Driveで過去のすべての履歴が確保されているので別途対応は不要です。
  4. ファイルへのラベリングはGoogle Driveのラベル機能を利用する
  5. インボイス番号から事業者情報をAPI経由で取れるようにGoogle Apps Script等で仕組みを用意する
  6. 50万ファイルの制限が共有ドライブにはあるので保存先は、電帳法対応とインボイスは共有ドライブを分けておくか?Google Cloud Storageを使う仕組みにしておく(今回は前者対応)
  7. できれば年度毎に共有ドライブにフォルダを作成して格納するようにする
  8. 共有ドライブは管理者は管理者権限で、その他のメンバーは「閲覧者」で設定する。コンテンツ管理者権限者はファイルの削除や移動は出来ませんが、編集とゴミ箱行きが出来てしまうのであまり適切ではないです。
  9. GASのスクリプトはウェブアプリでアップローダ等の画面を用意し、実行権限は管理者の権限で動かすようにする。アクセス許可は共有ドライブの権限によります。
  10. 請求書はPDFで保存とし、ファイル名は取引日_取引先名_金額.pdfとする。相手方で自動化まで考えたら自身のインボイス番号もファイル名に入れておくとなお良い。
  11. Google Driveのラベル欄に10.と同様の内容を付与する
  12. 発行インボイス請求書は一括でメール送信できるようにしたい。
  13. 出来れば受け取った請求書をアップロード時にOCR的に自動で読み取る機能を付けたい所
  14. 逆に相手側は簡単にPDFデータを取り出せるようにフォームPDF化し、テキストボックスのプロパティで取り出せるようにしつつ、読み取り専用で発行できるようにもしたい。
  15. 7年を経過したファイルについてはアーカイブして他の共有ドライブに年度単位で保存し、原本は削除する。
  16. プレビュー機能を搭載し、過去の版管理も管理出来るようにする
  17. 管理者のみ差し替えアップロードを可能とする
  18. 発行請求書は読み取り専用の印刷不可の状態で発行できるようにする。
  19. すべての作業は作業ログとして別シートに内容をロギングする

Google Apps ScriptでPDFフォームを操作する【GAS】

図:元々履歴情報は残ってるのです

図:共有ドライブは分けておくのがポイント

もう変わってしまったルール

2024年3月時点ですでにもう、ルール改変が入ったようです・・・・

【速報!】インボイスもうルール変更!電帳法が劇的緩和。ダウンロード保存は不要 など【企業・個人事業主・フリーランス/消費税特例・ETC・銀行手数料/電子取引・義務化/Amazon/わかりやすく】

事前準備

共有ドライブを作成する

Google WorkspaceのBusiness Standardでは共有ドライブが作成でき、権限をコントロールすることでアップロードオンリーや削除不可能といった制御が可能です。管理者は全権を持っていますが、通常の現場の利用者の権限は「閲覧者」としておくことで、投稿と編集のみに制限することが可能です。コンテンツ管理者の場合は、削除(ゴミ箱への移動)は可能ですが、削除や他のドライブ等への移動は出来ません。

投稿のみですが、アプリでUIを設けてアクセス権限を管理者で動かす(削除の機能は設けない)ことで、現場の人が確認するといったことは可能にできるので、そこで投稿内容を閲覧できるようにします。

共有ドライブを作成出来たら、フォルダを1個作成しておきます。これを電帳法対応とインボイス対応の2つ用意しておきます。

また、Google DriveのOCR機能で値を取得するようにしてるので、一時的に保存するフォルダを「マイドライブ」に1つ作成して起きます。OCR結果はGoogle Doumentとしてこのフォルダに格納されます(共有ドライブには作れませんので注意)。

図:投稿者権限で設定してみました。

Picker APIのキーを取得する

アップロードすることでスプレッドシートに記録を取り、受け取った適格請求書発行事業者の番号付きのPDFファイルを保存する仕組みとして、Google Picker APIを利用します。そのために利用するAPIキーが必要になります。予めGCPにプロジェクトを作成しておく必要があります。

Picker APIはGoogle Apps Scriptの為に用意されているライブラリではありませんが、JavaScriptからは利用できます。使う為にはデベロッパーキー(APIキー)が必要となるので、事前準備が必要です。事前準備の手順は以下の通りです。

  1. GCPを開き、サイドバーからAPIとサービスを開きます。
  2. 上部にある「APIとサービスの有効化」をクリック
  3. Picker API」を検索しクリックします。
  4. 有効化をクリックします。
  5. 引き続き、「認証情報を作成」をクリックします。
  6. 認証情報ウィザードが開かれます。使用するAPIでは、Picker APIを選択します。
  7. 必要な認証情報」をクリックすると、APIキーが手に入ります。これで準備完了。コピーしておきましょう。
  8. スクリプトエディタに戻り、OKを押して終了します。

図:Picker APIは活用範囲が広いです。

Google Picker アップローダを作る【GAS】

適格請求書発行事業者公表システムWeb-API機能

適格事業者登録番号(インボイス番号)から、会社名等を取得する為に、国税庁のAPIを利用します。その為にはアプリケーションIDというAPI Keyが必要なので登録が必要です。Google DriveのOCR機能でインボイス番号を取得し、APIで問い合わせ、会社マスタに情報を格納し、Uploadfilesシートの取引先に社名を表示する等に利用します。

  1. こちらのページにアクセスする
  2. メールアドレスを入力して送信する
  3. メアド宛に本登録用のURLが届くのでそれを開く
  4. 法人の場合は法人番号(自分のインボイス番号の数字部分13桁)などを入れる必要がありますが、今回はとりあえず個人利用をクリック
  5. 名前等を入れて規約のリンクをクリック(これをクリックしないと同意のチェックがクリックできない)
  6. 同意するチェックボックスにチェックを入れて送信
  7. 国税庁の申請用Excelファイルをダウンロードして記入する
  8. 8.のファイルおよび利用するシステムの概要をまとめたPDFの2つを添付して、「invoice-web-api@nta.go.jp」まで送信する
  9. 後日アプリケーションIDが送られてくる

自分の場合、8.の後で自分の行ってる事業内容についての問い合わせがあったので、回答したことで取得が出来ましたので、メール申請する際に記載しておくと取得しやすくなるかもしれません。

図:API利用の登録画面

ファイルに付けるラベルを準備

Google Driveのファイルにラベルを付ける機能は2021年6月頃から装備されているのですが、このラベルについては管理者のみが作成可能です。また今回のアプリに於いてはユーザがラベルの付与や編集を出来ないように閲覧のみの権限とする必要があります(勝手に改変できると電帳法の対応要件から外れてしまう為)。

作成するラベルは書類のタイプ、日付、取引金額、取引先名の4つの項目を1つのラベルの塊として作成しておきます。詳細な作成方法は以下のエントリーを参考にAdmin Console上で作っておきましょう。書類のタイプはアップ対応する対象を考慮して作ります。(請求書や納品書、注文書などの書類のタイプでオプションリストを作っておく)。

権限は組織のメンバー全員は「このラベルを表示可能」とし、候補の対象は「共有ドライブ」とします。今回のアプリでは「電帳法対応」という名前のラベルだけを見てるので、ラベル名はそのようにつける必要があります。

  • ラベル名は「電帳法対応」として指定
  • ファイルをコピーする時の動作は「ラベルをコピーしない」を指定
  • 1つ目のフィールドはオプションリストとし、書類のタイプとし、請求書、納品書、発注書を選択項目として追加
  • 2つ目のフィールドは取引日とし、日付ピッカーとする
  • 3つ目のフィールドは取引金額とし、数値入力欄とする
  • 4つ目のフィールドは取引先とし、テキストボックスとする

このラベルをアップロード時に付与して値を自動で入れ込みます。

Google DriveのラベルをGoogle Apps Scriptで操作する方法【GAS】

図:ラベルは管理者のみが作成可能

アプリのセットアップ

初期セットアップ

アプリケーションを利用する為に初期セットアップが必要です。以下の手順で登録してゆきます。

  1. メニューより、「共通設定」⇒初期セットアップを実行します。スプレッドシートのIDがプロパティに格納されます。
  2. メニューより、「共通設定」⇒管理者用設定を開きます。サイドバーが表示されます。
  3. 前述の事前準備で取得した「Picker API Key」を入力して、右上の保存ボタンをクリックして一旦保存します
  4. 再度サイドバーを表示して、取得した国税庁Invoice番号検索のアプリケーションIDを入力
  5. 受取請求書保存場所のボタンをクリックして、保存する共有ドライブの保存場所を指定する
  6. インボイス請求書保存場所のボタンをクリックして、共有ドライブの自身が発行した請求書を保存する場所を指定する。
  7. OCR一時文書置き場をクリックして、一時的にOCR時に利用する保存場所を指定する。
  8. 請求書テンプレをクリックして、冒頭にサンプルで置いてある自身が利用する請求書テンプレートを指定する
  9. ラベル一覧取得をクリックして、Google Workspaceに電帳法対応のラベル等を一括で取得します。
  10. 右上の保存ボタンをクリックして設定を保存します。

図:アプリの各種設定を保存します

ウェブアプリケーションとしてデプロイ

スプレッドシートはあくまでも管理者が使う為だけのもので、ユーザが利用するのはGASで生成したウェブアプリの側を利用します。ウェブアプリケーションをデプロイをします。

  1. スクリプトエディタを開く
  2. 右上のデプロイをクリック
  3. 新しいデプロイをクリック
  4. 種類の選択ではウェブアプリを選択し、「次のユーザとして実行は自分」にしておきます(管理者権限で動作しますが、スプレッドシートを公開する必要はありません)
  5. アクセスできるユーザは、社内公開する必要があるので「ドメイン内組織内全員」としておきます
  6. 末尾がexecで終わるURLが発行される。これがウェブアプリケーションのページとなるので、Google Sitesなどに埋め込みをすると良いでしょう。
  7. 次回以降コードを編集して再デプロイ時はデプロイを管理から同じURLにて、新しいバージョンを指定して発行することが出来ます。

GASのウェブアプリですので、複数アカウントでログインした状態の場合、403エラーで表示されないこともあるので、基本は1プロファイル1アカウントでログインしての運用が必要です。

図:組織内の全員が使えるようにしておきます。

アプリの使い方

電子帳簿アップロード

本アプリケーションのメインの機能の1つ。取引先より送られてきた「請求書等」のPDFファイルをアップロードし、所定の共有ドライブに保存します。主な機能としては

  1. 右上の「新規アップロード」をクリックし、ドラッグアンドドロップするとファイルをアップロードします。
  2. 前述で設定した共有ドライブの電子帳簿ドライブにアップロードします。
  3. スプレッドシートのuploadfileシートに情報を記述します。
  4. Google DriveのOCR機能を利用して請求日付、インボイス番号、取引金額、税額を取得できる場合は取得します。
  5. インボイス番号を元に会社マスタを検索し情報がなければ、「適格請求書発行事業者公表システムWeb-API機能」を利用して会社名情報を取得し会社マスタに追記します。
  6. 対象のファイルに対してドライブのラベル機能を利用して取引内容を記録します
  7. 3.で取得出来なかった内容については、ウェブアプリケーション上から会社名や金額等を入力する事が可能です(インポート後に修正用ダイアログが自動で表示されます)。

Google DriveのOCR機能は上から順番に値を配列として取得していくので、請求日付であれば通常は上のほうにその日付があるハズであるので、1番目の日付を見つけたらyyyy/mm/ddに変換して返すようにしています(和暦も平成と令和を西暦に変換して返します)。

図:アップロードするだけの簡単仕様

アクション

アップロードされているファイルのリストの右端にある「アクション」にはアップしたファイルに対する機能が用意されています。各ボタンをクリックすると以下のような機能が実行されます。

  • 緑の目玉のアイコン:アップロードしたPDFファイルをプレビューします。
  • 赤の鉛筆アイコン:ファイル取り込み後のレコードの情報を書き換えるダイアログが出てきます。アップした各種情報を修正する事が可能です。
  • 青の時計アイコン:アップしたファイルを差し替えるPickerアップローダを表示します。アップすると既存のファイルを差し替えます。対象のファイルに上書きアップロードされます。ラベルなども書き換わるので要注意!!

図:アップロードしたファイル情報の修正

図:PDFプレビュー機能

関連リンク