勤怠と給与の突合をAIで自動化する手順|所定時間・打刻エラー・前月比較

勤怠と給与の突合をAIで自動化する手順|所定時間・打刻エラー・前月比較

在宅医療の事業所では、訪問、オンコール、夜勤、直行直帰が入り混じるため、打刻漏れや「予定と実績が合わない日」が毎月どこかで出ます。給与の締めのたびに勤怠と給与を突き合わせる作業は、事務長や労務担当にとって重い負担です。この記事では、クラウド勤怠と給与計算ソフトをAIエージェントの Claude Code に操作させ、所定時間のチェック、打刻エラーの抽出、給与ソフトへの登録と前月比較までを回す手順を、私の現場で実際に行っていることをもとに紹介します。労働時間と賃金のルールは厚生労働省の資料で確認できた範囲で書き、AIに任せる部分と人が確認する部分の線引きを具体的に示します。

この記事でわかること

  • 勤怠と給与の突合を「締め前」と「登録後」の2段に分ける理由と、作業の流れ図
  • 所定時間チェックと打刻エラー抽出の条件(表計算の式・疑似コードの例つき)
  • 給与ソフトへの登録後、前月比較で差の理由を確かめる観点
  • AIへの指示の書き方の例と、手順・落とし穴をファイルに残す方法
  • 落とし穴の例と、人が最終確認するポイント

勤怠と給与の突合を「締め前」と「登録後」の2段に分ける理由

厚生労働省の「労働時間の適正な把握のために使用者が講ずべき措置に関するガイドライン」(平成29年1月策定)は、使用者には労働時間を適正に把握する責務があるとしたうえで、労働日ごとの始業・終業時刻を確認し、記録することを求めています。確認の方法は、使用者が自ら現認するか、タイムカード、ICカード、パソコンの使用時間の記録などの客観的な記録を基礎とすることが原則です。単に1日何時間働いたかではなく、始業・終業の時刻をもとに労働時間を把握・確定させる、という考え方です。

同じガイドラインは、賃金台帳に労働者ごとの労働日数、労働時間数、休日労働・時間外労働・深夜労働の時間数を適正に記入することも求めています(労働基準法第108条、同法施行規則第54条)。また、労働基準法第24条は賃金の全額払いを原則とし、控除が認められるのは法令に別段の定めがある場合と労使協定がある場合です。つまり、勤怠の誤りはそのまま賃金の誤りになり、後から気づけば追加の支払いや精算、本人への説明が必要になります。

そこで突合を2段に分けます。

  • 締め前:勤怠データが「給与計算できる状態」かを確かめる(所定時間の説明がつくか、打刻エラーが残っていないか)。
  • 登録後:給与ソフトに入った結果が、勤怠と給与規程に合っているかを確かめる(前月比較で差の理由を確認する)。

前段で勤怠を固めておけば、後段では「規程どおりの変化か、設定や入力の誤りか」の判断に集中できます。打刻の外側に訪問記録やカルテの記載がないかを見る突合は在宅医療事務の効率化:Excel・RPA・API連携でできる突合と期限管理で、オンコールの待機や出動の扱いはオンコール待機は労働時間かで整理していますので、あわせて参照してください。

作業の流れ図:データ取得から確定までの7工程

①締め期間のデータ取得 → ②所定時間チェック → ③打刻エラーの抽出と問い合わせ → ④修正後の再取得・再チェック(例外がなくなるまで②③を繰り返す) → ⑤給与ソフトへの登録・再計算 → ⑥前月比較と差の理由の確認 → ⑦件数・金額の突合と人の承認

工程 AIにさせること 人がすること 次へ進む条件
①データ取得 勤怠のAPI(システム同士でデータを受け渡す窓口)から、締め期間の勤務予定(所定時間)、日別の実績、申請の状態を取得して職員ID順の表にする 締め期間と対象者(入職・退職・休職を含む)を指定する 対象者数が在籍名簿と一致
②所定時間チェック 所定時間と「実働+休暇+欠勤など」の差を計算し、説明がつかない職員を抽出 本人・所属長への確認が要るかを決める 全員の差が0か、理由が記入済み
③打刻エラー抽出 打刻なし・片打刻・休憩不足などを抽出し、問い合わせ文を下書き 文面と宛先を確認してから送信 全件に回答か申請がある
④再チェック 修正後のデータを取り直して②③を再実行 残った例外の扱いを決める 未解決の例外が0
⑤登録・再計算 登録内容の一覧を先に示し、承認後に給与ソフトへ登録して再計算 登録内容を確認して実行を指示 登録件数が対象者数と一致
⑥前月比較 職員×項目で前月・当月・差の表を作り、差のある行に印を付ける 差の理由を規程・辞令・申請で確認 差のある全行に理由と確認者
⑦確定 人数・総支給・控除の合計を元データと突き合わせて報告 最終承認 合計が一致

