案件の利益率管理を自動化する|n8n × AIで請求→売上→外注費→工数→利益率を一気通貫でフロー化

受注は伸びているのに利益が残らない。月末のExcel集計で初めて赤字案件が発覚し、そのときには打ち手がない——売上・外注費・工数・案件情報が別々のシステムに散在するからだ。freee・kintone・スプレッドシートを「案件」をキーに n8n × AI で自動連携し、利益率をリアルタイムに可視化する。Excel転記地獄を解消し、月末を待たない「待たない経営判断」へ。

本記事の要点

はてなベースでは、freeeの請求書をkintoneへ同期しています。本稿では、この同期を案件別の採算管理へ広げる拡張案を示します。

案件ごとの利益率を把握するために必要なデータ

n8nワークフロー管理画面 — 25ワークフローが稼働中
はてなベースで使用しているn8nのワークフロー一覧です。

たとえば、freeeに請求データ、kintoneに案件情報、Googleスプレッドシートに工数記録があると、案件ごとの照合に時間がかかります。月末にExcelで集計し、翌月の第2週に数字がそろう運用では、追加要件や手戻りで増えた費用に気づいても、完了済みの作業は減らせません。

Excelへの転記と月末集計の負担

請求書から売上への転記が手作業

freeeで発行した請求書をExcelやスプレッドシートへ転記する時間は、件数と処理時間から試算できます。仮に月50件、1件あたり3分なら、月150分、年間約30時間です。

外注費の反映が売上より遅れる

たとえば4月完了の案件で売上を4月に計上しても、外注先の請求書が5月中旬に届き、経理処理にさらに1〜2週間かかるとします。外注費の登録までは利益が高く見え、登録後に急落します。

工数の記録漏れと後付け入力

金曜の夕方に1週間分を思い出して工数を入力する運用では、案件への配分が曖昧になります。案件Aに30時間と記録していても、そのうち10時間が案件Bの作業なら、両案件の人件費原価がずれます。

月次締めのたびに経理と営業が突き合わせ作業

月次締めでは、経理と営業やプロジェクトマネージャーが外注費と工数を突き合わせます。請求書の転記結果が合っていても、案件への割り当てが違えば差異は残ります。

月末集計に使っている時間

部門間の突き合わせを月10〜15時間と仮定すると、12か月で年間120〜180時間になります。

n8nでサービス間の連携処理を組む

n8nは、クラウドサービスやデータベースをノードと呼ぶ処理部品でつなぐ自動化ツールです。自社サーバーで動かすセルフホストも選べます。この構成では、n8nからfreeeとkintoneのAPIへ通信します。

freeeとkintoneへの接続にはHTTP Requestノードを使います。取得したデータの集計はCodeノードに置き、費目分類や報告文の生成を追加するときはAI関連ノードを組み合わせる構成です。

はてなベースのn8n運用実績

はてなベースでは、自社環境で25本のワークフローを日常業務に使用しています。請求書同期は1時間ごとの実行設定で、取引先マスタも同期しています。

はてなベースでは、一部のフローをZapierからn8nへ移しました。

採算管理に拡張するフローの全体像

前受けや分割請求では、請求書の発行日と売上計上日がずれます。請求書情報の同期と、利益率に使う売上計上額の管理は分けます。

  1. 請求書をfreeeで発行します。
  2. 請求書情報の同期先はkintoneです。
  3. 外注費をfreeeから取得し、kintoneへ反映します。
  4. 日報の工数は案件IDごとにまとめます。
  5. 利益率は計上済み売上と原価から求めます。
  6. 計算結果をkintoneに表示し、Slackへ通知します。

毎時の処理と日次の処理は、別のワークフローに分けます。

freee→kintone 請求書同期フロー — 毎時実行トリガーからSlack通知まで
請求書同期の本番フローです。freeeからkintoneへ同期し、Slackへ処理結果を通知します。

売上・外注費は毎時、工数は日次で更新する設計です。各データの最終更新時刻を画面に表示します。

請求書同期の仕組みと採算管理の拡張設計

1〜2. freeeの請求書をkintoneに同期する

