日本の給与・社会保険・労働法

io.github.kishida-devil由 GitHub 账号 kishida-devil 发布v0.4.5更新于 Oct 28, 2026

Japan payroll & social insurance. 日本の給与計算・社会保険。47都道府県の料率、源泉所得税、割増賃金、有給、標準報酬月額の改定、最低賃金。根拠の条文つき。

已验证Streamable HTTP可网页运行金融开发者工具商业与电商

概览

AI 生成的概览

计算日本工资、社会保险与劳动法相关数值——工资单、奖金、源泉所得税、标准报酬改定、休假与最低工资,并附上所依据的法条。

可以做什么
  • 计算月度工资单、奖金、年度用人成本,以及带员工与雇主分担额的批量工资计算
  • 查询标准报酬等级、各都道府县保险费率、最低工资与消费税
  • 判断标准报酬改定、年度定时决定、休假免除、参保资格与年龄节点
  • 计算源泉所得税、年末调整、居民税预估,以及加班与通勤补贴的处理
  • 统计营业日与节假日、校验法人番号与合格发票号码,并取回所引法条的原文
适用场景
当助手需要给出必须准确而非看似合理的日本工资与社会保险数字时适用:工资单明细、奖金保险费、等级改定判断、休假与参保资格问题,或核对某一日期适用的费率。
运行要求
可使用远程 streamable HTTP 端点,或用 npx 运行本地 npm 包。MCP 服务器无需 API 密钥或账号;使用远程端点需要网络访问。
安装前请注意
结果是参考计算而非申报:判断类工具只决定是否产生申报义务,保险人仍可能得出不同结论。文档已列出覆盖缺口——年末调整仅覆盖一个年度、最新年度最低工资尚未纳入、多事业所员工不做分摊、居民税从不自行推算。部分实务要点在响应中标注为未经一手资料证实。

安装

在 SourceWeft 中

  1. 打开 控制台中的 日本の給与・社会保険・労働法,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.kishida-devil%2Fjp-payroll-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "io-github-kishida-devil-jp-payroll-l78s": {
      "type": "http",
      "url": "https://japan-payroll-api.tsumugi.workers.dev/mcp"
    }
  }
}

README

jp-payroll-mcp

日本の給与計算・社会保険・労務を、表を引くのではなく計算して返すAPIとMCPサーバーです。 47都道府県の保険料率、源泉所得税、標準報酬月額の決定と改定、休業中の保険料免除、 割増賃金、年次有給休暇、最低賃金、営業日計算、令和8年分の年末調整、住民税の見込み額まで。答えには根拠の条文または通知が付きます。

公表されている料額表・税額表と1セルずつ突き合わせ、変更のたびに 4,689件 の検証を実行します。

使いかたは2通り

MCPサーバー — AIアシスタントに日本語で聞く。30ツール、無料、APIキー不要。 URL を貼るだけ(remote MCP)か、npx で入れるか:

bash
claude mcp add --transport http jp-payroll https://japan-payroll-api.tsumugi.workers.dev/mcp
bash
claude mcp add jp-payroll -- npx -y jp-payroll-mcp

Claude.ai のカスタムコネクタ、ChatGPT、Cursor には https://japan-payroll-api.tsumugi.workers.dev/mcp を貼ります。

HTTP API — ソフトウェアに組み込む。45エンドポイント、OpenAPI 3.0、一括処理:

bash
curl "https://japan-payroll-api.tsumugi.workers.dev/v1/payroll?prefecture=Tokyo&monthly_salary=350000&birth_date=1986-04-01"

MCPサーバーはAPIの薄い層なので、どちらも同じ答えを返します。 人が聞くのか、プログラムが聞くのかの違いです。

なぜ要るのか

自前で書くと、もっともらしく見えて間違っている数字が出ます。3月31日退職と3月30日退職では 1か月分の社会保険料が動きます(東京・40歳・月給30万円で労使合計95,130円)。4月1日生まれの人は 3月31日に40歳になるので介護保険料が1か月早く始まります。随時改定の「2等級以上」は健康保険法に 書いておらず、昭和36年保発第4号にあります。

以下は英語の詳細仕様です。


Japanese payroll, social insurance and labour law, computed rather than looked up — premiums for all 47 prefectures, withholding tax, standard remuneration decisions and revisions, leave exemptions, minimum wage — with the statute or ministerial notice each answer rests on.

Verified against the published tables cell by cell: 4,689 assertions on every change.

Two ways in

As an MCP server, for asking questions through an AI assistant. 30 tools, free, no key. Remote (paste a URL) or local (npx):

bash
claude mcp add --transport http jp-payroll https://japan-payroll-api.tsumugi.workers.dev/mcp
bash
claude mcp add jp-payroll -- npx -y jp-payroll-mcp

For Claude.ai custom connectors, ChatGPT and Cursor, the URL is https://japan-payroll-api.tsumugi.workers.dev/mcp.

As an HTTP API, for building it into software. 45 endpoints, OpenAPI 3.0, batch:

bash
curl "https://japan-payroll-api.tsumugi.workers.dev/v1/payroll?prefecture=Tokyo&monthly_salary=350000&birth_date=1986-04-01"

The MCP server is a thin layer over the API, so both give the same answers. Which you want depends on whether a person or a program is asking.

  • MCP server source and its own README: mcp/ · English
  • Live API: https://japan-payroll-api.tsumugi.workers.dev
  • OpenAPI spec: /openapi.json

Related tools

Japanese statutory MCP servers mostly retrieve — they hand you the text of a law and leave the reasoning to you. This one computes, and returns the provision it relied on. They fit together rather than compete:

"What does the law say?""So what do I pay?"
labor-law-mcp45 labour and social insurance laws, MHLW and JAISH notices—
tax-law-mcp24 tax laws, 17 NTA circulars, tribunal decisions—
hourei-mcp-serverAny Japanese law, via e-Gov—
jp-payroll-mcpThe 28 provisions it cites, in fullPremiums, withholding tax, grade revisions, exemptions

