クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  Web-APIを利用して、インボイス登録情報を取得する
作成日:2024年12月09日

Web-APIを利用して、インボイス登録情報を取得する

イメージイラスト
にゃん太

どうも、にゃん太です

先日、インボイス登録番号から企業情報を取得する必要に迫られました

色々調べてみると、国税庁がWeb-APIを公開している様です

今回のメモでは、APIでインボイス情報を取得する方法を書いていきます


適格請求書発行事業者公表サイト

国税庁が開設している適格請求書発行事業者公表サイトがあります
このサイトでは、手動で登録番号から登録者情報を取得する事ができまが、更に便利な事に、Web-APIを利用して情報を取得する機能もあります
但し、APIの利用には利用規約に同意の上、アプリケーションIDを発行してもらう必要があります

Web-API機能で出来る事

さて、このWeb-APIですが、以下の機能があります
残念ながら、企業名からの検索機能は無いようです
それでは、順番に使い方を見ていきましょう

登録番号を指定して情報を取得

登録番号から登録者の情報を取得する事ができます
URLは以下の様に記述します
https://web-api.invoice-kohyo.nta.go.jp/バージョン/num?id=アプリケーションID&number=登録番号(1件目),登録番号(2件目),…&type=応答形式&history=履歴情報要否

バージョン

現行バージョンである「1」を指定します

アプリケーションID

国税庁より発行されたIDを指定します

登録番号

"T"+13桁の登録番号を指定します

カンマ区切りで最大10件まで指定可能です

応答形式

リクエストの結果、戻ってくるデータ形式を指定します

01:CSV形式、11:XML形式、21:JSON形式

履歴情報

履歴情報を取得するかを指定します

0:なし、1:取得(未指定は0として処理)


では、実際に取得してみましょう
取得データは何でもいいんですが、試しに自民党の番号で取得してみます

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$invoiceNo; 値: "T4010005002276"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/num?id=" & $id & "&number=" & $invoiceNo & "&type=21&history=0"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::結果; $json]

取得結果
無事取得できました
なお、取得データの内容は次の通りです
キー データ項目
lastUpdateDate 最終更新年月日
count 総件数
divideNumber 分割番号
divideSize 分割数
announcement 取得情報(配列)
sequenceNumber 一連番号
registratedNumber 登録番号
process 事業者処理区分
correct 訂正区分
kind 人格区分
country 国内外区分
latest 最新履歴
registrationDate 登録年月日
updateDate 更新年月日
disposalDate 取消年月日
expireDate 失効年月日
address 主たる事務所の所在地
addressPrefectureCode 主たる事務所の都道府県コード
addressCityCode 主たる事務所の市区町村コード
addressRequest 主たる事務所の所在地(公表申出)
addressRequestPrefectureCode 主たる事務所の都道府県コード(公表申出)
addressRequestCityCode 主たる事務所の市区町村コード(公表申出)
kana 日本語(カナ)
name 氏名、名称
addressInside 資産譲渡等に係る所在地
addressInsidePrefectureCode 資産譲渡等に係る所在地の都道府県コード
addressInsideCityCode 資産譲渡等に係る所在地の市区町村コード
tradeName 主たる屋号
popularName_previousName 通称・旧姓

それでは、戻ってきたJSONデータから各フィールドに値を割り付けてみましょう
全部の項目で作成すると大変なので、とりあえず主要な所だけとします

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$invoiceNo; 値: "T4010005002276"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/num?id=" & $id & "&number=" & $invoiceNo & "&type=21&history=0"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::登録番号; JSONGetElement ( $json; "announcement[0]registratedNumber" )] フィールド設定 [test::登録年月日; JSONGetElement ( $json; "announcement[0]registrationDate" )] フィールド設定 [test::所在地; JSONGetElement ( $json; "announcement[0]address" )] フィールド設定 [test::名称; JSONGetElement ( $json; "announcement[0]name" )]

問題なく各項目に割り当てできました
取得サンプル

取得期間を指定して情報を取得

指定した期間内に登録された情報を取得する事ができます
URLは以下の様に記述します
https://web-api.invoice-kohyo.nta.go.jp/バージョン/diff?id=アプリケーションID&from=取得期間開始日&to=取得期間終了日&type=応答形式&division=人格区分&divide=分割番号

バージョン

現行バージョンである「1」を指定します

アプリケーションID

国税庁より発行されたIDを指定します

取得期間開始日

yyyy-mm-ddの形式で指定します

令和3年10月1日以前の日付を指定するとエラーとなります

取得期間終了日

yyyy-mm-ddの形式で指定します

取得期間は最大50日なので、開始日から50日以内の日付を指定します

応答形式

リクエストの結果、戻ってくるデータ形式を指定します

01:CSV形式、11:XML形式、21:JSON形式

人格区分

個人・法人を指定します

1:個人、2:法人(未指定は両方取得)

分割番号

1回の取得件数は500件までの為、500件を超過する場合に取得位置を指定します


では、実際に取得してみましょう
試しに11月分を取得してみます

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$from; 値: "2024-11-01"] 変数を設定 [$to; 値: "2024-11-30"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/diff?id=" & $id & "&from=" & $from & "&to=" & $to & "&type=21"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::結果; $json]

取得結果

"divideNumber" : "1", "divideSize" : "82",
対象件数が40,516件ありますので、一部だけが取得できています
「divideNumber」が取得できた分割番号、「divideSize」が総分割数を示しています
501件目からを取得するには2番目の分割番号を指定して取得します

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$from; 値: "2024-11-01"] 変数を設定 [$to; 値: "2024-11-30"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/diff?id=" & $id & "&from=" & $from & "&to=" & $to & "&type=21&divide=2"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::結果; $json]

これで、501件目から100件目までが取得できます

登録番号と日付を指定して情報を取得

最後に登録番号と日付から情報を取得する処理です
URLは以下の様に記述します
https://web-api.invoice-kohyo.nta.go.jp/バージョン/valid?id=アプリケーションID&number=登録番号(1件目),登録番号(2件目), …&day=判定基準日&type=応答形式

バージョン

現行バージョンである「1」を指定します

アプリケーションID

国税庁より発行されたIDを指定します

登録番号

"T"+13桁の登録番号を指定します

カンマ区切りで最大10件まで指定可能です

判定基準日

yyyy-mm-ddの形式で指定します

登録状況を確認した日付を指定します

応答形式

リクエストの結果、戻ってくるデータ形式を指定します

01:CSV形式、11:XML形式、21:JSON形式


先ほどは自民党でしたから、今度は立憲民主党……と思ったら見つからないので、公明党で試してみます

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$invoiceNo; 値: "T8011105001478"] 変数を設定 [$day; 値: "2024-12-09"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/valid?id=" & $id & "&number=" & $invoiceNo & "&day=" & $day & "&type=21"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::結果; $json]

取得結果
無事取得できました
今度は、基準日を登録日以前にしてみます

スクリプト

変数を設定 [$id; 値: "xxxxxxxxxxxxx"] 変数を設定 [$invoiceNo; 値: "T8011105001478"] 変数を設定 [$day; 値: "2023-09-30"] 変数を設定 [$url; 値: "https://web-api.invoice-kohyo.nta.go.jp/1/valid?id=" & $id & "&number=" & $invoiceNo & "&day=" & $day & "&type=21"] URLから挿入 [ダイアログあり:オフ; ターゲット:$result; $url] フィールド設定 [test::結果; $json]

取得結果

この場合は登録データが取得できませんでした
普通に取得して日付比較しても良いのでしょうが、この方法であれば指定日の登録状況が一発で分かるので、状況によっては便利に使えるかもしれませんね

メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム