DueDesk

← ブログ一覧

売掛金回転日数(DSO)とは?計算式と、Shopify B2Bでの下げ方

・ 最終更新 2026-08-24

「最近どうも入金が遅い気がする」——掛け売り(請求書払い)で法人取引をしていると、必ず一度は感じる感覚です。ただ、この「気がする」を放置すると、対策を打っても効いたのかどうか分かりません。督促の文面を直したのか、取引条件を変えたのか、そもそも遅い取引先が1社増えただけなのか、切り分けられないからです。

そこで使うのが DSO(Days Sales Outstanding/売掛金回転日数) です。回収の速さを1つの数字にして、月ごとに比べられるようにする指標です。


1. 売掛金回転日数(DSO)とは — 「回収の速さ」を1つの数字にする

DSOは、売上が計上されてから現金として回収されるまでに、平均で何日かかっているかを表します。日本語では「売掛金回転日数」「売掛金回転期間」と呼ばれます。

似た言葉との違いを整理しておきます。

指標 何を見るか 使いどころ
DSO(売掛金回転日数) 回収までの平均日数 月次・四半期の推移を追う
エイジング(滞留期間別残高) 未収がどの延滞区分に、いくら溜まっているか 今日どこから督促するかを決める
延滞率 未収総額のうち期日超過分の割合 リスクの濃さを見る

エイジングが「今どこに滞留しているか」のスナップショットなのに対して、DSOは「全体としてどれだけ遅いか」の速度計です。役割が違うので、片方があればもう片方が要らない、という関係ではありません。実務では「DSOで異常に気づき、エイジングで原因の場所を特定する」という使い分けになります。DSOが先月より5日伸びたとき、その5日がどの取引先のどの区分で発生したのかは、エイジングを見ないと分かりません。区分の切り方と起点の決め方は売掛金のエイジングとは — 債権年齢表(滞留期間別残高一覧)の作り方と読み方で扱っています。


2. 計算式と、Shopifyでの数字の取り方

基本式(月次で回す場合)

もっとも一般的な計算式はこれです。

DSO = 期末の売掛金残高 ÷ 期間の売上高 × 期間の日数

月次で見るなら、たとえば7月なら次のようになります(数字は説明用の一例です)。

7月末の売掛金残高:3,100,000円
7月の掛け売り売上: 2,800,000円
7月の日数:         31日

DSO = 3,100,000 ÷ 2,800,000 × 31 ≒ 34.3日

つまり「請求してから平均34日程度で回収できている」と読みます。

計算するときの注意点が3つあります。

  1. 分子と分母の範囲を揃える。掛け売り(BtoB)のDSOを見たいなら、分母も掛け売り売上だけにします。即時決済のBtoC売上を混ぜると、DSOは実態より小さく出ます。
  2. 税込/税抜を揃える。売掛金残高は通常税込、売上高は税抜で管理していることが多いため、どちらかに寄せます。
  3. 毎月同じルールで計算する。DSOは絶対値そのものより、前月比の動きに意味があります。ルールを月ごとに変えると比較できなくなります。

売上の変動が大きい月がある場合は、直近3か月の売上を使う「カウントバック法」など精緻な方法もありますが、まずは上の単純式を毎月同じ手順で回すほうが、実務では機能します。

分子(売掛金残高)はどこから取るか

Shopifyで掛け売りを運用していると、未収の情報は「注文」に分散しています。会社(Company)に紐づいた注文の未回収額を合計する必要があり、注文一覧を目視で足していくと、月末のたびに数十分〜数時間の作業になります。

ここでポイントになるのが、未収残高は「その時点のスナップショット」なので、月末を過ぎると再現しづらいという性質です。翌月に入って入金が進むと、先月末時点の残高は分からなくなります。月末に必ず記録を残す運用が前提になります。

分母(期間売上)はどこから取るか

期間売上はShopifyのレポート(Analytics)から取得できます。掛け売り分だけを切り出したい場合は、法人顧客・B2Bチャネルの売上で絞り込みます。会計ソフト側の売上高を使っても構いません。重要なのは出典を毎月固定することです。


3. 出た数字をどう読むか — 支払条件との「差」が改善余地

ベスト値(BPDSO)との比較

DSOは「何日なら良い」という絶対的な正解がありません。支払条件が Net 30(請求から30日後払い)の会社と Net 60 の会社では、そもそも出るはずの数字が違うからです。

