n8nとfreeeで実現する次世代の経理自動化

こんにちは。Be Free Tech、運営者の「ちきん」です。最近はDXという言葉を耳にしない日がないくらい、どの業界でもデジタル化が進んでいますね。
そんな中でも、特に「自動化」の波が熱いのが経理業務かなと思っています。皆さんは、日々の請求書発行やレシートの入力作業に追われて、本来やりたいクリエイティブな仕事が後回しになっていたりしませんか?
もし「もっと楽に、スマートに経理を回したい」と考えているなら、今注目の自動化ツールであるn8nと、シェアの高い会計ソフトのfreeeを組み合わせるのが、一つの正解かもしれません。

私自身、n8n freeeの連携については試行錯誤を繰り返してきましたが、その柔軟性とコストパフォーマンスの高さには本当に驚かされています。この記事では、私が実際に触ってみて感じたことや、構築の際につまずきやすいポイントを、興味がある人の目線で丁寧に紐解いていければなと思います。
- n8nとfreeeを安全かつ確実に接続するための初期設定手順
- トークンの有効期限切れによるトラブルを防ぐための運用テクニック
- 請求書作成や証憑アップロードを自動化するための具体的なAPI活用術
- エラーに強く、メンテナンス性の高いワークフローを構築するための考え方
n8nとfreeeの連携に関する初期設定

まず最初にやるべきことは、n8nとfreeeを繋ぐための「扉」を開ける作業です。これにはfreeeの「開発者ポータル(freee Developers Community)」でのアプリ作成が絶対に欠かせません。
具体的には、freee側で新しくアプリを登録して、そこで発行される「Client ID」と「Client Secret」を手に入れるところから始まります。これらはいわば、n8nがfreeeのデータにアクセスするための合言葉のようなものですね。この作業を面倒に感じる方もいるかもしれませんが、セキュリティを確保するためには避けて通れない大切なステップです。
設定を進める上で、特に注意してほしいのが「コールバックURL(Redirect URI)」の扱いです。n8nのクレデンシャル設定画面に表示されているURLを、寸分違わずfreee側のアプリ設定にコピー&ペーストしてください。ここが1文字でも、あるいは「/」一つでも違うと、認証の途中でエラーが出て先に進めなくなってしまいます。私も最初はここで何度も首を傾げた記憶があります。
また、n8nを自分のサーバーで動かしている(セルフホスト)場合は、サイトをHTTPS化して安全な通信ができるようにしておくことも必須条件になります。SSL証明書の設定などは少しハードルが高く感じるかもしれませんが、信頼性の高い連携を実現するためには避けて通れない道かなと思います。
アプリ登録時の具体的なチェックポイント
freeeのマイページから「アプリ管理」を開き、基本情報を入力する際は、アプリの名前を「n8n連携用」など分かりやすくしておくと後で管理が楽になりますよ。また、許可する権限(Scope)についても、最初は何が必要か迷うかもしれませんが、まずは基本的な読み書きができる権限を付与しておき、後から必要に応じて調整していくスタイルがスムーズかなと思います。
設定が完了したら、表示されるClient IDなどをメモしておくのを忘れないようにしましょう。これらの情報は非常に機密性が高いので、絶対に第三者に漏れないように厳重に管理してくださいね。準備が整えば、いよいよn8n側の設定に移る準備は万端です。
OAuth2.0認証とリフレッシュトークン管理
認証の仕組みとして使われている「OAuth 2.0」は、一見すると非常に複雑に見えますが、n8nを使えばその多くの部分をツール側が肩代わりしてくれます。n8nのHTTP Requestノードには、この認証をスマートに処理してくれる機能が備わっているんです。
しかし、ただ設定するだけでなく「今、裏側で何が起きているのか」を少しだけ理解しておくと、後でトラブルが起きたときの解決スピードが格段に上がりますよ。認証が成功すると「アクセストークン」という短期的な利用許可証と、「リフレッシュトークン」という長期的な更新用の鍵の2つが発行されます。
アクセストークンの有効期限は実は意外と短くて、数時間程度で切れてしまうことがほとんどです。そのたびに手動で認証し直すのは自動化とは言えませんよね。そこで活躍するのがリフレッシュトークンです。アクセストークンが切れたときに、n8nが自動でこのリフレッシュトークンを使って新しいアクセストークンを再取得してくれる仕組みになっています。
この一連の流れが自動で行われるおかげで、私たちは一度設定を済ませてしまえば、トークンの寿命を気にすることなくワークフローを回し続けられるわけです。n8nのクレデンシャル管理機能は本当によくできていて、このあたりの複雑な処理を視覚的に設定できるのが大きな魅力だと感じています。
n8nでOAuthの設定をする際は、「Generic OAuth2 API」という項目を選択して設定を埋めていくことになります。Authorization URLやAccess Token URLなど、freeeの公式ドキュメントに記載されている正確なエンドポイントを入力することが成功への近道です。
もし設定がうまくいかない時は、まずはURLに余計なスペースが入っていないか、あるいは「https://」が抜けていないかをチェックしてみてください。意外とそんな単純なミスが原因だったりしますよ。
90日ルールを克服する接続維持の仕組み

