SaaSの棚卸しをClaudeで進める手順 — 請求データとSSO利用ログの突合
経費・カード明細のSaaS請求とSSOの利用ログCSVをClaudeで突き合わせ、未把握の契約・使われていないライセンス・重複ツールを判定表にする手順です。
SaaSの棚卸しは、請求の側と利用の側を並べて初めて形になります。経費・カード明細から抜いたSaaS請求と、SSOの利用ログCSVをClaudeに渡せば、突合と判定列の付与までを会話の中で進められます。残る仕事は、名寄せの確定と判定結果の確認だけです。
この記事では、2つのCSVを渡す前の整え方、名寄せ表を先に作る進め方、検算の掛け方、判定表の使い方を順に見ます。
請求とログを並べると何が分かるか
突合の考え方は単純です。「お金を払っているか」と「実際にサインインされているか」の2軸で、契約を4つに分けます。
| 請求 | SSOログ | 読み取れること | 次の一手 |
|---|---|---|---|
| あり | SSOログあり | 読み取れること利用中の契約 | 次の一手席数と実利用者数を比べる |
| あり | SSOログなし | 読み取れること使われていない可能性 | 次の一手SSO外のログインがないか担当に聞く |
| なし | SSOログあり | 読み取れること払い元が不明、または無償利用 | 次の一手名寄せの失敗か、他部署払いかを確かめる |
| なし | SSOログなし | 読み取れることこの方法では見えない | 次の一手別の入口が要る |
「請求あり・ログなし」は、解約候補と決めつけられません。SSOを通さず、個別のIDとパスワードで入っているアプリは、ログに一度も現れないからです。
最後の行にも注意が要ります。個人カードで払われ、SSOにも載らないアプリは、この突合では見つかりません。経費精算のデータを請求側に足すか、アプリの連携状況を一覧で見るかなど、入口を変える必要があります。Claudeと各SaaSの接続を情シス側から整理したClaude SaaS連携ガイドは、その入口の一つを扱っています。
重複ツールは、2つのCSVだけでは決まりません。「チャットが3つ使われている」という判断には、アプリごとのカテゴリ列が必要です。カテゴリは人が付けるか、Claudeに案を出させて人が直します。
渡す前に2つのCSVを整える
Claudeに任せる前に、2つのファイルの形をそろえます。ここを雑にすると、後の名寄せで手戻りが増えます。
請求側に持たせたい列
カード明細や経費データからSaaSらしい行を抜き、次の程度の列に絞ります。
| 列 | 内容 |
|---|---|
| 支払日 | 内容引き落とし日 |
| 支払先(明細表記) | 内容明細に載った文字列のまま |
| 金額 | 内容税込・税抜のどちらかに統一 |
| 支払い手段 | 内容法人カード・請求書払いなど |
| 申請部署 | 内容経費申請にあれば |
支払先は、整形せず明細の文字列のまま残します。明細の表記はカード会社や決済代行によって違い、サービス名と一致しないことが多いためです。Claudeに「正しい名前」を推測させるより、元の文字列を渡して対応表を作らせるほうが追いやすくなります。
ログ側に持たせたい列
SSOの管理画面からエクスポートしたCSVは、IdP(IDプロバイダー)によって列名が違います。固定の形はありません。次の3種類の情報が含まれていれば足ります。
- アプリ名
- ユーザーを識別する値(メールアドレスより社員IDのほうが、渡す情報が少なく済みます)
- サインインの日時
渡さない列を先に決める
カード番号の全桁、従業員の氏名、明細の摘要欄に書かれた個人名など、突合に要らない列は渡す前に消します。突合に必要なのは「どのSaaSに、いくら払ったか」と「誰が、いつ、どのアプリに入ったか」だけです。利用者の識別は、社員IDやハッシュ化した値でも成立します。
次のような形が最小の例です。値はすべて架空です。
# billing.csv
paid_on,payee_raw,amount_jpy,method,dept
2026-09-01,EXAMPLE-CHAT*SUB,48000,corp_card,情報システム
2026-09-03,ACME DESIGN,36000,invoice,デザイン
2026-09-05,PM-TOOL INC,120000,corp_card,開発
# sso_signins.csv
app_name,user_id,signed_in_at
Example Chat,E1024,2026-09-30 09:12
Example Chat,E2201,2026-09-29 18:40
Acme Design,E3310,2026-07-02 11:05請求側の「EXAMPLE-CHAT*SUB」とログ側の「Example Chat」が同じサービスであることは、人間なら分かります。ですが機械的な一致では拾えません。次の節の名寄せ表が、この溝を埋めます。
Claudeに渡せる形式と上限
2つのCSVは、チャットに直接アップロードできます。アップロードできる文書形式にはCSVとXLSXが含まれます。ただしXLSXは、アカウントでコード実行とファイル作成を有効にしていないとアップロードできません。
上限は、2つのヘルプ記事で数字が分かれています。
ファイルの上限として載っている数字
チャットへのアップロード
1ファイル500MBまで、1チャットあたり最大20ファイルです。
コード実行とファイル作成
アップロードもダウンロードも1ファイル30MBまでと書かれています。
プロジェクトのファイル
1ファイル30MBまでです。内容はテキスト抽出のみで、全体がコンテキストウィンドウに収まる必要があります。
請求CSVは、12か月分でも数MBに収まるのが普通です。ログは件数が多いので、30MBを基準にして月ごとに分けておくと安全です。ヘルプにも、大きなファイルは小さく分けるよう書かれています。
プロジェクトに置く場合は、抽出されるのがテキストだけである点を覚えておいてください。棚卸しのような一度きりの突合は、チャットに直接アップロードして、コード実行で処理させる使い方が向きます。
名寄せ表を先に作る
突合の成否は、請求側の「支払先」とログ側の「アプリ名」を結ぶ対応表で決まります。この表を、突合より前に独立して作ります。
棚卸しの進め方
- 1
名寄せ表の案を作らせる
2つのCSVを渡し、請求側の支払先とログ側のアプリ名の対応候補を一覧にさせます。自信がない行には印を付けさせます。
- 2
人が対応表を確定する
印の付いた行と、対応が見つからなかった行を人が埋めます。確定した表をCSVとして保存します。
- 3
確定表を使って突合する
確定した対応表を渡し、請求とログをアプリ単位で結合して判定列を付けさせます。
- 4
検算してから読む
行数と金額の合計を照合し、合わない行を洗い出します。
1つ目の指示は、次のように書きます。
添付の billing.csv と sso_signins.csv を使います。
billing.csv の payee_raw と、sso_signins.csv の app_name を結ぶ
対応表を作ってください。
- 出力は列「payee_raw / app_name / 確度(高・中・低) / 根拠」の表
- 根拠が明細の文字列の類似だけなら、確度は「中」以下にする
- 対応が見つからない payee_raw と app_name は、別の表に分けて出す
- 推測で埋めずに「不明」と書く確度の列を持たせるのが要点です。Claudeの案をそのまま採用せず、「中」と「低」の行だけを人が見る分担にできます。「不明」と書かせる指示は、存在しない対応を作らせないための保険です。
突合して判定列を付ける
対応表が固まったら、結合と判定を依頼します。
確定した name_map.csv で、請求とログをアプリ単位に結合してください。
直近90日のサインインがある人数を app ごとに数えます。
出力列:
app / 年間支払額 / 直近90日のサインイン人数 / 判定
判定の値は次の4つだけ使ってください。
- 利用中(請求あり・ログあり)
- 要確認:ログなし(請求あり・ログなし)
- 要確認:請求なし(請求なし・ログあり)
- 対応表に無し
計算に使ったコードも見せてください。90日は例です。更新の周期や、四半期でしか使わない業務の有無に合わせて、組織で決めてください。年次の申請にしか使わないアプリは、90日では「使われていない」側に寄って見えます。
「計算に使ったコードも見せてください」と付けると、結合の条件と集計の切り方を後から読めます。コード実行とファイル作成は、ヘルプによるとFree・Pro・Max・Team・Enterpriseの全プランで使えます。Free・Pro・Maxでは既定で有効です。TeamとEnterpriseは、組織の管理者が設定画面で無効にできます。無効なら、この手順のコード実行を使った突合は使えません。
検算で見るところ
判定表はそのまま信用せず、次の3点を確かめます。Claudeに頼んでもよく、表計算ソフトで数えても構いません。
- 請求CSVの行数と、判定表に反映された行数が一致するか
- 請求の年間合計と、判定別に合計した金額が一致するか
- 「対応表に無し」の行が、想定より多すぎないか
3番目の数が大きいなら、名寄せが追いついていません。突合そのものを疑う前に、対応表に戻ります。
検算をしてください。
1. billing.csv の行数と、判定表に反映された請求行の数
2. billing.csv の amount_jpy の合計と、判定ごとの合計額の和
3. 判定が「対応表に無し」の行の一覧
合わない場合は、差が出ている行を示してください。数字が合っているかを、Claudeが出した説明だけで判断しないでください。合計は、手元の表計算ソフトでも出して見比べます。
外部のファイルに仕込まれた指示への備え
請求データの摘要欄や取引先名は、社外の人が書いた文字列です。ヘルプには、外部のファイルやウェブサイトにこっそり指示を仕込まれ、Claudeが騙される可能性があると書かれています。コード実行の環境からデータを外へ送らされる経路も、リスクとして挙げられています。
TeamとEnterpriseの管理者は、ネットワーク外部送信の設定を組織の設定画面から選べます。Enterpriseの新規組織では、既定でオフです。Teamの既定は、同じヘルプ記事の中で記述が割れています。冒頭の可用性の説明ではオフ、設定手順の節ではパッケージ管理ツールのみ許可です。管理画面で実際の設定を確かめてください。棚卸しの突合は、外部に出る必要がない作業です。外部送信をオフのまま実行できます。
ただし、MCP連携を有効にしている場合は、外部送信の設定にかかわらず、その接続を通じた通信が可能なままです。ヘルプは、MCPの設定を別に評価するよう求めています。突合の会話では、不要なコネクタを外しておくのが無難です。
データの取り扱いの面では、SaaSの利用規約とDPAをClaudeで審査する手順が、渡す情報の確認点をまとめています。組織のデータの帰属を知りたいときは、Claude組織のデータ所有権の整理が参考になります。
判定表を契約の見直しにつなげる
判定表ができたら、「要確認」の行を担当部署に質問に変えます。
- 要確認:ログなし — 「SSO以外のログイン方法を使っていますか」「誰が使っていますか」
- 要確認:請求なし — 「どの予算で、どの契約で使っていますか」
- 重複の疑い — 「同じ用途のツールを併用している理由はありますか」
更新前の価格調査には、ClaudeとVendrの連携やClaudeとTropicの連携が使えます。棚卸しで見つけた契約を、更新の前に相場と比べる流れです。
なお、ここでいう「ログ」は、SSOに記録されたアプリへのサインインです。ClaudeそのもののチャットやAPIの記録は別物で、閲覧範囲の決まり方はClaudeの利用ログの閲覧範囲が扱っています。
よくあるつまずき
対応表に無しの行が多すぎる
支払先の文字列が、明細の表記ゆれで割れている可能性があります。同じサービスが複数の文字列で入っていないか、請求側を支払先ごとに集計してから見直してください。
ログがあるのに「ログなし」と判定される
アプリ名の表記が、IdPのエクスポートと対応表で食い違っている場合があります。スペースや大文字小文字の違いも原因になります。対応表のアプリ名は、ログ側の文字列をそのまま使ってください。
XLSXがアップロードできない
XLSXはコード実行とファイル作成が有効でないと扱えません。TeamやEnterpriseでは管理者の設定が前提です。無効なら、CSVに保存し直して渡します。
ログの件数が多くて上限に迫る
月ごとに分けるか、必要な列とアプリだけに絞って渡します。1チャットに置けるのは最大20ファイルです。
結果が毎回少しずつ違う
同じ指示でも、集計の切り方が変わることがあります。判定ルールを文章で固定し、計算コードを残しておけば、翌四半期に同じ手順を再現しやすくなります。
まとめ
請求とSSOログの突合は、Claudeに結合と集計を任せ、名寄せと判定の確認を人が持つ分担で進めると安定します。先に名寄せ表を確定し、検算を掛けてから読む。この順序が、手戻りを減らします。突合で見えないもの、つまりSSOに載らず個人カードで払われた契約は、別の入口で拾う前提にしてください。