請求書(Invoicing)

MisocaからOdooへ請求書を数千件移した実録 — 「1円合わない」と「移した後に使えない」を潰すまで

MisocaからOdooへ請求書を移した実録記事のメイン画像

「過去の請求書も全部、Odooに持っていきたい」

弊社は2026年、請求書の発行をMisocaからOdooへ切り替えました。Misocaは請求書を作って送るだけなら十分に便利です。ただ、見積から受注、請求、入金、会計までを一つにつなげたくなると、どうしても別のシステムとの二重入力が残ります。それをOdooに寄せるのが目的でした。

新しく作る請求書だけOdooにする、という選択肢もありました。ですが、お客様から「去年の請求書をもう一度」と頼まれたときに、2つのシステムを行き来したくはありません。過去分もすべて移すと決めました。

移したのは次の量です。

Misoca 件数 Odoo側の受け皿
取引先 数百社 連絡先(会社)
請求書 数千件 顧客請求書
見積書 約2,000件 見積
自動作成予約(定期請求) 数十件 サブスクリプション
入金の記録 数千件 入金仕訳と消込

MisocaとOdooのデータの対応 Misocaのデータが、Odooのどこに入るか

移行の前提 - 移行元:Misoca(API v3) - 移行先:Odoo 19 Enterprise(Odoo.sh) - 対象期間:2016年6月〜2026年9月の約10年分 - 実施:2026年8月末に初回取得・投入、9月上旬に最終取得と差分反映 - 帳票:MisocaのPDFは移さず、データからOdooの様式で作り直す(再発行もOdooから) - 対象外:Misocaの添付ファイルと送信メールの履歴

結論から言うと、金額は1円単位で全件一致させられました。ただ、そこに至るまでと、移した後に「普段の操作ができない」問題を潰すまでに、想像よりずっと手間がかかっています。この記事はその実録です。

移行後の請求書一覧 移行後の請求書一覧。数千件の過去分がすべてOdooに並ぶ(お客様名と金額はモザイク)


手順の全体像

やったことは、大きく4段階です。

  1. Misocaから全件を取り出す(読むだけ)
  2. Odooの形に変換して入れる
  3. Misocaの原本と全件を突き合わせる
  4. 移した後の日常操作を試して、使えないところを直す

移行の流れ 取り出し → 変換・投入 → 全件突合 → 日常操作の確認。突合で合わなければ変換に戻る

見落とされがちなのが4番目です。データが正しく入っていることと、そのデータで仕事ができることは別の話でした。これは後半で書きます。


1. 取り出す:Misoca APIは「読むだけ」に縛る

MisocaにはAPI(v3)があり、取引先・請求書・見積書を取り出せます。

最初に決めたのは、取り出しのプログラムからは書き込めないようにすることです。MisocaのAPIには、請求書を入金済みにする、ごみ箱に入れる、郵送する、といった書き込みの操作もあります。移行中の手違いで、本番のMisocaを書き換えるわけにはいきません。

そこで、プログラムが送れる要求をGET(読み取り)だけに制限し、書き込み系のURLは許可リストにも入れませんでした。これで、何度でも安心して取り直せます。実際、移行期間中に何度も取り直しています。

罠1:取引先が3分の1しか取れていなかった

最初の取り出しでは、取引先が本来の3分の1ほどしかありませんでした。

原因はページの終わりの判定でした。APIは1ページ100件ずつ返します。「100件未満のページが来たら最後」と判定していたのですが、MisocaのAPIは途中のページでも100件未満を返すことがありました。実測では、1ページ目100件、2ページ目99件、3ページ目99件……と続いていました。2ページ目の99件を見て「終わり」と判断していたわけです。

正しくは、空のページが返るまで読み続けます。請求書と見積はたまたま最後まで素直に返っていたので、取引先だけが欠けていました。気づかずに入れていれば、請求書の大半が「取引先不明」になっていたはずです。

罠2:定期請求の予約はAPIに無い

Misocaの「自動作成予約」(毎月決まった日に請求書を作る設定)は、公開APIにありませんでした。

仕方なく、Misocaの画面が裏で使っている通信を調べ、そこから数十件を取り出しています。これは公開APIではなく、将来も同じように使える保証はありません。今回限りの移行用途と割り切りました。一覧の件数表示は常に「1000件以上」という固定の文字列で、実際の件数は分かりません。ページを1枚ずつめくって数えました。

さらに、この通信は合計金額しか返しません。明細は、その予約から過去に作られた請求書から借りてきて、「明細の合計+消費税=予約の合計」が成り立つかを全件で確かめました。


2. 変換して入れる:1円を合わせる

消費税の端数処理が、伝票ごとに違った

最も時間を使ったのが、消費税の1円のずれです。

弊社のOdoo 19環境では、消費税の端数は当初、四捨五入になっていました。ところがMisocaは、伝票ごとに「切り上げ」か「切り捨て」を持っていました。過去の設定変更の名残で、同じお客様でも時期によって違います。

消費税の端数処理の違い 税抜 12,345円の10%は 1,234.5円。切り捨てなら1,234円、四捨五入なら1,235円。これが全件で起きる

最初は「Misocaは全部切り捨て」と決めつけて直していましたが、突き合わせると合いません。実際には切り上げと切り捨てが混在し、さらに税込で単価を入れた伝票、非課税の伝票もありました。

最終的に、端数処理のやり方を伝票ごとに持たせるようにしました。移行した伝票にはMisocaの設定をそのまま写し、これから作る伝票は既定の切り上げにしています。これをしておかないと、過去の請求書を誰かが開いて保存し直しただけで、金額が1円変わってしまいます。

数量の小数と、単位の表記ゆれ

Misocaには「0.625人月」のような小数3桁の数量がありました。Odooの既定は2桁で、そのままだと0.63に丸められて金額が変わります。

移行の初期は、こうした行を「数量1 × 単価=行の金額」に置き換えて金額だけ合わせていました。ただ、請求書を見たお客様には「なぜ数量が1なのか」が分かりません。結局、数量の桁数を5桁に広げて、本来の数量に戻しています。

数量の桁数の設定 「Product Unit」(数量)の桁数を5にした。金額の計算方法は変わらず、保持できる桁数だけが増える

このとき、コンピュータの小数の誤差にも一度はまりました。-0.7 × 2,731,300 のように、十進では割り切れるのに、プログラム上では誤差で「一致しない」と判定され、数量1に潰された行がありました。十進の計算で判定し直して戻しています。

単位は、Misocaでは自由入力でした。「ヶ月」「か月」「カ月」のような表記ゆれを1つにまとめ、Odooの単位マスタに登録しています。3回未満しか使われていない単位はマスタを作らず、元の表記を明細に残しました。

単位マスタ Misocaで使われていた単位を登録した単位マスタ。「人月」「ヵ月」「時間」など68種類

請求書番号は一意ではなかった

Misocaの請求書番号は、同じ番号が複数の請求書に付いていることがありました。実データで20余りの番号が重複し、同じ番号が別の会社・別の金額の請求書に使われています。

番号で突き合わせると、別の会社の請求書に書き込んでしまいます。移行ではMisocaの内部IDとOdooのIDの対応表を作り、以後の修正はすべてこの対応表を通しました。

空行も、見た目の一部だった

Misocaの請求書では、品目の間に空の行を入れて余白にする使い方をしていました。数千行あります。最初の移行では「中身が無いから」と落としていましたが、帳票を並べると見慣れた請求書と印象が違います。後から復元しました。

同じく、品目ごとに持っていた「取引日」は、Odooの納品日に入れています。件名も、帳票の件名欄に印字されるよう移しました。

移行した請求書の例 移行した請求書と同じ形のデモ。件名、支払条件、帳票言語などを持つ(口座番号はモザイク)

明細の見出し・注記・空行 明細。見出し(セクション)、箇条書きの注記、余白の空行、「時間」「人月」の単位、小数の数量まで、Misocaの形を保つ

Odooから出した請求書PDF 同じ請求書をPDFにしたもの。帳票はMisocaの見た目に寄せて作り直した(口座番号はモザイク)

取引先の住所と支払条件は、後から埋めた

最初の移行では、取引先は会社名だけを入れていました。住所・電話・担当者名は後から補っています。Misocaの「取引先(親)+送り先(子)」は実データのほとんどが1対1だったので、送り先の情報を会社に直接入れ、役職や個人名がある送り先だけを担当者として作りました。

困ったのは支払条件です。Misocaには取引先ごとの支払条件が無く、請求書ごとに支払期限を入れていました。Odooでは取引先に支払条件を持たせないと、手で作る請求書の期限が発行日と同じになります。

