REVENUE
Revenue recognition
The Company recognizes revenue when it satisfies a performance obligation by transferring control of the promised goods and services to a customer, in an amount that reflects the consideration that it expects to receive in exchange for those goods or services. This is achieved through applying the following five-step model:
Identification of the contract, or contracts, with a customer;
Identification of the performance obligations in the contract;
Determination of the transaction price;
Allocation of the transaction price to the performance obligations in the contract; and
Recognition of revenue when, or as, the Company satisfies a performance obligation.
The Company generates substantially all of its revenue from contracts with customers, whether formal or implied. Sales taxes collected from customers are remitted to the appropriate taxing jurisdictions and are excluded from sales revenue as the Company considers itself a pass-through conduit for collecting and remitting sales taxes, with the exception of taxes assessed during the procurement process of select inventories. Shipping and handling costs are included in cost of sales.
Revenue from product and services sales are recognized when control of the goods, or benefit of the service, is furnished to the customer. This occurs at a point in time, typically upon shipment to the customer or completion of the service. This standard applies to all contracts with customers, except for contracts that are within the scope of other standards, such as leases, insurance, collaboration arrangements and financial instruments.
Based upon the nature of the products the Company sells, its customers have limited rights of return and those that do occur are immaterial. Discounts provided by the Company to customers at the time of sale are recognized as a reduction in sales as the products are sold.
Warranty obligations associated with the sale of our products are assurance-type warranties that are a guarantee of the product’s intended functionality and, therefore, do not represent a distinct performance obligation within the context of the contract. Warranty expense is included in cost of sales.
We apply a practical expedient to expense direct costs of obtaining a contract when incurred because the amortization period would have been one year or less.
Under its contracts with customers, the Company stands ready to deliver product upon receipt of a purchase order. Accordingly, the Company has no performance obligations under its contracts until its customers submit a purchase order. The Company does not enter into commitments to provide goods or services that have terms greater than one year. In limited cases, the Company does require payment in advance of shipping product. Typically, product is shipped within a few days after prepayment is received. These prepayments are recorded as contract liabilities on the consolidated balance sheet and are included in accounts payable and accrued liabilities (Note 10). As the performance obligation is part of a contract that has an original expected duration of less than one year, the Company has applied the practical expedient under the Accounting Standards Codification Topic 606 ("ASC 606") to omit disclosures regarding remaining performance obligations.
When the Company transfers goods or provides services to a customer, payment is due, subject to normal terms, and is not conditional on anything other than the passage of time. Typical payment terms range from due upon receipt to due within 30 days, depending on the type of customer and relationship. At contract inception, the Company expects that the period of time between the transfer of goods to the customer and when the customer pays for those goods will be less than one year, which is consistent with the Company’s standard payment terms. Accordingly, the Company has elected the practical expedient under ASC 606 to not adjust for the effects of a significant financing component. As such, these amounts are recorded as receivables and not contract assets.
The following table summarizes transactions included within contract liabilities for the years ended December 31, 2025, 2024, and 2023 respectively (in thousands):
Balance, December 31, 2023$761 
Revenue recognized related to payments included in the December 31, 2023 balance(696)
Payments received for which performance obligations have not been satisfied774 
Effect of Foreign Currency Translation(18)
Balance, December 31, 2024$821 
Revenue recognized related to payments included in the December 31, 2024 balance(757)
Payments received for which performance obligations have not been satisfied4,723 
Effect of Foreign Currency Translation
Balance, December 31, 2025$4,795 
The table below sets forth the disaggregation of revenue by product category for the years ended December 31, 2025, 2024, and 2023 (in thousands):
202520242023
Product Revenue
Paint protection film$249,401 $226,710 $229,880 
Window film94,544 77,666 67,951 
Other15,910 14,473 13,575 
Total$359,855 $318,849 $311,406 
Service Revenue
Software$8,729 $8,061 $6,518 
Cutbank credits16,530 17,015 17,626 
Installation labor87,049 74,478 58,477 
Other
4,037 1,997 2,266 
Total$116,345 $101,551 $84,887 
Total$476,200 $420,400 $396,293 
Our largest customer accounted for 3.4%, 5.7% and 10.5% of our net sales during the years ended December 31, 2025, 2024 and 2023, respectively.
Because many of our international customers require us to ship their orders to freight forwarders located in the United States, we cannot be certain about the ultimate destination of the product. The following table represents our estimate of sales by geographic regions based on our understanding of ultimate product destination based on customer interactions, customer locations and other factors (in thousands):
Year Ended December 31,
202520242023
United States$265,756 $240,569 $224,839 
Canada49,545 52,139 43,506 
North America315,301 292,708 268,345 
China39,921 24,148 41,576 
Asia Other20,895 16,825 11,943 
Asia Pacific60,816 40,973 53,519 
EU, UK, and Africa64,095 53,983 48,812 
India and Middle East24,984 21,072 16,780 
Latin America11,004 11,664 8,837 
Total$476,200 $420,400 $396,293 

Historical Timeline

Fiscal YearFiled
2025Feb 27, 2026Showing above
2024Feb 28, 2025

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.