freee APIを運用する上で、絶対に避けては通れないのが、いわゆる「90日ルール」というものです。これは、リフレッシュトークンの有効期限が発行から90日間という制限があることを指しています。
つまり、一度もAPIを叩かずに90日が経過してしまうと、せっかく設定した連携が完全に切れてしまい、再度手動で認証をやり直す必要が出てくるんです。これ、たまにしか動かさないような月次のワークフローや、半期に一度の処理などを作っている場合に、いざ本番で動かそうとしたら認証エラーで止まっていた…なんていう悲劇を引き起こす原因になりがちです。
このルールは2023年に導入されたものですが、安定したシステムを構築するためにはこの「90日」をどう管理するかが腕の見せ所ですね。私がおすすめしている対策は、非常にシンプルですが強力です。
それは、「週に一度、何もしないAPIリクエストを投げるだけのワークフロー」をスケジュール実行させておくことです。例えば、自分の事業所情報を1件取得するだけのノードを週に一回動かすようにしておけば、そのたびにリフレッシュトークンが更新されるため、実質的に有効期限を無限に延ばし続けることができるんです。まさに「生存確認(ハートビート)」のようなものですね。
(出典:freee Developers Community『【重要】リフレッシュトークンの有効期限の変更』)

リフレッシュトークンが失効してしまった場合は、n8nのクレデンシャル設定画面から再度「Connect my account」をクリックして再認可を行う必要があります。この作業を忘れると、全ての自動化がストップしてしまうため、予備の通知用ワークフローを組んでおくなど、万が一の事態に備えておくとより誠実なシステム運用ができるかなと思います。経理という止まってはいけない業務だからこそ、こうした地味な工夫が大切になってくるんですね。
n8nとfreeeのAPIによる請求書作成術
さて、ここからはより具体的な活用法に入っていきましょう。まずは多くの会社で導入効果が高い「請求書の自動発行」です。例えば、別の営業管理ツールや問い合わせフォームからデータが飛んできたときに、それをトリガーにしてfreeeで請求書の下書きを自動で作るフローですね。これには「POST /api/1/invoices」というエンドポイントを叩くことになります。
ただし、単にデータを送ればいいというわけではなく、freee側が求めているデータの形式、つまりJSON構造を正しく組み立てる必要があります。特に「会社ID(company_id)」や「取引先ID(partner_id)」、そして「品目」や「金額」といった情報を、適切な階層構造で送らなければなりません。
ここで特につまずきやすいのが、「partner_id」の扱いです。相手の会社名が分かっていても、APIで送る必要があるのは名前ではなく、freeeのデータベースに登録されている「数字のID」なんですね。そのため、ワークフローの途中で一度「取引先検索API」を使って、名前からIDを逆引きするステップを入れるのが定石です。
もし見つからなかった場合は新規作成する、といった条件分岐(Ifノード)を組むことで、データが重複することなくスムーズな登録が可能になります。また、日本の商慣習に合わせた「税区分コード」の指定も重要です。10%なのか8%なのか、あるいは対象外なのか。これらを正確に設定しないと、後で修正作業が発生してしまい、せっかくの自動化が台無しになってしまいます。
| パラメータ名 | データの型 | 解説 |
|---|---|---|
| issue_date | string (YYYY-MM-DD) | 請求書の発行日です。今日の日付を入れることが多いですね。 |
| partner_id | integer | freeeに登録済みの取引先固有のID番号です。 |
| invoice_contents | array | 請求明細の配列です。ここに品目や金額を複数入れることができます。 |
| tax_code | integer | 消費税率を判別するコードです。10%課税なら「108」など(環境によります)。 |

