中級向け

freee の見積書を自動で下書き

見積の依頼メールが届くと、freee に見積書が「送付待ち」でできています。担当者は、確かめて freee から送るだけです。

AI は、依頼文から品目と数量を読むだけで、値段は決めません。単価は、価格表からコードが入れます。

価格表にない品目や、依頼文に書かれていない数量は、値段なしの「※要確認」の行で残ります。

人の手間は、どう変わるか

Before(人が手でやっていたこと)

  • 依頼メールを読みながら、freee の見積書の画面に、品目と数量を打ち直す
  • 品目ごとに、価格表を開いて単価を探す
  • 価格表にない品目は、確認してから書き足す

After(このワークフローを入れると)

  • 依頼メールが届くと、freee に見積書が「送付待ち」でできている
  • 単価と税率は価格表から入り、AI は値段を決めない
  • 価格表にない品目や、書かれていない数量は「※要確認」の行で残る

それでも人に残ること

  • 見積書を開いて、要確認の行に値段を入れる
  • 中身を確かめてから、freee から送る

動作確認: — n8n 2.36.8 / Claude Haiku 4.5 / freee請求書 API(開発用テスト事業所、法人・スターター) / Gmail / Google スプレッドシート

見積書は freee で作っている。でも、依頼はメールで届く。メールを読みながら、freee の画面に品目と数量を打ち直し、価格表を開いて単価を探している人に向けて書いています。

先に結論です。

  • 依頼メールが届くと、freee に見積書が「送付待ち」でできます。 お客様には、まだ何も届きません。担当者が確かめて、freee からいつもどおり送ります
  • AI に値段を決めさせません。 AI(Claude)は、依頼文から品目と数量を読むだけです。単価と税率は、価格表のスプレッドシートからコードが入れます
  • 分からないものは、値段を付けずに残します。 価格表にない品目や、依頼文に書かれていない数量は、「※要確認」の行になります

freee の無料の開発用テスト事業所で5件試し、freee が計算した金額と、ワークフローが自分で計算した金額は、毎回一致しました。

このワークフローは、n8n 公式テンプレートに提出しました(2026年10月24日、審査中)。

約20秒の動画(音声あり。音声:VOICEVOX:雨晴はう)

quote-request-to-freee-ja.json をダウンロード(日本語版)(ノードの名前、付箋、フォーム、お知らせの文面が日本語です)

英語版(n8n に提出したものと同じファイル):quote-request-to-freee.json

freee請求書の見積書の一覧の画面。株式会社テスト商事あての見積書が4件(Q-0000000002 から Q-0000000005。金額は 319,000円、78,100円、214,500円、52,250円)と、最初の試験の [demo]株式会社freee企画あての1件(231,000円)が並び、どれも送付ステータスが「送付待ち」、社内メモに「Made by n8n」と入っている。
freee の見積書の一覧。ワークフローが作った見積書は、どれも「送付待ち」(テスト事業所。取引先と金額は架空)
依頼メールが届くGmail(フォームに貼っても可)Claude が読む品目・数量・単位そう読んだ言葉を引用値段は決めないコードが確かめて、値段を入れる引用・数量・単位は依頼文と合うか単価と税率は、必ず価格表から合わない品目は「※要確認」(値段なし)取引先は freee から探す(作らない)freee に見積書を作るfreee請求書に「送付待ち」でお客様には、まだ何も届かない担当者に知らせる → 人が確かめて送る見積書へのリンク、要確認の品目、外したもの要確認の行に値段を入れ、freee から送る
AI に任せるのは、依頼文から品目と数量を読み取るところだけです。値段は、価格表からコードが入れます。

AI は値段を決めない

見積書でいちばん困るのは、値段が間違っていることです。AI に依頼文と価格表を渡して「見積書を作って」と頼むと、価格表にない品目にそれらしい値段を付けたり、計算を間違えたりするおそれがあります。

そこで、AI の仕事を、依頼文から品目と数量を読み取ることだけにしました。AI に渡す価格表には、品目のコード・名前・別の呼び方・単位だけを載せ、値段は載せません。

