オランダBSNチェックディジット
12345678を入力するとチェックディジットは2で、BSN全体は123456782になります。9桁の番号を貼り付ければ、オランダの11テストに合格するかどうかも確かめられます。登録フォームや給与データの確認に便利で、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 数
- 12345678
- 計算モード
- Compute
- 入力
- 12345678
- チェックディジット
- 2
- Bsn
- 123456782
オランダのBSN(Burgerservicenummer)は、税務・医療・給与・銀行・行政フォームで使われる市民サービス番号です。9桁の識別子であり、末尾1桁はelfproefとも呼ばれる固定の重み付き和(十一テスト)から導かれるチェックディジットです。先頭8桁が登録を示し、第9桁は「1桁目×9+2桁目×8…+8桁目×2−9桁目」が11で割り切れるように決まります。本機能は純粋な8桁基数からその最終桁を計算するか、完全な9桁BSNを検証し、保存桁が再計算値と一致するかを報告します。どちらの経路もネットワークや人口登録簿なしの同一の純算術を共有します。
オランダBSNの十一テストの仕組み
現代のBSNは、空白や句読点なしで書くと常に10進9桁です。先頭8桁が基数登録、第9桁がチェックディジットです。その桁を得るには、8桁の各基数に9から2までの降順の重みを掛け、積を合計し、その和を11で割った余りを取ります。
余りが0から9のとき、それがチェックディジットです。余りが10の場合、その基数には1桁のチェックが存在せず、公式規則では有効なBSNに完成できません。検証では9桁すべてに重み9・8・7・6・5・4・3・2・−1を掛け、重み付き和が余りなく11で割り切れることを要求します。
同等に、先頭8桁から期待される第9桁を再計算し、送信桁と比較します。アルゴリズムは固定重みの純整数モジュラ算術のため、同じ8桁はブラウザ・Worker・オフライン試験環境のどのプラットフォームでも常に同じチェックディジットを生みます。だからこそ本機能はモデル呼び出しではなくtier-Aのparseエンジンとして提供されます。
*ツールのLuhn・Damm・EAN・CPF mod-11・ISO 7064 mod-97と区別できるようにします。歴史的な8桁BSNは、同じ重みを適用する前に先頭ゼロ付きの9桁として扱うのが一般的です。本ツールは長さ規則を明示的に保つため、そうした番号を検証する際に先頭ゼロをご自身で付けていただく想定です。
実プロダクトの業務フローにおけるBSNチェックの位置づけ
オランダのフィンテック・保険テック・マーケットプレイスのオンボーディングでは、早い段階でBSNを求めることがよくあります。フォーカス喪失時に十一テストを検証すれば、キー入力ごとに政府登録を呼び出さずに送信失敗とサポート票を減らせます。給与・人事システムは従業員CSVを取り込み、第9桁が一致しなくなった行を隔離すべきです。
人手編集と上流ジェネレータのオフバイワンの両方を検出できます。どのフローでも契約は同じです。十一テスト合格を、オランダ人口システムに本人が存在する・番号が有効・GDPRとオランダプライバシー法の下でBSN処理が許される、という証明と見なさないでください。
それは9桁文字列がBSN規則で算術的に整形式であることだけを示し、他の国民IDチェックサムツールと同じ誠実さの基準です。常に保持を最小化し、保存時は暗号化し、適法な目的があるときにのみBSNを処理してください。
活用例
一括エクスポートのBSN列を監査する
給与CSVやERP抽出の各BSNを一括検証し、チェックディジットが再計算した十一テスト値と一致しない行を隔離します。
よくある質問
オランダBSNのチェックディジットとは何ですか?
Burgerservicenummerの第9桁であり、公式十一テストの重みで先頭8桁から計算されます。1桁の誤入力や多くの転記ミスは、別登録のように見えるより検証失敗になりやすくなります。
文字・ハイフン・桁数不正ではどうなりますか?
失敗した検証タスクは課金されません。呼び出し前にクライアントで空白や句読点を除去してください。
古い8桁のBSNはどう検証しますか?
先頭に0を自分で付けて9桁にしてから、通常どおり検証してください。短い番号を自動で補うことはしないので、桁数の間違いを見逃しません。
11テストに合格したBSNは実在する人の番号ですか?
そうとは限りません。テストで分かるのは数字の並びが整合していることだけです。その人がオランダの登録に存在することや、番号が有効であること、扱ってよいことまでは証明しません。
チェックディジットを計算できない8桁の番号があるのはなぜですか?
8桁に重みを掛けた合計を11で割った余りが10になると、1桁のチェックディジットが存在しないためです。公式の規則では、その番号を有効なBSNにすることはできません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/bsn-netherlands \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"12345678"}'const res = await fetch("https://api.kit.forhosting.com/enc/bsn-netherlands", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "12345678"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/bsn-netherlands",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "12345678"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/bsn-netherlands", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"12345678"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"12345678"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/bsn-netherlands", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": "12345678"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.bsn_netherlands",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
非数字文字・桁数不正・空入力・余りが10となる基数(1桁のチェックが存在しない)は、明確なinvalid_inputエラーで拒否されます。ブラウザで無料実行するかKIT APIを呼び出してください。
チェックディジットの計算と完全なBSNの検証方法
利用者がマスク付き番号を貼り付ける場合は、クライアント側で書式を除去してください。mode computeが既定です。mode validateはちょうど9桁を期待します。空文字・number欠落・無効なmode・誤った長さ(例:7桁や10桁)は、重み付き和の前に失敗し課金されません。0から9の文字だけを含むnumberフィールドを送信してください。空白・ドット・ハイフン・文字・小数点は非数字入力としてinvalid_inputで拒否され、フォームが黙って整形済み値を受け付けないようになっています。ちょうど8桁の基数を指定すると、エンジンは1文字のcheck_digit、9桁の完全コードbsn、8桁の中間重み付き和sum_base、length 9、アルゴリズムラベルを返します。8桁基数の余りが10の場合、2桁やnullの桁を捏造せずinvalid_inputで失敗します。末尾桁が再計算したexpected_check_digitと一致し、かつ完全な重み付き和が11で割り切れるときのみvalid trueを報告します。常にbase(先頭8桁)、送信どおりのcheck_digit、合法な基数があるときのexpected_check_digit、weighted_sum、base+期待桁から成る正規bsnを含みます。この形により、KYCや人事UIで「入力はX、期待はY」を再リクエストなしで示せます。時計・乱数・ネットワークのない純parse経路のため、同じ入力は無料ブラウザツールとAPIで常に同じJSONになります。成功リクエストあたり$0.002で、大量CRM取込・パートナーファイル監査・フォームゲートを、専用ティア交渉なしに守れます。
実プロダクトの業務フローにおけるBSNチェックの位置づけ
患者キーとしてBSNを保存する医療ポータルや薬局は、validがtrueになるまで進行を止め、桁が誤っていればexpected_check_digitを示せます。データ品質ジョブはエクスポートの各BSN列についてexpected_check_digitを再計算し、請求や税務報告の前に不一致をフラグします。
連携の活用例
fixtureとフォーム用に8桁基数を完成させる
テスト計画や部分レコードから8桁基数を取り、computeモードを呼び出して、チェックディジットを付けた9桁の完全bsnを保存または表示します。
入力時に手入力・取込BSNを検証する
登録フォーム・CRM取込・パートナーAPIが9桁を送ったらvalidateモードを呼び、validがfalseなら保存を止め、expected_check_digitを示して誤入力を直します。
技術的な質問
このAPIでBSNチェックディジットを計算するには?
numberをちょうど8桁にしmode computeでPOSTします(mode省略可)。応答にcheck_digitとbsn(完全9桁コード)が含まれます。余り10の基数はinvalid_inputで失敗します。
完全な9桁BSNを検証するには?
9桁文字列とmode validateでPOSTします。応答にはvalid、check_digit、expected_check_digit、base、weighted_sum、正規bsnが含まれます。
オランダBSNチェックツールは無料ですか?
ブラウザツールは無料でローカル実行されます。API呼び出しは公開ベース価格$0.002の前払いKIT残高を使い、無効入力は課金されません。