n8nとfreeeのレシートアップロード術
次に、電子帳簿保存法の影響で非常にニーズが高まっている「レシート・証憑の自動アップロード」について解説します。スマホで撮った画像や、メールで届いたPDFを、いちいち手動でfreeeのファイルボックスに放り込むのは結構な手間ですよね。
n8nを使えば、例えばGoogleドライブの特定のフォルダにファイルが保存されたのを検知して、そのままfreeeへ転送することが可能です。しかし、この実装には技術的に少し「コツ」が必要です。というのも、通常のテキスト情報のやり取りとは違い、画像やPDFといったバイナリデータを送るための「Multipart-form-data」という形式を使いこなす必要があるからです。
n8nのHTTP Requestノードでこの設定を行う際は、まず「Body Content Type」を「Multipart-form-data」に設定します。そして「Send Binary Data」のスイッチをオンにし、n8n内部でファイルを保持している変数名(例:attachment)を指定します。
ここで注意してほしいのが、freee側が受け取るための「キー名(Form Parameter)」を必ず「receipt」にする必要があるという点です。ここが「file」や「image」になっていたりすると、freee側で「中身が空ですよ」と認識されてエラーになってしまいます。

また、アップロードと同時に、その書類がどの会社の分なのかを示す「company_id」や、どんな内容なのかを記す「description」なども一緒に送るのがおすすめです。こうすることで、後からfreeeの画面で確認する際も、整理された状態で作業を進めることができますよ。
証憑データの管理とワークフローの流れ
1. データの取得(GoogleドライブやGmailなど)
2. ファイルの加工(必要であればリサイズや形式変換)
3. freee APIのレシート作成エンドポイントへの送信
4. 送信完了後の事後処理(元のファイルを「処理済み」フォルダへ移動など)
このような一連のサイクルを自動化することで、書類の紛失リスクも減らせますし、何より「後でやらなきゃ」という心理的な負担が激減します。経理担当者だけでなく、現場のメンバーにとっても非常にメリットの大きい自動化かなと思います。
安定したn8nとfreee運用のための秘訣
ワークフローを動かすことができるようになったら、次に考えるべきは「安定性」です。本番環境で使い始めると、テストの時には気付かなかった様々な課題が出てくるものです。それらを一つずつ解決して、文字通り「放っておいても大丈夫なシステム」に育てていきましょう。
APIのレートリミットに対応するバッチ処理
freeeのAPIには、システムの過負荷を防ぐための「レートリミット(実行回数制限)」が設けられています。具体的には、1時間あたり何回までといったリクエストの上限が決まっているんですね。
1件や2件の処理なら全く問題ありませんが、例えば「過去1年分のデータを一気に取り込みたい」とか「数千件の請求を一括で作成したい」といったシチュエーションでは、この制限が壁となって立ちはだかります。無計画にリクエストを投げ続けると、途中でAPI側から「しばらく待ってください(429 Too Many Requests)」というエラーが返ってきて、処理が中断してしまいます。
これを防ぐためにn8nで活用すべきなのが、「Split In Batches」ノードと「Wait」ノードの組み合わせです。例えば1000件のデータを処理する場合、100件ずつの塊(バッチ)に分け、1つのバッチが終わるたびに5秒から10秒程度の待機時間を挟むように設定します。
こうすることで、API制限の閾値を超えないように流量を調整しながら、安全に全件を完走させることができるんです。また、リクエストのヘッダー情報を監視して、残りのリクエスト可能数が減ってきたら自動的に待機時間を延ばすような、インテリジェントなロジックを組むこともn8nなら可能です。急がば回れの精神で、確実に処理を終わらせることを最優先に設計するのが、安定運用の秘訣かなと思います。
大量データを扱う際のチェックリスト:
・データは適切なサイズで分割されているか?
・ループの途中に「Wait」ノードを入れて、APIに休憩を与えているか?
・エラーが発生した時に、どこまで処理が終わったかを記録する仕組みがあるか?
これらのポイントを押さえるだけで、システムの信頼性はぐっと高まりますよ。

