ZTO Express (Cayman) Inc.
ZTOdata completeness 100%10 fiscal years on fileZTO Express (Cayman) Inc. earns about 14% on invested capital, comfortably above its ~9% cost of capital, with a roughly flat share count — a real edge showing up in the numbers. The estimate methods put fair value between $15.25 and $22.41 a share.Whether it’s worth owning at today’s price is the last question — and yours to answer, below.
| Figure | FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 |
|---|---|---|---|---|---|
| Revenue | $4.77B1 | $5.13B2 | $5.41B3 | $6.07B4 | $7.02B5 |
| Net income | $746.1M6 | $987.2M7 | $1.23B8 | $1.21B9 | $1.3B10 |
| Operating cash flow | $1.13B11 | $1.66B12 | $1.88B13 | $1.57B14 | $1.71B15 |
| Capital expenditure | $1.31B16 | $1.02B17 | $919.6M18 | $713.5M19 | $745.6M20 |
| Free cash flow (derived) | −$178.9M11 | $639.6M12 | $962.3M13 | $852.3M14 | $965.8M15 |
| Total debt | $542.7M21 | $782.1M22 | $1.09B23 | $1.3B24 | $1.56B25 |
| Cash & equivalents | $1.53B26 | $1.7B27 | $1.74B28 | $1.84B29 | $1.43B30 |
| Diluted shares | 820.0M | 820.3M | 838.9M | 838.4M | 820.8M |
Superscripts are receipts. Each links to the SEC filing the number came from (full list at the bottom).
10 shares is a claim on $115.65 of net worth that earned you $15.82 and generated $11.77 of cash last year, against $19.05 of debt.
It earned about 14% on invested capital against a ~9% cost of capital — comfortably above the cost of funding, a moderate advantage.
seeing a moat in the numbers →Share count is roughly flat over 5 years — little dilution, little buyback. Total debt has risen 188% over the same window.
reading capital allocation →Signals, not verdicts — read from the filings above. Numbers don’t prove a moat; they show its footprint. You decide.
The 3 estimate methods that apply put fair value between $15.25 and $22.41 a share. They rest on different assumptions, so where they diverge is the story; the Graham Number is a stricter floor, not a target.
assumptions (10)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- terminalGrowth2.5%
- projectionYears10
- fcfGrowth5.0%
- fcfBase$962.3M
assumptions (10)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- terminalGrowth2.5%
- projectionYears5
- fcfGrowth5.0%
- fcfBase$962.3M
assumptions (8)
- riskFreeRate4.7%
- equityRiskPremium5.0%
- beta100.0%
- equityWeight85.0%
- costOfDebtSpread1.5%
- taxRate21.0%
- normalizedEarnings$1.21B
- growthAssumed0.0%
assumptions (1)
- grahamMultiplier2250.0%
Different models answer different questions — which to trust when →
| Bear | 0.0% | $16.59 |
| Base | 5.0% | $20.64 |
| Bull | 10.0% | $25.5 |
Bear/base/bull growth = 0% / filed history / history + 5pp. Type a price to see the return each case implies.
Default growth 5.0%= this company’s own filed history (median-to-median FCF CAGR, clamped 0–20%). Your adjustments are recorded anonymously. They become the “what do owners actually believe” dataset.
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (RevenueFromContractWithCustomerIncludingAssessedTax)
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (NetIncomeLoss)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (NetIncomeLoss)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (NetIncomeLoss)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (NetIncomeLoss)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (NetIncomeLoss)
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (NetCashProvidedByUsedInOperatingActivities)
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (PaymentsToAcquirePropertyPlantAndEquipment)
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (ShortTermBorrowings)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (ShortTermBorrowings)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (ShortTermBorrowings)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (ShortTermBorrowings)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (ShortTermBorrowings)
- 20-F · period ending 2021-12-31 · accession 0001104659-22-051510 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2022-12-31 · accession 0001104659-23-047358 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2023-12-31 · accession 0001104659-24-049017 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2024-12-31 · accession 0001410578-25-000774 (CashAndCashEquivalentsAtCarryingValue)
- 20-F · period ending 2025-12-31 · accession 0001104659-26-044613 (CashAndCashEquivalentsAtCarryingValue)