そこで、移行した請求書の「発行日から支払期限まで」を取引先ごとに分類し、8割以上を占める規則をその取引先の支払条件にしました。実績の無い取引先は、全体の9割を占める「翌月末」にしています。

取引先の支払条件 取引先の「販売&購買」タブ。過去の請求書の実績から推定した支払条件が入る

入金済みの記録

Misocaで入金済みになっている請求書は、Odooでも入金済みにする必要があります。

ここでも1つはまりました。Odooの支払登録をプログラムから使ったところ、支払に仕訳が作られず、請求書の残高が減りませんでした。後に仕入先への支払で同じ症状が出て、支払方法に「未消込の勘定科目」が設定されていないと仕訳を作らずに待つ、という設定の問題だと分かっています。移行当時はそこまで突き止められず、入金の仕訳を直接作って請求書と消し込む方法に切り替えました。通常の画面操作を前提とした支払登録を、10年分の過去データに一括で使うより、この方が確かめやすかったのも理由です。

入金日は、Misocaに入金日の記録があればその日、無ければ支払期限、それも無ければ発行日としました。後の2つは実際の入金日ではないので、どれを使ったかを記録に残しています。

何度入れ直しても、二重にならない

変換の規則を直すたびに入れ直すので、同じ伝票が二重にできないことが前提になります。移行のプログラムには次の決まりを持たせました。

  • MisocaのIDとOdooのIDの対応表を作り、投入済みかどうかはこの表で判定する(見積はMisocaのIDをOdoo側の参照欄にも持たせた)
  • 新規に作る処理と、既存を直す処理を別のプログラムに分ける
  • 既定は「何をするかを表示するだけ」(ドライラン)。書き込むときだけ明示して実行する
  • 書き込む前に、対象の伝票の値をファイルに控える
  • まず1件で試し、結果を確かめてから全件に流す

3. 全件を突き合わせる

入れたら、Misocaの原本と全件を突き合わせます。比べたのは、件数、取引先、発行日、支払期限、税抜、消費税、税込、明細の行数です。

合わないものが出るたびに、変換の規則を直して入れ直しました。「1円合わない」の大半は、先に書いた端数処理の違いでした。

最終の照合結果

移行後の手直し(空行の復元、数量の戻し、品目の付与など)をすべて終えた状態で、もう一度全件を突き合わせた結果です。

確認項目 結果
請求書の件数 全件 Odooに存在
請求書の税抜・消費税・税込 差0円・不一致0件
発行日・支払期限・請求書番号 不一致0件
請求書の明細行 約3万行 一致
入金済みの反映 Misocaで入金済みの全件がOdooで入金済み(1件は返金で相殺)
見積の件数・金額 全件 税抜・消費税・税込とも差0円
見積の明細行 約1万5千行 一致
品目を付けた見積明細 約1万行 付与前の値と照合し不一致0件

唯一出た差は3件で、Misocaでは「未請求」のまま移した請求書を、切り替え後にOdooで発行したものでした。

切り替えの進め方

業務を止める時間は設けませんでした。Misocaで請求書を作りながら、Odoo側を並行して仕上げています。

  1. 8月末に全件を取得してOdooへ投入し、突き合わせと手直しを繰り返す
  2. その間にMisocaで作られた伝票は、再取得して前回との差分を出す(9月1日・3日・4日)
  3. 最後の差分は4件。Misoca側で伝票ごと作り直されたもの、数量が変わったものなどで、汎用の仕組みにせず1件ずつ何をするかを書いて処理した
  4. 件数・金額・入金状態を照合し終えてから、新しい請求書はOdooだけで作る運用に切り替えた
  5. 定期請求の自動作成とお客様への自動メールは、確認が終わるまで止めておいた

会計への影響:過去10年分の売上が二重にならないか

数千件の請求書と入金をOdooに入れると、Odooの帳簿には10年分の売上と入金が載ります。弊社の会計はそれまで会計士さんのもとで別に行っており、Odooで会計を始めるのは第17期(2026年5月〜)からです。そのままでは、過去の売上がOdooの帳簿に二重に見えてしまいます。

そこで、過去の請求書・入金には一切手を付けず、期首(2026年4月30日)付けの整理仕訳を1本だけ入れました。過去の売上は繰越利益剰余金に振り替え、各科目の残高を第16期の決算書に合わせています。入金の受け皿にしていた仮の銀行科目も、この仕訳で0にしました。