If you already run one of those, add this alongside it. An assistant with both picks the right one per question.

Why this exists

  • No consolidated API exists. Developers assemble this from 協会けんぽ, 厚生労働省 and each prefectural labour bureau separately.
  • The rules are fiddly. Premiums are computed on the standard monthly remuneration (a 50-grade step function), not on actual salary — except employment insurance, which uses actual salary. Pension caps at grade 32. Long-term care applies only to ages 40–64. The employee share rounds half down (≤ 0.50 yen truncates). Getting one of these wrong produces numbers that look plausible and are wrong.

MCP server

Source in mcp/, with its own README (日本語) · English. Test it with npm run mcp:test — it drives a real stdio transport with the real MCP client, because a tool with a broken handler still lists perfectly and only fails when something calls it.

The MCP server is free and always will be. It is a distribution channel rather than a revenue one: npm pays nothing and MCP has no billing of its own. That is deliberate — the problem was never billing, which RapidAPI already handles, but discovery, and MCP is where the traffic for Japanese statutory data measurably is.

Endpoints

EndpointDescription
GET /API info and endpoint list
Payroll and insurance
GET /v1/prefecturesAll 47 prefectures with JIS codes
GET /v1/insurance-rates?prefecture=TokyoHealth, long-term care, pension, child-support rates
GET /v1/standard-remuneration?remuneration=350000Grade lookup for a monthly amount
GET /v1/standard-remuneration/tableFull 50-grade table
GET /v1/employment-insurance?business_type=generalEmployment insurance rates
GET /v1/payroll?prefecture=Tokyo&monthly_salary=350000&age=40Full deduction breakdown
Minimum wage
GET /v1/minimum-wage?prefecture=Tokyo&date=2020-01-01Rate in effect on a date
GET /v1/minimum-wage/history?prefecture=TokyoFull history since FY2002
Calendar
GET /v1/holidays?year=2026Public holidays (or from=/to= for a range)
GET /v1/holidays/check?date=2026-01-01Holiday / weekend / business-day flags
GET /v1/business-days?from=&to=Count business days in a range
GET /v1/business-days/shift?date=&days=1Move N business days forward or back
Tax
GET /v1/consumption-tax?date=&amount=&reduced=Rate in force, optionally applied to an amount
GET /v1/consumption-tax/historyEvery rate change since 1989
Identifiers
GET /v1/corporate-number/validate?number=8700110005901法人番号 check digit (Peppol ICD 0188)
GET /v1/corporate-number/check-digit?base=700110005901Check digit for a 12-digit base number
GET /v1/invoice-number/validate?number=T8700110005901Qualified invoice registration number
Withholding tax
GET /v1/withholding-tax?taxable_amount=300000&dependants=2Monthly withholding income tax (月額表)
GET /v1/withholding-tax/daily?taxable_amount=12000&column=heiDaily table (日額表), including the 丙 column
GET /v1/withholding-tax/computer?taxable_amount=400000Same, by the formula method (電算機計算の特例)
Bonuses
GET /v1/bonus-tax?bonus=500000&previous_month_pay=350000Withholding on a bonus (賞与の算出率表)
GET /v1/bonus-insurance?prefecture=Tokyo&bonus=800000&age=40Social insurance on a bonus, with both caps
Standard remuneration decisions
GET /v1/standard-remuneration/regular?months=350000:30,352000:31,349000:30定時決定 (算定基礎) from April–June
GET /v1/standard-remuneration/revision?current_remuneration=&months=&fixed_pay_change=Is a 随時改定 (月額変更) due?
GET /v1/standard-remuneration/leave-end?kind=childcare&current_remuneration=&months=Revision on returning from leave
POST /v1/standard-remuneration/annual-average年間平均による保険者算定, for seasonal work
Year-end adjustment
POST /v1/year-end-adjustment年末調整 (令和8年分): every box of the 源泉徴収簿 from ⑦ to ㉗, plus an "if filed" estimate for medical/donation/casualty deductions
Resident tax
POST /v1/resident-tax住民税の見込み額 from last year's income and the municipality: income and per-capita levies, adjustment credit, ふるさと納税, exemptions, every prefecture's surtax
Eligibility and leave
GET /v1/eligibility?month=2026-03&left_on=2026-03-30Is a premium due in a joining or leaving month?
GET /v1/leave-exemption?kind=childcare&start=&end=Which months a maternity or childcare leave exempts
GET /v1/age-milestones?birth_date=1986-04-01When 40, 65, 70 and 75 are reached, and what changes
Batch
POST /v1/payroll/batchUp to 500 payslips in one call, with run totals
Statutes
GET /v1/statute?ref=健康保険法第43条Full text of a provision this API cites
GET /v1/statute/indexEvery provision available, with its law
include=statute_textAdd to any endpoint to attach the text of whatever it cited
Meta
GET /v1/enumsEvery accepted enum value and error code
GET /v1/data-freshnessWhat each dataset covers and when it changes next

prefecture accepts an English name (Tokyo, case-insensitive), Japanese (東京 or 東京都), or a JIS code (13).

The one call that matters

Running payroll for one employee is a single request:

bash
curl "https://japan-payroll-api.tsumugi.workers.dev/v1/payroll?prefecture=Tokyo&monthly_salary=350000&age=40&dependants=2"
gross                    350,000social insurance          -55,750                       ----------after social insurance   294,250   <- the base withholding tax is charged onwithholding income tax    -4,480                       ----------net pay                  289,770

That middle line is the point. Income tax is charged on pay after social insurance, not on gross pay, and deriving it by hand is the mistake this endpoint exists to stop. The response also carries the grade that was resolved, every premium split into employee and employer shares, and which bracket produced the tax — so the arithmetic can be audited rather than trusted.

Resident tax (住民税) is assessed by the municipality and notified to the employer; no API can compute it. Pass resident_tax= and it will be subtracted from net pay.

Pass income_tax=false to get social insurance only.