そこで比べる相手は業界平均ではなく、自社の支払条件どおりに全額回収できた場合の理論値です。これをBPDSO(Best Possible DSO:達成可能な最良値)と呼びます。

改善余地(日) = 実際のDSO − 支払条件どおりの理論値

先ほどの例で、取引条件がすべて「月末締め翌月末払い」だとすると、理論値はおおむね45日前後になります(締め日から支払日までの平均日数)。実際のDSOが34日なら、条件より早く回収できている状態です。一方、理論値45日に対して実際が68日なら、23日ぶんが改善余地ということになります。

この「差」こそが、督促や請求フローの改善で取りにいける部分です。

DSOだけでは見えないもの

DSOは平均値なので、次の2つは見えません。

  • 特定の1社が極端に遅いのか、全体的にじわっと遅いのか
  • 大口取引が1件入っただけで、翌月のDSOが跳ねることがある(分母の変動)

したがって、DSOで異常に気づいたら、必ず取引先別の残高とエイジング区分に降りて原因を特定します。DSOは「アラート」、エイジングは「診断」です。


4. DSOが伸びる4つの原因

数字が悪化しているとき、原因はたいてい次の4つのどれかです。

① 請求が遅い 出荷から請求書発行までに数日空いていると、その日数はそのままDSOに乗ります。回収側の努力ではなく、社内の事務スピードの問題です。まずここを疑います。

② 支払期日が相手に伝わっていない 注文書・請求書に期日が明記されていない、または相手の経理担当に届いていないケース。相手は「催促が来たら払う」運用になり、確実に遅れます。

③ 督促が始まっていない/属人化している 期日を過ぎた取引先に連絡が入っていない、あるいは「気づいた人が気づいたときに送る」状態。忙しい月ほど督促が止まり、翌月のDSOが伸びます。

④ 延滞が特定の取引先に偏っている 1社の大口が90日超で滞留しているだけで、全体のDSOは大きく引き上げられます。この場合の打ち手は督促文面ではなく、取引条件や与信枠の見直しです。

※ここでの日数区分(30日/60日/90日超)は一般的な商慣行に沿った一例です。自社の締め日・支払サイトに合わせて読み替えてください。


5. 月次でDSOを回す運用手順(5ステップ)

  1. 月末の締め日を1日決める(例:毎月最終営業日の夕方)。この日を毎月ずらさない。
  2. その時点の売掛金残高を記録する。画面のスクリーンショットではなく、あとで再計算できる明細データ(CSV)で残すのが重要です。
  3. 同じ期間の掛け売り売上を取得する(Shopifyレポートまたは会計ソフト、出典は固定)。
  4. DSOを計算し、前月値と並べる。スプレッドシートに月・残高・売上・DSO・BPDSO・差の6列を用意すれば十分です。
  5. 差が広がっていたら、取引先別残高とエイジングに降りて原因を特定する(上の第4章の4分類で切り分け)。

この5ステップのうち、実務でいちばん詰まるのはステップ2です。月末時点の残高を「取引先別に」「あとから再現できる形で」残す作業が、注文一覧の目視集計だと重すぎて続かないからです。逆に言えば、ここが自動化できればDSOの月次管理は現実的に回ります。


6. Shopifyストアでの実務 — どこまで標準で、どこから足りないか

まず、Shopify自身が支払いリマインダーの仕組みを持っています。Shopify Flow には「Send payment reminder(支払いリマインダーを送信)」というアクションがあり、支払スケジュールの期日に合わせて、B2B企業の主担当者あてにリマインダーを送れます。

ただし利用条件に注意が必要です。Shopifyのヘルプセンターは、このアクションについて「支払いリマインダーと支払いスケジュールは Payment Terms へのアクセスを必要とし、それには Shopify Plus プランが必要」と記載していますShopify Help Center — Send payment reminder / 2026年8月18日確認)。契約プランやアカウントの状態によって使えるかどうかが変わるため、自社の管理画面で実際に設定できるかを一度確認してください。ここは変更が入りやすい領域なので、最新の記載はShopifyの公式ドキュメントをご確認ください。

そのうえで、標準のリマインダーが使える場合でも、DSOのような債権のKPIを月次で回そうとすると足りなくなるのが次の3点です。

  • 取引先別の未収残高が1画面にまとまっていない(注文単位に分散している)
  • 延滞している金額が、どの滞留区分にいくら溜まっているか集計されない
  • 月末時点の残高を、あとで再計算できる形で残す手段がない

