インボイスWeb-APIの使い方|3つの機能とリクエスト例

国税庁のインボイスWeb-API(適格請求書発行事業者公表システムWeb-API機能)は、インボイス用のアプリケーションIDを付けてGETリクエストを送ると、登録番号の情報をCSV・XML・JSONで返してくれる公式のAPIです。料金はかかりません。

この記事では、3つの機能の使い方と、実装で気をつける点を説明します。申請の手順はインボイスWeb-APIの申請方法、民間のAPIも含めた比較はインボイスAPIの比較をどうぞ。

3つの機能

機能パス使いどころ
登録番号を指定して取得/1/num請求書の番号を確認する
取得期間を指定して取得/1/diff新規登録・取消・失効などの差分を取り込む
登録番号と日付を指定して取得/1/valid取引日時点の情報を確認する

URLの基本形は https://web-api.invoice-kohyo.nta.go.jp/1/機能?id=アプリケーションID&... です。バージョンは 1 です。

応答形式

type で選びます。文字コードはすべてUnicodeです。

type形式
01CSV
11XML
21JSON

法人番号システムWeb-APIと違い、JSONを選べます。

登録番号を指定して取得する(num)

https://web-api.invoice-kohyo.nta.go.jp/1/num?id=アプリケーションID&number=T1180301018771&type=21
  • number: T+13桁。カンマ区切りで最大10件
  • history: 登録・取消・失効の履歴を取得するかどうか

日付を指定して取得する(valid)

https://web-api.invoice-kohyo.nta.go.jp/1/valid?id=アプリケーションID&number=T1180301018771&day=2024-10-01&type=21
  • day: 判定の基準にする日(YYYY-MM-DD)
  • 指定した日を基準に、直近の登録年月日・取消年月日・失効年月日にひも付く情報が返ります

請求書の取引日を day に入れれば、取引日時点で登録が有効だったかを判断できます。判断のしかたは取引日時点でインボイスが有効だったか確認する方法で解説しています。

期間を指定して差分を取る(diff)

https://web-api.invoice-kohyo.nta.go.jp/1/diff?id=アプリケーションID&from=2026-10-01&to=2026-10-31&type=21
  • from / to: 取得期間。指定できる期間は最大50日
  • 新規の登録、公表情報の変更、取消、失効などの差分が返ります
  • 件数が多いと応答が分割されるので、分割番号を指定して最後まで取得します

取引先の失効を毎日拾いたい場合は、この機能で前日分を取り込み、自社の取引先の番号と突き合わせます。

Pythonでの実装例

import os
import requests

APP_ID = os.environ["NTA_INVOICE_APP_ID"]


def check_invoice(numbers: list[str], day: str) -> dict:
    """登録番号(最大10件)について、指定日時点の情報を取得する。"""
    res = requests.get(
        "https://web-api.invoice-kohyo.nta.go.jp/1/valid",
        params={"id": APP_ID, "number": ",".join(numbers), "day": day, "type": "21"},
        timeout=30,
    )
    res.raise_for_status()
    return res.json()

応答の項目名や構成は、国税庁の「リソース定義書」で確認してください。

実装で気をつけること

10件ずつ、間隔を空けて

1回に指定できる登録番号は10件までです。大量に確認するときは10件ずつに分け、間隔を空けて送ります。

アプリケーションIDを公開しない

アプリケーションIDは第三者に開示してはいけません。サーバー側の環境変数に置き、ブラウザのJavaScriptからは呼ばないでください。

検証環境で試す

国税庁は、検証用の事業者名を使った検証環境を用意しています。本番に向ける前に、分割の処理やエラーの扱いを試せます。検証環境の利用にもインボイス用のアプリケーションIDが必要です。

出典を表示する

取得した情報を使ったサービスを公開するときは、インボイスWeb-APIを使って取得した情報で、国税庁が内容を保証するものではない旨を表示します。

法人の企業情報は別のAPI

インボイスWeb-APIで取れるのは、登録番号に関する公表情報です。法人の商号変更の履歴や、法人番号の情報を詳しく扱うなら、法人番号システムWeb-APIを別に呼びます(法人番号システムWeb-APIの使い方)。

まとめ

インボイスWeb-APIは、登録番号の指定、期間の指定、日付の指定の3つの機能があり、JSONでも受け取れる無料のAPIです。取引日時点の確認も公式APIでできます。そのかわり、審査のあるアプリケーションIDの取得と、10件ずつの送信、差分の取り込みなどの実装が必要です。

申請なしで始められる民間のAPIとの違いは、インボイスAPIの比較で確認してください。

この記事を書いた人

Bango API の開発者です。国税庁の法人番号Web-APIとインボイスWeb-APIを使ったシステムを実装してきた経験をもとに書いています。

本サービスは、国税庁法人番号システムWeb-API機能および国税庁適格請求書発行事業者公表システムのWeb-API機能を利用して取得した情報をもとに作成していますが、サービスの内容は国税庁によって保証されたものではありません。取得した情報は編集・加工して提供しています。