スウェーデンpersonnummerチェック桁
生年月日と通し番号の9桁811228987のチェックディジットは4で、personnummerは8112289874になります。9桁を入れれば番号を完成でき、10桁か12桁を入れれば最後の数字を確認できます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 数
- 811228987
- 計算モード
- Compute
- 入力
- 811228987
- 日付
- 811228
- シリアル値
- 987
スウェーデンのpersonnummer(個人識別番号)は、税務・医療・銀行・雇用およびほとんどの公的フォームで使われる国民向けの民事識別子です。短い形式は10桁で、生年月日を年・月・日(YYMMDD)の6桁、その日に割り当てられる通し番号3桁、末尾のチェックディジット1桁から成ります。12桁形式は世紀を前置します(YYYYMMDDに通し番号とチェックを加えたもの)。チェックディジットは無作為の飾りではなく、短い形式の先頭9桁に対するLuhnアルゴリズムで生成され、1桁の打ち間違いや隣接桁の入れ替えが、番号の保存や照合の前に多くの場合はじかれます。本機能はそのチェックサムのみを実装します。computeモードはチェックを除くちょうど9桁(日付+通し番号)を受け取り、Luhnの桁と完成した10桁文字列を返します。validateモードは10桁または12桁(任意のハイフンやプラス区切り)を受け取り、末尾桁が再計算した期待値と一致するかを報告します。
スウェーデンのpersonnummerチェックディジットの計算方法
スウェーデン国税庁(Skatteverket)の規則では、personnummerのチェックディジットは9桁——6桁の生年月日YYMMDDに続く3桁の通し番号——に対するLuhn mod-10の値です。左から位置1から9を数え、奇数位置を2倍し、2倍した桁が9より大きい場合は9を引きます(積の十の位と一の位を足すのと同等)。
偶数位置はそのままの桁を足します。9個の重み付き値を合計し、チェックディジットは10からその合計の10による剰余を引いた値を、再び10で剰余をとったものです。これによりチェックを付け足すと10桁の短い形式がLuhnとして整合します。
有名な例はベース811228987で、チェックディジット4と短い完全形8112289874(よく811228-9874と表記)になります。調整番号(samordningsnummer)は月の日に60を加えた日を使い、9桁本体に対して同じLuhn規則を用います。本ツールはそれら向けに別アルゴリズムを発明しません。
アルゴリズムは決定的かつローカルで、人口登録への呼び出しも時計も乱数もありません。一般的なカードLuhnやIMEI Luhnツールと比べ、ここでの検索意図は狭いです。日付と通し番号からスウェーデンpersonnummerのチェックディジットを計算したい人、あるいは10桁・12桁のスウェーデン個人番号を検証したい人向けであり、決済や端末向けではありません。
personnummerチェックディジットが実際のスウェーデン業務に合う場面
銀行やフィンテックは口座開設時に10桁または12桁のpersonnummerを検証し、1回の桁入れ替えで幽霊顧客や拒否されたKYC記録が生まれないようにします。
スウェーデンの顧客や従業員マスターを取り込むETLは、CSVやXMLフィードの各personnummer列を走査し、validateモードを呼び出してvalidがfalseの行を隔離し、人による編集と生成器の1ずれたバグの両方を捉えます。
自治体や学校システムはハイフン付きとコンパクト表記の両方を受け入れることが多く、桁検査の前にスペース・ハイフン・プラスを除去すれば、第二のアルゴリズムを発明せず契約を単純に保てます。どの業務でも約束は同じです。
チェックを通ったpersonnummerを、人口登録で生存している、スウェーデンの身分証がある、サービス利用が許可されている、という証明と見なさないでください。公式のスウェーデンpersonnummerの重みの下で、Luhn桁が日付と通し番号と整合することだけを示します。
活用例
マスターデータのpersonnummer列を監査する
CRM・EHR・給与のCSV内の各personnummerを一括検証し、チェックディジットが再計算した期待値と一致しなくなった行を隔離します。
よくある質問
スウェーデンのpersonnummerチェックディジットとは何ですか?
短いスウェーデン個人識別番号の10桁目で、6桁の生年月日と3桁の通し番号にLuhnアルゴリズムを適用して計算され、打ち間違いやスキャン誤りが保存前に多くの場合検出されます。
personnummerのチェックディジットはどう計算しますか?
日付と通し番号の9桁のうち、左から奇数番目の数字を2倍し、9を超えたら9を引きます。すべて足した合計を10の倍数にする数字がチェックディジットで、811228987なら4です。
12桁の形ではチェックディジットが変わりますか?
変わりません。12桁の形の最初の2桁は世紀を示すだけで、表示や並べ替えに使います。チェックディジットは短い形と同じ9桁から計算します。
調整番号にも使えますか?
はい。調整番号(samordningsnummer)は生まれた日に60を足しますが、9桁に同じLuhnの規則を使うため、このツールで同じように計算・確認できます。
有効なpersonnummerなら登録済みの人ですか?
いいえ。最後の数字が日付と通し番号に合っていることを示すだけです。住民登録は照会しないため、本人が存命か、登録済みか、サービスの対象かは分かりません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/enc/personnummer-sweden \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"811228987"}'const res = await fetch("https://api.kit.forhosting.com/enc/personnummer-sweden", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "811228987"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/personnummer-sweden",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "811228987"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/personnummer-sweden", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"811228987"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"811228987"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/personnummer-sweden", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"number": "811228987"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.personnummer_sweden",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
非数値の本体や誤った長さは、黙って切り捨てるのではなくinvalid_inputで失敗します。同じ純算術がブラウザでは無料、公開API価格では有料で動き、登録簿への照会はなく、チェックサムが有効であることだけでその人が生存・登録済み・何らかのサービスの資格があるとは主張しません。
スウェーデンのpersonnummerチェックディジットの計算方法
検証では9桁のペイロードから期待桁を再計算し、提出番号の末尾桁と比較します。世紀付き12桁形式YYYYMMDDNNNCでも、Luhnのペイロードは依然として9桁YYMMDDNNNであり、世紀桁は年齢や並び替え用の表示メタデータであり、チェックサムの重みには入りません。
入力契約、モード、エラー時の挙動
スペース、ハイフン、プラスは除去されるため、811228-9874や19811228-9874のような一般的なスウェーデン表記は正規化後に受理されます。長さの誤りは、モードと送った長さ——computeは9、validateは10または12——を明示するエラーなので、クライアントフォームは推測なしに正確なメッセージを出せます。空文字、number欠落、不正なmode値はLuhn合計の前に失敗し、課金されません。形状は正しいがチェックディジットだけが違う文字列は例外を投げずvalid falseを返します。personnummer本体を含むnumberフィールドを送ってください。それ以外の句読点や文字は非数値入力としてinvalid_inputで拒否され、黙って整形された値が保存に到達しません。computeモードが既定で、エンジンはちょうど9桁を要求し、check_digitを1文字の文字列、with_checkを印刷や永続化に使える10桁の短いpersonnummer、監査用にdate(YYMMDD)とserial(3桁)も返します。validateモードはちょうど10桁(YYMMDDNNNC)または12桁(YYYYMMDDNNNC)を受け取り、末尾桁が再計算したexpected_check_digitと一致するときvalid trueを報告し、常にpayload(9桁のLuhn桁)、check_digit、expected_check_digit、date、serial、form("10"または"12")、lengthを含みます。12桁入力ではcenturyとfull_date(YYYYMMDD)も返しますが、世紀をLuhn合計には含めません。personnummer、pnr、digits、codeなどの別名も同じペイロードフィールドとして受け付けるため、すでにスウェーデン語のフィールド名を使う連携は改名不要です。経路は時計・乱数・ネットワークのない純粋なparseのため、同じJSON本体は無料ブラウザツールでもAPIでも成功リクエストあたり$0.002で常に同じJSON結果になります。
personnummerチェックディジットが実際のスウェーデン業務に合う場面
医療ポータルや薬局システムは、クリニックが電話で番号を聞いたりスキャンしたカードから貼り付けたりするときにexpected_check_digitを再計算し、カルテや処方箋を登録する前に打ち間違いを捕捉します。雇用主と給与ベンダーはcomputeモードでサンドボックス上の9桁ベースを完成させ、本番の識別子に見えるテスト従業員にwith_checkを保存します。
連携の活用例
テスト用に9桁のpersonnummerベースを完成させる
YYMMDDと3桁の通し番号でcomputeモードを呼び出し、with_checkを保存し、KYC・給与・医療のサンドボックステスト記録に10桁のpersonnummerを使います。
入力または取込のスウェーデン個人番号を検証する
フォーム、銀行ファイル、人事フィードが10桁または12桁を送るときvalidateモードを呼び、validがfalseなら登録を止め、expected_check_digitを示して1桁の打ち間違い修正を助けます。
技術的な質問
このAPIでpersonnummerのチェックディジットを計算するには?
numberをちょうど9桁(YYMMDD+通し番号)にし、mode compute(またはmode省略)でPOSTします。応答にはcheck_digitとwith_check(完全な10桁の短い形式)が含まれます。
完全な10桁または12桁のpersonnummerを検証するには?
数字列(任意のハイフンやプラス)とmode validateでPOSTします。応答にはvalid、check_digit、expected_check_digit、payload(9桁のLuhn桁)が含まれます。
長さ違い、文字、変な句読点ではどうなりますか?
スペース・ハイフン・プラスを除いたあと、非数値入力および9桁(compute)または10/12桁(validate)以外の長さはinvalid_inputで拒否されます。失敗した検証タスクは課金されません。
personnummerチェックディジットツールは無料ですか?
ブラウザツールは無料でローカル実行です。API呼び出しは公開の基本価格$0.002でプリペイドKIT残高を使い、無効入力は課金されません。