Calculateur DSO
Voyez combien de temps l'argent reste immobilisé après une vente à crédit : 40000 de créances clients face à 365000 de ventes à crédit annuelles donnent un DSO de 40 jours. Ventes quotidiennes moyennes et rotation des créances incluses. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Comptes clients
- 40 000
- Ventes à crédit
- 365 000
- Jours
- 365
- Délai moyen de recouvrement
- 40
- Ventes à crédit quotidiennes moyennes
- 1 000
- Rotation des créances
- 9,125
Le délai moyen de recouvrement, ou DSO, est l'identité de fonds de roulement qui transforme un solde de créances clients et une période de ventes à crédit en un retard d'encaissement mesuré en jours. Avec les créances, les ventes à crédit de la période et la durée de cette fenêtre, le DSO vaut les créances divisées par les ventes à crédit, multipliées par le nombre de jours. Contrôleurs, responsables crédit et étudiants consultent ce chiffre dès qu'ils doivent voir combien de temps la trésorerie reste immobilisée après une vente à terme. Ce calculateur de délai de recouvrement accepte ces trois entrées, applique l'identité et renvoie le délai d'encaissement en jours, ainsi que les ventes à crédit quotidiennes moyennes et la rotation implicite des créances.
Ce que signifie le délai de recouvrement et comment les créances sur les ventes à crédit deviennent un décompte en jours
Le délai moyen de recouvrement mesure combien de jours, en moyenne, les clients à crédit d'une entreprise mettent à payer après une vente à terme. Algébriquement, ce sont les créances clients divisées par les ventes à crédit totales de la période, multipliées par le nombre de jours de cette fenêtre.
Une société qui détient quarante mille de créances contre trois cent soixante-cinq mille de ventes à crédit sur une année de trois cent soixante-cinq jours a un DSO de quarante mille sur trois cent soixante-cinq mille fois trois cent soixante-cinq, soit exactement quarante jours : ventes à crédit quotidiennes moyennes de mille, et quarante jours de ventes assis au grand livre. La même identité est les créances divisées par les ventes à crédit quotidiennes moyennes, c'est-à-dire ventes à crédit sur jours ; les deux formes renvoient le même retard d'encaissement.
Le DSO est une conversion flux-contre-stock, pas une prévision d'une facture isolée ni un échéancier de vieillissement. Un chiffre plus bas signifie que la trésorerie revient plus vite ; un chiffre plus haut signifie que davantage de fonds de roulement reste dans les créances commerciales. Comparez le DSO aux conditions affichées : si les factures sont Net 30 et que le DSO gravit autour de quarante-cinq, les encaissements sont en retard en moyenne même si chaque facture paraît à jour le jour de l'émission.
La durée que vous envoyez doit correspondre à la fenêtre de ventes — ventes annuelles à crédit avec trois cent soixante-cinq ou trois cent soixante jours, un trimestre avec quatre-vingt-dix, un mois avec trente ou les jours calendaires de ce mois. Utilisez les créances moyennes, ouverture plus clôture sur deux, lorsque vous voulez un DSO moyen de période, ou les créances de clôture pour un instantané face aux ventes de cette fenêtre.
Les ventes à crédit doivent être un nombre fini strictement supérieur à zéro ; un total de ventes nul ne peut pas servir de dénominateur et est rejeté plutôt que d'inventer un délai d'encaissement. Les créances peuvent être nulles, ce qui donne un DSO de zéro car il ne reste rien à encaisser. Les sorties numériques utilisent un arrondi half-up afin que les goldens se comparent octet par octet d'un runtime à l'autre.
Cas d’usage
Conditions de crédit face au retard réel d'encaissement
Transformez les créances de clôture ou moyennes, les ventes à crédit et les jours de période en DSO et comparez le décompte de jours aux conditions affichées Net 30 ou Net 60.
Questions fréquentes
Comment calcule-t-on le délai moyen de recouvrement ?
Envoyez un solde de créances non négatif, un total de ventes à crédit positif pour la même fenêtre, et la durée de cette fenêtre en jours. Quarante mille de créances contre trois cent soixante-cinq mille de ventes annuelles à crédit donnent un DSO de quarante jours.
Que signifie un DSO élevé ou bas ?
Un DSO plus bas signifie que les clients paient plus vite et qu'il reste moins de trésorerie dans les créances. Un DSO plus haut signifie un retard d'encaissement plus long. Comparez le résultat aux conditions affichées : un DSO nettement au-dessus de Net 30 est un problème de recouvrement même si le grand livre paraît encore à jour.
Que se passe-t-il si les ventes à crédit valent zéro ?
Le délai de recouvrement divise les créances par les ventes à crédit, donc un total de ventes nul n'est pas un dénominateur valable. L'appel n'est pas facturé.
Faut-il utiliser 365, 360 ou 90 pour les jours ?
Faites correspondre days à la fenêtre de ventes que vous envoyez. Utilisez 365 ou 360 avec des ventes annuelles à crédit, 90 avec un trimestre, et 30 ou les jours calendaires du mois avec des ventes mensuelles. Mélanger des ventes annuelles avec un facteur de 90 jours gonfle le DSO.
Comment comparer le DSO à mes conditions de paiement ?
Placez le DSO à côté du délai de vos factures. Si vous facturez à 30 jours et que le DSO avoisine quarante-cinq, vos clients paient en retard en moyenne, même si chaque facture semblait à jour le jour de son émission.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"accounts_receivable": 40000,
"credit_sales": 365000,
"days": 365
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.days_sales_outstanding",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Un total de ventes à crédit nul échoue avec invalid_input au lieu de diviser par zéro.
Ce que signifie le délai de recouvrement et comment les créances sur les ventes à crédit deviennent un décompte en jours
Cet endpoint n'interroge ni soldes de grand livre, ni tranches de vieillissement, ni calendriers de conditions ; il applique l'identité que vous fournissez afin que corrigés, widgets de page et automatisations partagent un seul décompte de jours auditable.
Contrat d'entrée, forme de la réponse et comportement d'erreur
Exemple : quarante mille de créances, trois cent soixante-cinq mille de ventes à crédit et trois cent soixante-cinq jours renvoie un DSO de quarante, des ventes quotidiennes moyennes de mille et une rotation de neuf point un deux cinq. Les ventes à crédit sont le champ que le contrat produit isole : un total de ventes nul n'est jamais remplacé en silence par des ventes au comptant, un chiffre d'affaires net ou un, et un chiffre de ventes manquant n'est pas traité comme zéro. Une validation en échec ne consomme pas le solde, ce qui maintient peu coûteux les scripts exploratoires lorsque qui développe envoie exprès un total de ventes à crédit nul pour confirmer le chemin d'erreur. Envoyez par POST un corps JSON avec trois nombres finis obligatoires. accounts_receivable (alias ar, receivables, accounts_receivable_balance, ending_receivables et average_receivables) est le stock de créances en unités monétaires pour la même fenêtre que le chiffre de ventes ; il doit être fini et supérieur ou égal à zéro. credit_sales (alias total_credit_sales, net_credit_sales, sales, credit_sales_total et net_sales) sont les ventes à crédit de la période dans la même devise et doivent être un nombre fini strictement supérieur à zéro. days (alias days_in_period, period_days, n et period) est la durée de cette fenêtre de ventes en jours et doit être un nombre fini strictement supérieur à zéro. decimals est facultatif, un entier de zéro à douze, six par défaut, qui pilote l'arrondi half-up des sorties numériques. En cas de succès, le corps renvoie en écho les trois entrées, puis days_sales_outstanding comme délai d'encaissement en jours, average_daily_credit_sales comme ventes à crédit sur jours, et — lorsque les créances sont positives — receivables_turnover comme ventes à crédit sur créances. Une chaîne formula reformule que le DSO égale accounts_receivable sur credit_sales fois days. Champs manquants, valeurs non finies, solde de créances négatif, durée de période nulle ou négative, ou total de ventes à crédit nul ou négatif échouent avec invalid_input en nommant le champ et ne sont pas facturés. Préférez des nombres JSON simples à des chaînes avec symboles monétaires ou séparateurs de milliers ; les chaînes numériques ne sont acceptées que si elles correspondent à un motif strict de nombre fini, sans virgules ni étiquettes. Le tarif est un $0.002 fixe par appel réussi avec unit item.
Où un calculateur de délai de recouvrement justifie son existence
Les enseignants et les plateformes LMS ont besoin d'un oracle pour la question de définition qui demande de calculer le DSO comme créances sur ventes à crédit fois jours, y compris le cas trimestriel à quatre-vingt-dix jours et le cas annuel à trois cent soixante-cinq, sans extrait ERP complet. Les équipes de contenu peuvent opposer le DSO à la rotation des créances et aux jours de dettes fournisseurs afin que le lecteur voie pourquoi un retard d'encaissement court ne finance toujours pas un cycle de paiements plus long, et pourquoi le cycle de conversion de trésorerie exige les trois jambes. Servez-vous de cette capacité lorsque vous avez déjà les créances, les ventes à crédit et un décompte de jours concordant ; si vous n'avez que des encaissements par tranche de vieillissement et voulez une courbe d'encaissement pondérée, c'est une autre identité qui n'appartient pas à cette définition de DSO. Les fichiers trésorerie et FP&A stockent souvent les créances de clôture et les ventes de période dans des colonnes séparées ; un endpoint déterministe retrouve le DSO sans une cellule de tableur que quelqu'un pourrait plus tard réécrire en rotation en omettant le multiplicateur de jours. Les intégrateurs branchent l'endpoint sur des carnets, des outils de flux ou des workers en bordure pour figer des goldens dès qu'un dossier de clôture change le stock de créances ou le total de ventes à crédit. Comme l'implémentation est un travail analytique parse de palier A pur, chaque appel réussi coûte le tarif de base publié $0.002 sans jetons de modèle ni réseau sortant. Conservez credit_sales strictement positif, figez le champ days_sales_outstanding arrondi dans les tests, et vous obtenez des délais d'encaissement reproductibles pour widgets, salles de classe et production sans monter votre propre bibliothèque de fonds de roulement.
Cas d'intégration
Dossiers de clôture du fonds de roulement
Retrouvez days_sales_outstanding à partir des colonnes de créances et de ventes à crédit sans omettre par mégarde le multiplicateur de jours (ce serait la rotation, pas le DSO).
Devoirs de DSO en classe et clés LMS
Notez les exercices qui demandent de calculer le DSO comme (accounts_receivable / credit_sales) × days, y compris les fenêtres annuelles de 365 jours et trimestrielles de 90 jours.
Questions techniques
Combien coûte le calculateur de délai de recouvrement ?
L'outil du navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.