n8nとfreee実行時のエラー通知フロー
どんなに丁寧に作り込んだシステムでも、エラーが100%起きないということはありません。サーバーの一時的な不調や、予想外の形式のデータが混じっていた場合など、どうしても止まってしまうことはあります。大切なのは、「止まったことにすぐ気づける」こと、そして「なぜ止まったのか」がすぐに分かる状態を作っておくことです。
n8nには、ワークフロー全体を見守る「Error Trigger」という非常に強力な仕組みがあります。これは、どこかのノードでエラーが発生した瞬間に、別の専用ワークフローを自動で起動してくれる機能です。
エラーが発生した際は、SlackやMicrosoft Teamsといったチャットツールに即座に通知を飛ばすように設定しましょう。通知メッセージには、エラーが発生した日時、どのノードで失敗したのか、そしてエラーメッセージの内容を含めておくのがコツです。
こうしておくことで、わざわざn8nの管理画面にログインしてログを探さなくても、スマホでサッと通知を見るだけで原因の切り分けができるようになります。また、エラーが起きたデータを自動的にGoogleスプレッドシートなどの「エラー一覧」に書き出しておく仕組みも便利です。後で落ち着いた時に、そのリストを見ながら手動で修正したり、再実行したりできるからです。
エラーを恐れるのではなく、エラーが起きた後のリカバリーをどう自動化するかを考えるのが、誠実なエンジニアリングの姿かなと思います。
電子帳簿保存法を見据えた証憑データの管理
2024年から義務化された「電子取引データの保存」や、任意ではあるものの普及が進む「スキャナ保存制度」。これらに対応するためにfreeeを活用している方も多いでしょう。n8nを使って証憑を自動アップロードする際は、単にファイルを送るだけでなく、法律で定められた「検索要件」を満たすようにデータを整理して送ることが求められます。具体的には、「取引年月日」「取引先」「取引金額」といった情報を、あらかじめ抽出してfreee側に渡してあげるのが理想的ですね。
もちろん、freeeには強力なOCR(文字認識)機能が備わっているので、ファイルを送るだけでもかなりの精度で読み取ってくれますが、n8n側でAI(ChatGPTのAPIなど)を組み合わせて事前にテキスト化しておくことで、より精度の高い自動化が可能になります。
また、保存されたデータの改ざん防止についても意識が必要です。freeeにアップロードした時点でタイムスタンプが付与されるなどの仕組みがありますが、元データがどこから来たのかという履歴を残しておくことも大切です。デジタル化を進める上で、こうした法律面での要件は非常に複雑で、判断を誤ると税務上のリスクにもなりかねません。正確な情報については、必ず国税庁の公式サイトを確認したり、顧問税理士さんなどの専門家のアドバイスを仰いだりするようにしてくださいね。
法的な要件は常にアップデートされます。一度作ったワークフローも、法律の改正に合わせて見直す必要があることを忘れないでください。システムは作って終わりではなく、常にアップデートしていくものだと考えておくのが良いかなと思います。
参考:【完全版】Web制作の学習で本当に役立つ!信頼できる情報源&お役立ちサイト10選
ZapierやMakeと比較したn8nの優位性