売掛金だけは、決算書の値ではなくOdooの未回収額(取引先別の未回収一覧の合計)に合わせています。日々使うのは取引先別の一覧なので、帳簿の残高とそちらが一致している方が実務で困らないためです。差額は繰越利益剰余金で吸収しました。


4. 移した後:「データは正しいのに、仕事ができない」

ここからが、移行の本番でした。

見積の金額が0円になっていた

移行から数日後、見積の9割以上の金額が0円だと分かりました。

Odooの見積は、明細に品目(プロダクト)が設定されていると、その品目から単価を計算し直します。Misocaには品目という考え方が無く、品名は自由入力です。品目が空だと、単価が0で上書きされていました。請求書の側にはこの計算が無いので無事でした。

作成時ではなく後から単価を書き直すと計算が走らないので、明細に単価を入れ直しています。

見積を複製しても、確定しても、止まる

弊社では、過去の見積を複製して新しい見積を作るのが日常の操作です。ところが、移行した見積は複製でエラーになりました。品目の無い明細を持つ見積を複製すると、Odoo側の必須項目のチェックに引っかかるのです。画面から作った明細でも同じことが起きます。明細を作るときと、複製・確定するときとで、Odooの検証の条件が異なっていました。

複製はプログラムで回避しましたが、今度は見積を確定できないことが分かりました。Odooは品目の無い明細がある見積を確定させません。確定できなければ、見積から請求書も作れません。

最初は、確定するときに「汎用の品目」を自動で付けて通す方法を取りました。ところが、見積から作った請求書の明細名に、その汎用品目の名前が頭に付いてしまいます。お客様に出す請求書に「汎用明細(品目未設定)」と印字されかねない状態でした。

結局、根本的に直しました。移行した見積の明細 約1万行について、品名と同じ名前の品目を作って紐付けています。品目は約5,000件になりました。書き込む前にすべての明細の値を控え、書き込んだ後に1行ずつ照合して、説明・数量・単価・単位・税が1行も変わっていないことを確かめています。

品名が品目になった一覧 品名ごとに作った品目。数千件ある(内容はモザイク)

品目が付いた見積 品目が付いた見積。複製しても品名を打ち直す必要がなく、そのまま確定して請求書にできる

見積書PDF 見積書のPDF(口座番号はモザイク)

品目が数千件になると、「商品マスタが使いにくくならないか」が気になります。実際には、見積や請求書で品目を選ぶときは名前の一部で検索するので、件数が多いこと自体はあまり問題になっていません。気になるのは、同じ意味の品目が表記違いで並ぶことです。今後、よく使うものから表記をそろえてまとめ、何年も使われていない品目はアーカイブ(非表示)にしていく方針です。

振り返ると、最初から品目を作っていれば、単価0円の件も、複製の件も、確定の件も起きていませんでした。「Misocaに無い概念だから空でいい」と判断したのが、後の手戻りの元です。

定期請求は、まず自動メールを止める

定期請求は、Odooのサブスクリプションに移しました。ここで一番怖かったのは、移した瞬間にお客様へ請求書メールが一斉に飛ぶことです。

Odooのサブスクリプションは、自動で請求書を作ったときにメールで送るかどうかを「定期プラン」単位で持っています。そして既定はONです。予約1件ずつで送る・送らないを切り替える項目はありません。Misocaでは予約ごとに設定できたので、ここは考え方が違います。

移行では、まず自動メールなしのプランを作り、そこに入れました。自動作成の処理そのものも止め、見積(下書き)の状態で入れて、確認が済んでから動かしています。

自動メールなしの定期プラン 「請求書メールテンプレート」が空のプラン。空にすると「自動メールなし」になる

定期請求 定期請求。プランに「毎月(自動メール送信なし)」を選んでいる(口座番号はモザイク)

実は定期請求は一度作り直しています。最初の投入では、明細を合計1行に潰したうえ、税込の金額を税抜として入れ、さらに10%を上乗せしていました。全件削除し、正しい明細で作り直しています。

運用を始めてからも調整が続きました。自動で作られた請求書は、今は下書きに戻して担当者が内容を確かめてから送る形にしています。納品日や単位が空で作られる、といった細かい不満も、出てくるたびに直しました。


AIに手伝わせて分かったこと

