Claude Media
SaaSの棚卸しをClaudeで進める手順 — 請求データとSSO利用ログの突合

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. 1

    名寄せ表の案を作らせる

    2つのCSVを渡し、請求側の支払先とログ側のアプリ名の対応候補を一覧にさせます。自信がない行には印を付けさせます。

  2. 2

    人が対応表を確定する

    印の付いた行と、対応が見つからなかった行を人が埋めます。確定した表をCSVとして保存します。

  3. 3

    確定表を使って突合する

    確定した対応表を渡し、請求とログをアプリ単位で結合して判定列を付けさせます。

  4. 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に頼んでもよく、表計算ソフトで数えても構いません。

  1. 請求CSVの行数と、判定表に反映された行数が一致するか
  2. 請求の年間合計と、判定別に合計した金額が一致するか
  3. 「対応表に無し」の行が、想定より多すぎないか

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に載らず個人カードで払われた契約は、別の入口で拾う前提にしてください。

この記事を共有:XはてブLinkedIn