Before you integrate

  • GET /v1/enums lists every accepted value — business_type, column, calendar — and every error code, so they can be read at build time instead of discovered from a 400.
  • Errors carry a stable code. invalid_request and missing_parameter mean fix the call; out_of_coverage means the input was valid but falls outside what is published, which needs a different branch. Do not match on the English prose — it will change.
  • GET /v1/data-freshness tells you how current each dataset is.

Data

DatasetCoverageSource
Social insurance rates47 prefectures, FY2026 (令和8年度), effective 2026-03協会けんぽ 保険料額表
Standard remuneration table50 health grades / 32 pension gradessame
Employment insurance3 business types, FY2026, effective 2026-04-01厚生労働省
Minimum wage47 prefectures × 24 years (FY2002–FY2025)厚生労働省 地域別最低賃金
Public holidays1,067 days, 1955–2027内閣府 国民の祝日について
Consumption tax4 rate periods since 1989, with reduced rate国税庁 No.6303
Corporate number check digitalgorithm, no dataset国税庁 チェックデジットの計算
Withholding tax (monthly)231 brackets + 9 high-income anchors, 令和8年分国税庁 源泉徴収税額表
Withholding tax (formula)4 statutory tables, 令和8年分以降電算機計算の特例

All figures are extracted programmatically from the official spreadsheets — not transcribed by hand. See scripts/ for the extractors.

Why not the statute

Income tax figures come from the National Tax Agency's published tables rather than from 所得税法 via the e-Gov law API, because the statutory version omits the 2.1% reconstruction surtax. At 105,000–107,000 yen the 乙 column is 3,700 yen in 別表第二 and 3,800 yen in practice; below 105,000 yen it is 3% rather than 3.063%. The statute is the wrong source for payroll.

Above 740,000 yen the table stops being a table: it becomes anchor points with a marginal rate. Those anchors are not collinear — rounding is baked into each — so the published anchor values are carried rather than recomputed. The 乙 column has only two anchors (740,000 and 1,710,000) where 甲 has nine, and measuring the 乙 excess from a 甲 anchor silently under-charges. That was a real bug here, caught by the cell-by-cell comparison.

Citations resolve to text

Naming a statute and leaving the reader to find it is half an answer. Every provision this API cites is bundled, so 健康保険法第43条 can be turned into its actual words in the same round trip:

bash
curl 'https://japan-payroll-api.tsumugi.workers.dev/v1/statute?ref=健康保険法第43条'curl '…/v1/standard-remuneration/revision?…&include=statute_text'

Citations are written many ways in practice and all of them resolve — 健保法43条, 厚年法81条の2, 徴収法11条, a missing 第, paragraph-level references, full-width digits. The e-Gov abbreviations are not the ones practitioners use (e-Gov calls it 厚生年金法; everyone writes 厚年法), so both are accepted.

Text comes from the e-Gov 法令API at build time rather than at request time: calling out to e-Gov on every request would mean this API goes down when theirs does.

scripts/extract-statutes.py holds the one list of provisions, and the test suite checks that every citation the code emits resolves — a citation added without a provision to back it fails the build rather than silently returning nothing.

Known gaps

  • Year-end adjustment covers 令和8年分 only, from the Tax Agency's booklet published 2026-08-31 (minimum employment income deduction 740,000 yen, basic deduction up to 1,040,000 yen, the new 特定親族特別控除, the under-23 life-insurance rule). Medical, donation and casualty-loss deductions are outside 年末調整 by law; pass them as tax_return to get a separate "if the employee files" estimate.

  • FY2026 minimum wage is not included yet. As of 2026-09-02, 46 of 47 prefectures had issued their 答申 (Okinawa pending); the earliest take effect on 2026-10-01. The API serves FY2025, which is the rate currently in force, and refuses dates on or after the first revision with out_of_coverage rather than returning last year's figure. It will be refreshed from the Ministry's list once all 47 are published.

  • Workers employed at two or more establishments (二以上事業所勤務) are not apportioned. Premiums are split in proportion to remuneration at each establishment, but there is no input for the other employer's figure; the API calculates as if for one establishment.

  • Employment insurance history is FY2026 only. Earlier years were not verified against a primary source, so they are omitted rather than guessed.

  • Resident tax is out of scope. It depends on the previous year's income and on the municipality, and it is levied by the municipality rather than computed by the employer, so /v1/payroll deducts whatever figure you pass and never derives one.

  • The judgement endpoints decide whether a filing is due; they are not the filing. Several rules turn on facts an API cannot see — whether a seasonal swing is 「業務の性質上例年発生することが見込まれる」, whether an allowance is 実費弁償, whether the employee consented. Those are declared inputs, echoed back in the response, and the insurer can still reach a different conclusion under 保険者算定.

  • Not every standard-remuneration route is covered. 資格取得時決定 returns how long the decision stays in force but does not compute the initial 報酬月額 (健保法42条1項 has four methods, three of which need figures about other employees). 二以上事業所 勤務 — where remuneration from several employers is summed and the premium split between them — is not implemented at all. Neither is the re-anchoring that happens when fixed pay changes twice inside the three-month window.

  • A few practice points could not be sourced to a primary document and are listed as guidance.fixed_pay.unverified in the response rather than being asserted: whether 家族手当 counts as fixed pay, how paid leave is counted toward 支払基礎日数, and how 年俸制 is treated. Secondary sources agree on all three; the ministries do not appear to say so in writing.

Verification

test/verify.mjs runs 4,689 assertions against a live server. The core of it compares the API's computed premiums to the amounts printed in the official 協会けんぽ workbook for 250 combinations (5 prefectures × 50 grades) — the published half-share figures, not a reimplementation of the formula. It also checks:

  • grade boundary contiguity, and that a boundary yen value belongs to the upper grade
  • pension clamping at grades 1 and 32
  • long-term care switching on at 40 and off at 65
  • employment insurance charged on actual salary while other premiums use the grade
  • point-in-time minimum wage (including the day before an effective date)
  • prefecture resolution across all four input forms
  • all 47 prefectures returning a valid payroll response
  • business-day counts against an independently computed reference
  • the 2026-09-22 国民の休日 (a holiday only because it sits between two others)
  • one-off imperial holidays: 大喪の礼, 即位礼正殿の儀, 結婚の儀
  • the corporate-number check digit against the worked example in the NTA PDF, and that every other check digit is rejected for the same base
  • every published cell of the withholding tax table — 231 brackets x 8 甲 columns plus the 乙 column, 2,079 figures, compared against the National Tax Agency's own workbook
  • that a passing invoice check digit is not attributed to a corporation: sole proprietors satisfy the same rule, so the holder cannot be inferred from the number
  • all eight single-grade 随時改定 cases 日本年金機構 publishes — four for health, four for pension — each landing on the standard remuneration the table names, on both the real grade and the extended scale the implementation uses
  • that health and pension are judged independently: a raise above the pension ceiling moves six health grades and no pension grade at all
  • the 15-day 定時決定 fallback firing for 短時間就労者 and not for anyone else, and not in 随時改定 at any time
  • that every closed set of values appears in /v1/enums, so a new enum cannot ship without reaching the endpoint integrators generate their types from
bash
npx wrangler dev --port 8799node test/verify.mjs
# or against productionBASE=https://japan-payroll-api.tsumugi.workers.dev node test/verify.mjs

Develop / deploy

bash
npm installnpx wrangler devnpx wrangler deploy

Data is embedded in the bundle (~40 KB gzipped), so there is no database, no KV, and no cold start.

Responses carry Cache-Control: public, max-age=3600, stale-while-revalidate=86400. An hour rather than a day, because rates change on known dates and a correction should reach callers the same day; stale-while-revalidate keeps responses instant while the refresh happens behind it. Note that workers.dev responses are not cached at Cloudflare's own edge — every request invokes the Worker. A custom domain would enable edge caching if that becomes worth doing.

Measured from Japan against the deployed Worker: median 65 ms, max 83 ms round trip; gzip takes the 50-grade table from 6,841 to 1,041 bytes.

Maintenance

Statutory figures change on fixed dates, and an API that misses a revision keeps answering — with numbers that stopped being true. Two mechanisms guard against that.

The API reports its own staleness. GET /v1/data-freshness states what each dataset covers and when it is next due to change, and the main data responses carry a freshness marker. A caller can see a stale figure even if our monitoring failed.

A weekly job watches the sources.

bash
npm run watch          # fingerprints each source, alerts Discord on changenpm run watch:dry      # same, without notifying

It checks two independent things, because either alone leaves a gap: the source file's hash and Last-Modified (catches a silent re-issue), and the calendar (catches the case where a ministry publishes the revision at a new URL and leaves the old one untouched).

An alert carries the exact commands for that dataset rather than pointing back here. The alert is read months later, usually by someone who has forgotten the layout of this repo.

Rehearse an extractor before you need it. The minimum wage extractor takes --check, which runs the full extraction and compares it to the data currently shipped instead of writing anything:

bash
curl -L -A "Mozilla/5.0" -o mw.xlsx https://www.mhlw.go.jp/content/11200000/001571219.xlsxpython scripts/extract-minimum-wage.py --check

It should say the output matches. If it does not while the fiscal year is unchanged, the extractor and the shipped data have drifted apart — which is worth knowing in August rather than discovering on the day the new figures land, when the temptation is to ship whatever the script produces.

Register it to run weekly:

bash
powershell -ExecutionPolicy Bypass -File scriptsegister_watch_task.ps1

Verifying the paid path

The test suite cannot check that RapidAPI's paid plans get full-size batches: doing so needs the proxy secret RapidAPI issues, and a secret that lives in a test is not a secret. It checks the half that matters for revenue — that a caller without the secret cannot claim a paid plan by setting a header.

Confirm the other half from the logs after any change to entitlement:

bash
npx wrangler tail --format json

Call any endpoint from the RapidAPI playground and look for the request line. It should carry the subscription name:

json
{"channel":"rapidapi","path":"/","status":200,"plan":"BASIC"}

plan present means the proxy secret matches. plan: null on a rapidapi request means it does not — and every paying customer is being served the free-tier caps while being charged. That failure is silent from the outside, which is why it is worth a deliberate check rather than waiting for a complaint.

The dates that matter

WhenWhat changes
March協会けんぽ prefectural rates, effective with the March salary month
AprilEmployment insurance rates; tax tables
Late Aug – OctoberMinimum wage, issued prefecture by prefecture, effective from October
FebruaryCabinet Office publishes the following year's holidays

After refreshing any dataset, update src/data/freshness.json and run npm run rapidapi:prepare so the live API is re-verified and the OpenAPI spec regenerated.

Publishing pipeline

Each API is a recipe under recipes/<slug>/recipe.py — endpoints are declared once there, and both the OpenAPI spec and the RapidAPI listing text are generated from it.

bash
npm run rapidapi:prepare

That command, for every recipe:

  1. validates the recipe,
  2. hits every declared endpoint on the live API and requires a 200 with parseable JSON — and for endpoints with required parameters, requires a 400 when they are omitted. This is what catches drift between recipe.py and src/index.ts,
  3. writes build/openapi/<slug>.openapi.json,
  4. sends a Discord notification containing the listing URL, the spec path, and the exact values to paste.

Listing itself is manual. The Add-API form at https://rapidapi.com/provider/<id>/new is protected by reCAPTCHA v3, so the final submit is done by a person — three fields, choose "Specify using: OpenAPI", upload the generated spec. Roughly two minutes per API, which does not bottleneck a one-or-two-per-week cadence.

Set DISCORD_WEBHOOK_URL in .env (see .env.example) for the notification to actually arrive; without it the message only prints to the console.

Browser session

npm run rapidapi:login opens a real Chrome window for you to sign in by hand — the script never sees the password. The session persists in rapidapi_profile/ (gitignored). Re-run it when the session expires.

Operational safety

  • state/pipeline.halt.json halts everything until a human removes it. set_halt() is called when a session dies; clear_halt() on successful re-login.
  • MAX_PUBLISH_PER_DAY / MIN_SECONDS_BETWEEN_PUBLISH in pipeline/rapidapi/config.py keep the pace human.