私の現場でも、ほぼこの順番で回しています。打刻エラーの洗い出しは締め前に、所定時間のチェックは給与計算に入る前に済ませ、給与ソフトへの登録は Web-API で行い、再計算のあとに前月との比較表で差の大きい人を確認しています。コツは、各工程の「次へ進む条件」を数で決めておくことです。AIに「終わりました」と報告させる前に、何と何が一致していれば終わりなのかを指示に書いておくと、確認漏れが起きにくくなります。

所定時間チェック:説明がつかない職員を抽出する

所定時間チェックは、締め期間の勤務予定で決まっている所定労働時間が、実績側の記録で全部説明できるかを見る検査です。所定内で働いた時間、有給休暇、特別休暇、欠勤、遅刻・早退を足すと、原則として所定時間と一致するはずです。一致しない職員には、打刻漏れ、休暇申請の未承認、欠勤の登録漏れなどがあり、このまま給与計算に進むと欠勤控除や休暇中の賃金が正しく出ません。

私の現場では、クラウド勤怠のAPIから締め期間の予定と実績を取り、所定に対して実働・有休・欠勤などで説明がつかない職員を抽出してから給与計算に進んでいます。

表計算の式と疑似コードの例

時間はすべて「分」の整数で持つと、小数の誤差で一致判定がずれるのを防げます。列は、A=職員ID、B=所定時間、C=所定内の実働、D=有休、E=特別休暇など、F=欠勤、G=遅刻・早退とします。

H2(説明済み): =SUM(C2:G2)
I2(差)      : =H2-B2
J2(判定)    : =IF(I2=0,"",IF(I2<0,"不足:打刻・申請を確認","超過:二重計上を確認"))

職員単位で差が出たら、同じ計算を日ごとに行い、どの日がずれているかまで出すと確認が早くなります。AIにスクリプトで処理させる場合は、次のような疑似コードで指示できます。

締め期間の対象職員ごとに:
    日ごとに:
        所定 = 勤務予定の所定時間(分)
        説明 = 所定内実働 + 有休 + 特別休暇 + 欠勤 + 遅刻早退(分)
        差   = 説明 - 所定
    差が0でない日があれば、職員ID・日付・内訳を一覧に追加
一覧を職員ID順に出力し、対象職員数と抽出件数を報告する

判定がずれやすいケース

パターン 状態 よくある原因 確認先
不足 説明済み<所定 打刻漏れ、休暇申請の未承認、欠勤の登録漏れ、災害などで一斉に休業した日の扱いが未入力 本人・所属長、休暇申請
超過 説明済み>所定 有休と出勤の重複、半休の二重計上、所定時間の設定ミス 勤怠の設定、申請履歴
予定外の勤務 所定0なのに実働あり 休日出勤、勤務予定の登録漏れ シフト表、所属長
実績ゼロ 所定あり・実績がすべて0 打刻なし(次章の打刻エラーとして扱う) 本人・所属長

半休や時間単位の年休は、「半日」を何時間とみなすかの規程と勤怠の設定が食い違っていると差が出ます。シフトで日ごとに所定時間が違う職場(変形労働時間制を採っている場合を含む)では、月の所定合計を固定値で持たず、その月の勤務予定から取ります。日をまたぐ夜勤は、どの日の勤務として集計されているかを先に確かめておくと、見かけ上の不足・超過に振り回されません。

打刻エラーの抽出と問い合わせ文の下書き

所定時間チェックと並行して、日単位の打刻エラーを抽出します。いちばん重要なのは、勤務予定日なのに打刻が一切なく、休暇・欠勤・遅刻早退の記録もない日です。出勤したのか休んだのかが記録から分からず、給与計算ができません。私の現場では、この「給与計算できない日」を締め前に洗い出し、チャットで送る問い合わせ文の下書きまでをAIに作らせています。送信は、人が文面と宛先を確認してから行います。

