【経理】適格請求書発行事業者公表システムWeb-API機能を使う!

経理

Web-APIで登録番号のチェックが楽になる

国税庁のWeb-APIを使うことで例えばエクセルで次のようなことができます。
適格請求書invoice001.jpg
1列目に登録番号を入力しておいて、プログラム(後述します)を実行するとB列以降にデータが入力されます。
適格請求書invoice002.jpg
試しに7行目に「T0000000000000」という存在しない番号を入力しています。
F列以降のデータが入力されていない、つまり国税庁のデータベースに登録されていないことがわかります。
適格請求書invoice003.jpg
このように国税庁のWeb-APIを利用することで、会社のデータベースに登録した登録番号の一覧が現時点において有効であるかどうかを瞬時に確認することができます。

適格請求書発行事業者登録番号の管理

令和5年10月1日以後、消費税の適格請求書保存方式(インボイス制度)が開始されます。

仕入先の登録番号を基幹システムの仕入先マスターなどに登録して運営していくことになると思います。
ここで問題となるのは、一度登録した登録番号が将来有効でなくなる可能性がある点です。
適格請求書発行事業者が登録をやめてしまう可能性はゼロではありません。

すると、仕入先マスターに登録している登録番号が有効なのかどうかを定期的にチェックする仕組みが必要となります。

何百、何千とある仕入先を1つ1つ手作業で調べるのは現実的ではありません。
そこで、国税庁のWeb-APIを使って自動かつ短時間にチェックできる仕組みを用意します。

Web-APIとは何か?

API(Application Programming Interface:アプリケーションプログラミングインタフェース)とは複数のソフトウェアをつないで情報のやり取りを行う仕組みを指します。

インターフェースとは「接点」という意味で、あるモノとあるモノをつなぐ役割を担ったものです。マウスやキーボードもPCと人間をつなぐインターフェース(接点)です。

Web-APIとはインターネットを介してソフトウェア同士がつながるための接点を意味します。
イメージとしては多分こんな感じ。

適格請求書invoice004.jpg

システム門外漢の私の勝手なイメージではAPIというのは片言の日本語を話せる通訳者。
なんの言語を話しているのか不明な人とコミュニケーションをとるために介在してくれるのが通訳者。この人がインターフェース(接点)。

しかし片言なので「決まった言い回し」「決まった質問」しか理解してくれません。

適格請求書

ご出身はどちらですか?

適格請求書

・・・・・・?

えっと、好きな食べ物はなんですか?

letxslgetz;oblkajnselboisea?

llaeiga

カレー。

そうですか。

それでは、好きなスポーツはなんですか?

gelsielopz;na;eokbaakljfkaw?

lesgii;aeaet

スモーレスリング。

ご職業は?

・・・・・・・・・。

インコさんを介してトラさんに質問できるのは「好きな〇〇はなんですか?」という形だけ。
聞き出せるのは「好きな〇〇」だけなのです。
他にもっとたくさんの情報を持っているはずですが、インターフェースであるインコさんによって聞き出せる情報が制限されているのです。

自分のソフトウェアと他社のソフトウェアをつないだとしても、APIに定められた情報しか得ることはできません。
APIを公開している会社が公開していい情報だけをAPIを介して得られるようにしているわけです。

国税庁のWeb-APIを使う

身近なアプリとしてEXCELを使って国税庁のWeb-APIを介してデータを取得してみましょう。

EXCELにはVBA(Visual Basic for Application)というMicrosoft Officeの拡張機能があり、簡易なプログラムを書くことによって様々な処理を行わせることができます。

今回はWeb-APIに接続してデータを取得してもらいます。
まず、EXCELを新規で開きます。

次いで、メニューバーの「表示」→「マクロ」をクリックします。

するとマクロの新規作成や編集を選択する画面が表示されます。


今回は「WebAPI」と入力して「作成」ボタンをクリックします。


するとVBAの入力画面が表示されます。
これでプログラムを書く準備が整いました。

ただ、今回はネットワークを介してデータのやり取りをするため、少し環境を拡張してあげる必要があります。


「ツール」→「参照設定(R)」をクリックします。


下の方にスクロールして「Microsoft XML, v6.0」にチェックを付けて「OK」をクリックします。
以上で準備完了です。

次のプログラムを書いて保存すれば、A列に記入した登録番号の存在有無を国税庁のWeb-APIに確認することができます。

Sub WebAPI()

Dim data, data_str As Variant
Dim i, j As Integer
Dim LASTROW As Integer
Dim https As MSXML2.XMLHTTP60

Set https = New MSXML2.XMLHTTP60
LASTROW = Cells(1, 1).End(xlDown).Row

For i = 2 To LASTROW
    With https
        Call .Open("GET", "https://web-api.invoice-kohyo.nta.go.jp/1/num?id=ユーザーID&number=" & Cells(i, 1) & "&type=01&history=0")
        Call .send
        Do
            If .ReadyState = 4 Then
                Exit Do
            End If
            DoEvents
        Loop
        
        'JSONを一行で出力
        data_str = Replace(.responseText, vbLf, ",")
        data = ""
        data = Split(data_str, ",")
        
        For j = 0 To UBound(data)
            Cells(i, j + 2) = data(j)
        Next

    End With
Next

Set https = Nothing
End Sub

再びマクロを表示して、先ほど作成したWebAPIを選択して「実行」ボタンをクリックするとプログラムが実行されます。
動きは初めに紹介したようにセルB2以降に国税庁から返ってきたデータが入力されます。

ただし、このプログラムはこのままでは動きません。
プログラム内にユーザーIDと記載していますが、IDは国税庁に申請して取得する必要があります。

国税庁 適格請求書発行事業者公表システムWeb-API機能
https://www.invoice-kohyo.nta.go.jp/web-api/index.html
【アプリケーションID発行手続きの流れ】を読んで、①メールの送信と②申請書を提出すると、1週間程度でメールにてIDが通知されます。

そのIDを上記プログラムのユーザーIDの箇所に記入すれば使えるようになります。

コメント