Cash Conversion Cycle (CCC): Formula, Benchmarks, and What Your Working Capital Is Actually Costing You
A manufacturer with €30M in revenue and a 65-day CCC is running 20 days above the industry average. That gap is €1.64M in trapped cash – cash the business earned, cash it needs, cash sitting in receivables and inventory while it pays a bank to bridge the shortfall.
That’s not a working capital problem. That’s a loan the business is giving itself.
The Cash Conversion Cycle is the one number that tells you how long cash is locked up between paying for inputs and collecting from customers. DSO, DIO, and DPO are the three levers. Most companies optimize one. The ones that manage all three compress CCC by weeks and free six-figure sums without touching their revenue line.
If you want to see what a dashboard looks like that surfaces working capital problems automatically, that architecture question matters before the formula does.
The CCC Formula
CCC = DSO + DIO – DPO
Days Sales Outstanding plus Days Inventory Outstanding minus Days Payable Outstanding. The result is how many days, on average, a euro of cash is tied up in operations before it comes back.
A CCC of 45 means you’re financing 45 days of operations from your own pocket. Every day above your industry benchmark costs (Annual Revenue / 365) euros in trapped working capital – recurring, compounding, and largely invisible in standard P&L reporting.
What Each Component Measures
The receivables component tends to be where the cash is actually sitting. The full DSO breakdown shows how to isolate what’s driving collection delays.
Days Sales Outstanding (DSO) measures how long it takes to collect cash after a sale. It’s the receivables leg – from invoice to payment. A DSO of 45 means your customers are holding your cash for 45 days on average. For a full breakdown of DSO calculation, the countback method, and Qlik expressions, see the Days Sales Outstanding page.
The inventory leg of the cycle is where most manufacturers find the most leverage. DIO has its own set of benchmarks and traps worth understanding separately.
Days Inventory Outstanding (DIO) measures how long inventory sits before it’s sold. Formula: (Average Inventory / COGS) x 365. A DIO of 30 means you turn your inventory roughly 12 times per year. High DIO means cash is locked in stock – purchased but not yet converted into a sale, let alone a payment.
Days Payable Outstanding (DPO) measures how long you take to pay your own suppliers. Formula: (Accounts Payable / COGS) x 365. Higher DPO means you’re using supplier credit longer before paying – which extends your runway. DPO is the one component where higher is better, with an important caveat covered below.
Where Is the Hidden Money in Your CCC?
Most companies have a CCC problem they’ve never quantified. The number exists in their ERP. Nobody has done the math.
Take a wholesale distributor with €25M in revenue and a CCC of 58 days against a 40-day industry average. That 18-day gap is €1.23M sitting idle in receivables and inventory. At a 7% cost of capital, that idle cash costs €86,301 per year in financing – money leaving the business every year because a metric nobody tracks stayed 18 days above benchmark.
The hidden money isn’t in a new product line or a new market. It’s in the gap between what your CCC is and what it should be. That gap has a euro value, and it recurs every year until someone closes it.
The formula to calculate your own number: Cash Trapped = (Annual Revenue / 365) x (Actual CCC – Benchmark CCC). Run it for your business before reading further. The result tends to change how urgently you read the rest of this.
Why CCC Matters More Than Any Single Metric
You can have great DSO and a terrible CCC. That’s the trap.
Consider a distribution company with DSO of 35 days – well within industry norms. The AR team looks excellent. But DIO is running at 60 days and DPO at 20 days. CCC = 35 + 60 – 20 = 75 days. The problem isn’t collections. It’s inventory.
CCC shows the net result across all three components. Optimizing DSO in isolation is the equivalent of fixing a leak in one pipe while two others are running. The aggregate cash position doesn’t improve until you look at the whole cycle.
The other implication: CCC assigns accountability. DSO is a finance and sales problem. DIO is an operations and procurement problem. DPO is a finance and supplier management problem. A single CCC number with component-level drill-down tells you exactly which team owns the gap – which is why it belongs in every finance dashboard at mid-market level.
CCC Benchmarks by Industry
These ranges reflect typical mid-market performance. CCC below zero – common in retail and SaaS – means customers pay before the company pays its suppliers. That’s the Amazon model: supplier financing at scale.
| Industry | Good | Average | Concerning |
|---|---|---|---|
| Retail / E-commerce | < 15 days | 15-30 days | > 35 days |
| Manufacturing | < 45 days | 45-70 days | > 80 days |
| Wholesale Distribution | < 35 days | 35-55 days | > 65 days |
| SaaS / Professional Services | < 25 days | 25-45 days | > 55 days |
| Healthcare | < 50 days | 50-75 days | > 90 days |
One caveat: these are blended ranges. A manufacturer on net-60 supplier terms will structurally run lower CCC than one on net-30 terms, regardless of operational efficiency. Always compare CCC within the same payment term structure, not just the same industry.
What Is the Cash Impact of Reducing CCC?
The formula: Cash Freed = (Annual Revenue / 365) x CCC Days Reduced. The amounts are not abstract.
| Annual Revenue | CCC Reduced By 5 Days | CCC Reduced By 10 Days | CCC Reduced By 15 Days |
|---|---|---|---|
| €10M | €136,986 | €273,973 | €410,959 |
| €30M | €410,959 | €821,918 | €1,232,877 |
| €50M | €684,932 | €1,369,863 | €2,054,795 |
| €100M | €1,369,863 | €2,739,726 | €4,109,589 |
At 7% cost of capital, a €50M company reducing CCC by 10 days frees €1.37M and saves €95,890 per year in financing costs – every year the improvement holds.
That number recurs. It doesn’t require new revenue, new headcount, or a restructure. It requires managing a metric most companies track monthly, at best, and act on never.
The Three Levers: Which One to Pull First
Not all CCC improvements are equivalent. Each lever has a different speed, impact profile, and risk.
- Improving DSO (fastest lever). Invoice on delivery instead of month-end. Automate dunning with day-1 and day-7 reminders. Fix invoice error rates that park invoices in dispute queues. DSO improvements flow through to cash within weeks and require no supplier or customer renegotiation. For the full playbook, see the Days Sales Outstanding page.
- Reducing DIO (highest impact for manufacturers). Demand-driven replenishment, reduced safety stock targets, faster supplier lead times, and SKU rationalization all compress DIO. A manufacturer running 60-day DIO against a 40-day industry average is carrying two extra weeks of raw material and finished goods – all of it funded from working capital. The operational complexity is higher than DSO improvement, but the absolute cash release is often larger.
- Extending DPO (use carefully). Negotiating longer payment terms with suppliers is legitimate and common. It compresses CCC mechanically. The counterintuitive truth: stretching DPO transfers your working capital problem to your suppliers. They know this, and they price it back in – either through higher unit costs, smaller credit limits, or reduced priority in allocation cycles. DPO extension works best when the supplier relationship is strong and the terms are negotiated explicitly, not extracted unilaterally.
The highest-leverage sequence: fix DSO first (no counterparty risk, fastest cash impact), then address DIO (biggest upside for product businesses), then negotiate DPO where the supplier relationship supports it.
The Loan You’re Giving Your Business – and What It Costs
Every day of CCC above benchmark is a loan your company has extended to itself. The principal is your trapped working capital. The interest rate is your cost of capital. The term is indefinite.
A €40M manufacturer running 15 days above the manufacturing benchmark carries €1.64M in self-financed working capital. At 7%, that’s €115,068 per year in opportunity cost – before considering that most mid-market manufacturers also carry a revolving credit facility to cover exactly this gap. In that case, the opportunity cost becomes a real, recurring line item: the interest they’re paying the bank to fund the working capital their own operations should be releasing.
This is the money hiding in your CCC. It doesn’t show up on the P&L. It doesn’t trigger a variance alert. It just sits there, year after year, invisible in the gap between what your cycle time is and what it should be.
The way to find it: calculate your benchmark-adjusted CCC, multiply by (Annual Revenue / 365), and look at the result. That number is the starting point for any working capital conversation worth having.
CCC in Healthcare: An Almost Entirely Different Problem
For service businesses with minimal inventory, DIO is near zero. CCC collapses to essentially DSO minus DPO.
In healthcare, that means CCC is almost entirely a DSO problem – and healthcare DSO is structurally different from any other industry. The payer is rarely the patient. Payment timelines fragment by payer class: commercial insurance, Medicare, Medicaid, and patient self-pay each carry different baseline DSO, and first-pass denial rates of 5-10% add 30-60 days per denied claim on top of that.
A healthcare provider with a 75-day CCC and a 5% denial rate doesn’t have a collections problem. It has a coding and eligibility verification problem that’s masquerading as a working capital problem.
The Days Sales Outstanding healthcare section covers payer mix adjustment and denial rate impact on DSO in detail. For healthcare finance teams, that’s the right entry point – DIO and DPO are largely irrelevant to the core working capital challenge.
How to Track CCC in Qlik
Three expressions cover the core use cases. Field name placeholders used: AR_Balance, Revenue, Inventory, COGS, AP_Balance, IsLTM. Replace with your actual field names. These expressions assume a master calendar with an IsLTM flag set to 1 for the trailing 12 months.
Simple CCC (DSO + DIO – DPO)
Num(
// DSO: current AR balance / trailing 12-month revenue
(
Sum({1} AR_Balance)
/ If(Sum({<IsLTM={1}>} Revenue) = 0, null(), Sum({<IsLTM={1}>} Revenue))
) * 365
// DIO: average inventory over 12 months / trailing 12-month COGS
+ (
Avg({<IsLTM={1}>} Inventory)
/ If(Sum({<IsLTM={1}>} COGS) = 0, null(), Sum({<IsLTM={1}>} COGS))
) * 365
// DPO: current AP balance / trailing 12-month COGS
- (
Sum({1} AP_Balance)
/ If(Sum({<IsLTM={1}>} COGS) = 0, null(), Sum({<IsLTM={1}>} COGS))
) * 365
, '##0.0')
Data model note: AR_Balance and AP_Balance use {1} (ignore all selections) because they are point-in-time balance sheet figures – the current open balance, not a period flow. Filtering them with IsLTM={1} would sum 12 months of closing balances and inflate DSO and DPO by roughly 12x. Revenue and COGS use IsLTM={1} because they are flows that should be measured over a trailing 12-month window. Inventory uses Avg across the LTM period, which gives a reasonable average stock figure for DIO.
CCC Trend Over Rolling 12 Months
// Use in a line chart with YearMonth as the dimension.
// The dimension context filters each point to its own period automatically.
// No rolling window needed - each month's bar shows that month's CCC.
Num(
(
Sum(AR_Balance)
/ If(Sum(Revenue) = 0, null(), Sum(Revenue))
) * 365
+ (
Avg(Inventory)
/ If(Sum(COGS) = 0, null(), Sum(COGS))
) * 365
- (
Sum(AP_Balance)
/ If(Sum(COGS) = 0, null(), Sum(COGS))
) * 365
, '##0.0')
For a trend chart, the YearMonth dimension already filters each data point to its own period – no additional set analysis needed. Add an IsLTM={1} chart-level filter to restrict the axis to the last 12 months. The set analysis tutorial covers dimension-context filtering in more detail.
CCC by Business Unit (Using TOTAL Correctly)
// Use in a bar chart with BusinessUnit on the dimension.
// Each bar shows CCC for that entity calculated against its own revenue/COGS.
// TOTAL is NOT used here - the aggregations should respect the dimension context.
Num(
(
(
Sum(AR_Balance)
/
If(Sum({<IsLTM={1}>} Revenue) = 0, null(), Sum({<IsLTM={1}>} Revenue))
) * 365
)
+
(
(
Avg(Inventory)
/
If(Sum({<IsLTM={1}>} COGS) = 0, null(), Sum({<IsLTM={1}>} COGS))
) * 365
)
-
(
(
Sum(AP_Balance)
/
If(Sum({<IsLTM={1}>} COGS) = 0, null(), Sum({<IsLTM={1}>} COGS))
) * 365
)
, '##0.0')
The TOTAL qualifier is intentionally absent here. Each BusinessUnit dimension value should aggregate only its own rows. Use TOTAL only when you need the expression to ignore the chart dimension – for example, to calculate each entity’s CCC as a percentage of the company-wide CCC. Misusing TOTAL in a by-entity chart produces the same number in every bar, which is a common source of confusion in working capital dashboards. The management reporting architecture section covers dimension-aware aggregation in detail.
What CCC Doesn’t Tell You
A falling CCC is not automatically good news.
DIO declining fast can mean two different things: you’re turning inventory efficiently, or you’re running critically low on stock and haven’t noticed yet. A CCC that improves because DIO compressed from 45 to 20 days in a single quarter needs a stockout rate check before it gets reported as a win.
- Low DIO plus rising stockout rate: you’ve optimized the metric by depleting the buffer. Revenue impact is coming.
- Improving DSO plus deteriorating AR aging: large slow invoices are aging past 90 days while aggregate DSO looks fine. The DSO page covers this scenario – a growing 90+ bucket alongside flat DSO is the specific pattern to catch early.
- Negative CCC: common in retail and SaaS, structurally attractive, and not risk-free. Negative CCC means suppliers are financing your operations. That works at scale and with pricing power. When you need to renegotiate payment terms – during a growth phase, a downturn, or a supplier consolidation – the structure unwinds. Amazon’s CCC has been negative for decades. A mid-market distributor achieving the same result through aggressive DPO extension should understand who absorbs the risk when terms reset.
Always read CCC alongside inventory days trend, stockout rate, and AR aging buckets. The aggregate number shows the direction. The components tell you whether to celebrate or investigate.
What to Read Next
See where the cash is hiding: Days Sales Outstanding is the fastest-moving component of CCC and the one with the clearest operational playbook. Start here if DSO is your largest lever.
See it in a dashboard: The finance dashboard guide shows what CCC tracking looks like when all three components are surfaced automatically, with component drill-down.
Find money in your inventory: Days Inventory Outstanding is where manufacturers find the largest absolute cash release – and where most working capital audits find the biggest surprises.