エラーの種類 抽出条件 主な原因 対応
打刻なし 勤務予定日で、出勤・退勤とも打刻がなく、休暇・欠勤の記録もない 打刻忘れ、休暇申請忘れ、直行直帰 本人・所属長に事実を確認し、申請で修正
片打刻 出勤のみ、または退勤のみ 押し忘れ、端末の不調 同上
日またぎ・順序の逆転 退勤が出勤より前、退勤が別の日に付いている 夜勤、オンコールの出動、打刻日の取り違え 打刻の生データと集計上の勤務日を並べて確認
休憩不足 労働時間が6時間超で休憩45分未満、8時間超で1時間未満 休憩が取れなかった、休憩打刻の漏れ 事実を確認し、業務の組み方も見直す
申請待ち 打刻修正・休暇の申請が未承認 承認者の処理待ち 承認者へ連絡(抽出結果は別欄に分ける)

休憩の基準は労働基準法第34条で、労働時間が6時間を超え8時間以下なら少なくとも45分、8時間を超えるなら少なくとも1時間とされています。申請待ちの日を「エラー」と混ぜると本人に不要な問い合わせが届くので、承認待ちは別欄にまとめて承認者に回します。

問い合わせ文は、相手が迷わず答えられる形にします。下書きの例です(○は実際の値に置き換えます)。

○○さん
○月○日(○)の勤務予定について、出勤・退勤の打刻が見当たりません。
次のどれに当たるか教えてください。
・出勤していた(出勤・退勤のおおよその時刻)
・休暇を取った(休暇の種類)
・その他(欠勤、勤務予定の変更など)
○月○日までに、打刻修正または休暇の申請をお願いします。

ここで大事なのは、AIに打刻そのものを書き換えさせないことです。ガイドラインが求めているのは事実に基づく確認と記録なので、修正は本人の申請と所属長の承認という通常の流れで行い、AIは「どこを確認すべきか」を示す役にとどめます。

給与ソフトへの登録と前月比較

勤怠が固まったら、給与計算ソフトに勤怠の結果(出勤日数、時間外・深夜・休日の時間数、欠勤・遅刻早退、有休など)と、その月に変わる支給・控除の項目を登録して再計算します。私の現場では給与ソフトの Web-API で登録し、再計算のあとに前月との比較表を作って差の大きい人を確認しています。手当(皆勤・夜勤・通勤費の上限など)に規程どおりの理由があるかを、一人ずつ見ます。

本番のデータに書き込む前には、何をどう変えるかの一覧をAIに出させ、人が確認してから実行させます。前月比較の表は「職員×項目」で作り、前月・当月・差・理由・確認者の列を持たせます。差が出たときに見る理由と資料の例は次のとおりです。

差が出た項目 規程どおりの理由の例 確認する資料
基本給・時給 昇給、雇用形態の変更、最低賃金の改定 辞令、雇用契約書
皆勤(精皆勤)手当 欠勤・遅刻の有無による支給・不支給 勤怠、給与規程
夜勤手当 夜勤回数の増減 勤務予定と実績
通勤手当 上限額、出勤日数による計算、転居 通勤の届出、給与規程
時間外・深夜・休日 時間数の増減、月60時間超の発生、単価の変動 勤怠の集計、割増の計算式
欠勤控除 欠勤日数・時間の増減 勤怠、規程の計算式
社会保険料・住民税 標準報酬月額や税額の変更 決定通知書など

時間外の単価が動く理由も確かめる

厚生労働省のQ&Aでは、割増賃金の計算の基礎から除外するのは、家族手当、通勤手当、別居手当、子女教育手当、住宅手当、臨時に支払われた賃金、1か月を超える期間ごとに支払われる賃金とされています。皆勤手当のように、これらに当たらない毎月の手当は基礎に含めるため、手当の有無や額が変わると時間外の単価も動きます。前月比較で単価に差が出たら、まず手当の変化で説明できるかを見ます。

また、1か月60時間を超える時間外労働の割増率は50%以上で、中小企業にも2023年4月1日から適用されています。厚生労働省のリーフレットでは、この60時間の算定に法定休日の労働時間は含めないが、それ以外の休日の労働時間は含めるとされています。60時間を超えた月だけ差が大きくなるので、理由欄に書けるよう、休日の労働時間を法定休日分とそれ以外の休日分に分けて出させておきます。

月給者の最低賃金も時間額で確かめる

最低賃金は時間額で決まっているため、月給の職員は「月給÷1か月平均所定労働時間≧最低賃金額(時間額)」で確認します。比べる月給からは、時間外・深夜などの割増賃金や、精皆勤手当、通勤手当、家族手当などを除きます(厚生労働省「最低賃金額以上かどうかを確認する方法」)。最低賃金が改定された月は、時給者だけでなく月給者もこの式でまとめて計算させると、見落としを防げます。