AI が返すのは、品目ごとに次の4つです。

項目 中身
コード 価格表のどの品目か。はっきり同じものでなければ「なし」
数量 依頼文に書かれた数。書かれていなければ「なし」
単位 依頼文に書かれた単位(部、枚、人日など)
引用 そう読んだ、依頼文の言葉そのまま

コードは、品目ごとに次のことを確かめます。

  1. 引用は、依頼文にあるか。 なければ、その品目は見積書に入れない
  2. 数量は、引用の中に書かれているか。 書かれていなければ、要確認にする
  3. 単位は、価格表と合うか。 合わなければ、要確認にする
  4. 単価と税率は、必ず価格表から入れる

通らなかった品目は、見積書の中に、値段なしの「※要確認」の行として残します。担当者は、freee で見積書を開いて、その行に値段を入れます。

取引先は、freee に登録済みの取引先から探します。 送り主のメールアドレスが取引先の担当者のアドレスと一致するか、依頼文に書かれた会社名が、取引先の名前と一つだけ一致するか、です。見つからなければ見積書は作らず、担当者に「freee に取引先を足してから、もう一度」と知らせます。取引先を勝手に増やすことはしません。

試した結果

2026年10月24日、freee の開発用テスト事業所(法人・スターターのプラン)で試しました。価格表は、架空のイベント制作会社の7品目です(パンフレット印刷、チラシ印刷、ポスター印刷、ブース装飾デザイン、ブース設営・撤去、当日運営スタッフ、懸垂幕)。

試した依頼 結果
パンフレット500部、ブースのデザインと設営・撤去を一式、スタッフを2名×2日、ノベルティのボールペン300本(署名に会社名) 見積書ができた(319,000円)。「一式」は、デザインと設営・撤去の2行に分かれた。スタッフとボールペンは要確認
ポスター10枚と懸垂幕2枚(署名なし。送り主のアドレスが取引先と同じ) メールアドレスで取引先が分かり、見積書ができた(78,100円)
チラシ3,000枚(freee にない会社から) 見積書は作らず、取引先がないことを知らせた
本物の Gmail:パンフレット1,000部、運営スタッフ3人日、会場の電源工事 「1,000」のカンマ付きの数字も読めた(214,500円)。電源工事は要確認。担当者にお知らせのメールが届いた
フォームに貼った依頼:チラシ2,000枚とポスター5枚 見積書ができた(52,250円)

「2名×2日」を、AI は4人日と計算した

価格表のスタッフの単位は「人日」です。依頼は「当日のスタッフを2名×2日」でした。

AI は、数量を 4(人日) と返しました。掛け算は、たぶん合っています。でも、「4」という数字は依頼文のどこにも書かれていません。コードは、依頼文にない数字は、見積書に載せる前に人が確かめる作りなので、この行を要確認に回しました。

AI の計算が正しいときもあります。それでも、お客様に出す金額のもとになる数字は、AI が作った数字ではなく、お客様が書いた数字にしたい。これが、このワークフローでいちばん大事にした線引きです。

担当者へのお知らせ

本物の Gmail で試したときに、担当者に届いた文面です(英語版の文面です。日本語版は、同じ中身を日本語で出します。URL と、取引先の見つけ方の表示を省いています)。

Quotation draft in freee: 株式会社テスト商事 214,500 yen

A quotation was created in freee as UNSENT. Check it and send it from freee.
https://invoice.secure.freee.co.jp/reports/quotations/...

Q-0000000004 / パンフレット印刷、運営スタッフ、電源工事のお見積り / 株式会社テスト商事
- パンフレット印刷(A4・カラー) 1000部 x 120 yen  (from: "パンフレット(A4)を1,000部")
- 当日運営スタッフ 3人日 x 25,000 yen  (from: "当日の運営スタッフ 3人日")
Net 195,000 yen, tax 19,500 yen, total 214,500 yen

To check (in the quotation as "※要確認" lines, no price):
- 会場の電源工事: not in the price list

