給与計算のチェック自動化(勤怠突合・異常値検知)
勤怠集計データと給与計算結果を突き合わせ、不整合と異常値を一覧で出す処理をAIに書かせ、毎月同じ観点で確認できるようにします。

- 対象部署
- 給与計算担当
- 使う技術
- ChatGPT または Claude(チェック処理のスクリプト生成) / Python(pandas による2ファイルの突合と異常値抽出) / 勤怠システムと給与ソフトからのCSV出力 / Googleスプレッドシートでのチェック結果の共有
- 必要な入力データ
- 勤怠集計データ(csv・社員番号/出勤日数/時間外・深夜・休日の各労働時間) / 給与計算結果データ(csv・社員番号/各支給項目/各控除項目/差引支給額) / 前月の給与計算結果データ(比較用) / チェック観点の一覧(ベテランが何を見ているかを書き出したもの)
Before / After
人がやる場合と、AIを使った場合
効果だけを並べても判断できません。まず「今どうやっているか」を具体的に書きます。タブを切り替えて読み比べてください。
勤怠システムから集計表を出力し、給与ソフトの計算結果と並べて画面に表示します。担当者は上から順に、社員1名ずつ目で確認します。ベテランは先に時間外労働の急増と欠勤のある月を見ます。経験の浅い担当者は、どこから見るべきかが分からず、全項目を順に追います。50名規模の顧問先で1〜2時間かかります。20社を担当していれば、給与計算日の前後は他の仕事が止まります。見落としは顧問先からの指摘で判明することが多く、その月の給与を訂正する連絡から始まります。チェック観点が言葉になっていないため、担当者が変わると見る場所も変わります。
2つのCSVを読み込み、チェック結果を一覧で出す処理を用意します。処理そのものはAIに書かせます。出力は「社員番号/チェック項目/期待値/実測値/差異/深刻度」の6列にします。突合の例は、勤怠の時間外労働時間と給与の時間外手当の整合、欠勤日数と基本給の控除の有無、深夜労働時間と深夜手当の有無です。前月比の変動が大きい項目も抽出します。人に残るのは、抽出された差異が誤りか正常かの判断です。中途入社や休職からの復帰では、前月比が大きく動くのが正常です。この判断は顧問先の事情を知る担当者にしかできません。全件を人が見る運用から、差異のある行だけを人が見る運用に変えます。
| 比較する軸 | 人がやる場合 | AIを使った場合 |
|---|---|---|
| 所要時間 | 50名規模の顧問先1社あたり、目視での確認に1〜2時間かかります。 | 突合処理の実行は1分未満で終わり、抽出された差異の確認に15〜30分かかります(自社での実測が必要です)。 |
| 関わる人数 | 給与計算担当1名と、ベテランによる再確認1名です。担当者が不安な月は2名で見ます。 | 給与計算担当1名です。差異の判断が分かれた行だけ、ベテランが確認します。 |
| 起きるミス | 見る観点が担当者ごとに違い、疲れによる見落としも起きます。誤りは顧問先からの指摘で初めて判明します。 | チェック観点に入れていない誤りは拾えません。また、正常な変動まで差異として大量に出すことがあります。 |
| 必要なスキル | 経験に基づく「どこを先に見るか」の勘が要ります。 | チェック観点を条件式として書き出す力と、差異が誤りか正常かを判断する力が要ります。 |
効果の見込み
AIツールを紹介する記事では、勤怠データの取得から明細作成までを自動化した場合に給与計算の所要時間が6割減ったとする報告が紹介されています(媒体報告値)。ただし、その範囲には計算そのものの自動化が含まれており、本事例のチェック工程だけを指す数値ではありません。自社では、担当顧問先3社について「目視確認にかけた時間」と「顧問先からの指摘で判明した誤りの件数」を3か月記録し、導入後の同じ3社と比較してください(要実測)。
Steps
実際にやること
読んだ方がそのまま試せる粒度で書いています。出し惜しみはしません。各手順の説明とプロンプト例は「くわしく見る」を開くと読めます。
- 01
ベテランが見ている観点を、条件の形で書き出す
くわしく見る
最初にやるのは、勘の言語化です。「時間外手当が勤怠の時間外労働時間と合わない」「欠勤があるのに基本給が満額」のように、条件と判定を書き出します。まず15〜20項目を目指します。書き出すときは、判定の閾値も決めます。前月比の変動なら何パーセント以上を拾うかまで決めます。閾値がないと、処理を書くときに詰まります。
- 02
2つのCSVの列名と型をそろえる
くわしく見る
勤怠システムと給与ソフトでは、社員番号の桁数や氏名の表記が違うことがあります。突合の鍵になる社員番号は、必ず文字列として扱います。先頭の0が落ちる事故を防ぐためです。金額列にカンマや円記号が入っている場合は、数値に変換する処理を先に入れます。この下ごしらえを飛ばすと、突合の結果が全件不一致になります。
- 03
チェック処理をAIに書かせる
くわしく見る
書き出した観点をそのままAIに渡し、Pythonの処理を作らせます。実データは渡さず、列名と観点だけを渡します。出力の形式を先に決めておくことが重要です。
プロンプト例
あなたはPythonでデータ処理を書く担当者です。給与計算のチェック処理を作ってください。 入力は次の3ファイルです(すべてCSV・UTF-8)。 1. 勤怠集計:列は 社員番号, 氏名, 所定労働日数, 出勤日数, 欠勤日数, 所定内労働時間, 時間外労働時間, 深夜労働時間, 休日労働時間, 有給取得日数, 遅刻早退時間 2. 給与計算結果:列は 社員番号, 氏名, 基本給, 役職手当, 通勤手当, 時間外手当, 深夜手当, 休日手当, 課税支給合計, 健康保険料, 厚生年金保険料, 雇用保険料, 所得税, 住民税, 控除合計, 差引支給額 3. 前月の給与計算結果:2と同じ列 出力は1つのCSVとし、列は 社員番号, 氏名, チェック項目, 期待値, 実測値, 差異, 深刻度 の7列にしてください。 実装するチェックは次のとおりです。 - 勤怠に時間外労働時間があるのに、時間外手当が0円 - 勤怠に深夜労働時間があるのに、深夜手当が0円 - 勤怠に休日労働時間があるのに、休日手当が0円 - 欠勤日数が1日以上あるのに、基本給が前月と同額 - 勤怠側にいるが給与側にいない社員番号、およびその逆 - 差引支給額が前月比で20パーセント以上変動している - 通勤手当が前月と異なる - 控除合計と各控除項目の合計が一致しない - 課税支給合計と各支給項目の合計が一致しない 条件: - 社員番号は文字列として読み込んでください(先頭の0を保持) - 金額列のカンマと円記号を除去してから数値に変換してください - 深刻度は「要確認」「参考」の2段階とし、金額の不一致は「要確認」、前月比の変動は「参考」としてください - 該当がない場合も、ヘッダ行のみのCSVを出力してください - コードにはコメントを日本語で書いてください
- 04
過去の月のデータで検証する
くわしく見る
誤りが分かっている過去の月を使って処理を回します。実際に訂正した月があれば、その月が最適です。処理がその誤りを検出できるかを確かめます。検出できなければ、観点が足りないのか閾値が緩いのかを切り分けます。3か月分で試し、拾いすぎと拾えなさすぎの間で閾値を調整します。この往復が精度を決めます。
- 05
差異の判断結果を記録し、翌月に持ち越す
くわしく見る
出力されたチェック結果に「判断」「判断者」「理由」の3列を足します。正常と判断した行には理由を1行書きます。「中途入社のため前月比の変動は正常」といった内容です。この記録を残すと、翌月に同じ行が出たときの確認が数秒で終わります。同じ理由が3か月続く場合は、その社員を対象外にする条件を処理に追加します。
- 06
手順書を作り、担当者2名以上が実行できる状態にする
くわしく見る
スクリプトの置き場所、CSVの出力手順、実行コマンド、結果の見方を1枚の手順書にまとめます。作った本人以外の担当者に、手順書だけで実行してもらいます。詰まった箇所を書き足します。この工程を経ないと、作った人が休んだ月に元の目視確認へ戻ります。属人化の解消は、手順書を他人が実行できて初めて成立します。
Sample Data
この事例で使うサンプルデータ
実際に手を動かして試せるよう、サンプルを用意しています。すべて架空のデータです。お客様の実データは一切使用していません。
一式をまとめた形は、業界別レポートに同梱してお渡ししています。
Pitfalls
つまずきやすい点
精度が出ないときにどこを見るか。ここが分かるかどうかで、定着するかが決まります。見出しを開くと、確かめる箇所が読めます。
社員番号の先頭の0が落ちて、突合が全件不一致になる
正常な変動まで差異として出力し、確認の手間が増える
チェック観点に入れていない誤りは、いつまでも拾えない
実際の給与データを、そのまま外部のAIサービスに貼り付けてしまう
Related
士業(社労士・税理士)の他の事例
次は「助成金の要件チェックと申請書類のドラフト」を読んでください。助成金の申請では、賃金台帳と出勤簿を証拠書類として提出します。給与計算のチェックで整えたデータは、そのまま申請時の突合にも使えます。同じCSVを2つの用途で使う形にすると、出力の手間が1回で済みます。
士業(社労士・税理士)のAI活用レポートをお送りします
この事例を含む5つの活用事例と、サンプルデータをまとめた資料です。社内での共有にお使いいただけます。