=IF((基本給+算入する手当)/月平均所定労働時間>=最低賃金額,"","最低賃金を確認")

AIへの指示の書き方と、手順・落とし穴の残し方

AIへの指示は、「目的」「入力」「判定の条件」「出力」「してはいけないこと」「完了の条件」の6つを書くと、結果のぶれが小さくなります。締め前のチェックを頼むときの例です(○は実際の値に置き換えます)。

【目的】○月度(○月○日〜○月○日締め)の給与計算に入る前に、勤怠の不整合を洗い出す。
【入力】クラウド勤怠のAPIから、締め期間の勤務予定(所定時間)、日別実績、申請の状態を取得する。
【判定1】職員ごと・日ごとに「所定内実働+有休+特別休暇+欠勤+遅刻早退」を分で合計し、所定時間と一致しないものを抽出する。
【判定2】勤務予定日なのに打刻がなく、休暇・欠勤の記録もない日を抽出する。未承認の申請がある日は別欄に分ける。
【出力】職員ID順の一覧(表計算ファイル)と、所属長あての問い合わせ文の下書き(箇条書き)。
【禁止】打刻・勤怠データの修正、チャットの送信はしない。
【完了条件】対象職員数・取得した日数・抽出件数を示し、元データと件数が合っていることを確認してから報告する。

判定の条件は「おかしいものを探して」ではなく、式で書けるところまで具体的にします。出力の形を固定しておくと、毎月の結果を同じ目線で比べられます。

手順はファイルに残して毎回読ませる

Claude Code は、Anthropic が提供するAIエージェントで、ターミナルなどで動き、ファイルの読み書きやコマンドの実行ができます。公式ドキュメントによると、セッションの開始時に毎回読み込まれる指示ファイル(CLAUDE.md)と、作業中の指摘や好みからClaude自身が書きためるメモ(auto memory)の2つの仕組みで、セッションをまたいで知識を持ち越せます。メモは普通のMarkdownファイルなので、人が読んで直したり消したりできます。繰り返す作業は「スキル」(SKILL.md に手順を書き、スクリプトなどの補助ファイルを同じフォルダに置いたもの)にして、「/スキル名」で呼び出せます。

私の現場でも、手順や気づいた落とし穴をメモとしてファイルに残し、次回以降の作業で読ませています。繰り返す作業はスキルにして、名前で呼び出せるようにしています。前の月に気づいた落とし穴を、次の月に同じ形で踏まないためです。

公式ドキュメントでは、CLAUDE.md やメモは「文脈」として扱われ、強制される設定ではないと説明されています。給与ソフトへの書き込みのように確実に止めたい操作は、権限の設定で縛ります。Claude Code の既定のモードはツールの初回使用時に承認を求め、読み取りと調査だけで編集はしない「プランモード」もあります。許可・確認・拒否のルールは「拒否→確認→許可」の順に評価されます。副作用のある作業のスキルは、AIが自動では呼び出さない設定(disable-model-invocation)にしておくと安心です。

落とし穴の例と、人が最終確認するポイント

実際に気づいた落とし穴

私の現場で実際に気づいた落とし穴には、次のようなものがあります。いずれもメモに残し、次回以降の作業で読ませています。

  • 再計算で手入力した項目が消える:給与計算ソフトで再計算をかけると、手で入力した項目が消えることがありました。
  • 項目マスタの開始日:支給・控除の項目のマスタは、開始日を前月中にしておかないと当月の計算に反映されませんでした。
  • 翌朝の退勤打刻が前日に吸い寄せられる:翌朝に退勤した打刻が、前日の勤務の記録に吸い寄せられることがありました。

対策としては、手入力の項目は再計算のあとに入れる順番を手順書に書き、再計算後に手入力分の一覧と照合させる、項目を新しく設けた月は当月の明細にその項目が出ているかを確認させる、日をまたぐ勤務は打刻の生データの日時と集計上の勤務日を並べて確認させる、といった方法があります。

法令の面から気を付けたい設定

都道府県労働局・労働基準監督署のリーフレット(令和6年9月、厚生労働省ウェブサイト掲載)では、1日ごとに一定時間に満たない労働時間を一律に切り捨て、その分の賃金を支払わないことは労働基準法違反とされ、勤怠システムの端数処理機能で1日の時間外のうち15分に満たない時間を切り捨てていた例が挙げられています。勤怠の丸め設定は、AIに設定内容を一覧にさせ、定期的に見直すとよいでしょう。取得期間と締め期間のずれや、入職・退職者の漏れといった取得側の誤りに備え、対象者数の照合も毎回の手順に入れます。