Licence and attribution

Underlying data is Japanese government open data under 公共データ利用規約(第1.0版), which permits commercial use and redistribution with attribution. Every response carries an attribution block naming the source.

This service is not endorsed by any Japanese government agency. Verify against the official source before relying on it for statutory filings.

来源:README.md,提交 d489d1b

工具

30

calculate_payslip

給与計算 — 社会保険料・源泉所得税・手取り

Full monthly deduction breakdown for one employee: health insurance, long-term care, pension, child support, employment insurance, withholding income tax and net pay, with the employer share as well. Use this rather than computing it yourself. Premiums are charged on 標準報酬月額 — a 50-grade step function — and not on actual salary, while employment insurance IS charged on actual salary; the employee share rounds half DOWN; pension stops at grade 32; long-term care applies only from 40 to 64. Income tax is computed on pay after social insurance, which the tool derives internally, so do not pre-deduct it.

输入参数ageas_ofcolumnbirth_datedependantsincome_taxprefecture必填resident_taxbusiness_typecommuting_faremonthly_salary必填employment_type另有 5 个

list_workers_compensation_rates

労災保険率 — 事業の種類別

Workers compensation (労災保険) rates by business type, and the employer premium on a given 賃金総額. The whole premium falls on the employer — nothing is deducted from the employee, unlike every other statutory premium. Rates run from 2.5/1000 to 88/1000 depending on the industry, a 35-fold spread, so this cannot be estimated. Pass the 事業の種類の番号 from the 労働保険関係成立届; omit it to get the whole table.

输入参数as_ofwage_totalbusiness_type

calculate_bonus

賞与の社会保険料と源泉所得税

Premiums and income tax on a 賞与. Both work differently from monthly pay and are routinely got wrong. Premiums are charged on 標準賞与額 (the bonus truncated to the thousand yen) under two caps that behave differently: health, long-term care and child support cap at 5,730,000 yen CUMULATIVELY across the fiscal year from 1 April, while pension caps at 1,500,000 yen PER PAYMENT. The annual cap cannot be applied without fiscal_year_to_date, so pass it whenever an earlier bonus was paid in the same fiscal year. Withholding tax on a bonus is derived from the PREVIOUS month's pay, not from the bonus itself. Set include_tax to also compute it.

输入参数ageas_ofbonus必填columnbirth_datedependantsprefecture必填include_taxprevious_month_payfiscal_year_to_dateprevious_month_insurance

calculate_withholding_tax

源泉徴収税額(月額表・日額表・電算機計算の特例)

Income tax to withhold from a payment, from the National Tax Agency tables. The taxable amount is pay AFTER social insurance has been deducted, not gross. Pick the table with `period`: "monthly" for 月額表, "daily" for 日額表. The daily table has a third column, 丙, which applies to work engaged by the day and takes no dependant adjustment at all. Use `method: "computer"` for the 電算機計算の特例 formula, which payroll software may use instead of the table and can differ by a few yen.

输入参数columnmethodperiodspousedependantstaxable_amount必填

judge_monthly_revision

随時改定(月額変更届)の要否判定

Decides whether a pay change forces the standard remuneration to be revised, and answers SEPARATELY for health insurance and pension — the tables differ, so a change routinely moves one and not the other. Above roughly 665,000 yen the pension table is exhausted, so a large raise for a well-paid employee moves several health grades and no pension grade. Do not try to reason this out unaided. Neither the "two grades or more" test nor the requirement that FIXED pay changed appears anywhere in 健康保険法 or its regulations — both come from 昭和36年 保発第4号, a ministerial notice, along with four exceptions near the top and bottom of each table where a single grade is enough. Overtime alone never triggers a revision, and a rise in fixed pay whose three-month average comes out LOWER is excluded even at a wide grade gap. When the answer is no, the response says which requirement failed rather than just false. If the three-month average is distorted by a seasonal peak, see judge_annual_average.

输入参数months必填worker_typefixed_pay_change必填current_remuneration必填

decide_regular_remuneration

定時決定(算定基礎届) — 4〜6月の報酬から

The yearly redetermination of standard remuneration, effective each September through the following August. Months below the payment-basis-day threshold drop OUT of the average entirely — they are not counted as zero, which is the usual mistake. If no month qualifies, the previous grade carries over by 保険者算定, except for 短時間就労者, who have an intermediate step at 15 days that exists nowhere else in the scheme and not in 随時改定. Pass acquired_month to also learn how long a 資格取得時決定 stays in force.

输入参数yearmonths必填left_onacquired_onworker_typeacquired_monthrevision_monthprevious_remuneration

judge_leave_end_revision

産休・育休終了時改定(1等級差で改定)

A separate route with a lower bar than 随時改定, and the one people forget. ONE grade of movement is enough, and fixed pay need not have changed at all — which matters because returning to shorter hours usually cuts pay without changing any rate, so 随時改定 would not fire and the employee would keep overpaying on their pre-leave grade. Only one of the three months has to reach the day threshold, and months that miss it are excluded from the average. The employee must apply; an employer cannot file it alone. It is unavailable if another leave begins the day after this one ends.

输入参数kind必填months必填worker_typecurrent_remuneration必填next_leave_starts_immediately

calculate_payroll_batch

給与計算をまとめて — 事業所全員分と合計

Runs calculate_payslip for many employees in one call and returns the run totals: gross, employee deductions, net, and employer cost. Reach for this the moment more than two or three people are in play. A monthly payroll is not a sequence of unrelated questions — the employer share, the totals and the run id only mean anything across the whole run. Asking one employee at a time gives no total and no way to tell a retry from a second run. Put anything shared in defaults (prefecture, business_type, column) and let each row carry only what differs, which is usually pay and age. A row that cannot be computed comes back in errors with its index and id while the rest of the run completes — do not discard a whole payroll over one bad row. The reply carries a run_id derived from the route and the exact input, so sending the same payroll twice gives the same id. Nothing is stored, so a retry cannot double-count.

