XPEL · XBRL financial data
XPEL financial statements, every fiscal year
The same tables from 7 filings, lined up. Matched by XBRL tag: renamed lines keep their history.
How these numbers work
- Every number comes from the company's XBRL financial data filed with the SEC, and each one links to its filing.
- Lines are matched by XBRL tag, so a line renamed between filings keeps its history.
- * marks a quarter worked out from the filing totals: the 10-K year minus the first three quarters, or a year-to-date total minus the earlier one. Fourth-quarter earnings per share is fourth-quarter net income over the fourth-quarter weighted shares.
- 0 means a filing states zero; a dash (—) means no filing states that number.
- “year only” means the 10-K gives the full year but not the quarters needed to work out the fourth. A worked-out quarter of revenue, cost of revenue or operating cash flow more than twice the company's largest quarter of the two years before is shown this way too.
- Gross profit is shown as the company reports it; a worked-out quarter must equal revenue less cost of revenue for that quarter, or it is a dash.
- Operating income can be above gross profit when the company books other operating income between the two, shown on its own line.
- Shares outstanding come from each filing's cover page, as of the date printed there.
- Quarters are fiscal: Q2 FY27 is the second quarter of the company's fiscal 2027.
Income statement
CSVFiscal years (XPEL's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Revenue from contracts with customers | 158,924 | 259,263 | 323,993 | 396,293 | 420,400 | 476,200 |
| Cost of goods and services sold | 104,899 | 166,586 | 196,481 | 233,879 | 243,040 | 275,181 |
| Gross profit | 54,025 | 92,677 | 127,512 | 162,414 | 177,360 | 201,019 |
| Research and development | 144 | 370 | 400 | 2,900 | 2,900 | 2,900 |
| General and administrative | 20,907 | 34,288 | 48,208 | 63,654 | 75,396 | 87,232 |
| Total operating expenses | 30,655 | 52,561 | 73,575 | 95,442 | 118,213 | 138,370 |
| Operating income (loss) | 23,370 | 40,116 | 53,937 | 66,972 | 59,147 | 62,649 |
| Interest expense | 249 | 303 | 1,410 | 1,248 | 996 | 83 |
| Income tax expense (benefit) | 4,523 | 7,873 | 10,584 | 13,231 | 11,289 | 12,472 |
| Net income (loss) | 18,282 | 31,567 | 41,381 | 52,800 | 45,489 | 51,226 |
| Earnings per share, basic USD per share | 0.66 | 1.14 | 1.50 | 1.91 | 1.65 | 1.85 |
| Earnings per share, diluted USD per share | 0.66 | 1.14 | 1.50 | 1.91 | 1.65 | 1.85 |
| Weighted average shares, basic thousands of shares | 27,613 | 27,613 | 27,614 | 27,622 | 27,639 | 27,657 |
| Weighted average shares, diluted thousands of shares | 27,613 | 27,613 | 27,616 | 27,634 | 27,643 | 27,683 |
Balance sheet
CSVFiscal years (XPEL's year ends in late December)
Cash flows
CSVFiscal years (XPEL's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Net income (loss) | 18,282 | 31,567 | 41,381 | 52,800 | 45,489 | 51,226 |
| Stock-based compensation | 0 | 169 | 522 | 1,640 | 3,197 | 2,753 |
| Net cash from operating activities | 18,466 | 18,268 | 12,057 | 37,384 | 47,824 | 66,938 |
| Purchases of property and equipment | 1,781 | 6,725 | 7,936 | 6,356 | 6,713 | 4,008 |
| Net cash from investing activities | (4,664) | (56,808) | (14,156) | (26,353) | (18,404) | (33,778) |
| Share repurchases | — | — | — | 0 | 0 | 2,999 |
| Net cash from financing activities | 3,511 | 19,241 | 602 | (7,259) | (19,253) | (3,657) |
| Net change in cash | 17,526 | (19,383) | (1,588) | 3,553 | 10,478 | 28,777 |
Compare with peers
SIC 3470 and related industry codes, similar size; rows marked “added: same SIC” fill a short list. Each row is the latest quarter reported.
How peers are chosen
- SIC 3470 and related industry codes with public float (or, where float is missing, quarterly revenue) between 0.2x and 5x the company's.
- Each row is the latest quarter the company has reported, named in the Quarter column; when that filing is a 10-K, it is the fourth quarter, never the full year.
- Fewer than three companies fall in that range, so the list adds same-SIC (3470) companies nearest in public float, each marked “added: same SIC”.
- Runway shows only for companies burning cash with under $10B of public float.
- * marks a quarter worked out from the filing totals: for a 10-Q, the year-to-date total less the earlier one.
- A cell reading “not reported” means the filings give no figure for that quarter alone.
- A cell reading “year only” links to a 10-K that gives only the full year: without all three earlier quarters there is no fourth quarter to work out, and the year total is never shown as a quarter.
| Company | Cash ($K) | Revenue, quarter ($K) | Operating cash flow, quarter ($K) | Shares outstanding | Runway | Quarter |
|---|---|---|---|---|---|---|
| XPEL | 40,675 | 143,053 | 30,789* | 27.6M | — | 10-QJun 30, 2026 |
| Azz | 1,953 | not reported | not reported | 29.9M | — | 10-Q/AAug 31, 2026 |
| Northern Technologies Internationaladded: same SIC | 7,276 | 24,216 | 623* | 9.5M | — | 10-QMay 31, 2026 |
| APEX Global Solutionsadded: same SIC | 1,132 | year only | year only | not reported | — | 20-FDec 31, 2025 |
| Nano Magicadded: same SIC | 39 | 640 | (642)* | 14.4M | 0.1 quarters | 10-QSep 30, 2024 |
| Quad Globaladded: same SIC | not reported | not reported | not reported | not reported | — | — |
Not investment advice. Not affiliated with the U.S. SEC.