人が最終確認するチェックリスト

  • □ 対象者数(在籍・入職・退職・休職)が、勤怠と給与ソフトで一致している
  • □ 所定時間チェックと打刻エラーの例外が0か、残った例外すべてに理由と確認者が書かれている
  • □ 打刻の修正は、本人の申請と所属長の承認で行われている(AIが書き換えていない)
  • □ 給与ソフトへの書き込み内容を、実行前に一覧で確認した
  • □ 前月比較で差のある行すべてに、規程どおりの理由が書かれている
  • □ 人数・総支給・控除の合計が、元データと一致している
  • □ 問い合わせの送信や振込など外に出る操作は、人が確認してから実行した

私の現場では、AIに任せるときの作法として次のことを決めています。本番システムに書き込む前に、何をどう変えるかを確認してから実行させる。テストで本番データを触る場合は、後片付けの手順を先に読ませる。「完了しました」と報告させる前に、元データと結果を突き合わせて件数・金額が合っているかを確認させる。メールやチャットの送信、振込など外に出る操作は下書きまでにして、最後は人が実行する。動いている表計算ソフトを勝手に強制終了させない。職員情報は院内の端末とシステムの中で扱い、外部のWebサービスに貼り付けない。

よくある質問

Q. 給与計算そのものをAIに任せてもよいですか。

A. 計算は給与計算ソフトに任せ、AIにはデータの受け渡し、突合、差の抽出と説明の下書きを任せる分担をおすすめします。何をどう登録するかの確認、例外の判断、最終の承認は人が行います。ソフトの計算結果を検算する目的で、AIに一部の職員を別に計算させるのは有効です。

Q. 勤怠や給与のソフトにAPIがない場合はどうしますか。

A. CSVなどで出力したデータを突合するところから始められます。私の現場では、APIがあるシステムはAPIで、ないシステムはブラウザの自動操作(Playwright)で扱っています。画面の自動操作は画面の変更で止まることがあるため、取得件数の確認を必ず手順に入れます。

Q. 打刻を15分単位で丸める設定にしてもよいですか。

A. 前述のとおり、1日ごとの一律の切り捨ては認められません。一方で、同じリーフレットでは、1か月の時間外・休日・深夜それぞれの合計に1時間未満の端数がある場合に、30分未満を切り捨て、30分以上を1時間に切り上げる処理は、事務を簡便にする目的のものとして認められています。1日の労働時間の端数を切り上げて支払うことは問題ありません。

Q. 前月比較の「差が大きい」は、いくらを基準にすればよいですか。

A. 金額で一律に線を引くより、項目の性質で分けるほうが確実です。基本給や通勤手当のように毎月同じはずの項目は、差が0でなければすべて確認します。時間外や夜勤手当のように変動する項目は、金額ではなく勤怠の時間数・回数と合っているかで確認します。

Q. 職員の個人情報をAIに扱わせても大丈夫ですか。

A. 院内の情報管理の規程や、使うサービスの利用条件を確認したうえで、扱う場所を決めることが前提です。私の現場では、職員情報は院内の端末とシステムの中で扱い、外部のWebサービスに貼り付けない運用にしています。Claude Code では、読めるファイルやフォルダ、実行できる操作を権限のルールで絞ることもできます。

まとめ

勤怠と給与の突合は、締め前に「勤怠が給与計算できる状態か」を、登録後に「結果が勤怠と規程に合っているか」を確かめる2段に分けると、AIに任せやすくなります。所定時間のチェックは「所定=実働+休暇+欠勤など」が成り立つかを分単位で見る。打刻エラーは勤務予定日の打刻なしを最優先に抽出し、問い合わせ文まで下書きさせる。給与ソフトへの登録は書き込む内容を先に確認し、再計算後の前月比較で差に理由を付ける。指示には判定の条件と完了の条件を数で書き、気づいた落とし穴はファイルに残して次の作業で読ませます。打刻の修正、外部への送信、最終の承認は人が行う、という線引きを最初に決めておくと、安心して自動化の範囲を広げられます。

参考資料

本記事は2026年10月時点で公表されている資料をもとに作成しています。算定の可否は個別の状況で異なるため、最終的には告示・通知・疑義解釈や、管轄の地方厚生局・保険者にご確認ください。