請求書同期はSchedule Triggerで起動します。HTTP Requestノードからfreee請求書APIを呼び、案件名、金額、取引先、発行日、入金予定日を取得し、kintone REST API経由で案件管理アプリに反映する流れです。採算管理への拡張では、同期した請求額とは別に計上済みの売上を参照します。

請求書のメモ欄にkintoneの案件IDを記載し、既存レコードと対応させます。拡張案では、IDの誤記や対応先を一意に決められない請求書は確認待ちにします。取得額を案件合計へ直接足さず、事業所ID・伝票ID・明細IDを保存して明細から再集計します。同じ請求書の再取得による二重加算を避けるためです。

3. 外注費を取得し、案件に対応させる

外注費はfreee会計の支出取引から取得する設計です。取引先は名称の表記揺れや変更に影響されないよう、取引先IDで識別します。案件への割り当てには案件IDを使い、複数案件にまたがる明細には案件ごとの配賦額と根拠を残します。

単一案件の支出取引では、freee会計APIの管理番号(ref_number)に案件IDを格納します。請求書が届く前の外注費は発注額や検収額から見込み、確定額の登録時に置き換えます。管理用の見込額と会計上の計上額は分けて保持する設計です。

4. 工数を集計して人件費原価に換算する

工数の記録元はkintoneの日報アプリかfreee工数管理の一方に決め、日次で集約します。案件IDごとに作業時間を再集計して上書きする方式を採ります。未入力をゼロ時間として扱うと原価が少なく見えるため、提出率を併記します。

Codeノードで作業時間に職種別の原価単価を掛け、人件費原価を求めます。仮の単価は1時間あたりシニアエンジニア5,000円、ジュニア3,000円、プロジェクトマネージャー6,000円です。実際の単価は年間の給与・法定福利費などを年間の案件従事可能時間で割って算出します。kintoneの単価マスタには適用開始日を持たせます。

5. 案件の利益率を計算する

計算例では、売上から外注費と社内の人件費原価を引いた案件管理用の粗利を使います。金額は税抜・円建てで、売上・原価・工数は案件開始から同じ基準日までの累計とします。クラウド費や旅費を含める案件ではそれらも原価に加え、売上ゼロの案件は利益率の代わりに原価額を表示します。

利益率の計算方法

案件粗利=売上−外注費−人件費原価とし、利益率(%)=案件粗利÷売上×100で求めます。売上500万円、外注費150万円、社内工数200時間、原価単価4,000円/時間なら、人件費原価は80万円、案件粗利は270万円、利益率は54%になります。

計上済みの金額による実績利益率と、完了時の予測利益率を分けて扱います。完了時予測利益率は「(最終売上見込−発生済み原価−残作業原価見込)÷最終売上見込×100」です。発生済みで未請求の外注費は予測側の発生済み原価に含め、まだ発生していない費用は残作業原価見込に置きます。

6. kintoneに表示し、Slackに通知する

計算結果はkintoneの案件管理アプリへ書き戻し、一覧や標準グラフで表示します。案件名、売上、外注費、人件費原価、利益率を並べると、採算を圧迫している費用を追えます。

通知の例では、売上・外注費・工数の対象期間を同じ基準日までにそろえて日次で集計し、完了時予測利益率が20%未満の案件をSlackへ送り、「案件〇〇の完了時予測利益率は18%です」と伝えます。判定には表示用に丸める前の値を使います。20%は仮の警戒水準で、本番の閾値は販管費と必要利益を踏まえて決めます。

費目分類・報告でのAIの役割とCodeノードによる異常検知

外れ値の判定はCodeノードで行います。

請求書からの費目自動分類

費目分類では、外注先などから受け取った請求書の明細と過去の分類例をAIへ渡します。「ウェブサイトデザイン制作 一式 350,000円」なら、管理用の分類「外注費」を候補にする使い方です。案件の特定は案件IDや発注番号で行います。会計上の勘定科目とは分け、外注費、仕入、交通費、その他経費を重複しない区分として定義します。