输入参数compactdefaultsemployees必填

decide_regular_remuneration_batch

定時決定(算定基礎届)をまとめて — 事業所全員分

Runs the annual 定時決定 for a whole payroll in one call, and reports which employees moved grade. 健康保険法第41条 puts every insured employee on the same schedule — the average of April, May and June pay, over the months with at least seventeen payment-basis days, applied from September to the following August. So June is the one month of the year when an office decides its entire payroll at once, and asking about one employee at a time is the wrong shape for the task. Reach for this the moment more than a couple of employees are in play. Each row returns the same judgement as decide_regular_remuneration, plus whether that person changed grade, which is what decides how much filing there is. Pass previous_remuneration to get that comparison; without it the answer is null rather than false, because "no grade to compare" and "did not move" are different facts. Pass acquired_on, left_on or revision_month and each row also says whether that employee is filed at all. 健康保険法第41条 leaves out anyone insured between 1 June and 1 July, anyone gone before the 1 July reference date, and anyone revised from July to September. The run totals to_file and not_required, which is the number of forms rather than the number of employees. A row that cannot be decided is returned in errors with its index and id, and the rest of the run still completes — do not discard a whole run over one bad row.

输入参数defaultsemployees必填

judge_annual_average

年間平均による保険者算定(季節変動がある場合)

For work whose April-June happens to be its busiest or quietest quarter, where the ordinary calculation would fix a grade that is wrong for eleven months of the year. Available for 定時決定 (since April 2011) and 随時改定 (since October 2018). The 随時改定 figure is NOT a plain twelve-month average: it is the three-month average of FIXED pay plus the twelve-month average of NON-FIXED pay, so the two are supplied separately, and three distinct grade tests must all pass. Both routes need the employee's consent and require that the swing recurs every year for reasons inherent to the work — a one-off busy period does not qualify. Neither is something this tool can verify, so both are declared inputs and are echoed back in the response.

输入参数type必填months必填worker_typeemployee_consent必填fixed_pay_changerecurring_annually必填current_remuneration

lookup_standard_remuneration

標準報酬月額の等級照会

Maps a monthly amount to its health grade (1-50) and pension grade (1-32), with the standard remuneration each resolves to and whether the pension grade was clamped. Use it to check a grade, not to compute premiums — calculate_payslip does that.

输入参数remuneration

national_insurance

国民年金・国民健康保険 — 被用者保険に入らない人の側

For anyone outside employee cover: the self-employed, freelancers, people between jobs. Use this instead of calculate_payslip when the person is not an employee. Running a freelancer through the payslip returns a figure computed under a different scheme entirely, with nothing in the answer to say so. If you are unsure which side someone is on, judge_worker_type decides it. The two schemes differ in how far they can be answered, and the difference matters. 国民年金法第87条 makes the pension contribution a statutory amount times a revision rate set each year by cabinet order — the same figure everywhere in the country, flat regardless of income. That comes back as a number. 国民健康保険法第76条 leaves the health contribution to each municipality, collected from the head of the household, and states no figure at all. Around 1,700 municipalities each set their own income-based, per-person and per-household components and their own ceilings. There is no national number to give. Do not estimate one, and do not present a figure from one city as though it were general — tell the person to ask their own municipality, which is what the response says. Exemptions, deferrals and the student special case all change what is actually paid, and whether they apply turns on income and household. Those are not judged here.

输入参数as_ofmonthssupplementary

calculate_annual_cost

年間の労務コスト — 賞与の上限を年度で通した額

What one employee costs an employer over a year, bonuses included. Reach for this rather than multiplying a payslip by twelve, because the two do not agree once a bonus is paid. 健康保険法第45条 caps the standard bonus cumulatively across the year — 5,730,000 from 1 April to 31 March — so the same bonus costs a different amount depending on where it falls, and once the year is used up later bonuses carry no health premium. 厚生年金保険法第24条の4 caps at 1,500,000 per payment with no yearly total, so pension keeps charging where health has stopped. Pass bonuses in the order they are paid: the health allowance fills from the first one. Each row comes back with what was counted, whether it was cut, and how much of the year remains, so the answer can be explained rather than just quoted. Income tax here is the monthly figure times twelve. Bonus withholding is a separate calculation (calculate_bonus with include_tax) and the year-end adjustment is a separate tool (calculate_year_end_adjustment) — say so rather than presenting this as take-home pay for the year.

输入参数agebonusesbirth_datedependantsprefecture必填fiscal_yearresident_taxbusiness_typemonthly_salary必填workers_comp_typestandard_remuneration

judge_annual_leave

年次有給休暇 — 付与日数と年5日の時季指定義務

Works out how many days of paid leave someone has been granted, and whether the employer still owes the five days it must direct. 労働基準法第39条 grants ten working days once six months of service are complete and attendance reaches eighty per cent of all working days, then adds one, two, four, six, eight and ten days in the years that follow. The ceiling everyone quotes as twenty is not in the article: it is the ten of the first grant plus the ten added from the sixth year. Someone under thirty hours a week working four days or fewer takes a smaller table from 施行規則第24条の3. Thirty hours is where it turns — at or above it the ordinary grant applies no matter how few days are worked, and treating such a person as part-time under-grants them. Ask for both the weekly days and the weekly hours; one without the other cannot settle it. Where ten or more days are granted, 第39条第7項 requires the employer to fix the timing of five of them within the year, and days the employee took of their own accord count toward it. A grant lapses two years after it is made (第115条), so one year carries over. The attendance figure is a question about the workplace: leave for a work injury, maternity, childcare and paid leave already taken all count as attendance. Ask for a rate that has been worked out rather than dividing days present by days in the year. Without one the tool reports the eighty per cent test as not judged rather than assuming it passed.

输入参数as_ofhired_on必填days_takenannual_daysweekly_daysweekly_hoursattendance_rate

judge_worker_type

被保険者区分の判定 — 四分の三基準と20時間・88,000円・学生・51人