今回の移行の変換や突き合わせのプログラムは、AIエージェント(Claude Code)に書かせています。数千件の伝票を相手に、規則を変えては全件で試す、を何十回も繰り返せたのはAIのおかげです。

一方で、AIは「とりあえず通る」方法を選びがちでした。上に書いた「汎用の品目を付けて確定を通す」はその典型で、エラーは消えましたが、請求書に余計な文字が入り、人が作り直す羽目になりました。

AIに任せるときは、途中の「動きました」ではなく、最後の成果物(お客様に届く請求書)まで見て確かめさせることが大事です。本番に大量に書き込む前には、必ずバックアップを取り、1件で試してから全件に流す。この2つを決まりにしてから、手戻りは減りました。

移行が終わった今も、この形は続いています。請求書の見た目がおかしい、定期請求の納品日が空だ、といった不満が出たとき、担当者が画面を1件ずつ直すことはしていません。AIに日本語で状況を伝え、APIで原因を調べさせ、直す前の値を控えさせ、1件で試させ、最後に全件を照合させる。Odooを業務の土台にして、日々の手直しはAIに任せる。移行はそのための入口でした。


まとめ

Misocaからの移行は、抽出と初回投入だけなら数日でも進みます。業務で使える状態にするまでが本番でした。弊社で時間がかかったのは、1円を合わせることと、移した後に普段の仕事ができるようにすることでした。

最後に、実際に効いた判断を3つだけ。

1. 取り出しは「読むだけ」に縛って、何度でも取り直せるようにする。 突き合わせで合わないたびに取り直しました。本番のMisocaを壊す心配が無いから、ためらわずにやり直せます。

2. 合わない1円は、丸めの規則の違いを疑う。 端数処理は伝票ごとに違うことがあります。規則ごとデータに持たせれば、過去の伝票を開き直しても金額は変わりません。

3. 移した後の日常操作を、移行の範囲に入れる。 複製する、確定する、請求書にする、送る。データが正しくても、これができなければ移行は終わっていません。

よくある質問

Misoca の過去の請求書も Odoo に移せますか?

移せます。Misoca の API から取引先・請求書・見積書を取り出し、Odoo の顧客請求書・見積・入金に変換して入れます。定期請求(自動作成予約)は公開 API に無いため別の方法で取り出しました。移した後は Odoo から再発行できます。

移行で金額が 1 円ずれるのはなぜですか?

消費税の端数処理(切り上げ・切り捨て・四捨五入)が伝票ごとに違うためです。移行した伝票に Misoca 側の端数処理をそのまま持たせ、全件を原本と突き合わせて差 0 円にしました。

移行中に業務を止める必要はありますか?

止めませんでした。Misoca で請求書を作りながら Odoo 側を仕上げ、最後に差分だけを取り込んでから Odoo だけで作る運用に切り替えています。

請求書ソフトから Odoo への移行をご検討中でしたら、お気軽にご相談ください。当社の Odoo 導入・開発支援は Odoo導入・開発・業務統合支援 をご覧ください。

弊社ではOdoo(オドゥ)を利用した業務システムの一元管理・オールインワンな仕組みの構築・開発をして企業様をサポートしています。
ご興味ある方は是非お問い合わせください。

ABOUT ME
株式会社マルウェブ 代表取締役。2010 年創業。Magento/Adobe Commerce の構築・保守(Adobe 認定パートナー)、NetSuite、中国向け Web マーケティングを手がけ、2026 年から Odoo の導入・開発支援を行う。 自社の基幹も Odoo 19 で運用しており、会社サイト(旧 WordPress 5 サイト)を Odoo Website へ、CRM を HubSpot から Odoo CRM へ、電子署名を DocuSign から Odoo Sign へ、請求書発行を Misoca から Odoo へ移した。見積・請求の上長承認モジュール、請求書メールの自動取込、Google カレンダー同期、予約ページも自社で実装。この媒体の記事は、その移行と運用で実際に起きたことを書いている。 Odoo Learning Partner。経済産業省「情報処理支援機関(スマートSMEサポーター)」認定(2026 年 9 月)、Odoo 導入・開発・業務統合支援を登録サービスとして届出。ベトナムに自社の開発拠点を持ち、日本の請求・会計実務に合わせた設定と、海外拠点を含む運用を支援している。

※注意

本ブログの投稿内容に関するお問い合わせをして頂いてもご返信できませんので、何卒ご了承ください。