品目ごとに、どの言葉から読んだか(from)が付きます。freee の計算した金額が、ワークフローの計算と違ったときは、警告の行も出ます(見積書ができた4件とも、出ませんでした)。

試したあとで、お知らせの件名の頭に [n8n quote](日本語版は [n8n 見積])を付けるように直しました。担当者のアドレスが依頼と同じ受信箱だと、件名の「Quotation」が依頼のメールの検索に引っかかり、自分のお知らせを依頼として読み直してしまうことに気づいたためです。Gmail の検索の初期設定で、この目印の付いたメールを外しています(この直しのあとの動きは、まだ試していません)。

freee の API で詰まった3つのこと

1. 見積書を作るのは、会計ではなく「freee請求書」の API

freee会計の API にも見積書(/api/1/quotations)がありますが、公式の API の定義(GitHub で公開されているもの)では、読むだけでした。見積書を作るのは、freee請求書の API(https://api.freee.co.jp/iv/quotations)です。

2. テスト事業所では、freee請求書を一度画面で開く必要がある

freee請求書の API を呼ぶと、最初は次のエラーが返りました。

401「アクセス権限がありません。存在しないかすでに削除された事業所です。」

会計の API では、同じ事業所が読めていたので、事業所はあります。開発用テスト事業所は、freee会計と freee人事労務のために作られるので、freee請求書は、ブラウザで一度開いて使い始める必要がありました。 開いたあとは、同じ呼び出しで見積書が作れました。

3. アプリの権限は、呼ぶところごとに要る

freee のアプリには、製品と機能ごとに権限(参照・更新)があります。見積書を作るには「[請求書] 全帳票種別」の参照と更新が要りました。さらに、権限を保存し直したあと、それまで読めていた取引先が、403「このアプリケーションにはアクセス権限がないエンドポイントです」になりました。 取引先の参照の権限を入れ直し、n8n の接続をつなぎ直して直りました。

権限が足りないときの返事が、請求書では「存在しない事業所」、会計では「権限がないエンドポイント」と違うので、原因が分かりにくいところです。

使うための設定

  1. freee のアプリ: freee Developers でアプリを作り、コールバック URL に n8n の OAuth の戻り先(https://<n8n のアドレス>/rest/oauth2-credential/callback)を入れる。権限は、取引先の参照と、「[請求書] 全帳票種別」の参照・更新。freee請求書は、ブラウザで一度開いておく
  2. n8n の認証情報: 「OAuth2 API」で、認可の URL に https://accounts.secure.freee.co.jp/public_api/authorize、トークンの URL に https://accounts.secure.freee.co.jp/public_api/token、アプリの Client ID と Client Secret、Authentication は「Body」。Gmail、Google スプレッドシート、Anthropic もつなぐ
  3. 価格表: スプレッドシートの1行目を code, name, aliases, unit, unit_price, tax_rate にして、品目を並べる(aliases は、お客様が使いそうな別の呼び方)。タブの名前は、日本語版は「価格表」、英語版は「Price list」が初期設定
  4. 設定(英語版は Config):freee の事業所の ID、価格表のシート、担当者のメールアドレス、敬称(御中・様)、税の扱い(out は税別)、端数の扱い、有効期限の日数
  5. まずフォームで試す。 そのあと、見積の依頼メール(英語版は New request mail)の Gmail の検索(どのメールを依頼とみなすか)を自社に合わせて、公開する

できないこと・確認していないこと

  • 値段は、価格表の単価だけです。 数量による値引き、お客様ごとの価格、オプションの組み合わせには対応していません
  • 会社名での取引先の一致は、完全に同じ名前だけです。 「テスト商事」では「株式会社テスト商事」に一致しません。確実にしたいときは、freee の取引先に、担当者のメールアドレスを入れておきます
  • スターター以外の freee のプラン、外貨の見積書、源泉徴収は試していません
  • 試したのは、架空の依頼5件です。依頼の書き方によっては、AI が品目を読み落とすことがあります(読み落とした品目は、見積書にもお知らせにも出ません。最後は依頼メールと見比べてください)

次に読む

次に読む