📊

Google SpreadsheetやExcelでインボイス登録番号を求める方法

2023/12/24に公開

概要

業務をしていると、インボイス登録番号を求めるケースや、インボイス登録番号を求められるケースがあるので自動的に処理できるようにAPIサービスを作りました。

この記事で言う、インボイス登録番号とは 適格請求書発行事業者番号 を指します。

以下のように法人番号からインボイス登録番号を表示できます。

インボイス番号とは

インボイス番号は、法人に対してと個人に対して付与されます。

インボイス番号の採番方法は以下のようになっています。

法人番号を有する課税事業者
「T」(ローマ字) + 法人番号(数字13桁)
上記以外の課税事業者(個人事業者、人格のない社団等)
「T」(ローマ字) + 数字13桁(注)
 (注)13桁の数字には、マイナンバー(個人番号)は用いず、法人番号とも重複しない事業者ごとの番号になります。

https://www.invoice-kohyo.nta.go.jp/about-toroku/index.html

インボイス番号は法人番号から一意に求められますが、その法人がインボイス登録番号を取得しているかはわかりません。

法人とインボイス番号は多対多の関係です。
個人とインボイス番号も多対多の関係です。

アプローチ

以下の国税庁のサイトでは、インボイス登録番号から法人名や個人の番号の登録があるかは確認できますが、法人名や法人番号から検索はできません。

https://www.invoice-kohyo.nta.go.jp/index.html

以下のサイトからCSVやXMLデータでインボイス番号のダウンロードが行なえます。

https://www.invoice-kohyo.nta.go.jp/download/zenken

API実装

法人番号検索APIのサイトに追加する形でインボイス番号を検索できるように実装しました。

法人番号からインボイス番号を引けるように法人番号の子要素にインボイス番号を参照できるようにしました。

例えば、日本郵政株式会社 の場合は以下のURLになります。

https://corporation.teraren.com/corporations/5010001112697.json

invoice_registration_number というキーの下にインボイス番号の情報を付加しています。

API仕様はOpenAPI Speification形式にて以下のURLで公開してあります。

https://corporation.teraren.com/doc/redoc

表計算ソフトから利用する

Google Spreadsheetから利用する

ここで紹介する方法は、こちらにサンプルのファイルを用意したのでコピーして利用できます。
https://docs.google.com/spreadsheets/d/1GWDqjeIVkAEFydl3ADE7ZCVW5FIa3gE-LvNyY5xEANI/edit#gid=72101969

まずは法人番号を適当に取得しておきます。今回は「ソニー」というキーワードに合致する会社名と法人番号を取得してます。

% curl -s 'https://corporation.teraren.com/corporations.json?s=ソニー'| jq '.items[] | [.name,.corporate_number] | @csv'                                                    Sun Dec 24 02:37:50 2023
"\"有限会社アンソニー\",6430002047180"
"\"ソニーストレージメディアマニュファクチャリング株式会社\",3370601003097"
"\"ソニーストレージメディア労働組合\",4370005009310"
"\"株式会社アイソニーフーズ福島\",9380001009597"
"\"ろばた焼ソニー有限会社\",6060002030513"
"\"株式会社アンソニー・ケア\",5070001032295"
"\"株式会社アンソニージャパン\",7070001024761"
"\"有限会社ソニー\",5030002007911"
"\"株式会社アイソニーフーズ\",9030001052533"
"\"有限会社ソニーズフェラーリ\",5040002041117"
"\"株式会社ソニー商事\",1010001089007"
"\"ソニー銀行株式会社\",1010001126313"
"\"株式会社レクソニーデジタルエンターテイメント\",1010401068601"
"\"ソニービズネットワークス株式会社\",1010701026820"
"\"ソニー損害保険株式会社\",1010801006342"
"\"ソニー健康保険組合\",1700150004968"
"\"ソニーフィナンシャルベンチャーズ株式会社\",2010001193311"
"\"ソニーマーケティング株式会社\",2010401032358"
"\"株式会社ソニー・ミュージックパブリッシング\",2010401040773"
"\"ソニーリージョナルセールス株式会社\",2010401056489"
"\"ソニーモバイルコミュニケーションズジャパン株式会社\",2010401103588"
"\"ソニーネットワークコミュニケーションズコネクト株式会社\",2010701037387"
"\"有限会社アンソニープラン\",2011302000453"
"\"株式会社ソニー・ミュージックアクシス\",3010001074840"
"\"ソニー生命保険株式会社\",3010401016260"

以下のスクリプトをApps Scriptに追加して保存します。

function getInvoiceRegistrationNumberFromCorporationNumber(corporation_number) {
  var url = 'https://corporation.teraren.com/corporations/' + corporation_number  + '.json';
  
  try {
    var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true});
    response_object = JSON.parse(response);
    return response_object['invoice_registration_number']['registrated_number'];
  }catch(e){
    Logger.log(e);
  }
}

このスクリプトでは、引数として法人番号を受け取り、それを元にAPIを呼び出し、APIのレスポンスの中からインボイス番号を取得して表示しています。

その後は、上記の関数を呼び出すだけです。

呼び出し例

=getInvoiceRegistrationNumberFromCorporationNumber("3370601003097")

実際には別のカラムに法人番号があると思いますので以下のようになると思います。

Excelから利用する

Excelからは簡単に利用できる関数があります。
以下の関数にURLを与えるとその返り値を表示できるようです。

=WEBSERVICE(URL)

サーバサイドで、上記の呼び出しに使えるエンドポイントを用意してあります。
例えば、日本郵政のインボイス番号を取得するには以下のURLになります。

https://corporation.teraren.com/corporations/5010001112697/text/invoice_registration_number/registrated_number

上記のエンドポイントはレスポンスがJSONではなくテキストで返却されます。

A1のカラムに法人番号が書いてある場合は以下のように呼び出せばインボイス番号を取得できます。

=WEBSERVICE("https://corporation.teraren.com/corporations/"+A1+"/text/invoice_registration_number/registrated_number")

まとめ

  • 法人番号からインボイス登録番号を取得するサービスを構築しました。
  • Google spreadsheetとExcelからインボイス番号を取得する方法を紹介しました。

Discussion