Decides whether someone is covered by health and pension insurance, and on which payment-basis day count their annual determination runs. Call this before decide_regular_remuneration or judge_monthly_revision whenever the person is anything other than plainly full-time. Those tools take a worker_type, and guessing it changes a real number: the determination counts months of seventeen payment-basis days for an ordinary employee and eleven for a 短時間労働者. Get the classification wrong and the answer is wrong with no sign of it. 健康保険法第3条第1項第9号 covers anyone whose weekly hours and monthly days reach three-quarters of a comparable full-time worker. Below that, four further tests decide it: twenty hours a week, 88,000 yen a month, not a student, and a workplace of at least fifty-one insured people. The engagement must also be expected to run past two months. The 88,000 figure leaves out overtime, bonuses, commuting and family allowances. Folding those in is the usual route to a wrong answer, so ask for 所定内賃金 specifically rather than total pay. What counts as a comparable full-time worker, and whether someone is a student for this purpose, are facts about the workplace and the person. Ask rather than assume; the tool applies the tests to what you pass and names any it could not evaluate.

输入参数is_studentmonthly_daysmonthly_wageweekly_hours必填employment_monthsnormal_monthly_daysnormal_weekly_hoursworkplace_insured_count

check_insurance_eligibility

入社月・退社月の保険料の要否

The single most expensive month-end mistake in Japanese payroll, and one an assistant will get wrong from memory. Coverage ends the day AFTER the last day worked, not on it. So an employee leaving on the LAST day of a month loses coverage on the 1st of the next month, and still owes that month's premium — while leaving one day earlier means no premium for the month at all. A full month of both employee and employer premium turns on a single day. Always check here rather than reasoning it out.

输入参数monthleft_onjoined_on

check_leave_exemption

産休・育休の保険料免除月

Maternity and childcare leave look alike and behave differently. Maternity leave has no day-count test and exempts bonus premiums unconditionally; childcare leave gained a 14-day rule in October 2022 and exempts bonus premiums only when the leave exceeds one month. Two results catch people out and are worth checking rather than assuming: a leave that starts and ends inside one month exempts nothing by itself under the main rule, while a SINGLE day of leave on the last day of a month is exempt. Employment insurance is never exempt — it is charged on wages actually paid.

输入参数end必填kind必填start必填worked_days

get_age_milestones

年齢到達日(40/65/70/75)と保険料の変化

Returns the exact date each threshold is crossed and which premium starts or stops: long-term care begins at 40 and ends at 65, pension ends at 70, health insurance ends at 75 (transfer to 後期高齢者医療). Compute this here rather than by subtracting years. Under 年齢計算ニ関スル法律 an age is reached the day BEFORE the birthday, so someone born on the 1st of a month attains it in the previous month and their premium changes a month earlier than expected.

输入参数as_ofbirth_date必填

calculate_year_end_adjustment

年末調整(令和8年分)

Year-end adjustment (年末調整) for 2026 from the National Tax Agency's 令和8年分 booklet: the printed 給与所得控除後の給与等の金額 table (1,103 rows), the income-adjustment deduction, social/life/earthquake insurance deductions, spouse, specified-relative (19-22 with income), dependant, disability, widow/single-parent/student and basic deductions, the year-end tax bracket table, the housing-loan credit and the 2.1% reconstruction surtax. Returns every box of the 源泉徴収簿 (⑦ to ㉗) and whether the difference is a refund or a collection. Pay figures are for the whole calendar year, bonuses included. Pass only what the employee declared on their forms; the tool does not assume a spouse, dependants or insurance. Anyone paid 20,000,000 yen or more is outside 年末調整 and the tool says so. Medical, donation and casualty-loss deductions are not part of 年末調整 (they need a tax return) and resident tax is never involved.

输入参数flagsspousetotal_pay必填dependantsmutual_aidtax_returndisabilitiesother_incomewithheld_tax必填life_insurancesocial_insurance必填income_adjustment另有 4 个

estimate_resident_tax

個人住民税の見込み額

Estimate of next fiscal year's resident tax (住民税: 道府県民税 + 市町村民税 + 森林環境税) from the previous year's income and the municipality: employment income from the NTA table for that year, resident-tax deductions (basic 430,000, spouse 330,000, dependants 330,000/450,000/380,000, life insurance capped at 70,000), the 10% income levy split 4%/6% (2%/8% in designated cities), the adjustment credit, the non-taxable thresholds (35万円 × persons + 10万円 + 21万円, with the 級地 rate), ふるさと納税 basic and special credits (special capped at 20% of the income levy), the housing-loan carry-over, per-capita amounts including every prefecture's surtax (37 of 47 have one; Kanagawa also adds 0.025% to the income levy) and the city rules of 横浜市 (+900), 神戸市 (+400) and 名古屋市 (5% cut). Matches the published 令和8年度 worked examples of Yokohama and Nagoya to the yen. It is an ESTIMATE: the municipality decides the amount and the employer deducts what the 特別徴収税額通知書 says. Say so. income_year is the year the income was earned (2025 for the fiscal-2026 tax). Pass grade_level (級地 1-3) when known; it changes the per-capita exemption.

输入参数cityflagssalaryspousedependantsmutual_aidprefecture必填grade_levelincome_year必填disabilitiesother_incometotal_income另有 14 个

get_insurance_rates

社会保険料率・雇用保険料率

Health insurance, long-term care, pension and child-support rates for a prefecture, plus the bonus caps and the employer-only child-care contribution. Health rates differ by prefecture and change each March; pension is national. Add business_type for the employment insurance rates, which change each April — pass as_of to get the rate in force on that date (FY2025 and FY2026 are held; March is the month where health rates are already the new year's while employment insurance is still the old year's).

输入参数as_ofprefecture必填business_type

get_minimum_wage

最低賃金(指定日時点)

Hourly 地域別最低賃金 for a prefecture. Revisions take effect prefecture by prefecture from October, on different days, so a date matters — pass one when checking a past payroll rather than assuming the current rate applied. History runs back to FY2002.

输入参数dateas_ofhistoryprefecture必填

business_days

