# Japan Invoice Number (T-Number) Checker - Bulk & Change Feed (`panda_studio/japan-invoice-number-checker`) Actor

Bulk-verify Japanese invoice registration numbers (T + 13 digits) with official NTA open data: valid, cancelled or expired, valid on the invoice date, supplier name match. Plus a daily feed of new, cancelled and expired corporate registrations. No API key.

- **URL**: https://apify.com/panda\_studio/japan-invoice-number-checker.md
- **Developed by:** [panda studio](https://apify.com/panda_studio) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Japan Invoice Number (T-Number) Checker – Bulk Verification & Change Feed

Verify Japanese **qualified invoice issuer registration numbers** (適格請求書発行事業者登録番号, "T-numbers": `T` + 13 digits) in bulk, using the **official open data of the National Tax Agency (NTA)**. Built for accounts payable, supplier onboarding, KYB and ERP / CRM clean-up under Japan's Qualified Invoice System (インボイス制度).

- **Bulk check** hundreds or thousands of T-numbers in one run: `registered`, `cancelled` (取消), `expired` (失効), `not-found`, `invalid-number`
- **Valid on the invoice date?** Give a date and get `validOnCheckDate` – the question auditors actually ask
- **Supplier name match**: add the name from the invoice and get `exact` / `partial` / `none` (ignores 株式会社, (株), Co., Ltd., full-width letters, spaces)
- **Check-digit validation** catches typos before anything is looked up
- **Change feed**: every business day the NTA publishes new, cancelled and expired corporate registrations – schedule this Actor to get them as a dataset (new-company leads, supplier risk alerts)
- Monthly snapshot **plus the daily update files**, so results are current to the latest business day
- Official bulk download files only – no scraping of the search site, no API key, no application ID

### Typical uses

- **Accounts payable / invoice processing** – before paying, confirm the supplier's T-number was valid on the invoice date (required for the purchase tax credit, 仕入税額控除).
- **Supplier master clean-up** – run your whole vendor list monthly; catch expired registrations after mergers, liquidations or opting out.
- **KYB / onboarding** – check the number, the registered company name and head-office address in one step.
- **Risk monitoring** – schedule *changes* mode daily and alert on `cancelled` / `expired` suppliers.
- **Lead generation** – newly registered corporations every day, filterable by prefecture.

### Input

Check mode:

```json
{
  "mode": "check",
  "registrationNumbers": [
    "T5010401067252, ソニーグループ株式会社",
    "T1010001004238",
    "1010001004238"
  ],
  "checkDate": "2024-05-01"
}
```

One number per line; spaces, hyphens, full-width digits and a missing `T` are accepted. Text after a comma is treated as the expected supplier name.

Changes mode (for a daily schedule):

```json
{
  "mode": "changes",
  "changeTypes": ["new", "cancelled", "expired"],
  "changesSince": "2026-09-01",
  "prefectures": ["Tokyo", "Osaka"]
}
```

### Output

```json
{
  "input": "T1010001004238, 船舶照電(株)",
  "registrationNumber": "T1010001004238",
  "corporateNumber": "1010001004238",
  "status": "expired",
  "isValidToday": false,
  "validOnCheckDate": true,
  "checkDate": "2024-05-01",
  "name": "船舶照電株式会社",
  "expectedName": "船舶照電(株)",
  "nameMatch": "exact",
  "entityType": "corporation",
  "registrationDate": "2023-10-01",
  "cancellationDate": null,
  "expirationDate": "2024-05-14",
  "address": "埼玉県草加市草加３丁目４番３１号",
  "prefectureEn": "Saitama",
  "officialUrl": "https://www.invoice-kohyo.nta.go.jp/regno-search/detail?selRegNo=1010001004238",
  "dataAsOf": "2026-09-24"
}
```

In *changes* mode each row also has `changeType` (`new`, `cancelled`, `expired`, `changed`) and `publishedFileDate`.

| status | meaning |
|---|---|
| `registered` | Currently a qualified invoice issuer |
| `cancelled` | Registration cancelled by the tax office (取消) – see `cancellationDate` |
| `expired` | Registration no longer effective (失効: merger, liquidation, opted out) – see `expirationDate` |
| `not-found` | Not registered as a corporation or association (see coverage below) |
| `invalid-number` | Wrong length or check digit – almost always a typo |

### Coverage and privacy

- Covers **corporations** (companies, local governments, public bodies, foreign corporations) and **unincorporated associations** – every registration in the official files.
- **Sole proprietors are intentionally not covered.** Their registration data is personal information, and the NTA warns against republishing it. A sole proprietor's number returns `not-found`; confirm it on the official site (`officialUrl`).
- The NTA publishes a full snapshot at each month end and update files every business day (kept for 40 business days). The Actor combines both; `dataAsOf` shows the latest file used.
- Lookups scan the official files (about 20 MB each, up to 6 files). A run stops scanning as soon as every number has been found. Large lists cost the same scanning as small ones, so batch your numbers into one run.

### Pricing

Pay per event:

- **$0.003 per result row** (one per checked number, or per change in the feed)
- **$0.01 per official data file scanned** in check mode (at most 6 per run; usually fewer)
- plus the tiny Apify start fee

Checking 1,000 supplier numbers costs about $3.06. A daily change feed for one prefecture typically costs a few cents.

### Source & license

Source: National Tax Agency, Qualified Invoice Issuer Publication Site (国税庁適格請求書発行事業者公表サイト, https://www.invoice-kohyo.nta.go.jp/), full and difference download data, used under the Public Data License v1.0 (公共データ利用規約 第1.0版). Processed by panda studio (format conversion, status and validity calculation, name matching). This Actor is not provided or endorsed by the NTA, and the NTA does not guarantee the processed results. For legal or tax decisions, confirm on the official site.

### Related Actors by panda studio

- [Japan Company Registry Search](https://apify.com/panda_studio/japan-company-registry-search) – corporate numbers, names and addresses
- [Japan New Company Registrations Feed](https://apify.com/panda_studio/japan-new-company-registrations) – newly incorporated companies every day
- [Japan Holidays & Business Days Calculator](https://apify.com/panda_studio/japan-business-days) – payment due dates in Japanese business days

# Actor input Schema

## `mode` (type: `string`):

check = verify the registration numbers below. changes = list recent new / cancelled / expired corporate registrations from the NTA daily update files.

## `registrationNumbers` (type: `array`):

One per line: T + 13 digits (spaces, hyphens, full-width and a missing T are fine). Optionally add the supplier name after a comma to verify it: "T7000012050002, 国税庁".

## `checkDate` (type: `string`):

YYYY-MM-DD, e.g. the invoice date. Adds validOnCheckDate (true if registered on that date and not yet cancelled / expired).

## `useDailyUpdates` (type: `boolean`):

The NTA publishes a full snapshot monthly and small update files every business day. Keep on for up-to-date status.

## `changeTypes` (type: `array`):

new = newly registered corporations, cancelled = registration cancelled (取消), expired = registration expired (失効, e.g. merger, liquidation, opting out), changed = name / address change.

## `changesSince` (type: `string`):

YYYY-MM-DD. Default: the last 7 days. The NTA keeps the last 40 business days of update files.

## `prefectures` (type: `array`):

Only companies located in these prefectures, e.g. "Tokyo", "Osaka", "13", "東京都". Empty = all of Japan.

## `maxItems` (type: `integer`):

Stop after this many rows.

## Actor input object example

```json
{
  "mode": "check",
  "registrationNumbers": [
    "T5010401067252, ソニーグループ株式会社",
    "T1010001004238, 船舶照電株式会社",
    "T1234567890123"
  ],
  "useDailyUpdates": true,
  "changeTypes": [
    "new",
    "cancelled",
    "expired"
  ],
  "maxItems": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

All results produced by this run, stored in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "registrationNumbers": [
        "T5010401067252, ソニーグループ株式会社",
        "T1010001004238, 船舶照電株式会社",
        "T1234567890123"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("panda_studio/japan-invoice-number-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "registrationNumbers": [
        "T5010401067252, ソニーグループ株式会社",
        "T1010001004238, 船舶照電株式会社",
        "T1234567890123",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("panda_studio/japan-invoice-number-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "registrationNumbers": [
    "T5010401067252, ソニーグループ株式会社",
    "T1010001004238, 船舶照電株式会社",
    "T1234567890123"
  ]
}' |
apify call panda_studio/japan-invoice-number-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,panda_studio/japan-invoice-number-checker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YfnfCAomGPscPBfr0/builds/sDIEzqRUtpE6KoPVD/openapi.json