自動化ツールといえば、ZapierやMake(旧Integromat)が有名ですよね。「わざわざn8nを使う理由って何?」と聞かれることも多いですが、私はn8nにしかない大きな魅力が3つあると思っています。
1つ目は、「圧倒的なコストパフォーマンス」です。Zapierなどは「タスク数(実行回数)」に応じて料金が跳ね上がっていくモデルですが、n8nをセルフホストで運用すれば、どれだけ大量のワークフローを回してもサーバー代以外の追加費用はかかりません。これは、大量の仕訳データを扱う経理自動化においては決定的な違いになります。
2つ目は、「データ主権」です。経理データという非常に機密性の高い情報を、社外のクラウドサービス上に置きたくないという要望は根強くあります。n8nなら自社の管理下にあるサーバー(AWSやGCP、あるいは自前のVPSなど)に設置できるため、セキュリティポリシーが厳しい企業でも導入しやすいのが強みです。
そして3つ目は、「自由度の高さ」です。Zapierは初心者には優しいですが、決まったこと以上のことをしようとすると途端に難しくなります。n8nはノードを繋ぐだけで基本的なことはできますが、いざとなればJavaScriptでゴリゴリと独自のロジックを書くことができ、まさに「できないことがほぼない」状態を実現できるんです。この絶妙なバランスが、興味がある人にとっての探究心をくすぐるんですよね。
| 項目 | Zapier | Make | n8n (セルフホスト) |
|---|---|---|---|
| 導入のしやすさ | ◎(非常に簡単) | 〇(直感的) | △(設定が必要) |
| 料金体系 | 実行回数課金(高め) | 実行回数課金 | サーバー代のみ(定額) |
| データの自由度 | △(制約が多い) | 〇(柔軟) | ◎(自由自在) |
| セキュリティ | クラウド依存 | クラウド依存 | 自社管理が可能 |
複雑なJavaScriptを用いた機能拡張
n8nを使いこなす上で避けて通れない、かつ最強の武器になるのが「Codeノード」です。標準で用意されているノードだけでも多くのことができますが、「ある特定の条件の時だけ日付のフォーマットを書き換えたい」とか「複数のAPIレスポンスを複雑に組み合わせて新しいJSONを作りたい」といった細かい要望が出てきたときに、JavaScriptの力が発揮されます。一見難しく感じるかもしれませんが、モダンなJavaScriptの書き方を少し知っているだけで、ワークフローの見た目を驚くほどシンプルに保つことができるんですよ。
例えば、freeeから返ってくるネストされた深い階層のデータを、スプレッドシートに書き込みやすいように平坦化(フラット化)したり、金額計算において端数処理を厳密に行ったりする場合に便利です。
また、外部のライブラリ(一部制限はありますが)を呼び出して、より高度なデータ処理を行うことも可能です。「ノーコード・ローコードツールなのにコードを書くの?」と思われるかもしれませんが、むしろ「コードという最終手段が常に用意されている安心感」こそが、n8nの真の価値だと私は思っています。全てをコードで書くのは大変ですが、面倒なAPI接続はノードに任せ、自分たち独自のビジネスロジックだけを数行のコードで書く。この「良いとこ取り」こそが、次世代の自動化スタイルかなと思います。
Codeノードの簡単な活用例
例えば、日付の計算などはCodeノードの得意分野です。freee APIに投げるために「今日から30日後の日付」を特定の形式で取得したい場合など、標準ノードを組み合わせるよりもコード1行で書いた方が確実でメンテナンスもしやすいですよね。こうした小さな積み重ねが、将来的に誰が見ても分かりやすい、美しいワークフローに繋がっていきます。

n8nとfreeeの自動化構築は私にご相談を
ここまで、n8nとfreeeを組み合わせた自動化の世界について、かなり深掘りしてお話ししてきました。いかがでしたでしょうか。最初は「なんだか難しそう」と感じていた部分も、一つ一つのステップを分解してみれば、意外と手の届く範囲にあることが伝わっていたら嬉しいです。
手動での入力作業から解放され、データが流れるようにシステム間を行き来する様子を見るのは、エンジニアリングの喜びそのものだなぁと感じます。それと同時に、経理業務が効率化されることで、組織全体に余裕が生まれ、より本質的な課題に目を向けられるようになる。これこそが、私たちが目指すべきDXの姿かなと思います。
もし、「自分の会社でも導入してみたいけれど、どこから手を付ければいいか分からない」「n8nの設定で詰まってしまって、誰かに相談したい」という方がいらっしゃれば、ぜひお気軽にお声がけください。私のこれまでの試行錯誤と、実際に動かしてきた経験が、皆さんの時間を生み出すためのお手伝いになるかもしれません。
自動化は一度作って終わりではなく、ビジネスの成長に合わせて育てていくものです。皆さんの「もっと自由に、もっと楽しく働く」ための最初の一歩を、微力ながら応援させていただければ幸いです。
自動化を成功させるための最後のアドバイス:
・いきなり100点を目指さない。まずは1つの小さな業務から自動化する。
・手動で行っている手順を、紙に書き出して見える化することから始める。
・失敗しても大丈夫。n8nなら何度でも作り直せます。
一緒に、より良い業務環境を作っていきましょう!
「まずは気軽に相談したい」という方へ
制作のご依頼やシステム構築に関するご相談、また副業に関するお悩みは、NEW公式LINEでも受け付けております。メールフォームよりも迅速なレスポンスが可能です。
※本記事に掲載している情報は、執筆時点でのAPI仕様や法律に基づいています。システム導入の際は、必ず最新の公式ドキュメント(freee API リファレンス等)をご確認ください。また、税務処理や法的要件に関わる内容については、不利益を被らないためにも、必ず税理士や弁護士などの専門家にご相談の上、ご自身の責任において判断いただくようお願いいたします。