祝日・営業日計算(銀行カレンダー対応)

Count business days in a range, shift a date by N business days, or check one date. Covers 1955-2027 including substitute holidays, 国民の休日 (a weekday that is a holiday only because it sits between two others) and one-off imperial events, so the awkward years are right and not only the tidy ones. Set calendar to "bank" for the statutory banking calendar (銀行法施行令第5条), which is also closed 31 December to 3 January — relevant for payment due dates.

输入参数todatedaysfromyearcalendaroperation必填

validate_invoice_numbers_batch

インボイス登録番号をまとめて形式検査

Checks the National Tax Agency check digit on many qualified-invoice registration numbers in one call. Be careful how you report the result. A passing check digit means the shape of the number is right and nothing more. 消費税法第57条の2 provides both for the Commissioner to revoke a registration and for one to lapse, so a well-formed number can be unregistered, revoked or expired. Never tell someone a number is valid, verified or confirmed on the strength of this — say the format checks out, and that the register itself was not consulted. What it does earn is elimination. Anything failing on shape needs no lookup at all, so the list taken to 国税庁「適格請求書発行事業者公表サイト」 gets shorter. That site publishes the revocation and lapse dates, and offers a bulk download and a Web-API for large lists. Duplicates come back as given rather than folded together, and each result carries the index of its input, so rows line up with the caller list they came from.

输入参数numbers必填

validate_corporate_number

法人番号・インボイス登録番号の検証

Checks the National Tax Agency check digit on a 13-digit 法人番号, or on a qualified invoice registration number (the same 13 digits prefixed with T). This proves the number is well formed. It does NOT prove the number is registered, and it does not identify the holder: sole proprietors receive invoice numbers that satisfy exactly the same rule, so a passing check digit must not be reported as evidence of a corporation. To confirm registration, use the National Tax Agency's own lookup.

输入参数basenumber

consumption_tax

消費税率(日付指定・軽減税率・改定履歴)

The consumption tax rate in force on a date, with the national and local parts, and the reduced 8% rate for food and newspapers. Pass amount to have the tax worked out. Japan changed the rate four times since 1989 (3% → 5% → 8% → 10%), and the reduced rate has existed only since 2019-10-01. A back-dated invoice or a credit note against an old sale is charged at the rate of the original transaction, not today's, so the date matters more often than people expect. Set history to see every change with its statute.

输入参数dateas_ofamounthistoryreduced

get_statute_text

条文の本文を取得

Returns the full text of a Japanese statutory provision, as published by e-Gov. The judgement tools name the statute or notice their answer rests on, but not its words. Use this to quote the provision itself — a citation the reader can check beats a citation they have to take on trust, and Japanese payroll advice is routinely wrong in ways that only reading the article reveals. Only the provisions this API cites are bundled (about 28 across 8 laws); call it with no ref to list them. Abbreviations as practitioners write them (健保法43条, 厚年法81条の2, 徴収法11条), a missing 第, and paragraph-level references all resolve to the article. For anything outside this set, say so rather than reciting it from memory.

输入参数ref

calculate_overtime_pay

割増賃金(時間外・深夜・休日)の計算

Works out statutory premium pay under 労働基準法第37条 — overtime, night work and work on a statutory holiday. The rates do not simply add up, and getting this wrong under-pays wages. A night premium stacks on top: overtime at night is 1.25 + 0.25 = 1.5, holiday work at night is 1.35 + 0.25 = 1.6. But a statutory holiday carries no overtime premium at all — a day with no duty to work has nothing to exceed — so holiday hours are 1.35, never 1.6 by adding overtime. Overtime beyond sixty hours in a month is 50%, and the deferral that exempted small employers ended on 1 April 2023, so headcount no longer matters. Rounding follows 昭和63年基発第150号, which rounds each category separately rather than once at the end, so the total will not always match a single multiplication. Rounding the hours themselves down is a breach of 労基法第24条 and this tool will not do it. base_monthly_pay must exclude the seven allowances that 労基法37条5項 and 施行規則21条 enumerate exhaustively, and only those. Exclusion turns on substance, not the name: a 「家族手当」 paid at a flat rate regardless of dependants cannot be excluded. The response lists all seven. Do not guess at whether an allowance qualifies — ask which way it is paid.

输入参数night_hoursholiday_hoursovertime_hoursbase_monthly_pay必填holiday_night_hoursmonthly_scheduled_hours必填

commuting_allowance_exemption

通勤手当の非課税限度額

Works out how much of a commuting allowance escapes income tax, and states the amount that still counts as remuneration for social insurance. These are two different bases, and that asymmetry is the part people get wrong. Social insurance counts a commuting allowance in full — it is 報酬 under 健康保険法第3条第5項 regardless of the tax treatment — while income tax is charged only on what exceeds the ceiling. So a 15,000 yen allowance on a 300,000 yen salary makes the standard-remuneration basis 315,000 and the taxable pay 300,000. Never answer with a single figure that is meant to serve both. The ceiling is 150,000 a month for public transport. For a car or bicycle it is set by one-way distance, with nothing exempt under two kilometres, and up to 5,000 more a month when the employee pays for parking. Using both adds them together, still capped at 150,000. Do not answer this from memory. The table moved twice in twelve months: a cabinet order promulgated 19 November 2025 raised every band over ten kilometres and applied retroactively to allowances payable from 1 April 2025, and 1 April 2026 added four bands above 65km along with the parking addition. Figures learnt before those dates are wrong, and wrong in a direction that under-states the exempt amount. Call with no arguments to read the current table and both revisions.

输入参数fareamountparkingdistance_km

check_data_freshness

データ鮮度 — 各データの対象期間と次回改定

Japanese statutory figures change on fixed dates — insurance rates each March, employment insurance each April, minimum wage each October — and a stale table produces numbers that look plausible and are wrong. This reports what every dataset currently covers and when its next revision is due. Worth calling before relying on a figure for a filing, and whenever a result is being checked against a date near one of those boundaries.

无需输入参数。

版本历史

1
  1. v0.4.5最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分