修正済みの分類例を検索して入力に添え、出力を許可した分類値に限定します。該当しない候補は経理担当者の確認待ちにする設計です。採用判断には、誤分類した明細の金額を使います。参照例の改善に使うデータと評価用のデータは時系列で分けます。

異常値検知による早期アラート

外注費比率の外れ値を探す候補には、四分位範囲(IQR)を使う方法があります。案件規模・契約形態・進捗をそろえ、Codeノードで第3四分位数にIQRの1.5倍を足した値を上回る案件を抽出します。この判定は外注費の内訳を調べるきっかけにします。過去案件で評価するときも、判定日の時点で分かっていた費用と進捗を使う方針です。

予定工数と実績の差を週次で報告する

担当者が更新した残タスクの見積もりを実績工数に足して、完了時の総工数を求めます。想定80時間、4週目の実績70時間、残タスク40時間なら、最終見込は110時間です。AIにはこの差を報告文にまとめさせます。

想定比は110時間÷80時間×100=137.5%で、小数部分を切り捨てた目安では約137%です。

追加機能は確認・修正時間まで測る

担当者の修正時間とモデル利用料・運用費まで含めて、手作業を続ける場合と比べます。

作業時間の試算と拡張後の更新頻度

下表の時間は月50件の請求書を扱う場合の試算の仮定、更新頻度は拡張案の設定です。外注費はfreeeへの登録後に同期するため、請求書の到着待ちや経理入力の時間は残ります。

項目手作業の試算条件拡張案の処理・試算条件
案件別の売上集計月末にExcelで手動集計(3〜5時間)1時間ごとにkintoneへ同期
外注費の登録と案件台帳への反映請求書到着後に経理が手入力(1〜2週間の遅延)freee登録後、1時間ごとに同期
利益率把握月次決算後に判明(翌月第2週)売上・外注費は毎時、工数は日次更新
低利益率案件の検知月末に判明。残作業の変更余地が限られる日次の集計時点で完了時予測利益率20%未満ならSlack通知
集計作業時間月17.5〜25.5時間。転記2.5時間、照合2〜3時間、売上集計3〜5時間、突き合わせ10〜15時間月約30分のフロー確認。障害対応・例外処理は別

上表の月17.5〜25.5時間からフロー確認の月0.5時間を引き、12か月分に換算した単純差は年間204〜300時間です。

進行中の案件では、残作業に対してまだ変更できる費用に着目します。費用の内訳によって、打てる手が変わります。

  • 外注先との価格交渉では、残る発注額を見直します。
  • 作業範囲の見直しでは、残タスクを絞ります。
  • 社内担当者への切り替えでは、外注費と追加の人件費原価を比べます。

作業時間を比べる際は、定期的なフロー確認に、障害対応、例外処理、未入力の催促、残工数の更新を加えて集計します。

導入時の確認と実装の順序

拡張フローの受入試験では、同じ請求書の再取得、金額訂正、取消、途中失敗後の再実行、日報の修正を試します。見るのは、取得元の明細と案件合計の一致です。

運用には認証更新、APIのページ分割、取得制限への再試行、失敗通知を組み込みます。実行ログには件数と失敗率に加えて、同期後の金額差を残す設計です。正常終了した実行でも、集計漏れがあれば金額差から追えます。

AIによる費目分類は、外注費の見込額と請求明細との対応を決めた後に加えます。

参考資料はJUASの企業IT動向調査2024です。

利益率管理の自動化、一緒に始めませんか

はてなベースでは、n8n × AI を活用した業務フロー自動化の設計・導入を支援しています。AIエージェント組み込みサポート(請求書の費目自動分類、異常値検知、週次レポート生成など、業務フローへのAIエージェント導入を設計から実装まで支援)、データ基盤の整備(freee・kintone・Google Workspaceに散在するデータを一元化し、利益率の随時確認やAI活用に使える状態へ整える)、オンプレミスAI(自社で管理するサーバーなどで動かすAI)導入支援(財務データを社外に出したくない企業向けに、セルフホストのn8n環境構築やオンプレミスでの生成AI導入を支援)の3つを支援します。

無料相談はこちら