DSO計算機
掛け売りのあと、お金がどれだけ寝ているかが分かります。売上債権40000、年間の掛売上365000なら、売上債権回転日数(DSO)は40日です。1日あたりの平均掛売上と債権回転率も表示し、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 売掛金
- 40,000
- 掛売上高
- 365,000
- 日数
- 365
- 売上債権回転日数
- 40
- 1日平均掛売上高
- 1,000
- 売掛金回転率
- 9.125
売上債権回転日数、すなわち DSO は、売掛金残高と掛売上の期間を、日数で測る回収遅れへ変換する運転資本の恒等式です。売掛金、期間の掛売上、その窓の長さが与えられると、DSO は売掛金を掛売上で割り、日数を掛けた値になります。経理責任者、与信管理者、学習者は、掛売り後に資金がどれほど拘束されるかを見るたびにこの数値を参照します。本計算機は三つの入力を受け、恒等式を適用し、回収期間の日数に加え、一日あたり平均掛売上と暗黙の売上債権回転率を返します。
売上債権回転日数の意味と、売掛金を掛売上で割って日数になる理由
売上債権回転日数は、企業の掛売り顧客が掛売り後に支払うまでに要する平均日数を測ります。代数では、期間の総掛売上で売掛金を割り、その窓の日数を掛けます。三十六万五千の掛売上に対し四万の売掛金を、三百六十五日の年で持つ会社の DSO は、四万を三十六万五千で割り三百六十五を掛けた値、すなわちちょうど四十日です。
一日あたり平均掛売上は千、台帳に残る売上は四十日分です。同じ恒等式は、売掛金を一日あたり平均掛売上(掛売上を日数で割った値)で割る形でも書け、どちらの形も同じ回収遅れを返します。DSO はフロー対ストックの換算であり、一枚の請求書の予測でも、滞留日数表でもありません。
数値が低いほど資金は早く戻り、高いほど運転資本が売上債権に滞留します。表示条件と比べてください。請求が Net 30 で DSO が四十五前後なら、発行日に各請求が未経過に見えても、平均では回収が遅れています。
送る日数は売上窓と一致させてください。年次掛売上なら三百六十五または三百六十、四半期なら九十、月次なら三十またはその月の暦日です。期間平均の DSO が欲しいときは期首と期末の平均売掛金を、その期間売上に対する瞬間値なら期末売掛金を使います。
掛売上はゼロより大きい有限数でなければなりません。売上合計がゼロでは分母にできず、回収期間を捏造せず拒否します。売掛金はゼロでもよく、回収残がないため DSO はゼロになります。
活用例
表示与信条件と実際の回収遅れの比較
期末または平均の売掛金、掛売上、期間日数を DSO に変え、日数を表示の Net 30 や Net 60 と比べます。
よくある質問
売上債権回転日数はどう計算しますか?
非負の売掛金残高、同じ窓の正の掛売上合計、その窓の日数を送ってください。年次掛売上三十六万五千に対する売掛金四万は、DSO 四十日です。
DSO が高い、または低いとは何を意味しますか?
低い DSO は顧客が早く払い、売掛金に残る資金が少ないことを意味します。高い DSO は回収遅れが長いことを意味します。結果を表示条件と比べてください。Net 30 を大きく超える DSO は、台帳が未経過に見えても回収の問題です。
掛売上がゼロだとどうなりますか?
売上債権回転日数は売掛金を掛売上で割るため、売上合計ゼロは有効な分母ではありません。呼び出しは課金されません。
日数は 365、360、90 のどれを使いますか?
送る売上窓に days を合わせてください。年次掛売上なら 365 または 360、四半期なら 90、月次なら 30 またはその月の暦日です。年次売上に 90 日係数を混ぜると DSO が膨らみます。
DSOを支払条件とどう比べればよいですか?
DSOを請求書の支払条件と並べて見ます。30日払いで請求しているのにDSOが四十五日前後なら、発行時点ではどの請求書も期限内に見えても、平均すると支払いが遅れています。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/fin/days-sales-outstanding \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"accounts_receivable":40000,"credit_sales":365000,"days":365}'const res = await fetch("https://api.kit.forhosting.com/fin/days-sales-outstanding", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"accounts_receivable": 40000,
"credit_sales": 365000,
"days": 365
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/days-sales-outstanding",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"accounts_receivable": 40000,
"credit_sales": 365000,
"days": 365
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/days-sales-outstanding", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"accounts_receivable":40000,"credit_sales":365000,"days":365}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"accounts_receivable":40000,"credit_sales":365000,"days":365}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/days-sales-outstanding", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"accounts_receivable": 40000,
"credit_sales": 365000,
"days": 365
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.days_sales_outstanding",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
掛売上がゼロのときはゼロ除算をせず invalid_input で失敗します。
売上債権回転日数の意味と、売掛金を掛売上で割って日数になる理由
本エンドポイントは元帳残高、滞留区分、支払条件カレンダーを取得しません。
入力契約、応答の形、誤りの扱い
任意の decimals はゼロから十二の整数で、既定は六、数値出力の half-up 丸めを制御します。例:売掛金四万、掛売上三十六万五千、日数三百六十五なら、DSO は四十、一日あたり平均売上は千、回転率は九点一二五です。掛売上は製品契約が特に強調する欄です。売上合計ゼロを現金売上、純収益、一に黙って置き換えることはなく、欠落した売上もゼロ扱いしません。数値文字列は、読点やラベルなしの厳密な有限数パターンに合うときだけ受け付けます。検証失敗は残高を消費しないため、開発者が誤り経路を確認しようと掛売上ゼロを意図的に送っても探索スクリプトは安く済みます。必須の有限数三つを含む JSON 本体を POST してください。accounts_receivable(別名 ar、receivables、accounts_receivable_balance、ending_receivables、average_receivables)は売上数字と同じ窓の通貨単位の売掛金在庫で、有限かつゼロ以上でなければなりません。credit_sales(別名 total_credit_sales、net_credit_sales、sales、credit_sales_total、net_sales)は同通貨の期間掛売上で、ゼロより大きい有限数でなければなりません。days(別名 days_in_period、period_days、n、period)はその売上窓の日数で、ゼロより大きい有限数でなければなりません。成功時は三入力を返し、続けて回収期間日数としての days_sales_outstanding、掛売上を日数で割った average_daily_credit_sales、売掛金が正のときは売掛金で割った receivables_turnover を付けます。formula 文字列は DSO が accounts_receivable を credit_sales で割り days を掛けた値だと再述します。欠落欄、非有限値、負の売掛金、ゼロまたは負の期間長、ゼロまたは負の掛売上は、欄名を示した invalid_input で失敗し、課金されません。通貨記号や桁区切り付き文字列より素の JSON 数を優先してください。料金は成功一回あたり固定の $0.002 で、単位は unit item です。
売上債権回転日数計算機が役立つ場面
教育者と LMS 基盤は、四半期九十日と年次三百六十五日を含む「売掛金を掛売上で割り日数を掛ける」定義問題の神託を、完全な ERP 抽出なしに必要とします。編集チームは DSO を売上債権回転率や仕入債務回転日数と対比し、短い回収遅れでも長い支払サイクルを賄えない理由、資金変換サイクルに三脚が必要な理由を読者に示せます。すでに売掛金、掛売上、対応する日数があるときに本能力を使ってください。滞留区分ごとの現金回収しかなく加重回収曲線が欲しいなら、それは別の恒等式であり、この DSO 定義には属しません。財務と FP&A のファイルは期末売掛金と期間売上を別列に置くことが多く、決定的なエンドポイントなら、後から誰かが日数乗数を外して回転率に書き換えてしまう表計算セルなしに DSO を復元できます。実装は純粋な parse ティア A の解析作業なので、成功する呼び出しは毎回、公表された基本料金 $0.002 のみで、モデルトークンも外向き通信もありません。
連携の活用例
運転資本の決算一式
売掛金列と掛売上列から days_sales_outstanding を復元し、日数乗数を誤って外さないようにします(外すと回転率であり DSO ではありません)。
教室の DSO 課題と LMS 解答
学習者に DSO を (accounts_receivable / credit_sales) × days として計算させる問題を採点します。年次 365 日と四半期 90 日の窓を含みます。
技術的な質問
売上債権回転日数計算機の料金はいくらですか。
ブラウザ用具は無料です。API 要求は成功一回あたり $0.002 の前払い KIT 残高を使い、無効な入力は課金されません。