REVENUE RECOGNITION AND CONTRACTS
Revenue Recognition
We generate the vast majority of our revenues from the supply of, and aftermarket services for, steam-generating, environmental and auxiliary equipment. We had one customer that comprised more than 10% of our consolidated revenues as of December 31, 2025 and no single customer comprised 10% or more of our consolidated revenues in 2024 or 2023. Our revenue recognition accounting policy is described in more detail in Note 2.
Contract Balances
The following represents the components of Accounts receivable - trade, net, Contracts in progress and Advance billings on contracts included in the Consolidated Balance Sheets. We are also including accrued contract losses included in Other accrued liabilities in the Consolidated Balance Sheets:
| | | | | | | | | | | | | | | | | | | | | | | |
| (in thousands) | December 31, 2025 | | December 31, 2024 | | $ Change | | % Change |
| Accounts receivable - trade, net | $ | 118,383 | | | $ | 91,767 | | | $ | 26,616 | | | 29 | % |
| Contracts in progress | 72,808 | | | 79,149 | | | (6,341) | | | (8) | % |
| Advance billings on contracts | 111,987 | | | 56,381 | | | 55,606 | | | 99 | % |
| Accrued contract losses | 469 | | | 217 | | | 252 | | | 116 | % |
| | | | | | | | | | | | | | | | | | | | | | | |
| (in thousands) | December 31, 2024 | | December 31, 2023 | | $ Change | | % Change |
| Accounts receivable - trade, net | $ | 91,767 | | | $ | 77,467 | | | $ | 14,300 | | | 18 | % |
| Contracts in progress | 79,149 | | | 46,014 | | | 33,135 | | | 72 | % |
| Advance billings on contracts | 56,381 | | | 52,085 | | | 4,296 | | | 8 | % |
| Accrued contract losses | 217 | | | 46 | | | 171 | | | 372 | % |
For the years ended December 31, 2025, 2024 and 2023, we recognized 92%, 92% and 85% of the revenue related to amounts that were included in advance billings on contracts as of December 31, 2024, 2023 and 2022, respectively.
The following amounts represent retainage on contracts:
| | | | | | | | | | | | | | | | | | | | | | | |
| (in thousands) | December 31, 2025 | | December 31, 2024 | | $ Change | | % Change |
| Retainage expected to be collected within one year | $ | 957 | | | $ | 3,781 | | | $ | (2,824) | | | (75) | % |
| Retainage expected to be collected after one year | 579 | | | 193 | | | 386 | | | 200 | % |
| Total retainage | $ | 1,536 | | | $ | 3,974 | | | $ | (2,438) | | | (61) | % |
Retainage is a holdback of final payment from a customer upon completion of a contract for a set period of time. Retainage is included in advance billings on contracts or contracts in progress in the Consolidated Balance Sheets as of December 31, 2025 and 2024. All long-term retainage at December 31, 2025 is expected to be collected by the end of 2027.
Backlog
At December 31, 2025 we had $423.6 million of remaining performance obligations, which we also refer to as total backlog. We expect to recognize approximately 90%, 9% and 1% of its remaining performance obligations as revenue in 2026, 2027 and thereafter, respectively.
About Revenue Disclosures
Revenue disclosures under ASC 606 explain how a company identifies performance obligations, allocates transaction prices, and determines when revenue is recognized. This section is essential for understanding whether reported revenue reflects genuine economic activity or aggressive accounting choices. Analysts examine the mix of point-in-time versus over-time recognition, which directly affects revenue timing and comparability.
Key signals: rising contract liabilities (deferred revenue) suggest strong future revenue visibility, while declining contract assets may indicate slowing project milestones. Watch for variable consideration estimates — rebates, returns, and performance bonuses that require management judgment. Significant changes in disaggregated revenue by geography or product line can reveal shifting business mix before it appears in headline numbers. Compare revenue growth against contract liability growth to assess sustainability, and scrutinize any changes in the timing of recognition that coincide with earnings pressure.