Custom Truck One Source (CTOS) Gross Margin (2018 - 2026)
Custom Truck One Source's Gross Margin was 22.00% in Q2 2026, up 1.95 percentage points from 20.05% a year earlier but down 0.32 percentage points from the prior quarter.
Custom Truck One Source (CTOS) Gross Margin (2018 - 2026) Analysis & Trends
On a trailing twelve-month basis, Custom Truck One Source's Gross Margin was 22.15% through Jun 30, 2026, up 1.20 percentage points year-over-year; for FY2025, it came in at 21.19%, down 0.47 percentage points from FY2024.
- Gross Margin has now declined for three consecutive years, with a five-year change of -4.06 percentage points (FY2020 to FY2025).
- In earlier years, Gross Margin was 21.65% in FY2024 (-2.70 pp), 24.36% in FY2023 (-0.04 pp), 24.39% in FY2022 (+6.40 pp) and 17.99% in FY2021 (-7.26 pp).
- Quarterly Gross Margin has moved between 18.26% (Q3 2021) and 26.37% (Q4 2022) over five years.
- Compared with a year earlier, Gross Margin has increased for four straight quarters, with an average year-over-year change of -0.45 percentage points over the last eight quarters.
- The best year-over-year quarter for Gross Margin over five years was Q2 2022 (a gain of 10.41 percentage points); the worst was Q4 2021 (a drop of 5.86 percentage points).
- Per Business Quant data, CTOS's Gross Margin in the three quarters before Q2 2026 was 22.33% (Q1 2026), 23.30% (Q4 2025) and 20.90% (Q3 2025).
Peer Comparison
| # | Company | Market Cap | Enterprise Value | Gross Profit (Qtr) | Gross Margin (Qtr) |
|---|---|---|---|---|---|
| 1 | United Rentals | 65.40 Bn | 64.16 Bn | 1.73 Bn | 39.27% |
| 2 | W.W. Grainger | 63.07 Bn | 60.67 Bn | 1.98 Bn | 39.51% |
| 3 | Fastenal | 59.20 Bn | 58.13 Bn | 1.06 Bn | 44.56% |
| 4 | Ferguson Enterprises | 44.13 Bn | 41.34 Bn | 2.32 Bn | 31.02% |
| 5 | Sunbelt Rentals Holdings | 31.58 Bn | 31.46 Bn | 1.25 Bn | 40.10% |
| 6 | Reliance | 21.32 Bn | 20.36 Bn | 1.30 Bn | 28.09% |
| 7 | Wesco International | 16.71 Bn | 14.03 Bn | 1.46 Bn | 21.85% |
| 8 | Applied Industrial Technologies | 12.36 Bn | 12.23 Bn | 411.22 Mn | 30.40% |
| 9 | Watsco | 11.52 Bn | 9.20 Bn | 578.93 Mn | 27.50% |
| 10 | Custom Truck One Source | 2.07 Bn | 2.03 Bn | 123.97 Mn | 22.00% |
Historic Data
| Date | Value |
|---|---|
| Jun 30, 2026 | 22.00% |
| Mar 31, 2026 | 22.33% |
| Dec 31, 2025 | 23.30% |
| Sep 30, 2025 | 20.90% |
| Jun 30, 2025 | 20.05% |
| Mar 31, 2025 | 20.26% |
| Dec 31, 2024 | 22.75% |
| Sep 30, 2024 | 20.53% |
| Jun 30, 2024 | 21.10% |
| Mar 31, 2024 | 22.05% |
| Dec 31, 2023 | 24.31% |
| Sep 30, 2023 | 24.67% |
| Jun 30, 2023 | 24.21% |
| Mar 31, 2023 | 24.25% |
| Dec 31, 2022 | 26.37% |
| Sep 30, 2022 | 24.64% |
| Jun 30, 2022 | 22.85% |
| Mar 31, 2022 | 23.06% |
| Dec 31, 2021 | 21.84% |
| Sep 30, 2021 | 18.26% |
Custom Truck One Source Gross Margin API
Pull this series into your own models, spreadsheets and apps with the Business Quant
Historical Metrics API. The request below matches the chart above — change the
frequency, period or values and it follows. Swap YOUR_API_KEY for your own key.
https://data.businessquant.com/historic?slug=gross-margin&ticker=CTOS&period=max&api_key=YOUR_API_KEY
import requests
url = "https://data.businessquant.com/historic"
params = {"slug": "gross-margin", "ticker": "CTOS", "period": "max", "api_key": "YOUR_API_KEY"}
data = requests.get(url, params=params).json()
const res = await fetch("https://data.businessquant.com/historic?slug=gross-margin&ticker=CTOS&period=max&api_key=YOUR_API_KEY");
const data = await res.json();