リマインダーは「1通のメールを送る」ための機能であって、「債権全体を面で把握する」ための機能ではない、という整理です。

DueDeskが担う範囲

DueDeskは、この「債権を面で見る」部分を担うために作っているShopifyアプリです。具体的には次の情報を1画面に統合します。

  • 総未収額/うち延滞額/未収のある取引先数
  • 滞留区分別の残高(期日前・当日/1〜30日/31〜60日/61〜90日/90日超)
  • 取引先別の未収残高(未収額・件数・最古の支払期日・延滞の有無)
  • 取引先別ステートメント(1社あたりの未収明細をまとめた形)

そのうえで、エイジングとステートメントは CSVでダウンロード できます。これが上のステップ2、つまり「月末残高をあとから再計算できる形で残す」作業にそのまま使えます。なお、エイジングCSVは無料プランでも出力できますが、取引先別ステートメントの出力は有料プランの機能です。無料プランでは、取引先別残高の一覧に表示される取引先が上位3社までに制限されます(総未収額・延滞額などの集計そのものは全件が対象です)。督促メールの送信もお試し枠の範囲に限られます。

督促については、期日3日前 → 期日当日 → 期日から7日後 → 期日から30日後の4段階でドラフトを自動生成し、送信前に文面をプレビューして、人が確認したうえで送る設計にしています。さらに、入金が確認された注文は督促の対象から自動的に外れるため、「もう払った相手に催促してしまう」事故を防ぎます。

注意点として、DueDesk自体がDSOを自動計算する機能は現時点で提供していません。 アプリが提供するのは計算式の分子側(未収残高の集計とCSV出力)で、分母側の売上高はShopifyのレポートや会計ソフトから取っていただく形になります。また、DueDeskは与信審査・信用調査・債権回収の代行を行うサービスではありません。


まとめ

  • DSO(売掛金回転日数)= 期末売掛金残高 ÷ 期間売上高 × 期間日数
  • 比べる相手は業界平均ではなく、自社の支払条件どおりに回収できた場合の理論値。その差が改善余地
  • 数字が悪化したら、①請求の遅れ ②期日の伝達 ③督促の実施 ④特定取引先への偏り の4つで切り分ける
  • 続けるコツは、月末に取引先別の残高をCSVで残すこと。ここが手作業だと運用が止まる

まずは今月末、1回だけ計算してみてください。1回では良し悪しは分かりませんが、翌月に並べた瞬間から、打ち手が効いたかどうかが見えるようになります。


DueDeskについて

DueDeskは、ShopifyのB2B(掛け売り)注文について、未収残高・延滞・取引先別残高・エイジング・取引先別ステートメントを1画面に統合し、4段階の督促ドラフトをプレビューしてから送信できるようにするアプリです。Shopifyが入金を認識した注文は督促対象から自動的に除外されます(銀行振込などShopifyに記録されない入金は自動では検知できないため、督促一覧の「入金済みにする」で手動停止します)。

DueDeskはShopify向けのアプリとして現在開発中です。本記事の執筆時点では Shopify App Storeで公開されておらず、インストールしてご利用いただくことはできません。公開時期は未定です。

売掛金管理の運用についてのご質問、DueDeskの仕様へのご要望、および公開時にご連絡を希望される場合は、下のリンクからメールを1通お送りください(件名・本文はあらかじめ入力された状態で開きます。そのまま送信いただくだけで結構です)。

メールで問い合わせる

リンクを押してもメールソフトが開かない場合は、お手数ですが下記あてに直接お送りください。

  • 宛先:t.fukunaga@houseinfo.jp
  • 件名:DueDesk 公開通知希望 [DSO]
  • 本文:空欄で構いません

取り扱いについて:いただいたメールアドレスは、お問い合わせへの返信と、DueDeskのApp Store公開に関するご連絡にのみ使用し、他の目的への利用や第三者への提供は行いません。自動の受付確認メールはお送りしていません(担当者が順次、個別にご返信します。返信の時期、および公開時にご連絡できる時期をお約束するものではありません)。ご連絡が不要になった場合は、返信に「配信不要」とだけご記入ください。以後お送りしません。

なお、DueDeskは会計ソフト・与信審査/信用調査サービス・債権回収代行ではありません。