Document and Entity Information
Document and Entity Information - USD ($) $ in Billions | 12 Months Ended | ||
Dec. 31, 2019 | Feb. 07, 2020 | Jun. 28, 2019 | |
Cover [Abstract] | |||
Document Type | 10-K | ||
Amendment Flag | false | ||
Document Period End Date | Dec. 31, 2019 | ||
Document Fiscal Year Focus | 2019 | ||
Document Fiscal Period Focus | FY | ||
Trading Symbol | SPSC | ||
Entity Registrant Name | SPS COMMERCE, INC. | ||
Entity Central Index Key | 0001092699 | ||
Current Fiscal Year End Date | --12-31 | ||
Entity Well-known Seasoned Issuer | Yes | ||
Entity Current Reporting Status | Yes | ||
Entity Voluntary Filers | No | ||
Entity Filer Category | Large Accelerated Filer | ||
Entity Shell Company | false | ||
Entity Small Business | false | ||
Entity Emerging Growth Company | false | ||
Entity Common Stock, Shares Outstanding | 34,862,316 | ||
Entity Public Float | $ 1.8 | ||
Entity Interactive Data Current | Yes | ||
Entity File Number | 001-34702 | ||
Entity Incorporation, State or Country Code | DE | ||
Entity Tax Identification Number | 41-2015127 | ||
Entity Address, Address Line One | 333 South Seventh Street | ||
Entity Address, Address Line Two | Suite 1000 | ||
Entity Address, City or Town | Minneapolis | ||
Entity Address, State or Province | MN | ||
Entity Address, Postal Zip Code | 55402 | ||
City Area Code | 612 | ||
Local Phone Number | 435-9400 | ||
Title of 12(b) Security | Common Stock, par value $0.001 per share | ||
Security Exchange Name | NASDAQ | ||
Document Annual Report | true | ||
Document Transition Report | false | ||
Documents Incorporated by Reference | DOCUMENTS INCORPORATED BY REFERENCE Portions of the Company’s definitive Proxy Statement for the Annual Meeting of Stockholders to be held on May 21, 2020 (the “2020 Proxy Statement”), which is expected to be filed within 120 days after the end of the fiscal year covered by this Annual Report on Form 10-K, are incorporated by reference in Part III of this Annual Report on Form 10-K. |
Consolidated Balance Sheets
Consolidated Balance Sheets - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
CURRENT ASSETS | ||
Cash and cash equivalents | $ 179,252 | $ 133,859 |
Short-term investments | 34,284 | 44,537 |
Accounts receivable, net | 31,532 | 27,488 |
Deferred costs | 35,274 | 34,502 |
Other current assets | 11,279 | 9,229 |
Total current assets | 291,621 | 249,615 |
PROPERTY AND EQUIPMENT, net | 23,752 | 20,957 |
OPERATING LEASE RIGHT-OF-USE ASSETS | 15,744 | |
GOODWILL | 76,845 | 69,658 |
INTANGIBLE ASSETS, net | 22,668 | 22,741 |
OTHER ASSETS | ||
Deferred costs | 11,667 | 10,973 |
Deferred income tax assets | 2,630 | 10,456 |
Other assets | 2,513 | 1,723 |
Total assets | 447,440 | 386,123 |
CURRENT LIABILITIES | ||
Accounts payable | 4,274 | 4,440 |
Accrued compensation | 22,303 | 20,415 |
Accrued expenses | 6,207 | 4,558 |
Deferred revenue | 31,463 | 25,328 |
Deferred rent | 1,781 | |
Operating lease liabilities | 3,783 | |
Total current liabilities | 68,030 | 56,522 |
OTHER LIABILITIES | ||
Deferred revenue | 2,851 | 2,512 |
Deferred rent | 5,371 | |
Operating lease liabilities | 20,085 | |
Deferred income tax liabilities | 1,193 | 1,376 |
Other non-current liabilities | 405 | 1,368 |
Total liabilities | 92,564 | 67,149 |
COMMITMENTS and CONTINGENCIES | ||
STOCKHOLDERS’ EQUITY | ||
Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding | ||
Common stock, $0.001 par value; 55,000,000 shares authorized; 36,104,619 and 35,515,256 shares issued; and 34,863,271 and 34,691,472 outstanding, respectively | 36 | 36 |
Treasury stock, at cost; 1,241,348 and 823,784 shares, respectively | (46,297) | (25,679) |
Additional paid-in capital | 354,115 | 332,574 |
Retained earnings | 48,973 | 15,261 |
Accumulated other comprehensive loss | (1,951) | (3,218) |
Total stockholders’ equity | 354,876 | 318,974 |
Total liabilities and stockholders’ equity | $ 447,440 | $ 386,123 |
Consolidated Balance Sheets (Pa
Consolidated Balance Sheets (Parenthetical) - $ / shares | Dec. 31, 2019 | Dec. 31, 2018 |
Statement Of Financial Position [Abstract] | ||
Preferred stock, par value | $ 0.001 | $ 0.001 |
Preferred stock, shares authorized | 5,000,000 | 5,000,000 |
Preferred stock, shares issued | 0 | 0 |
Preferred stock, shares outstanding | 0 | 0 |
Common stock, par value | $ 0.001 | $ 0.001 |
Common stock, shares authorized | 55,000,000 | 55,000,000 |
Common stock, shares issued | 36,104,619 | 35,515,256 |
Common stock, shares outstanding | 34,863,271 | 34,691,472 |
Treasury stock, shares | 1,241,348 | 823,784 |
Consolidated Statements of Comp
Consolidated Statements of Comprehensive Income - USD ($) shares in Thousands, $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Income Statement [Abstract] | |||
Revenues | $ 279,124 | $ 248,240 | $ 220,085 |
Cost of revenues | 92,239 | 81,748 | 73,625 |
Gross profit | 186,885 | 166,492 | 146,460 |
Operating expenses | |||
Sales and marketing | 70,140 | 71,719 | 71,261 |
Research and development | 28,305 | 22,087 | 23,183 |
General and administrative | 44,719 | 41,862 | 37,461 |
Amortization of intangible assets | 5,315 | 4,093 | 4,574 |
Total operating expenses | 148,479 | 139,761 | 136,479 |
Income from operations | 38,406 | 26,731 | 9,981 |
Other income (expense) | |||
Interest income, net | 2,947 | 2,329 | 1,032 |
Other income (expense), net | 272 | (626) | (320) |
Change in earn-out liability | 445 | (94) | |
Total other income, net | 3,664 | 1,609 | 712 |
Income before income taxes | 42,070 | 28,340 | 10,693 |
Income tax expense | 8,358 | 4,468 | 10,342 |
Net income | 33,712 | 23,872 | 351 |
Other comprehensive income | |||
Foreign currency translation adjustments | 1,290 | (3,999) | 3,944 |
Unrealized gain on investments, net of tax of $122, $132 and $0 | 367 | 397 | |
Reclassification of unrealized (gain) loss on investments into earnings, net of tax of ($133), ($91) and $24 | (398) | (273) | 39 |
Comprehensive income | $ 34,971 | $ 19,997 | $ 4,334 |
Net income per share | |||
Basic | $ 0.96 | $ 0.69 | $ 0.01 |
Diluted | $ 0.94 | $ 0.68 | $ 0.01 |
Weighted average common shares used to compute net income per share | |||
Basic | 35,024 | 34,392 | 34,366 |
Diluted | 36,002 | 35,212 | 34,712 |
Consolidated Statements of Co_2
Consolidated Statements of Comprehensive Income (Parenthetical) - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Income Statement [Abstract] | |||
Unrealized gain on investments, tax | $ 122 | $ 132 | $ 0 |
Reclassification of unrealized (gain) loss on investments into earnings, tax | $ (133) | $ (91) | $ 24 |
Consolidated Statements of Stoc
Consolidated Statements of Stockholders' Equity - USD ($) $ in Thousands | Total | Common Stock [Member] | Treasury Stock [Member] | Additional Paid-in Capital [Member] | Retained Earnings (Accumulated Deficit) [Member] | Accumulated Other Comprehensive Income (Loss) [Member] |
Beginning balance at Dec. 31, 2016 | $ 257,767 | $ 34 | $ 286,298 | $ (25,239) | $ (3,326) | |
Beginning balance, shares at Dec. 31, 2016 | 34,162,290 | |||||
Stock-based compensation | 12,728 | 12,728 | ||||
Exercise of stock options and issuance of restricted stock | 1,410 | 1,410 | ||||
Exercise of stock options and issuance of restricted stock, shares | 271,812 | |||||
Cumulative-effect adjustment for previously unrecognized excess tax benefits | 16,277 | 16,277 | ||||
Employee stock purchase plan | 1,933 | 1,933 | ||||
Employee stock purchase plan, shares | 81,936 | |||||
Retirement of escrow shares | (523) | (523) | ||||
Retirement of escrow shares, shares | (17,732) | |||||
Repurchases of common stock | (5,815) | $ (5,815) | ||||
Repurchases of common stock, shares | (244,294) | 244,294 | ||||
Net income | 351 | 351 | ||||
Foreign currency translation adjustments | 3,944 | 3,944 | ||||
Reclassification of gain (loss) on investments into earnings | 39 | 39 | ||||
Ending balance at Dec. 31, 2017 | 288,111 | $ 34 | $ (5,815) | 301,846 | (8,611) | 657 |
Ending balance, shares at Dec. 31, 2017 | 34,254,012 | 244,294 | ||||
Stock-based compensation | 11,270 | 11,270 | ||||
Exercise of stock options and issuance of restricted stock | 14,344 | $ 2 | 14,342 | |||
Exercise of stock options and issuance of restricted stock, shares | 866,398 | |||||
Employee stock purchase plan | 1,745 | 1,745 | ||||
Employee stock purchase plan, shares | 69,596 | |||||
Repurchases of common stock | (19,864) | $ (19,864) | ||||
Repurchases of common stock, shares | (579,490) | 579,490 | ||||
Stock issued for acquisition | 3,371 | 3,371 | ||||
Stock issued for acquisition, Shares | 80,956 | |||||
Net income | 23,872 | 23,872 | ||||
Foreign currency translation adjustments | (3,999) | (3,999) | ||||
Unrealized gain on investments, net of tax | 397 | 397 | ||||
Reclassification of gain (loss) on investments into earnings | (273) | (273) | ||||
Ending balance at Dec. 31, 2018 | 318,974 | $ 36 | $ (25,679) | 332,574 | 15,261 | (3,218) |
Ending balance, shares at Dec. 31, 2018 | 34,691,472 | 823,784 | ||||
Stock-based compensation | 13,365 | 13,365 | ||||
Exercise of stock options and issuance of restricted stock | 6,207 | 6,207 | ||||
Exercise of stock options and issuance of restricted stock, shares | 536,034 | |||||
Employee stock purchase plan | 2,269 | 2,269 | ||||
Employee stock purchase plan, shares | 58,851 | |||||
Repurchases of common stock | (20,618) | $ (20,618) | ||||
Repurchases of common stock, shares | (417,564) | 417,564 | ||||
Settlement and subsequent return of shares | (300) | (300) | ||||
Settlement and subsequent return of shares, shares | (5,522) | |||||
Net income | 33,712 | 33,712 | ||||
Foreign currency translation adjustments | 1,290 | 1,290 | ||||
Unrealized gain on investments, net of tax | 367 | 367 | ||||
Reclassification of gain (loss) on investments into earnings | (398) | (398) | ||||
Adoption of ASU 2018-02 | 8 | 8 | ||||
Ending balance at Dec. 31, 2019 | $ 354,876 | $ 36 | $ (46,297) | $ 354,115 | $ 48,973 | $ (1,951) |
Ending balance, shares at Dec. 31, 2019 | 34,863,271 | 1,241,348 |
Consolidated Statements of St_2
Consolidated Statements of Stockholders' Equity (Parenthetical) | Aug. 22, 2019 | Aug. 22, 2019 | Aug. 08, 2019 |
Statement Of Stockholders Equity [Abstract] | |||
Stock split ratio | 2 | 2 | 2 |
Consolidated Statements of Cash
Consolidated Statements of Cash Flows - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Cash flows from operating activities | |||
Net income | $ 33,712 | $ 23,872 | $ 351 |
Reconciliation of net income to net cash provided by operating activities | |||
Deferred income taxes | 7,581 | 2,798 | 9,616 |
Change in earn-out liability | (445) | 94 | |
Depreciation and amortization of property and equipment | 11,123 | 8,593 | 7,208 |
Amortization of intangible assets | 5,315 | 4,093 | 4,574 |
Provision for doubtful accounts | 3,499 | 2,592 | 1,705 |
Stock-based compensation | 14,690 | 12,510 | 12,728 |
Other, net | (574) | (364) | (15) |
Changes in assets and liabilities, net of effects of acquisition | |||
Accounts receivable | (6,771) | (4,569) | (5,586) |
Deferred costs | (1,441) | (5,564) | (7,813) |
Other current and non-current assets | (2,768) | (3,333) | 393 |
Accounts payable | (489) | 937 | 832 |
Accrued compensation | 319 | 3,957 | 1,304 |
Accrued expenses | 706 | (135) | 1,192 |
Deferred revenue | 6,366 | 7,094 | 5,588 |
Deferred rent | 2,440 | (1,027) | |
Operating leases | 971 | ||
Net cash provided by operating activities | 71,794 | 55,015 | 31,050 |
Cash flows from investing activities | |||
Purchases of property and equipment | (13,585) | (13,750) | (7,271) |
Purchases of investments | (73,700) | (81,666) | (47,878) |
Maturities of investments | 84,472 | 82,224 | 33,029 |
Acquisition of business and intangible assets, net | (11,500) | (27,273) | (500) |
Net cash used in investing activities | (14,313) | (40,465) | (22,620) |
Cash flows from financing activities | |||
Repurchases of common stock | (20,618) | (19,864) | (5,815) |
Net proceeds from exercise of options to purchase common stock | 6,207 | 14,344 | 1,410 |
Net proceeds from employee stock purchase plan | 2,269 | 1,745 | 1,933 |
Net cash used in financing activities | (12,142) | (3,775) | (2,472) |
Effect of foreign currency exchange rate changes | 54 | (43) | 1,292 |
Net increase in cash and cash equivalents | 45,393 | 10,732 | 7,250 |
Cash and cash equivalents at beginning of year | 133,859 | 123,127 | 115,877 |
Cash and cash equivalents at end of year | 179,252 | 133,859 | 123,127 |
Supplemental disclosure of cash flow information | |||
Cash paid for income taxes, net | 1,545 | 1,534 | 1,068 |
Non-cash financing activities: | |||
Net purchases of property and equipment on account | $ 322 | 405 | $ 1,335 |
Common stock issued for business acquisitions | $ 3,371 |
General
General | 12 Months Ended |
Dec. 31, 2019 | |
Organization Consolidation And Presentation Of Financial Statements [Abstract] | |
General | NOTE A – General Business Description SPS Commerce is a leading provider of cloud-based supply chain management solutions that make it easier for retailers, suppliers, distributors, and logistics firms to orchestrate the management of item data, order fulfillment, inventory control and sales analytics across all channels. Implementing and maintaining a suite of supply chain management capabilities is resource intensive and is not a core competency for most businesses. The services offered by SPS Commerce eliminate the need for on-premise software and support staff by taking on that capability on the customer’s behalf. The solutions SPS Commerce provides enable our customers to increase their supply cycle agility, optimize their inventory levels and sell-through, reduce operational costs and gain increased visibility into customer orders, ensuring that suppliers, distributors, and logistics firms can satisfy retailer requirements. Basis of Presentation The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements. Effective January 1, 2019, we adopted the requirements of Accounting Standards Update (“ASU”) No. 2016-02, Leases (Topic 842) On July 25, 2019, we announced that our board of directors declared a two-for-one stock split of our common stock, effected in the form of a 100 percent stock dividend as of the record date on August 8, 2019. The stock split dividend was distributed on August 22, 2019. Earnings per share and weighted average shares outstanding are presented in this Annual Report on Form 10-K after the effect of the 100 percent stock dividend. The two-for-one stock split is reflected in the share amounts in all periods presented in this Annual Report on Form 10-K. Foreign Currency Translation The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the fiscal year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies, if any, are included in other income (expense), net in our consolidated statements of comprehensive income. Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities at the date of the financial statements and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates. Business Combinations We recognize the fair value of the assets acquired and the liabilities assumed at the acquisition date, separately from goodwill. Goodwill as of the acquisition date is measured as the excess of consideration transferred and the amount of the assets acquired and the liabilities assumed. Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We recorded the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred. The earn-out liability fair value is subsequently remeasured at each reporting date. The Company evaluates each contingent consideration to determine the valuation approach. See Note E for valuation methods utilized in the fair value remeasurement as of the reporting date. While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed . Any such adjustments would be recorded Segment Information We operate in and report on one segment, which is supply chain management solutions . Risk and Uncertainties We rely on hardware and software licensed from third parties to offer our on-demand solutions. Our management believes alternate sources are available; however, disruption or termination of these relationships could adversely affect our operating results in the near term. Concentration of Credit Risk Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits and accounts receivable. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. Cash and Cash Equivalents Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days. Cash and cash equivalents are stated at fair value. Investments Management determines the appropriate classification of certificates of deposit and marketable securities at the time of purchase and reevaluates such determination at each balance sheet date. Securities are classified as available for sale and are carried at fair value, with the change in unrealized gains and losses, net of tax, reported as unrealized gains on investments on the consolidated statements of comprehensive income. Fair value is determined based on quoted market rates when observable or utilizing data points that are observable, such as quoted prices, interest rates and yield curves. When a determination has been made that an other-than-temporary decline in fair value has occurred, the amount of the decline that is related to a credit loss is realized and is included in other income (expense), net in the consolidated statements of comprehensive income. Fair Value of Other Financial Instruments The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature. Marketable securities are recorded at fair value as further described in Note E. Accounts Receivable Accounts receivable are initially recorded upon the sale of solutions to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for doubtful accounts, which represent estimated losses resulting from the inability of certain customers to make the required payments. When determining the allowances for doubtful accounts, we take several factors into consideration including the overall composition of the accounts receivable aging, our prior history of accounts receivable write-offs, the type of customers and our experience with specific customers. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowances for doubtful accounts are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income. Property and Equipment Property and equipment, including assets acquired under capital lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization are computed using the straight-line method over the estimated useful lives when placed in service, which are: Computer equipment and software: 2 to 3 years Office equipment and furniture: 5 to 7 years Leasehold improvements: the shorter of the useful life of the asset or the remaining term of the lease Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred. We capitalize and amortize eligible costs to acquire or develop internal-use software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Internal-use software is depreciated over the estimated useful life, commencing on the date when the asset is ready for its intended use. Depreciation is computed using the straight-line method. Maintenance and enhancements of internal-use software are expensed as incurred. The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals and abandoned internal-use software with the resulting gain or loss included in our consolidated statements of comprehensive income. Leases We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and long-term operating lease liabilities in our consolidated balance sheets. ROU assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We estimate the discount rate for a similar collateralized asset by reviewing quoted costs of borrowing. We use the implicit interest rate when readily determinable. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change. Research and Development Research and development costs primarily include maintenance and data conversion activities related to our cloud-based supply chain management solutions and are expensed as incurred. Goodwill Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount of the goodwill exceeds the fair value of the reporting unit, goodwill may be impaired. If this occurs, the fair value is then allocated to its assets and liabilities in a manner similar to a purchase price allocation in order to determine the implied fair value of goodwill. This implied fair value is then compared to the carrying amount of goodwill and, if it is less, we would recognize an impairment loss in the consolidated statements of comprehensive income. Intangible Assets Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships, developed technology, and non-competition agreements. We recognize separately from goodwill the fair value of the identifiable intangible assets acquired. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable. The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives, which are seven to ten years for subscriber relationships, three to five years for non-competition agreements and three to ten years for technology. Third Party Implementation Assets Third party implementation costs are capitalized assets included in Other Assets and relate to implementation costs incurred for software hosting arrangements. Capitalized implementation costs are recognized on a straight-line basis beginning when the application is ready for its intended use and ending on the expected termination date of the hosting arrangement, including consideration of the noncancelable contractual term and reasonably certain renewals. The terms are between four and six years for our current hosting arrangements. Recognized expense is reported in general and administrative expense, which is where the hosting arrangement subscriptions are reported. Impairment of Long-Lived Assets We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured as the amount by which the carrying amount of a long-lived asset exceeds its fair value. Revenue Recognition Revenues are recognized when our services are made available to our customers, in an amount that reflects the consideration we are contractually and legally entitled to in exchange for those services. We determine revenue recognition through the following steps: - 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 - Recognition of revenue when, or as, we satisfy a performance obligation See Note C for further descriptions of our revenue recognition policy. Deferred Costs Deferred costs consist of costs to obtain customer contracts, such as commissions paid to sales personnel and to third-party partners for customer referrals, and costs to fulfill customer contracts, such as customer implementation costs. Sales commissions relating to recurring revenues are considered incremental and recoverable costs of obtaining a contract with our customer. These commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. These costs are deferred and amortized over the expected period of benefit, which we have determined to be two years. Amortization expense is included in sales and marketing expenses in the accompanying consolidated statements of comprehensive income. Customer implementation costs are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit, which we have determined to be two years. Amortization expense is included in cost of revenues in the accompanying consolidated statements of comprehensive income. Stock-Based Compensation We recognize the cost of all share-based payments to employees, executive officers, and non-employee members of the Company’s Board of Directors, including grants of stock options, performance share units (“PSUs”), restricted stock units (“RSUs”), restricted stock awards (“RSAs”), and 401(k) stock match in the consolidated financial statements based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award. In valuing share-based awards, judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is based on the simplified method, which does not consider historical employee exercise behavior. We recognize forfeitures as they occur. Income Taxes We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgement, it is more likely than not that some or all of the deferred tax asset will not be realized. We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results. We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority. Net Income Per Share Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares, including options, RSUs, RSAs, and PSUs. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share. Recently Adopted Accounting Pronouncements Standard Date of Issuance Description Date Adopted Effect on the Financial Statements ASU 2016-02 , Leases and all related amendments February 2016 Requires all leases with a term greater than 12 months to be recognized in the statements of financial position and eliminates current real estate-specific lease guidance, while maintaining substantially similar classification criteria for distinguishing between finance leases and operating leases. January 2019 The adoption of this standard and related amendments resulted in the recognition of approximately $15.7 million in right-of-use assets and lease liabilities on our balance sheet as of January 1, 2019. Comparative periods will continue to be measured and presented under historical guidance, and only the period of adoption and future periods will be subject to this ASU. There was no cumulative effect on retained earnings or other components of equity at the adoption date. For more information see Note J. ASU 2018-02 , Income Statement - Reporting Comprehensive Income (Topic 220) February 2018 Allows a reclassification from accumulated other comprehensive income to retained earnings for stranded tax effects resulting from the Tax Cut and Jobs Act of 2017 and requires certain disclosures regarding stranded tax effects in accumulated other comprehensive income. January 2019 The adoption of this standard did not have a material impact on our consolidated financial statements. Accounting Pronouncements Not Yet Adopted Standard Date of Issuance Description Date of Required Adoption Effect on the Financial Statements ASU 2016-13 , Financial Instruments - Credit Losses (Topic 326), Measurement of Credit Losses on Financial Statements June 2016 The amendment in this update replaces the incurred loss impairment methodology in current GAAP with a methodology that reflects expected credit losses on instruments within its scope, including trade receivables. This update is intended to provide financial statement users with more decision-useful information about the expected credit losses. January 2020 We have evaluated the requirements of this standard on our financial assets and have concluded that the adoption of this ASU, beginning January 1, 2020, will not have a material impact on our consolidated financial statements. ASU 2018-13 , Fair Value Measurement (Topic 820), Disclosure Framework - Changes to the Disclosure Requirements for Fair Value Measurement August 2018 This ASU adds, modifies and removes several disclosure requirements relative to the three levels of inputs used to measure fair value in accordance with Topic 820, Fair Value Measurement. January 2020 The adoption of this standard will not have a material impact on our consolidated financial statements. ASU 2017-04 , Intangibles - Goodwill and Other (Topic 350), Simplifying the Test for Goodwill Impairment January 2017 This amendment eliminates Step 2 from the goodwill impairment test. January 2020 The adoption of this standard will not have a material impact on our consolidated financial statements. |
Business Acquisitions
Business Acquisitions | 12 Months Ended |
Dec. 31, 2019 | |
Business Combinations [Abstract] | |
Business Acquisitions | NOTE B – Business Acquisitions MAPADOC On August 26, 2019, we completed our asset acquisition of the MAPADOC business, an operating unit of SWK Technologies, Inc., a leading provider of EDI System Automation solutions for the Sage and Acumatica markets. Pursuant to the asset purchase agreement, the purchase price is $11.8 million. The purchase accounting, purchase price allocation, and net working capital adjustment for the MAPADOC acquisition were finalized during the fourth quarter of 2019. Purchase Price Allocation We accounted for the acquisition as a business combination. We allocated the purchase price to the tangible and identifiable intangible assets acquired and liabilities assumed based on their estimated fair values as of the acquisition date. We engaged a third-party valuation firm to assist us in the determination of the value of the purchased intangible assets. The excess of the purchase price over the fair value of net tangible and identifiable intangible assets acquired was recorded as goodwill. Goodwill is attributed to a trained workforce and other buyer-specific value resulting from expected synergies, including long-term cost savings, which are not included in the fair values of identifiable assets. The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date (in thousands): Current assets $ 659 Goodwill 6,372 Intangible assets 5,000 Deferred revenue (225 ) $ 11,806 Purchased Intangible Assets The following table summarizes the estimated fair value of the purchased intangible assets and their estimated useful lives: Estimated Estimated Fair Value Life Purchased Intangible Assets (in thousands) (in years) Developed technology $ 3,600 8 Subscriber relationships 1,400 8 $ 5,000 The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives. Amortization expense for the period from August 26, 2019 through December 31, 2019 was $0.2 million. EDIAdmin On October 3, 2018, we completed our asset acquisition of EDIAdmin, a privately held company providing end-to-end integration solutions, featuring a dedicated Integration Platform as a Service (“iPaaS”) called Cloud Hybrid Integration Platform (“CHIP”) and collaborative managed services for leading systems and applications, both cloud and on-premise. Pursuant to the asset purchase agreement, we paid $7.5 million in cash to the owner of EDIAdmin. The purchase accounting for the EDIAdmin acquisition was complete as of December 31, 2018. CovalentWorks On December 18, 2018, we completed our asset acquisition of CovalentWorks, a privately held company providing cloud-based EDI solutions to small- and medium-sized businesses. Pursuant to the asset purchase agreement, we paid $19.4 million in cash and issued $3.4 million in common stock, or 80,956 shares, as adjusted for our two-for-one stock split effective August 22, 2019, to the owners of CovalentWorks. The purchase accounting, purchase price allocation, and net working capital adjustment for the CovalentWorks acquisition were finalized during the first quarter of 2019. |
Revenue
Revenue | 12 Months Ended |
Dec. 31, 2019 | |
Revenue From Contract With Customer [Abstract] | |
Revenue | NOTE C – Revenue We derive our revenues primarily from the following revenue streams (in thousands): Year Ended December 31, 2019 2018 2017 Recurring revenues: Fulfillment $ 219,297 $ 190,783 $ 164,682 Analytics 37,038 34,447 34,260 Other 5,671 5,424 4,978 Recurring Revenues 262,006 230,654 203,920 One-time revenues 17,118 17,586 16,165 $ 279,124 $ 248,240 $ 220,085 Revenues are recognized when our services are made available to our customers, in an amount that reflects the consideration we are contractually and legally entitled to in exchange for those services. We determine revenue recognition through the following steps: - 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 - Recognition of revenue when, or as, we satisfy a performance obligation Recurring Revenues Recurring revenues consist of recurring subscriptions from customers that utilize our Fulfillment, Analytics and Other cloud-based supply chain management solutions. Revenue for these solutions is generally recognized on a ratable basis over the contract term beginning on the date that our service is made available to the customer. Our contracts with our recurring revenue customers are recurring in nature, ranging from monthly to annual, and generally allow the customer to cancel the contract for any reason with 30 to 90 days’ notice. Timing of billings varies by customer and by contract type and are either in advance or within 30 days of the service being performed. The deferred revenue liabilities for recurring revenue contracts are for one year or less and recognized on a ratable basis over the contract term. We have applied the optional exemption under Accounting Standards Codification (“ASC”) 606-10-50-14(a) and will not disclose information about the remaining performance obligations for contracts which have original durations of one year or less. One-time Revenues One-time revenues consist of set-up fees from customers and miscellaneous one-time fees. Set-up fees are specific for each connection a customer has with a trading partner and many of our customers have connections with numerous trading partners. Set-up fees related to our cloud-based supply chain management solutions are nonrefundable upfront fees that are necessary for our customers to utilize our cloud-based services. These set-up fees do not provide any standalone value to our customers. Certain contracts contain set-up fees that constitute a material renewal option right. This material right provides customers a significant future incentive that would not be otherwise available to that customer unless they entered into the contract, as the set-up fees will not be incurred again upon contract renewal. For our Fulfillment solution, we have determined that the set-up fees and related costs represent a material renewal option right to our customers as they will not be incurred again upon renewal. These set-up fees and related costs are deferred and recognized ratably over two years, which is the estimated period for which a material right is present for our customers. For our Analytics solution, we have determined that the set-up fees do not represent a material customer renewal right and, as such, are deferred and recognized ratably over the estimated initial contract term, which is generally one year. The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees (in thousands): Year Ended December 31, 2019 2018 Balances, at beginning of the year $ 9,857 $ 10,031 Invoiced set-up fees 11,056 10,271 Amortized set-up fees (10,395 ) (10,445 ) Balances, at end of the year $ 10,518 $ 9,857 The entire balance of set-up fees will be recognized within two years and, as such, current amounts will be recognized in the next 1-12 months and long-term amounts will be recognized in the next 13-24 months. Miscellaneous one-time fees consist of professional services and testing and certification. The deferred revenue liability for these one-time fees are for one year or less and recognized at the time service is provided. We have applied the optional exemption under ASC 606-10-50-14(a) to not disclose information about the remaining performance obligations for contracts which have original durations of one year or less. |
Deferred Costs
Deferred Costs | 12 Months Ended |
Dec. 31, 2019 | |
Deferred Costs [Abstract] | |
Deferred Costs | NOTE D – Deferred Costs Deferred costs consist of costs to obtain customer contracts, such as commissions paid to sales personnel and to third-party partners for customer referrals, and costs to fulfill customer contracts, such as customer implementation costs. Costs to obtain customer contracts relating to recurring revenues are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit which we have determined to be two years. Amortization expense is included in sales and marketing expenses in the accompanying consolidated statements of comprehensive income. Costs to fulfill customer contracts are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit which we have determined to be two years. Amortization expense is included in cost of revenues in the accompanying consolidated statements of comprehensive income. The table below presents the activity of deferred costs and amortization of deferred costs (in thousands): Year Ended December 31, 2019 2018 Balances, at beginning of the year $ 45,475 $ 39,933 Incurred deferred costs 49,883 49,583 Amortized deferred costs (48,417 ) (44,041 ) Balances, at end of the year $ 46,941 $ 45,475 |
Financial Instruments
Financial Instruments | 12 Months Ended |
Dec. 31, 2018 | |
Disclosure Text Block Supplement [Abstract] | |
Financial Instruments | NOTE E – Financial Instruments We invest primarily in money market funds, certificates of deposit, highly liquid debt instruments of the U.S. government and U.S. corporate debt securities. All highly liquid investments with original maturities of 90 days or less are classified as cash equivalents. All investments with original maturities greater than 90 days and remaining maturities less than one year from the balance sheet date are classified as short-term investments. As of December 31, 2019 and 2018, all of our investments held were classified as short-term. Our short-term marketable securities are classified as available-for-sale. We intend to hold marketable securities until maturity; however, we may sell these securities at any time for use in current operations or for other purposes. Our marketable securities are carried at fair value and unrealized gains and losses on these investments, net of taxes, are included in accumulated other comprehensive loss in the consolidated balance sheets. Realized gains or losses are included in other income (expense), net in the consolidated statements of comprehensive income. When a determination has been made that an other-than-temporary decline in fair value has occurred, the amount of the decline that is related to a credit loss is realized and is included in other income (expense), net in the consolidated statements of comprehensive income. Cash equivalents and short-term investments consisted of the following (in thousands): December 31, 2019 2018 Amortized Unrealized Fair Amortized Unrealized Fair Cost Gains, net Value Cost Gains, net Value Cash equivalents: Money market funds $ 151,266 $ — $ 151,266 $ 109,265 $ — $ 109,265 Certificate of deposit 7,030 — 7,030 7,000 — 7,000 Marketable securities: Corporate bonds 9,785 20 9,805 15,194 40 15,234 Commercial paper 7,503 — 7,503 9,889 76 9,965 U.S. treasury securities 9,855 91 9,946 12,300 38 12,338 $ 185,439 $ 111 $ 185,550 $ 153,648 $ 154 $ 153,802 Due within one year $ 185,550 $ 153,802 Total $ 185,550 $ 153,802 As of December 31, 2019, we had less than $0.1 million of unrealized losses and we do not believe any of these unrealized losses represent an other-than-temporary impairment based on our assessment of available evidence. We expect to receive the full principal and interest on all of these cash equivalents, certificates of deposit, and marketable securities. Recurring Fair Value Measurements We measure certain financial assets at fair value on a recurring basis based on a fair value hierarchy that requires us to maximize the use of observable inputs and minimize the use of unobservable inputs when measuring fair value. A financial instrument’s categorization within the fair value hierarchy is based upon the lowest level of input that is significant to the fair value measurement. The three levels of inputs that may be used to measure fair value are: • Level 1 – quoted prices in active markets for identical assets or liabilities. • Level 2 – observable inputs other than Level 1 prices, such as (a) quoted prices for similar assets or liabilities, (b) quoted prices in markets with insufficient volume or infrequent transactions (less active markets), or (c) model-derived valuations in which all significant inputs are observable or can be derived principally from or corroborated by observable market data for substantially the full term of the assets or liabilities. • Level 3 – unobservable inputs to the valuation methodology that are significant to the measurement of fair value of assets or liabilities. We obtain the fair values of our level 2 available-for-sale securities from a professional pricing service. For the earn-out liability related to the EDIAdmin acquisition, the Company utilized the Monte Carlo simulation method to estimate the fair value of this contingent liability as of the reporting date. Thousands of iterations of the simulation were performed using forecasted revenues to develop a distribution of future values of recurring revenue which, in turn, provide indicated earn-out payments. The total estimated fair value equals the sum of the average present values of the indicated earn-out payments. Changes in assumptions described above could have an impact on the payout of contingent consideration with a maximum payout being $1.7 million. The following table presents information about our financial assets that are measured at fair value on a recurring basis and indicates the fair value hierarchy of the valuation techniques utilized to determine such fair value (in thousands): Level 1 Level 2 Level 3 Total Assets at December 31, 2019: Cash equivalents: Money market funds $ 151,266 $ — $ — $ 151,266 Certificate of deposit 7,030 — — 7,030 Marketable securities: Corporate bonds — 9,805 — 9,805 Commercial paper — 7,503 — 7,503 U.S. treasury securities — 9,946 — 9,946 $ 158,296 $ 27,254 $ — $ 185,550 Liabilities at December 31, 2019: Earn-out liability $ — $ — $ 405 $ 405 $ — $ — $ 405 $ 405 Assets at December 31, 2018: Cash equivalents: Money market funds $ 109,265 $ — $ — $ 109,265 Certificate of deposit 7,000 — — 7,000 Marketable securities: Corporate bonds — 15,234 — 15,234 Commercial paper — 9,965 — 9,965 U.S. treasury securities — 12,338 — 12,338 $ 116,265 $ 37,537 $ — $ 153,802 Liabilities at December 31, 2018: Earn-out liability $ — $ — $ 1,368 $ 1,368 $ — $ — $ 1,368 $ 1,368 The portion of the earn-out liability expected to be paid in the first quarter of 2020 has been determined to be $0.5 million, given the completion of certain revenue milestones for the year ending December 31, 2019. As such, $0.5 million of the earn-out consideration is included in accrued expenses in the consolidated balance sheet at December 31, 2019 and transferred from the Level 3 earn-out liability measured at fair value. The remaining earn-out liability is expected to be paid in the first quarter of 2021 and has been measured as Level 3 given the unobservable inputs that are significant to the measurement of the liability. Other than the transfer relating to the EDIAdmin contingent consideration, there were no other transfers in or out of our Level 1, 2, or 3 assets or liabilities during the years ended December 31, 2019 and 2018. Nonrecurring Fair Value Measurements The Company measures certain assets and liabilities at fair value on a nonrecurring basis. Assets and liabilities that are measured at fair value on a nonrecurring basis include long-lived assets, goodwill and indefinite-lived intangible assets, which would generally be recorded at fair value as a result of an impairment charge. Assets acquired and liabilities assumed as part of business combinations are measured at fair value. For additional information on the Company's business combinations and the related nonrecurring fair value measurement of the assets acquired and liabilities assumed, refer to “Note B, Business Acquisitions”. |
Allowance for Doubtful Accounts
Allowance for Doubtful Accounts | 12 Months Ended |
Dec. 31, 2019 | |
Receivables [Abstract] | |
Allowance for Doubtful Accounts | NOTE F – Allowance for Doubtful Accounts The allowance for doubtful accounts activity, included in accounts receivable, net, was as follows (in thousands): 2019 2018 2017 Balance, January 1 $ 1,392 $ 763 $ 515 Provision for doubtful accounts 3,499 2,590 1,705 Write-offs, net of recoveries (3,422 ) (1,961 ) (1,457 ) Balance, December 31 $ 1,469 $ 1,392 $ 763 |
Property and Equipment, net
Property and Equipment, net | 12 Months Ended |
Dec. 31, 2019 | |
Property Plant And Equipment [Abstract] | |
Property and Equipment, net | NOTE G – Property and Equipment, net Property and equipment, net included the following (in thousands): December 31, 2019 2018 Computer equipment and software $ 54,030 $ 44,781 Office equipment and furniture 9,205 7,985 Leasehold improvements 11,091 9,366 74,326 62,132 Less: accumulated depreciation and amortization (50,574 ) (41,175 ) $ 23,752 $ 20,957 Depreciation and amortization expense of property and equipment, net for fiscal 2019, 2018, and 2017 was $11.1 million, $8.6 million, and $7.2 million, respectively. At December 31, 2019 and 2018, property and equipment, net included approximately $2.0 |
Goodwill and Intangible Assets,
Goodwill and Intangible Assets, net | 12 Months Ended |
Dec. 31, 2019 | |
Goodwill And Intangible Assets Disclosure [Abstract] | |
Goodwill and Intangible Assets, net | NOTE H – Goodwill and Intangible Assets, net The changes in the net carrying amount of goodwill for the years ended December 31, 2019 and 2018 are as follows (in thousands): 2019 2018 Balance, January 1 $ 69,658 $ 51,613 Additions from business acquisitions 6,372 20,272 Foreign currency translation 815 (2,227 ) Balance, December 31 $ 76,845 $ 69,658 There were no impairment losses in relation to goodwill for the periods presented. Intangible assets, net included the following (in thousands): December 31, 2019 Carrying Amount Accumulated Amortization Foreign Currency Translation Net Subscriber relationships $ 43,640 $ (27,287 ) $ 214 $ 16,567 Non-competition agreements 2,495 (2,371 ) 10 134 Technology 8,602 (2,643 ) 8 5,967 $ 54,737 $ (32,301 ) $ 232 $ 22,668 December 31, 2018 Carrying Amount Accumulated Amortization Foreign Currency Translation Net Subscriber relationships $ 43,212 $ (23,284 ) $ (623 ) $ 19,305 Non-competition agreements 2,560 (2,247 ) (28 ) 285 Technology 5,199 (2,012 ) (36 ) 3,151 $ 50,971 $ (27,543 ) $ (687 ) $ 22,741 The estimated annual amortization expense related to intangible assets subject to amortization for the next five years and thereafter is as follows (in thousands): 2020 $ 5,359 2021 4,518 2022 3,415 2023 3,342 2024 2,101 Thereafter 3,933 $ 22,668 |
Other Assets
Other Assets | 12 Months Ended |
Dec. 31, 2019 | |
Other Assets [Abstract] | |
Other Assets | NOTE I – Other Assets The changes in the net amount of capitalized implementation costs for software hosting arrangements for the years ended December 31, 2019 and 2018 are as follows (in thousands): 2019 2018 Balance, January 1 $ 455 $ — Capitalized implementation fees 797 455 Amortization of implementation fees (86 ) — Balance, December 31 $ 1,166 $ 455 There were no impairment losses in relation to the capitalized implementation costs for the periods presented. |
Leases
Leases | 12 Months Ended |
Dec. 31, 2019 | |
Leases [Abstract] | |
Leases | NOTE J – Leases We are obligated under non-cancellable operating leases, primarily for office space and certain equipment, as follows: December 31, 2019 Remaining Term Right-of-Use Asset (in years) (in thousands) Minneapolis, MN lease 5 $ 10,704 Kiev, Ukraine lease 5 2,316 Little Falls, NJ lease 4 1,574 Other leases <1 - 5 1,150 $ 15,744 Some of our leases may include options to extend the leases for up to five years. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities as it is not reasonably certain that we will exercise those options. Additionally, our agreements do not include options to terminate the leases. In December 2017, we executed the fourth amendment to our lease agreement for our current headquarters located in Minneapolis, Minnesota where we lease approximately 189,000 square feet under an agreement that expires on April 30, 2025. We have agreed to expand our headquarters by approximately 25,000 square feet during 2020. Our lease agreement also includes a further expansion right and a right of first offer to lease certain additional space and two options to extend the term of the lease for five years at a market rate determined in accordance with the lease. Incentives of $9.9 million are included as a lease component. In December 2019, we executed a lease agreement for a new Kiev, Ukraine location, where we lease approximately 17,000 square feet under an agreement that expires on May 31, 2025. The lease includes a right of first offer to lease certain additional space and one option to extend the term for five years and six months at a market rate determined in accordance with the lease. Under a separate lease agreement, we lease approximately 10,000 square feet under an agreement that expires on April 26, 2020, which we will not be renewing upon termination. In February 2016, we executed the first amendment to our lease agreement for our Little Falls, New Jersey location where we lease approximately 26,000 square feet under an agreement that expires on June 30, 2023. The agreement includes an option to extend the term of the lease for five years at a market rate determined in accordance with the lease. Incentives of $0.9 million are included as a lease component. The components of lease expense were as follows (in thousands): Year Ended December 31, 2019 Operating lease cost $ 2,569 Variable lease cost 3,390 $ 5,959 Operating lease cost for short-term leases was not material for the year ended December 31, 2019. Rent expense for all operating leases, which includes minimum lease payments and other charges such as common area maintenance fees, charged to operations was as follows (in millions): Year Ended December 31, 2018 2017 Rent expense $ 5,577 $ 4,941 Supplemental cash flow information related to leases was as follows (in thousands): Year Ended December 31, 2019 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases $ 4,383 ROU assets obtained in exchange for operating lease liabilities $ 2,537 The ROU assets obtained in exchange for operating lease liabilities excludes the transition amount of $15.7 million. Supplemental balance sheet information related to leases was as follows: December 31, 2019 Weighted-average remaining lease term - operating leases 5.0 years Weighted-average discount rate - operating leases 4.5 % At December 31, 2019, our future minimum payments under operating leases were as follows (in thousands): 2020 $ 4,595 2021 5,600 2022 5,091 2023 4,903 2024 4,651 Thereafter 1,604 26,444 Less: imputed interest (2,576 ) $ 23,868 At December 31, 2018, our future minimum payments under operating leases were as follows (in thousands): 2019 $ 4,209 2020 3,542 2021 4,414 2022 4,042 2023 3,854 Thereafter 4,817 $ 24,878 |
Contingencies
Contingencies | 12 Months Ended |
Dec. 31, 2019 | |
Commitments And Contingencies Disclosure [Abstract] | |
Contingencies | NOTE K – Contingencies We may be involved in various claims and legal actions in the normal course of business. We believe that the outcome of any such claim or legal action is not expected to have a material effect on our financial position, results of operations or cash flows. |
Stockholders' Equity
Stockholders' Equity | 12 Months Ended |
Dec. 31, 2019 | |
Equity [Abstract] | |
Stockholders’ Equity | NOTE L – Stockholders’ Equity Stock Split On August 22, 2019, we effected a two-for-one stock split of our common stock. There was no change in the number of our authorized common shares. All share and per share data have been adjusted for all periods presented to reflect the stock split. Common Stock Issued In connection with the acquisition of CovalentWorks (see Note B), we issued 80,956 shares of SPS Commerce common stock, as adjusted for our two-for-one stock split effective August 22, 2019, as calculated according to the terms of the purchase agreement. Stock Repurchase Program On November 2, 2017, our board of directors authorized a program to repurchase up to $50.0 million of common stock. Under this program, we repurchased 417,564 shares at a cost of $20.6 million and 579,490 shares at a cost of $19.9 million for the years ended December 31, 2019 and 2018, respectively. On November 2, 2019, $3.7 million expired from the November 2, 2017 repurchase program. Shares have been adjusted for all periods to reflect a two-for-one stock split effective August 22, 2019. On November 2, 2019, our board of directors authorized a new program to repurchase up to $50 million of common stock. Under the program, purchases may be made from time to time in the open market over two years. As of December 31, 2019, $50.0 million of the share repurchase authorized was available for future share repurchases. |
Stock-Based Compensation
Stock-Based Compensation | 12 Months Ended |
Dec. 31, 2019 | |
Disclosure Of Compensation Related Costs Sharebased Payments [Abstract] | |
Stock-Based Compensation | NOTE M – Stock-Based Compensation Our equity compensation plans provide for the grant of incentive and nonqualified stock options, as well as other stock-based awards including restricted stock and RSUs, to employees, non-employee directors and other consultants who provide services to us. RSAs result in the issuance of new shares when granted. For other stock-based awards, new shares are issued when the award is exercised, vested or released according to the terms of the agreement. In February 2019, January 2018 and February 2017, 2,081,488, 2,055,240 and 2,049,736 additional shares, respectively, were reserved for future issuance under our 2010 Equity Incentive Plan. At December 31, 2019, there were approximately 12.1 million shares available for grant under approved equity compensation plans During the year ended December 31, 2017, stock-based compensation expense included a one-time $3.6 million charge due to a modification to our Chief Executive Officer’s employment agreement which resulted in immediate vesting, and expensing, of his outstanding stock-based compensation awards based on his retirement eligibility. Stock-based compensation expense was allocated as follows (in thousands): Year Ended December 31, 2019 2018 2017 Cost of revenues $ 2,819 $ 2,168 $ 1,887 Operating expenses Sales and marketing 2,946 2,675 2,197 Research and development 2,651 1,505 949 General and administrative 6,274 6,162 7,694 Total stock-based compensation expense $ 14,690 $ 12,510 $ 12,727 Stock-based compensation expense by type was as follows (in thousands): Year Ended December 31, 2019 2018 2017 Stock Options $ 3,211 $ 3,355 $ 5,223 Performance Share Units 1,379 1,034 — Restricted Stock Units 7,553 5,930 6,526 Restricted Stock Awards 519 487 318 Employee Stock Purchase Plan 701 466 660 401K Stock Match 1,327 1,238 — Total stock-based compensation expense $ 14,690 $ 12,510 $ 12,727 As of December 31, 2019, there was approximately $18.7 million of unrecognized stock-based compensation expense under our equity compensation plans, which is expected to be recognized on a straight-line basis over a weighted-average period of 2.5 years. Stock Options Stock options generally vest over four years and have a contractual term of seven to ten years from the date of grant. Our stock option activity was as follows: Weighted Average Options Exercise Price (#) ($/share) Outstanding at December 31, 2016 2,032,024 22.36 Granted 345,394 27.94 Exercised (131,004 ) 10.77 Forfeited (51,752 ) 27.97 Outstanding at December 31, 2017 2,194,662 23.80 Granted 362,944 29.94 Exercised (688,668 ) 20.83 Forfeited (122,470 ) 28.34 Outstanding at December 31, 2018 1,746,468 25.93 Granted 184,434 53.92 Exercised (346,098 ) 21.98 Forfeited (40,892 ) 30.74 Outstanding at December 31, 2019 1,543,912 30.03 Of the total outstanding options at December 31, 2019, 1,160,714 The table below presents the intrinsic value of options exercised and outstanding and factors related to our stock options (in thousands, except per share data): Year Ended December 31, 2019 2018 2017 Fair value of options vested $ 3,393 $ 3,689 $ 4,227 Intrinsic value of options exercised 11,103 14,852 2,752 Intrinsic value of options outstanding 39,194 26,654 7,312 Weighted-average fair value per share of options granted 16.86 9.74 9.43 The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions: Year Ended December 31, 2019 2018 2017 Volatility 33 % 35 % 38 % Dividend yield — — — Life (in years) 4.43 4.44 4.51 Risk-free interest rate 2.41 % 2.54 % 1.85 % The expected volatility of the options is based on the historical volatility of our common stock. We have not issued dividends on our common stock and do not expect to do so in the foreseeable future. The expected term of the options is based on the simplified method which does not consider historical employee exercise behavior. The risk-free interest rate is based on the U.S. Treasury rates at the date of grant with maturity dates approximately equal to the expected life at the grant date. Performance Share Units and Restricted Stock Units and Awards In February 2019 and 2018, our executive officers were granted PSU awards with vesting contingent on the Company’s total shareholder return as compared to indexed total shareholder return over the course of a three-year In February 2017, our executive officers were granted PSU awards with vesting contingent on successful attainment of pre-determined revenue targets over the course of a three-year RSUs vest over four years and, upon vesting, the holder is entitled to receive shares of our common stock. With RSAs, shares of our common stock are issued when the award is granted and the restrictions lapse over one year. Our PSU and RSU activity was as follows: Weighted Average PSUs and RSUs Grant Date Fair (#) Value ($/share) Outstanding at December 31, 2016 378,084 27.07 Granted 422,336 27.81 Vested and common stock issued (129,900 ) 26.82 Forfeited (26,696 ) 27.70 Outstanding at December 31, 2017 643,824 27.58 Granted 345,590 33.02 Vested and common stock issued (163,122 ) 28.16 Forfeited (71,622 ) 27.52 Outstanding at December 31, 2018 754,670 29.95 Granted 278,622 55.83 Vested and common stock issued (206,380 ) 30.20 Forfeited (31,826 ) 34.67 Outstanding at December 31, 2019 795,086 38.76 The number of PSUs and RSUs outstanding at December 31, 2019 included 124,786 Our RSA activity was as follows: Weighted Average RSAs Grant Date Fair (#) Value ($/share) Outstanding at December 31, 2016 3,048 26.14 Restricted common stock issued 10,908 29.15 Restrictions lapsed (11,220 ) 28.33 Outstanding at December 31, 2017 2,736 29.15 Restricted common stock issued 14,608 37.22 Restrictions lapsed (13,680 ) 35.60 Outstanding at December 31, 2018 3,664 37.22 Restricted common stock issued 9,840 51.80 Restrictions lapsed (11,044 ) 46.96 Outstanding at December 31, 2019 2,460 51.80 Employee Stock Purchase Plan We have an employee stock purchase plan which allows participating employees to purchase shares of our common stock at a discount through payroll deductions. The plan is available to all employees subject to certain eligibility requirements. Participating employees may purchase common stock, on a voluntary after-tax basis, at a price that is the lower of 85% of the fair market value of one share of common stock at the beginning or end of each stock purchase period. The plan consists of two six-month offering periods, beginning on January 1 and July 1 of each calendar year. A total of 1.9 shares of common stock are remaining for issuance under the plan at December 31, 2019. Our ESPP activity was as follows (in thousands, except share data): Year Ended December 31, 2019 2018 2017 Withholdings for share purchases $ 2,270 $ 1,745 $ 1,933 Shares purchased 58,851 69,596 81,936 The fair value was estimated based on the market price of our common stock at the beginning of each offering period and using the Black-Scholes option pricing model with the following weighted-average assumptions: Year Ended December 31, 2019 2018 2017 Volatility 36 % 26 % 32 % Dividend yield — — — Life (in years) 0.50 0.50 0.50 Risk-free interest rate 2.36 % 1.77 % 0.90 % |
Income Taxes
Income Taxes | 12 Months Ended |
Dec. 31, 2019 | |
Income Tax Disclosure [Abstract] | |
Income Taxes | NOTE N – Income Taxes Our provisions for income taxes included current federal, foreign and state income tax expense, as well as deferred tax expense as follows (in thousands): Year Ended December 31, 2019 2018 2017 Current Federal $ — $ — $ (184 ) State 599 1,103 258 Foreign 169 540 652 Deferred Federal 6,595 3,011 10,262 State 1,156 224 (291 ) Foreign (161 ) (410 ) (355 ) $ 8,358 $ 4,468 $ 10,342 The tax provision for the year ended December 31, 2017 included a $0.4 million reclass of alternative minimum tax (“AMT”) credit carryforwards from the deferred federal provision to current federal provision, of which $0.2 million was refunded in 2019. The remaining unutilized AMT credit carryforwards become partially refundable in 2020 and 2021, and fully refundable in 2022. A reconciliation of the expected federal income tax at the statutory rate to the provision for income taxes was as follows (in thousands): Year Ended December 31, 2019 2018 2017 Expected federal income tax at statutory rate $ 8,835 $ 5,951 $ 3,635 State income taxes, net of federal tax effect 1,933 1,293 417 Tax impact of foreign activity (108 ) 57 (105 ) Nondeductible executive compensation 940 902 530 Nondeductible expenses 329 351 268 Change in valuation allowance — (4 ) 16 Change in state deferred rate 47 38 (134 ) Research and development credit (1,252 ) (1,843 ) (227 ) Tax impact of Tax Cuts and Jobs Act — — 6,796 Tax impact of stock activity (2,518 ) (2,438 ) (925 ) Other 152 161 71 Total provision for income taxes $ 8,358 $ 4,468 $ 10,342 The Tax Act, which was enacted on December 22, 2017, reduced the corporate federal income tax rate to 21.0% Differences between our effective tax rate and statutory tax rates are primarily due to the federal research and development credit partially offset by permanently non-deductible expenses. Additionally, under ASU 2016-09, excess tax benefits generated upon settlement or exercise of stock awards are recognized as a reduction to income tax expense as a discrete tax item in the period that the event occurs creating potentially significant fluctuation in tax expense by year. The significant components of our deferred tax assets (liabilities) were as follows (in thousands): December 31, 2019 2018 Deferred tax assets Net operating loss and credit carryforwards $ 9,122 $ 8,356 Stock-based compensation expense 3,944 3,647 Accounts receivable allowances 496 464 Accrued expenses 2,916 3,185 Other 9 180 Gross deferred tax assets 16,487 15,832 Less: valuation allowance (1,068 ) (797 ) Total net deferred tax assets 15,419 15,035 Deferred tax liabilities Deferred operations (8,820 ) (2,787 ) Foreign operations (144 ) (135 ) Depreciation and amortization (4,975 ) (2,943 ) Other (43 ) (90 ) Total deferred tax liabilities (13,982 ) (5,955 ) Net deferred tax assets $ 1,437 $ 9,080 As of December 31, 2019, we had net operating loss carryforwards of $34.0 $3.6 Section 382 of the U.S. Internal Revenue Code generally imposes an annual limitation on the amount of net operating loss carryforwards that might be used to offset taxable income when a corporation has undergone significant changes in stock ownership. As of December 31, 2019, we had $21.6 million of net operating loss carryforwards subject to Section 382 limitations, of which we believe approximately $17.6 million of federal losses will expire unused due to Section 382 limitations. The remaining $4.0 million is subject to a maximum annual limitation under Section 382 of approximately $1.0 million. This limitation could be further restricted if any ownership changes occur in future years. Accordingly, our deferred tax assets are reported net of the Section 382 limitations. As of December 31, 2019, we had federal research and development credit carryforwards, net of Section 383 limitations, of $4.2 million, which, if not utilized, will begin to expire in 2030. We had state research and development credit carryforwards of $1.4 million which, if not utilized, will begin to expire in 2025. As of December 31, 2019, we had a valuation allowance against our deferred tax assets of $1.1 million. The valuation allowance is established for state credit carryforwards that we do not expect to utilize based on our current expectations of future state taxable income. We are subject to income taxes for U.S. federal and various state and international jurisdictions. We are generally subject to U.S. federal and state tax examinations for all prior tax years due to our net operating loss carryforwards and the utilization of the carryforwards in years still open under statute. As of December 31, 2019 , we do not have any unrecognized tax benefits. It is our practice to recognize interest and penalties accrued on any unrecognized tax benefits as a component of income tax expense. We do not expect any material changes in our unrecognized tax positions over the next 12 months. |
Net Income Per Share
Net Income Per Share | 12 Months Ended |
Dec. 31, 2019 | |
Earnings Per Share [Abstract] | |
Net Income Per Share | NOTE O – Net Income Per Share The following table presents the components of the computation of basic and diluted net income per share for the periods indicated (in thousands, except per share amounts): Year Ended December 31, 2019 2018 2017 Numerator Net income $ 33,712 $ 23,872 $ 351 Denominator Weighted average common shares outstanding, basic 35,024 34,392 34,366 Options to purchase common stock 680 612 300 PSUs, RSUs and RSAs 298 208 46 Weighted average common shares outstanding, diluted 36,002 35,212 34,712 Net income per share Basic $ 0.96 $ 0.69 $ 0.01 Diluted $ 0.94 $ 0.68 $ 0.01 Shares and per share data have been adjusted for all periods presented to reflect a two-for-one stock split effective August 22, 2019. For the years ended December 31, 2019, 2018 and 2017, the effect of approximately 181,000, approximately |
Retirement Savings Plan
Retirement Savings Plan | 12 Months Ended |
Dec. 31, 2019 | |
Compensation And Retirement Disclosure [Abstract] | |
Retirement Savings Plan | NOTE P – Retirement Savings Plan We sponsor a 401(k) retirement savings plan for our employees. Employees can contribute up to 80% of their compensation, subject to the limits established by law. In 2018, we increased our match to 50% of the employee’s contribution up to the first 6% of pre-tax annual compensation. A portion of our match is in company stock, which is purchased from the open market by our plan provider and immediately deposited into the employee’s 401(k) account. |
Related Party Transactions
Related Party Transactions | 12 Months Ended |
Dec. 31, 2019 | |
Related Party Transactions [Abstract] | |
Related Party Transactions | NOTE Q – Related Party Transactions SPS Commerce Foundation (the “Foundation”) is a Minnesota non-profit organization exempt from federal taxation under Section 501(c)(3) of the Internal Revenue Code. The Foundation was formed in 2015 to engage in, advance, support, promote and administer charitable activities. The directors of the Foundation are also our officers. These officers receive no compensation from the Foundation for the management services performed for the Foundation. The Foundation is not a subsidiary of ours and the financial results of the Foundation are not consolidated with our financial statements. We made no contributions for the year ended December 31, 2019 and we made contributions of $0.7 million and $0.2 million to the Foundation for the years ended December 31, 2018 and 2017, respectively. We have no current legal obligations for future commitments to the Foundation. |
Selected Quarterly Financial Da
Selected Quarterly Financial Data (Unaudited) | 12 Months Ended |
Dec. 31, 2019 | |
Quarterly Financial Information Disclosure [Abstract] | |
Selected Quarterly Financial Data (Unaudited) | NOTE R – Selected Quarterly Financial Data (Unaudited) The following table presents our selected unaudited quarterly statements of comprehensive income data (in thousands, except per share amounts): For the Three Months Ended 2019 Dec 31 Sep 30 Jun 30 Mar 31 Revenues $ 72,733 $ 70,928 $ 68,529 $ 66,934 Gross profit 48,824 47,665 44,829 45,567 Income from operations 10,764 10,933 9,330 7,379 Net income 9,162 8,941 8,796 6,813 Diluted earnings per share $ 0.25 $ 0.25 $ 0.25 $ 0.19 For the Three Months Ended 2018 Dec 31 Sep 30 Jun 30 Mar 31 Revenues $ 65,189 $ 62,868 $ 61,091 $ 59,092 Gross profit 44,012 42,457 40,689 39,334 Income from operations 8,209 8,257 5,965 4,300 Net income 7,141 8,061 5,416 3,254 Diluted earnings per share $ 0.21 $ 0.23 $ 0.15 $ 0.09 |
General (Policies)
General (Policies) | 12 Months Ended |
Dec. 31, 2019 | |
Organization Consolidation And Presentation Of Financial Statements [Abstract] | |
Business Description | Business Description SPS Commerce is a leading provider of cloud-based supply chain management solutions that make it easier for retailers, suppliers, distributors, and logistics firms to orchestrate the management of item data, order fulfillment, inventory control and sales analytics across all channels. Implementing and maintaining a suite of supply chain management capabilities is resource intensive and is not a core competency for most businesses. The services offered by SPS Commerce eliminate the need for on-premise software and support staff by taking on that capability on the customer’s behalf. The solutions SPS Commerce provides enable our customers to increase their supply cycle agility, optimize their inventory levels and sell-through, reduce operational costs and gain increased visibility into customer orders, ensuring that suppliers, distributors, and logistics firms can satisfy retailer requirements. |
Basis of Presentation | Basis of Presentation The accompanying consolidated financial statements have been prepared in conformity with accounting principles generally accepted in the United States of America (“GAAP”) and include the accounts of SPS Commerce, Inc. and its subsidiaries. All intercompany accounts and transactions have been eliminated in the consolidated financial statements. Effective January 1, 2019, we adopted the requirements of Accounting Standards Update (“ASU”) No. 2016-02, Leases (Topic 842) On July 25, 2019, we announced that our board of directors declared a two-for-one stock split of our common stock, effected in the form of a 100 percent stock dividend as of the record date on August 8, 2019. The stock split dividend was distributed on August 22, 2019. Earnings per share and weighted average shares outstanding are presented in this Annual Report on Form 10-K after the effect of the 100 percent stock dividend. The two-for-one stock split is reflected in the share amounts in all periods presented in this Annual Report on Form 10-K. |
Foreign Currency Translation | Foreign Currency Translation The functional currency of our foreign operations is generally the applicable local currency. The functional currency is translated into U.S. dollars for balance sheet accounts using current exchange rates in effect as of the balance sheet date and for revenue and expense accounts using an average exchange rate during the fiscal year. The translation adjustments are deferred as a component of other comprehensive income within the consolidated statements of comprehensive income and the consolidated statements of stockholders' equity. Gains or losses resulting from transactions denominated in foreign currencies, if any, are included in other income (expense), net in our consolidated statements of comprehensive income. |
Use of Estimates | Use of Estimates Preparing financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities at the date of the financial statements and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates. |
Business Combinations | Business Combinations We recognize the fair value of the assets acquired and the liabilities assumed at the acquisition date, separately from goodwill. Goodwill as of the acquisition date is measured as the excess of consideration transferred and the amount of the assets acquired and the liabilities assumed. Assets acquired include tangible and intangible assets. We use estimates and assumptions that we believe are reasonable as a part of the purchase price allocation, which includes the process to determine the value and useful lives of purchased intangible assets and the process to determine the value of any contingent consideration liabilities. We recorded the acquisition-date fair value of any contingent liabilities, such as earn-out provisions, as part of the consideration transferred. The earn-out liability fair value is subsequently remeasured at each reporting date. The Company evaluates each contingent consideration to determine the valuation approach. See Note E for valuation methods utilized in the fair value remeasurement as of the reporting date. While we believe these estimates and assumptions are reasonable, they are inherently uncertain and subject to refinement. As a result, during the measurement period, which may be up to one year from the acquisition date, we may record adjustments to the fair value of the assets acquired and the liabilities assumed . Any such adjustments would be recorded |
Segment Information | Segment Information We operate in and report on one segment, which is supply chain management solutions . |
Risk and Uncertainties | Risk and Uncertainties We rely on hardware and software licensed from third parties to offer our on-demand solutions. Our management believes alternate sources are available; however, disruption or termination of these relationships could adversely affect our operating results in the near term. |
Concentration of Credit Risk | Concentration of Credit Risk Financial instruments that potentially subject us to concentrations of credit risk consist principally of cash and cash equivalents in financial institutions in excess of federally insured limits and accounts receivable. Cash and cash equivalents are held with financial institutions that we believe are subject to minimal risk. |
Cash and Cash Equivalents | Cash and Cash Equivalents Cash and cash equivalents consist of cash and highly liquid investments with original maturities of less than 90 days. Cash and cash equivalents are stated at fair value. |
Investments | Investments Management determines the appropriate classification of certificates of deposit and marketable securities at the time of purchase and reevaluates such determination at each balance sheet date. Securities are classified as available for sale and are carried at fair value, with the change in unrealized gains and losses, net of tax, reported as unrealized gains on investments on the consolidated statements of comprehensive income. Fair value is determined based on quoted market rates when observable or utilizing data points that are observable, such as quoted prices, interest rates and yield curves. When a determination has been made that an other-than-temporary decline in fair value has occurred, the amount of the decline that is related to a credit loss is realized and is included in other income (expense), net in the consolidated statements of comprehensive income. |
Fair Value of Other Financial Instruments | Fair Value of Other Financial Instruments The carrying amounts of our short-term financial instruments, which include cash, cash equivalents, accounts receivable, and accounts payable, approximates fair value due to their short-term nature. Marketable securities are recorded at fair value as further described in Note E. |
Accounts Receivable | Accounts Receivable Accounts receivable are initially recorded upon the sale of solutions to customers. Credit is granted in the normal course of business without collateral. Accounts receivable are stated net of allowances for doubtful accounts, which represent estimated losses resulting from the inability of certain customers to make the required payments. When determining the allowances for doubtful accounts, we take several factors into consideration including the overall composition of the accounts receivable aging, our prior history of accounts receivable write-offs, the type of customers and our experience with specific customers. We write-off accounts receivable when they are determined to be uncollectible. Changes in the allowances for doubtful accounts are recorded as bad debt expense and are included in general and administrative expense in our consolidated statements of comprehensive income. |
Property and Equipment | Property and Equipment Property and equipment, including assets acquired under capital lease obligations, are stated at cost, net of accumulated depreciation and amortization. Depreciation and amortization are computed using the straight-line method over the estimated useful lives when placed in service, which are: Computer equipment and software: 2 to 3 years Office equipment and furniture: 5 to 7 years Leasehold improvements: the shorter of the useful life of the asset or the remaining term of the lease Significant additions or improvements extending asset lives beyond one year are capitalized, while repairs and maintenance are charged to expense as incurred. We capitalize and amortize eligible costs to acquire or develop internal-use software that are incurred during the application development stage. Costs incurred during the preliminary project stage and post-implementation stage are expensed as incurred. Internal-use software is depreciated over the estimated useful life, commencing on the date when the asset is ready for its intended use. Depreciation is computed using the straight-line method. Maintenance and enhancements of internal-use software are expensed as incurred. The assets and related accumulated depreciation and amortization are adjusted for asset retirements and disposals and abandoned internal-use software with the resulting gain or loss included in our consolidated statements of comprehensive income. |
Leases | Leases We determine if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use assets, current operating lease liabilities, and long-term operating lease liabilities in our consolidated balance sheets. ROU assets represent our right to use an underlying asset for the lease term and lease liabilities represent our obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. We estimate the discount rate for a similar collateralized asset by reviewing quoted costs of borrowing. We use the implicit interest rate when readily determinable. The operating lease ROU asset also includes any lease payments made and lease incentives that have been incurred. The options to extend our leases are not recognized as part of our ROU assets and lease liabilities unless it is reasonably certain that we will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term. For all leases, we combine non-lease components with the related lease components and account for it as a single lease component. The ROU assets are subject to the same impairment process as our long-lived assets. Additionally, we review our lease liabilities for remeasurement whenever there is a triggering event or when relevant facts and circumstances change. |
Research and Development | Research and Development Research and development costs primarily include maintenance and data conversion activities related to our cloud-based supply chain management solutions and are expensed as incurred. |
Goodwill | Goodwill Goodwill represents the excess of the purchase price over the fair value of identifiable net assets acquired in business combinations. We test goodwill for impairment annually at November 30, or more frequently if events or changes in circumstances indicate that the asset might be impaired. The impairment test is conducted by comparing the fair value of the net assets with the carrying amount of the reporting unit. We determine the fair value of the reporting unit based on our market capitalization at the testing date. If the carrying amount of the goodwill exceeds the fair value of the reporting unit, goodwill may be impaired. If this occurs, the fair value is then allocated to its assets and liabilities in a manner similar to a purchase price allocation in order to determine the implied fair value of goodwill. This implied fair value is then compared to the carrying amount of goodwill and, if it is less, we would recognize an impairment loss in the consolidated statements of comprehensive income. |
Intangible Assets | Intangible Assets Assets acquired in business combinations may include identifiable intangible assets such as subscriber relationships, developed technology, and non-competition agreements. We recognize separately from goodwill the fair value of the identifiable intangible assets acquired. We have determined the fair value and useful lives of our purchased intangible assets using certain estimates and assumptions that we believe are reasonable. The purchased intangible assets are being amortized on a straight-line basis over their estimated useful lives, which are seven to ten years for subscriber relationships, three to five years for non-competition agreements and three to ten years for technology. |
Third Party Implementation Assets | Third Party Implementation Assets Third party implementation costs are capitalized assets included in Other Assets and relate to implementation costs incurred for software hosting arrangements. Capitalized implementation costs are recognized on a straight-line basis beginning when the application is ready for its intended use and ending on the expected termination date of the hosting arrangement, including consideration of the noncancelable contractual term and reasonably certain renewals. The terms are between four and six years for our current hosting arrangements. Recognized expense is reported in general and administrative expense, which is where the hosting arrangement subscriptions are reported. |
Impairment of Long-Lived Assets | Impairment of Long-Lived Assets We review our long-lived assets for impairment whenever events or changes in circumstances indicate that the carrying amount may not be recoverable. The carrying amount of a long-lived asset is not recoverable if the carrying amount of an asset group exceeds the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the assets at the date it is tested for recoverability, whether in use or under development. An impairment loss is measured as the amount by which the carrying amount of a long-lived asset exceeds its fair value. |
Revenue Recognition | Revenue Recognition Revenues are recognized when our services are made available to our customers, in an amount that reflects the consideration we are contractually and legally entitled to in exchange for those services. We determine revenue recognition through the following steps: - 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 - Recognition of revenue when, or as, we satisfy a performance obligation See Note C for further descriptions of our revenue recognition policy. |
Deferred Costs | Deferred Costs Deferred costs consist of costs to obtain customer contracts, such as commissions paid to sales personnel and to third-party partners for customer referrals, and costs to fulfill customer contracts, such as customer implementation costs. Sales commissions relating to recurring revenues are considered incremental and recoverable costs of obtaining a contract with our customer. These commissions are calculated based on estimated annual recurring revenue to be generated over the customer’s initial contract period. These costs are deferred and amortized over the expected period of benefit, which we have determined to be two years. Amortization expense is included in sales and marketing expenses in the accompanying consolidated statements of comprehensive income. Customer implementation costs are considered incremental and recoverable costs of obtaining a contract with our customer. These costs are deferred and amortized over the expected period of benefit, which we have determined to be two years. Amortization expense is included in cost of revenues in the accompanying consolidated statements of comprehensive income. |
Stock-Based Compensation | Stock-Based Compensation We recognize the cost of all share-based payments to employees, executive officers, and non-employee members of the Company’s Board of Directors, including grants of stock options, performance share units (“PSUs”), restricted stock units (“RSUs”), restricted stock awards (“RSAs”), and 401(k) stock match in the consolidated financial statements based on the grant date fair value of those awards. This cost is recognized over the period for which an employee is required to provide service in exchange for the award. In valuing share-based awards, judgment is required in determining the expected volatility of common stock and the expected term individuals will hold their share-based awards prior to exercising. The expected volatility of the options is based on the historical volatility of our common stock. The expected term of the options is based on the simplified method, which does not consider historical employee exercise behavior. We recognize forfeitures as they occur. |
Income Taxes | Income Taxes We account for income taxes using the asset and liability method, which requires recognition of deferred tax assets and liabilities for the expected future tax consequences of events that have been included in the financial statements. Under this method, deferred tax assets and liabilities are determined based on the difference between the financial statement and tax basis of assets and liabilities using enacted tax rates in effect for the year in which the differences are expected to reverse. Deferred tax assets are reduced by a valuation allowance when, in our judgement, it is more likely than not that some or all of the deferred tax asset will not be realized. We assess our ability to realize our deferred tax assets at the end of each reporting period. Realization of our deferred tax assets is contingent upon future taxable earnings. Accordingly, this assessment requires estimates and judgment. If the estimates of future taxable income vary from actual results, our assessment regarding the realization of these deferred tax assets could change. Future changes in the estimated amount of deferred taxes expected to be realized will be reflected in our consolidated financial statements in the period the estimate is changed, with a corresponding adjustment to our operating results. We recognize the financial statement benefit of a tax position only after determining that the relevant tax authority would “more likely than not” sustain the position following an audit. For tax positions meeting the “more likely than not” threshold, the amount recognized in the financial statements is the largest benefit that has a greater than 50% likelihood of being realized upon ultimate settlement with the relevant tax authority. |
Net Income Per Share | Net Income Per Share Basic net income per share has been computed using the weighted average number of shares of common stock outstanding during each period. Diluted net income per share also includes the impact of our outstanding potential common shares, including options, RSUs, RSAs, and PSUs. Potential common shares that are anti-dilutive are excluded from the calculation of diluted net income per share. |
Recently Adopted Accounting Pronouncements | Recently Adopted Accounting Pronouncements Standard Date of Issuance Description Date Adopted Effect on the Financial Statements ASU 2016-02 , Leases and all related amendments February 2016 Requires all leases with a term greater than 12 months to be recognized in the statements of financial position and eliminates current real estate-specific lease guidance, while maintaining substantially similar classification criteria for distinguishing between finance leases and operating leases. January 2019 The adoption of this standard and related amendments resulted in the recognition of approximately $15.7 million in right-of-use assets and lease liabilities on our balance sheet as of January 1, 2019. Comparative periods will continue to be measured and presented under historical guidance, and only the period of adoption and future periods will be subject to this ASU. There was no cumulative effect on retained earnings or other components of equity at the adoption date. For more information see Note J. ASU 2018-02 , Income Statement - Reporting Comprehensive Income (Topic 220) February 2018 Allows a reclassification from accumulated other comprehensive income to retained earnings for stranded tax effects resulting from the Tax Cut and Jobs Act of 2017 and requires certain disclosures regarding stranded tax effects in accumulated other comprehensive income. January 2019 The adoption of this standard did not have a material impact on our consolidated financial statements. |
Accounting Pronouncements Not Yet Adopted | Accounting Pronouncements Not Yet Adopted Standard Date of Issuance Description Date of Required Adoption Effect on the Financial Statements ASU 2016-13 , Financial Instruments - Credit Losses (Topic 326), Measurement of Credit Losses on Financial Statements June 2016 The amendment in this update replaces the incurred loss impairment methodology in current GAAP with a methodology that reflects expected credit losses on instruments within its scope, including trade receivables. This update is intended to provide financial statement users with more decision-useful information about the expected credit losses. January 2020 We have evaluated the requirements of this standard on our financial assets and have concluded that the adoption of this ASU, beginning January 1, 2020, will not have a material impact on our consolidated financial statements. ASU 2018-13 , Fair Value Measurement (Topic 820), Disclosure Framework - Changes to the Disclosure Requirements for Fair Value Measurement August 2018 This ASU adds, modifies and removes several disclosure requirements relative to the three levels of inputs used to measure fair value in accordance with Topic 820, Fair Value Measurement. January 2020 The adoption of this standard will not have a material impact on our consolidated financial statements. ASU 2017-04 , Intangibles - Goodwill and Other (Topic 350), Simplifying the Test for Goodwill Impairment January 2017 This amendment eliminates Step 2 from the goodwill impairment test. January 2020 The adoption of this standard will not have a material impact on our consolidated financial statements. |
Business Acquisitions (Tables)
Business Acquisitions (Tables) - MAPADOC [Member] | 12 Months Ended |
Dec. 31, 2019 | |
Business Acquisition [Line Items] | |
Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date | The following table summarizes the estimated fair values of the assets acquired and liabilities assumed at the acquisition date (in thousands): Current assets $ 659 Goodwill 6,372 Intangible assets 5,000 Deferred revenue (225 ) $ 11,806 |
Estimated Fair Value of Purchased Intangible Assets and Estimated Useful Lives | The following table summarizes the estimated fair value of the purchased intangible assets and their estimated useful lives: Estimated Estimated Fair Value Life Purchased Intangible Assets (in thousands) (in years) Developed technology $ 3,600 8 Subscriber relationships 1,400 8 $ 5,000 |
Revenue (Tables)
Revenue (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Revenue From Contract With Customer [Abstract] | |
Summary of Revenues by Revenue Stream | We derive our revenues primarily from the following revenue streams (in thousands): Year Ended December 31, 2019 2018 2017 Recurring revenues: Fulfillment $ 219,297 $ 190,783 $ 164,682 Analytics 37,038 34,447 34,260 Other 5,671 5,424 4,978 Recurring Revenues 262,006 230,654 203,920 One-time revenues 17,118 17,586 16,165 $ 279,124 $ 248,240 $ 220,085 |
Summary of Deferred Revenue Liability Relating to Set-Up Fees | The table below presents the activity of the portion of the deferred revenue liability relating to set-up fees (in thousands): Year Ended December 31, 2019 2018 Balances, at beginning of the year $ 9,857 $ 10,031 Invoiced set-up fees 11,056 10,271 Amortized set-up fees (10,395 ) (10,445 ) Balances, at end of the year $ 10,518 $ 9,857 |
Deferred Costs (Tables)
Deferred Costs (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Deferred Costs [Abstract] | |
Summary of Deferred Costs and Amortization of Deferred Costs | The table below presents the activity of deferred costs and amortization of deferred costs (in thousands): Year Ended December 31, 2019 2018 Balances, at beginning of the year $ 45,475 $ 39,933 Incurred deferred costs 49,883 49,583 Amortized deferred costs (48,417 ) (44,041 ) Balances, at end of the year $ 46,941 $ 45,475 |
Financial Instruments (Tables)
Financial Instruments (Tables) | 12 Months Ended |
Dec. 31, 2018 | |
Financial Instruments Owned At Fair Value [Abstract] | |
Summary of Cash Equivalents and Short-term Investments | Cash equivalents and short-term investments consisted of the following (in thousands): December 31, 2019 2018 Amortized Unrealized Fair Amortized Unrealized Fair Cost Gains, net Value Cost Gains, net Value Cash equivalents: Money market funds $ 151,266 $ — $ 151,266 $ 109,265 $ — $ 109,265 Certificate of deposit 7,030 — 7,030 7,000 — 7,000 Marketable securities: Corporate bonds 9,785 20 9,805 15,194 40 15,234 Commercial paper 7,503 — 7,503 9,889 76 9,965 U.S. treasury securities 9,855 91 9,946 12,300 38 12,338 $ 185,439 $ 111 $ 185,550 $ 153,648 $ 154 $ 153,802 Due within one year $ 185,550 $ 153,802 Total $ 185,550 $ 153,802 |
Summary of Financial Assets Measured at Fair Value on a Recurring Basis | The following table presents information about our financial assets that are measured at fair value on a recurring basis and indicates the fair value hierarchy of the valuation techniques utilized to determine such fair value (in thousands): Level 1 Level 2 Level 3 Total Assets at December 31, 2019: Cash equivalents: Money market funds $ 151,266 $ — $ — $ 151,266 Certificate of deposit 7,030 — — 7,030 Marketable securities: Corporate bonds — 9,805 — 9,805 Commercial paper — 7,503 — 7,503 U.S. treasury securities — 9,946 — 9,946 $ 158,296 $ 27,254 $ — $ 185,550 Liabilities at December 31, 2019: Earn-out liability $ — $ — $ 405 $ 405 $ — $ — $ 405 $ 405 Assets at December 31, 2018: Cash equivalents: Money market funds $ 109,265 $ — $ — $ 109,265 Certificate of deposit 7,000 — — 7,000 Marketable securities: Corporate bonds — 15,234 — 15,234 Commercial paper — 9,965 — 9,965 U.S. treasury securities — 12,338 — 12,338 $ 116,265 $ 37,537 $ — $ 153,802 Liabilities at December 31, 2018: Earn-out liability $ — $ — $ 1,368 $ 1,368 $ — $ — $ 1,368 $ 1,368 |
Allowance for Doubtful Accoun_2
Allowance for Doubtful Accounts (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Receivables [Abstract] | |
Schedule of Allowance for Doubtful Activity Included in Accounts Receivable Net | The allowance for doubtful accounts activity, included in accounts receivable, net, was as follows (in thousands): 2019 2018 2017 Balance, January 1 $ 1,392 $ 763 $ 515 Provision for doubtful accounts 3,499 2,590 1,705 Write-offs, net of recoveries (3,422 ) (1,961 ) (1,457 ) Balance, December 31 $ 1,469 $ 1,392 $ 763 |
Property and Equipment, net (Ta
Property and Equipment, net (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Property Plant And Equipment [Abstract] | |
Schedule of Property and Equipment, Net | Property and equipment, net included the following (in thousands): December 31, 2019 2018 Computer equipment and software $ 54,030 $ 44,781 Office equipment and furniture 9,205 7,985 Leasehold improvements 11,091 9,366 74,326 62,132 Less: accumulated depreciation and amortization (50,574 ) (41,175 ) $ 23,752 $ 20,957 |
Goodwill and Intangible Asset_2
Goodwill and Intangible Assets, net (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Goodwill And Intangible Assets Disclosure [Abstract] | |
Schedule of Changes in Net Carrying Amount of Goodwill | The changes in the net carrying amount of goodwill for the years ended December 31, 2019 and 2018 are as follows (in thousands): 2019 2018 Balance, January 1 $ 69,658 $ 51,613 Additions from business acquisitions 6,372 20,272 Foreign currency translation 815 (2,227 ) Balance, December 31 $ 76,845 $ 69,658 |
Intangible Assets | Intangible assets, net included the following (in thousands): December 31, 2019 Carrying Amount Accumulated Amortization Foreign Currency Translation Net Subscriber relationships $ 43,640 $ (27,287 ) $ 214 $ 16,567 Non-competition agreements 2,495 (2,371 ) 10 134 Technology 8,602 (2,643 ) 8 5,967 $ 54,737 $ (32,301 ) $ 232 $ 22,668 December 31, 2018 Carrying Amount Accumulated Amortization Foreign Currency Translation Net Subscriber relationships $ 43,212 $ (23,284 ) $ (623 ) $ 19,305 Non-competition agreements 2,560 (2,247 ) (28 ) 285 Technology 5,199 (2,012 ) (36 ) 3,151 $ 50,971 $ (27,543 ) $ (687 ) $ 22,741 |
Estimated Annual Amortization Expense Related to Intangible Assets Subject to Amortization | The estimated annual amortization expense related to intangible assets subject to amortization for the next five years and thereafter is as follows (in thousands): 2020 $ 5,359 2021 4,518 2022 3,415 2023 3,342 2024 2,101 Thereafter 3,933 $ 22,668 |
Other Assets (Tables)
Other Assets (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Other Assets [Abstract] | |
Summary of Changes in Net Amount of Capitalized Implementation Costs for Software Hosting Arrangements | The changes in the net amount of capitalized implementation costs for software hosting arrangements for the years ended December 31, 2019 and 2018 are as follows (in thousands): 2019 2018 Balance, January 1 $ 455 $ — Capitalized implementation fees 797 455 Amortization of implementation fees (86 ) — Balance, December 31 $ 1,166 $ 455 |
Leases (Tables)
Leases (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Leases [Abstract] | |
Summary of Non-Cancellable Operating Leases, Primarily for Office Space and Certain Equipment | We are obligated under non-cancellable operating leases, primarily for office space and certain equipment, as follows: December 31, 2019 Remaining Term Right-of-Use Asset (in years) (in thousands) Minneapolis, MN lease 5 $ 10,704 Kiev, Ukraine lease 5 2,316 Little Falls, NJ lease 4 1,574 Other leases <1 - 5 1,150 $ 15,744 |
Components of Lease Expense | The components of lease expense were as follows (in thousands): Year Ended December 31, 2019 Operating lease cost $ 2,569 Variable lease cost 3,390 $ 5,959 |
Schedule of Rent Expense Under Operating Leases | Rent expense for all operating leases, which includes minimum lease payments and other charges such as common area maintenance fees, charged to operations was as follows (in millions): Year Ended December 31, 2018 2017 Rent expense $ 5,577 $ 4,941 |
Schedule of Supplemental Cash Flow Information Related to Leases | Supplemental cash flow information related to leases was as follows (in thousands): Year Ended December 31, 2019 Cash paid for amounts included in the measurement of lease liabilities Operating cash flows from operating leases $ 4,383 ROU assets obtained in exchange for operating lease liabilities $ 2,537 |
Schedule of Supplemental Balance Sheet Information Related to Leases | Supplemental balance sheet information related to leases was as follows: December 31, 2019 Weighted-average remaining lease term - operating leases 5.0 years Weighted-average discount rate - operating leases 4.5 % |
Schedule of Future Minimum Payments Under Operating Leases | At December 31, 2019, our future minimum payments under operating leases were as follows (in thousands): 2020 $ 4,595 2021 5,600 2022 5,091 2023 4,903 2024 4,651 Thereafter 1,604 26,444 Less: imputed interest (2,576 ) $ 23,868 |
Schedule of Future Minimum Payments Under Operating Leases | At December 31, 2018, our future minimum payments under operating leases were as follows (in thousands): 2019 $ 4,209 2020 3,542 2021 4,414 2022 4,042 2023 3,854 Thereafter 4,817 $ 24,878 |
Stock-Based Compensation (Table
Stock-Based Compensation (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Stock-Based Compensation Expense | Stock-based compensation expense was allocated as follows (in thousands): Year Ended December 31, 2019 2018 2017 Cost of revenues $ 2,819 $ 2,168 $ 1,887 Operating expenses Sales and marketing 2,946 2,675 2,197 Research and development 2,651 1,505 949 General and administrative 6,274 6,162 7,694 Total stock-based compensation expense $ 14,690 $ 12,510 $ 12,727 Stock-based compensation expense by type was as follows (in thousands): Year Ended December 31, 2019 2018 2017 Stock Options $ 3,211 $ 3,355 $ 5,223 Performance Share Units 1,379 1,034 — Restricted Stock Units 7,553 5,930 6,526 Restricted Stock Awards 519 487 318 Employee Stock Purchase Plan 701 466 660 401K Stock Match 1,327 1,238 — Total stock-based compensation expense $ 14,690 $ 12,510 $ 12,727 |
Stock Option Activity | Our stock option activity was as follows: Weighted Average Options Exercise Price (#) ($/share) Outstanding at December 31, 2016 2,032,024 22.36 Granted 345,394 27.94 Exercised (131,004 ) 10.77 Forfeited (51,752 ) 27.97 Outstanding at December 31, 2017 2,194,662 23.80 Granted 362,944 29.94 Exercised (688,668 ) 20.83 Forfeited (122,470 ) 28.34 Outstanding at December 31, 2018 1,746,468 25.93 Granted 184,434 53.92 Exercised (346,098 ) 21.98 Forfeited (40,892 ) 30.74 Outstanding at December 31, 2019 1,543,912 30.03 |
Summary of Intrinsic Value of Options Exercised and Outstanding | The table below presents the intrinsic value of options exercised and outstanding and factors related to our stock options (in thousands, except per share data): Year Ended December 31, 2019 2018 2017 Fair value of options vested $ 3,393 $ 3,689 $ 4,227 Intrinsic value of options exercised 11,103 14,852 2,752 Intrinsic value of options outstanding 39,194 26,654 7,312 Weighted-average fair value per share of options granted 16.86 9.74 9.43 |
Weighted Average Fair Value Per Share of Options Granted, Assumptions | The fair values of the options granted were estimated on the date of grant using the Black-Scholes option pricing model with the following weighted-average assumptions: Year Ended December 31, 2019 2018 2017 Volatility 33 % 35 % 38 % Dividend yield — — — Life (in years) 4.43 4.44 4.51 Risk-free interest rate 2.41 % 2.54 % 1.85 % |
Summary of ESPP Activity | Our ESPP activity was as follows (in thousands, except share data): Year Ended December 31, 2019 2018 2017 Withholdings for share purchases $ 2,270 $ 1,745 $ 1,933 Shares purchased 58,851 69,596 81,936 |
Fair Value Estimation of Common Stock Using Black-Scholes Option Pricing Model, Weighted-Average Assumptions | The fair value was estimated based on the market price of our common stock at the beginning of each offering period and using the Black-Scholes option pricing model with the following weighted-average assumptions: Year Ended December 31, 2019 2018 2017 Volatility 36 % 26 % 32 % Dividend yield — — — Life (in years) 0.50 0.50 0.50 Risk-free interest rate 2.36 % 1.77 % 0.90 % |
PSUs and RSUs [Member] | |
PSUs and RSUs and Restricted Stock Awards | Our PSU and RSU activity was as follows: Weighted Average PSUs and RSUs Grant Date Fair (#) Value ($/share) Outstanding at December 31, 2016 378,084 27.07 Granted 422,336 27.81 Vested and common stock issued (129,900 ) 26.82 Forfeited (26,696 ) 27.70 Outstanding at December 31, 2017 643,824 27.58 Granted 345,590 33.02 Vested and common stock issued (163,122 ) 28.16 Forfeited (71,622 ) 27.52 Outstanding at December 31, 2018 754,670 29.95 Granted 278,622 55.83 Vested and common stock issued (206,380 ) 30.20 Forfeited (31,826 ) 34.67 Outstanding at December 31, 2019 795,086 38.76 |
Restricted Stock Award [Member] | |
PSUs and RSUs and Restricted Stock Awards | Our RSA activity was as follows: Weighted Average RSAs Grant Date Fair (#) Value ($/share) Outstanding at December 31, 2016 3,048 26.14 Restricted common stock issued 10,908 29.15 Restrictions lapsed (11,220 ) 28.33 Outstanding at December 31, 2017 2,736 29.15 Restricted common stock issued 14,608 37.22 Restrictions lapsed (13,680 ) 35.60 Outstanding at December 31, 2018 3,664 37.22 Restricted common stock issued 9,840 51.80 Restrictions lapsed (11,044 ) 46.96 Outstanding at December 31, 2019 2,460 51.80 |
Income Taxes (Tables)
Income Taxes (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Income Tax Disclosure [Abstract] | |
Schedule of Provision for Income Taxes | Our provisions for income taxes included current federal, foreign and state income tax expense, as well as deferred tax expense as follows (in thousands): Year Ended December 31, 2019 2018 2017 Current Federal $ — $ — $ (184 ) State 599 1,103 258 Foreign 169 540 652 Deferred Federal 6,595 3,011 10,262 State 1,156 224 (291 ) Foreign (161 ) (410 ) (355 ) $ 8,358 $ 4,468 $ 10,342 |
Reconciliation of the Provision for Income Taxes to the Statutory Federal Rate | A reconciliation of the expected federal income tax at the statutory rate to the provision for income taxes was as follows (in thousands): Year Ended December 31, 2019 2018 2017 Expected federal income tax at statutory rate $ 8,835 $ 5,951 $ 3,635 State income taxes, net of federal tax effect 1,933 1,293 417 Tax impact of foreign activity (108 ) 57 (105 ) Nondeductible executive compensation 940 902 530 Nondeductible expenses 329 351 268 Change in valuation allowance — (4 ) 16 Change in state deferred rate 47 38 (134 ) Research and development credit (1,252 ) (1,843 ) (227 ) Tax impact of Tax Cuts and Jobs Act — — 6,796 Tax impact of stock activity (2,518 ) (2,438 ) (925 ) Other 152 161 71 Total provision for income taxes $ 8,358 $ 4,468 $ 10,342 |
Significant Components of Deferred Tax Assets (Liabilities) | The significant components of our deferred tax assets (liabilities) were as follows (in thousands): December 31, 2019 2018 Deferred tax assets Net operating loss and credit carryforwards $ 9,122 $ 8,356 Stock-based compensation expense 3,944 3,647 Accounts receivable allowances 496 464 Accrued expenses 2,916 3,185 Other 9 180 Gross deferred tax assets 16,487 15,832 Less: valuation allowance (1,068 ) (797 ) Total net deferred tax assets 15,419 15,035 Deferred tax liabilities Deferred operations (8,820 ) (2,787 ) Foreign operations (144 ) (135 ) Depreciation and amortization (4,975 ) (2,943 ) Other (43 ) (90 ) Total deferred tax liabilities (13,982 ) (5,955 ) Net deferred tax assets $ 1,437 $ 9,080 |
Net Income Per Share (Tables)
Net Income Per Share (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Earnings Per Share [Abstract] | |
Components of Computation of Basic and Diluted Net Income Per Share | The following table presents the components of the computation of basic and diluted net income per share for the periods indicated (in thousands, except per share amounts): Year Ended December 31, 2019 2018 2017 Numerator Net income $ 33,712 $ 23,872 $ 351 Denominator Weighted average common shares outstanding, basic 35,024 34,392 34,366 Options to purchase common stock 680 612 300 PSUs, RSUs and RSAs 298 208 46 Weighted average common shares outstanding, diluted 36,002 35,212 34,712 Net income per share Basic $ 0.96 $ 0.69 $ 0.01 Diluted $ 0.94 $ 0.68 $ 0.01 |
Selected Quarterly Financial _2
Selected Quarterly Financial Data (Unaudited) (Tables) | 12 Months Ended |
Dec. 31, 2019 | |
Quarterly Financial Information Disclosure [Abstract] | |
Summary of Unaudited Quarterly Statements of Comprehensive Income Data | The following table presents our selected unaudited quarterly statements of comprehensive income data (in thousands, except per share amounts): For the Three Months Ended 2019 Dec 31 Sep 30 Jun 30 Mar 31 Revenues $ 72,733 $ 70,928 $ 68,529 $ 66,934 Gross profit 48,824 47,665 44,829 45,567 Income from operations 10,764 10,933 9,330 7,379 Net income 9,162 8,941 8,796 6,813 Diluted earnings per share $ 0.25 $ 0.25 $ 0.25 $ 0.19 For the Three Months Ended 2018 Dec 31 Sep 30 Jun 30 Mar 31 Revenues $ 65,189 $ 62,868 $ 61,091 $ 59,092 Gross profit 44,012 42,457 40,689 39,334 Income from operations 8,209 8,257 5,965 4,300 Net income 7,141 8,061 5,416 3,254 Diluted earnings per share $ 0.21 $ 0.23 $ 0.15 $ 0.09 |
General - Additional Informatio
General - Additional Information (Detail) $ in Thousands | Aug. 22, 2019 | Aug. 22, 2019 | Aug. 08, 2019 | Dec. 31, 2019USD ($)Segment | Jan. 01, 2019USD ($) |
Schedule Of Accounting Policies [Line Items] | |||||
Stock split ratio | 2 | 2 | 2 | ||
Percentage of stock dividend from stock split | 100.00% | ||||
Number of reportable segments | Segment | 1 | ||||
Deferred commission expected amortization period | 2 years | ||||
Operating leases, right of use assets | $ 15,744 | ||||
Operating leases, lease liabilities | $ 23,868 | ||||
ASU 2016-02 [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Operating leases, right of use assets | $ 15,700 | ||||
Operating leases, lease liabilities | $ 15,700 | ||||
Minimum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Hosting services arrangement period | 4 years | ||||
Minimum [Member] | Subscriber Relationships [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 7 years | ||||
Minimum [Member] | Non-competition Agreements [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 3 years | ||||
Minimum [Member] | Technology [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 3 years | ||||
Maximum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Hosting services arrangement period | 6 years | ||||
Maximum [Member] | Subscriber Relationships [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 10 years | ||||
Maximum [Member] | Non-competition Agreements [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 5 years | ||||
Maximum [Member] | Technology [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of intangible assets | 10 years | ||||
Computer Equipment and Software [Member] | Minimum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of property and equipment | 2 years | ||||
Computer Equipment and Software [Member] | Maximum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of property and equipment | 3 years | ||||
Office Equipment and Furniture [Member] | Minimum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of property and equipment | 5 years | ||||
Office Equipment and Furniture [Member] | Maximum [Member] | |||||
Schedule Of Accounting Policies [Line Items] | |||||
Estimated useful lives of property and equipment | 7 years |
Business Acquisitions - Additio
Business Acquisitions - Additional Information (Detail) | Aug. 22, 2019 | Aug. 22, 2019 | Aug. 08, 2019 | Dec. 18, 2018USD ($)shares | Oct. 03, 2018USD ($) | Dec. 31, 2019USD ($) | Dec. 31, 2018USD ($) | Dec. 31, 2017USD ($) | Aug. 26, 2019USD ($) |
Business Acquisition [Line Items] | |||||||||
Amortization expense for purchased intangible assets | $ 5,315,000 | $ 4,093,000 | $ 4,574,000 | ||||||
Stock issued for acquisition | $ 3,371,000 | ||||||||
Stock split description | two-for-one stock split | ||||||||
Stock split ratio | 2 | 2 | 2 | ||||||
MAPADOC [Member] | |||||||||
Business Acquisition [Line Items] | |||||||||
Total purchase price | $ 11,806,000 | ||||||||
Amortization expense for purchased intangible assets | $ 200,000 | ||||||||
E D I Admin [Member] | |||||||||
Business Acquisition [Line Items] | |||||||||
Payments to acquire business | $ 7,500,000 | ||||||||
Maximum payout of contingent consideration | $ 1,700,000 | ||||||||
Payment on completion of revenue milestone | 500,000 | ||||||||
Fair value of contingent consideration | 400,000 | ||||||||
E D I Admin [Member] | Contingent Consideration Liability [Member] | |||||||||
Business Acquisition [Line Items] | |||||||||
Other income | $ 400,000 | ||||||||
CovalentWorks [Member] | |||||||||
Business Acquisition [Line Items] | |||||||||
Payments to acquire business | $ 19,400,000 | ||||||||
Stock issued for acquisition | $ 3,400,000 | ||||||||
Stock issued for acquisition, Shares | shares | 80,956 | ||||||||
Stock split description | two-for-one stock split | ||||||||
Stock split ratio | 2 |
Business Acquisitions - Estimat
Business Acquisitions - Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Aug. 26, 2019 | Dec. 31, 2018 | Dec. 31, 2017 |
Business Combination, Recognized Identifiable Assets Acquired, Goodwill, and Liabilities Assumed, Net | ||||
Goodwill | $ 76,845 | $ 69,658 | $ 51,613 | |
MAPADOC [Member] | ||||
Business Combination, Recognized Identifiable Assets Acquired, Goodwill, and Liabilities Assumed, Net | ||||
Current assets | $ 659 | |||
Goodwill | 6,372 | |||
Intangible assets | 5,000 | |||
Deferred revenue | (225) | |||
Total purchase price | $ 11,806 |
Business Acquisitions - Estim_2
Business Acquisitions - Estimated Fair Value of Purchased Intangible Assets and Estimated Useful Lives (Detail) $ in Thousands | Aug. 26, 2019USD ($) |
Finite-Lived Intangible Assets [Line Items] | |
Estimated Fair Value | $ 5,000 |
MAPADOC [Member] | Developed Technology [Member] | |
Finite-Lived Intangible Assets [Line Items] | |
Estimated Fair Value | $ 3,600 |
Estimated Life (in years) | 8 years |
MAPADOC [Member] | Subscriber Relationships [Member] | |
Finite-Lived Intangible Assets [Line Items] | |
Estimated Fair Value | $ 1,400 |
Estimated Life (in years) | 8 years |
Revenue - Summary of Revenues b
Revenue - Summary of Revenues by Revenue Stream (Detail) - USD ($) $ in Thousands | 3 Months Ended | 12 Months Ended | |||||||||
Dec. 31, 2019 | Sep. 30, 2019 | Jun. 30, 2019 | Mar. 31, 2019 | Dec. 31, 2018 | Sep. 30, 2018 | Jun. 30, 2018 | Mar. 31, 2018 | Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Revenue Recognition [Line Items] | |||||||||||
Revenues | $ 72,733 | $ 70,928 | $ 68,529 | $ 66,934 | $ 65,189 | $ 62,868 | $ 61,091 | $ 59,092 | $ 279,124 | $ 248,240 | $ 220,085 |
Recurring Revenues [Member] | |||||||||||
Revenue Recognition [Line Items] | |||||||||||
Revenues | 262,006 | 230,654 | 203,920 | ||||||||
One-time Revenues [Member] | |||||||||||
Revenue Recognition [Line Items] | |||||||||||
Revenues | 17,118 | 17,586 | 16,165 | ||||||||
Fulfillment [Member] | Recurring Revenues [Member] | |||||||||||
Revenue Recognition [Line Items] | |||||||||||
Revenues | 219,297 | 190,783 | 164,682 | ||||||||
Analytics [Member] | Recurring Revenues [Member] | |||||||||||
Revenue Recognition [Line Items] | |||||||||||
Revenues | 37,038 | 34,447 | 34,260 | ||||||||
Other [Member] | Recurring Revenues [Member] | |||||||||||
Revenue Recognition [Line Items] | |||||||||||
Revenues | $ 5,671 | $ 5,424 | $ 4,978 |
Revenue - Additional Informatio
Revenue - Additional Information (Detail) | 12 Months Ended |
Dec. 31, 2019 | |
Disaggregation Of Revenue [Line Items] | |
Latest timing of billings | 30 days |
Estimated period for material rights present to customers | 2 years |
Set up fees recognized period | 2 years |
Maximum recognition period for miscellaneous one-time fee | 1 year |
Analytics Solution [Member] | |
Disaggregation Of Revenue [Line Items] | |
Set up fees recognized period | 1 year |
Minimum [Member] | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 30 days |
Current amount recognition period of set up fees | 1 month |
Long term amount recognition period of set up fees | 13 months |
Maximum [Member] | |
Disaggregation Of Revenue [Line Items] | |
Customer contract cancellation period | 90 days |
Deferred revenue recognition period | 1 year |
Contract period for remaining performance obligations for contracts in which the optional exemption under ASC 606-10-50-14(a) was applied | 1 year |
Current amount recognition period of set up fees | 12 months |
Long term amount recognition period of set up fees | 24 months |
Revenue - Summary of Deferred R
Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Detail) - Set-Up Fees [Member] - USD ($) $ in Thousands | 12 Months Ended | |
Dec. 31, 2019 | Dec. 31, 2018 | |
Deferred Revenue Arrangement [Line Items] | ||
Balances, at beginning of the year | $ 9,857 | $ 10,031 |
Invoiced set-up fees | 11,056 | 10,271 |
Amortized set-up fees | (10,395) | (10,445) |
Balances, at end of the year | $ 10,518 | $ 9,857 |
Deferred Costs - Additional Inf
Deferred Costs - Additional Information (Detail) | 12 Months Ended |
Dec. 31, 2019 | |
Deferred Costs [Abstract] | |
Deferred commission expected amortization period | 2 years |
Deferred customer implementation costs expected amortization period | 2 years |
Deferred Costs - Summary of Def
Deferred Costs - Summary of Deferred Costs and Amortization of Deferred Costs (Detail) - USD ($) $ in Thousands | 12 Months Ended | |
Dec. 31, 2019 | Dec. 31, 2018 | |
Deferred Costs [Abstract] | ||
Balances, at beginning of the year | $ 45,475 | $ 39,933 |
Incurred deferred costs | 49,883 | 49,583 |
Amortized deferred costs | (48,417) | (44,041) |
Balances, at end of the year | $ 46,941 | $ 45,475 |
Financial Instruments - Summary
Financial Instruments - Summary of Cash Equivalents and Short-term Investments (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Financial Instruments [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Due within one year | $ 185,550 | $ 153,802 |
Amortized Cost | 185,439 | 153,648 |
Unrealized Gains, net | 111 | 154 |
Fair Value | 185,550 | 153,802 |
Money Market Funds [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 151,266 | 109,265 |
Fair Value | 151,266 | 109,265 |
Certificate of Deposit [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 7,030 | 7,000 |
Fair Value | 7,030 | 7,000 |
Corporate Bonds [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 9,785 | 15,194 |
Unrealized Gains, net | 20 | 40 |
Fair Value | 9,805 | 15,234 |
Commercial Paper [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 7,503 | 9,889 |
Unrealized Gains, net | 76 | |
Fair Value | 7,503 | 9,965 |
U.S. Treasury Securities [Member] | ||
Schedule of Financial Instruments [Line Items] | ||
Amortized Cost | 9,855 | 12,300 |
Unrealized Gains, net | 91 | 38 |
Fair Value | $ 9,946 | $ 12,338 |
Financial Instruments - Additio
Financial Instruments - Additional Information (Detail) - USD ($) | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Oct. 03, 2018 | |
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | |||
Earn-out liability expected to be paid on completion of revenue milestones | $ 500,000 | ||
Fair value, assets, level 1 to level 2 transfers, amount | 0 | $ 0 | |
Fair value, assets, level 2 to level 1 transfers, amount | 0 | 0 | |
Fair value, liabilities, level 1 to level 2 transfers, amount | 0 | 0 | |
Fair value, liabilities, level 2 to level 1 transfers, amount | 0 | 0 | |
Fair value, asset transfers into level 3 | 0 | 0 | |
Fair value, asset, transfers out of level 3 | 0 | 0 | |
Fair value, liability, transfers into level 3 | 0 | 0 | |
Fair value, liability, transfers out of level 3 | 0 | $ 0 | |
Accrued Expenses [Member] | |||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | |||
Contingent consideration transferred out of the fair value hierarchy from level 3 | 500,000 | ||
E D I Admin [Member] | |||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | |||
Maximum payout of contingent consideration | $ 1,700,000 | ||
E D I Admin [Member] | Level 3 [Member] | |||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | |||
Maximum payout of contingent consideration | $ 1,700,000 | ||
Maximum [Member] | |||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | |||
Unrealized loss | $ (100,000) |
Financial Instruments - Summa_2
Financial Instruments - Summary of Financial Assets Measured at Fair Value on a Recurring Basis (Detail) - Fair Value, Measurements, Recurring [Member] - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | $ 185,550 | $ 153,802 |
Liabilities fair value | 405 | 1,368 |
Money Market Funds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 151,266 | 109,265 |
Certificate of Deposit [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,030 | 7,000 |
Corporate Bonds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 9,805 | 15,234 |
Commercial Paper [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,503 | 9,965 |
U.S. Treasury Securities [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 9,946 | 12,338 |
Earn-out Liability [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Liabilities fair value | 405 | 1,368 |
Level 1 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 158,296 | 116,265 |
Level 1 [Member] | Money Market Funds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 151,266 | 109,265 |
Level 1 [Member] | Certificate of Deposit [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,030 | 7,000 |
Level 2 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 27,254 | 37,537 |
Level 2 [Member] | Corporate Bonds [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 9,805 | 15,234 |
Level 2 [Member] | Commercial Paper [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 7,503 | 9,965 |
Level 2 [Member] | U.S. Treasury Securities [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Assets fair value | 9,946 | 12,338 |
Level 3 [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Liabilities fair value | 405 | 1,368 |
Level 3 [Member] | Earn-out Liability [Member] | ||
Fair Value, Balance Sheet Grouping, Financial Statement Captions [Line Items] | ||
Liabilities fair value | $ 405 | $ 1,368 |
Allowance for Doubtful Accoun_3
Allowance for Doubtful Accounts - Schedule of Allowance for Doubtful Activity Included in Accounts Receivable Net (Detail) - Allowance for Doubtful Accounts [Member] - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Valuation And Qualifying Accounts Disclosure [Line Items] | |||
Balance, January 1 | $ 1,392 | $ 763 | $ 515 |
Provision for doubtful accounts | 3,499 | 2,590 | 1,705 |
Write-offs, net of recoveries | (3,422) | (1,961) | (1,457) |
Balance, December 31 | $ 1,469 | $ 1,392 | $ 763 |
Property and Equipment, net - S
Property and Equipment, net - Schedule of Property and Equipment, Net (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Property, Plant and Equipment [Line Items] | ||
Property, Plant and Equipment, Gross | $ 74,326 | $ 62,132 |
Less: accumulated depreciation and amortization | (50,574) | (41,175) |
Net, Total | 23,752 | 20,957 |
Computer Equipment and Software [Member] | ||
Property, Plant and Equipment [Line Items] | ||
Property, Plant and Equipment, Gross | 54,030 | 44,781 |
Office Equipment and Furniture [Member] | ||
Property, Plant and Equipment [Line Items] | ||
Property, Plant and Equipment, Gross | 9,205 | 7,985 |
Leasehold Improvements [Member] | ||
Property, Plant and Equipment [Line Items] | ||
Property, Plant and Equipment, Gross | $ 11,091 | $ 9,366 |
Property and Equipment, net - A
Property and Equipment, net - Additional Information (Detail) - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Revenues From External Customers And Long Lived Assets [Line Items] | |||
Depreciation and amortization of property and equipment | $ 11,123 | $ 8,593 | $ 7,208 |
Outside of U.S [Member] | |||
Revenues From External Customers And Long Lived Assets [Line Items] | |||
Property and equipment, net held at subsidiary and office locations outside of the U.S. | $ 2,000 | $ 1,700 |
Goodwill and Intangible Asset_3
Goodwill and Intangible Assets, net - Schedule of Changes in Net Carrying Amount of Goodwill (Detail) - USD ($) $ in Thousands | 12 Months Ended | |
Dec. 31, 2019 | Dec. 31, 2018 | |
Goodwill And Intangible Assets Disclosure [Abstract] | ||
Balance, January 1 | $ 69,658 | $ 51,613 |
Additions from business acquisitions | 6,372 | 20,272 |
Foreign currency translation | 815 | (2,227) |
Balance, December 31 | $ 76,845 | $ 69,658 |
Goodwill and Intangible Asset_4
Goodwill and Intangible Assets, net - Additional Information (Detail) | 12 Months Ended |
Dec. 31, 2019USD ($) | |
Goodwill And Intangible Assets Disclosure [Abstract] | |
Goodwill impairment losses | $ 0 |
Goodwill and Intangible Asset_5
Goodwill and Intangible Assets, net - Intangible Assets (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | $ 54,737 | $ 50,971 |
Accumulated Amortization | (32,301) | (27,543) |
Foreign Currency Translation | 232 | (687) |
Net | 22,668 | 22,741 |
Subscriber Relationships [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 43,640 | 43,212 |
Accumulated Amortization | (27,287) | (23,284) |
Foreign Currency Translation | 214 | (623) |
Net | 16,567 | 19,305 |
Non-competition Agreements [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 2,495 | 2,560 |
Accumulated Amortization | (2,371) | (2,247) |
Foreign Currency Translation | 10 | (28) |
Net | 134 | 285 |
Technology [Member] | ||
Finite-Lived Intangible Assets [Line Items] | ||
Gross Carrying Amount | 8,602 | 5,199 |
Accumulated Amortization | (2,643) | (2,012) |
Foreign Currency Translation | 8 | (36) |
Net | $ 5,967 | $ 3,151 |
Goodwill and Intangible Asset_6
Goodwill and Intangible Assets, net - Estimated Annual Amortization Expense Related to Intangible Assets Subject to Amortization (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Goodwill And Intangible Assets Disclosure [Abstract] | ||
2020 | $ 5,359 | |
2021 | 4,518 | |
2022 | 3,415 | |
2023 | 3,342 | |
2024 | 2,101 | |
Thereafter | 3,933 | |
Net | $ 22,668 | $ 22,741 |
Other Assets - Summary of Chang
Other Assets - Summary of Changes in Net Amount of Capitalized Implementation Costs for Software Hosting Arrangements (Detail) - USD ($) $ in Thousands | 12 Months Ended | |
Dec. 31, 2019 | Dec. 31, 2018 | |
Capitalized Computer Software Net [Abstract] | ||
Balance, January 1 | $ 455 | |
Capitalized implementation fees | 797 | $ 455 |
Amortization of implementation fees | (86) | |
Balance, December 31 | $ 1,166 | $ 455 |
Other Assets - Additional Infor
Other Assets - Additional Information (Detail) | 12 Months Ended |
Dec. 31, 2019USD ($) | |
Capitalized Computer Software Net [Abstract] | |
Impairment losses on capitalized implementation costs | $ 0 |
Leases - Summary of Non-Cancell
Leases - Summary of Non-Cancellable Operating Leases, Primarily for Office Space and Certain Equipment (Detail) $ in Thousands | Dec. 31, 2019USD ($) |
Lessee Lease Description [Line Items] | |
Right-of-Use Asset | $ 15,744 |
Minneapolis, MN Lease [Member] | |
Lessee Lease Description [Line Items] | |
Remaining Term (in years) | 5 years |
Right-of-Use Asset | $ 10,704 |
Kiev, Ukraine Lease [Member] | |
Lessee Lease Description [Line Items] | |
Remaining Term (in years) | 5 years |
Right-of-Use Asset | $ 2,316 |
Little Falls, NJ Lease [Member] | |
Lessee Lease Description [Line Items] | |
Remaining Term (in years) | 4 years |
Right-of-Use Asset | $ 1,574 |
Other Leases [Member] | |
Lessee Lease Description [Line Items] | |
Right-of-Use Asset | $ 1,150 |
Other Leases [Member] | Minimum [Member] | |
Lessee Lease Description [Line Items] | |
Remaining Term (in years) | 1 year |
Other Leases [Member] | Maximum [Member] | |
Lessee Lease Description [Line Items] | |
Remaining Term (in years) | 5 years |
Leases - Additional Information
Leases - Additional Information (Detail) $ in Millions | 1 Months Ended | 12 Months Ended | |||
Dec. 31, 2019USD ($)ft²Option | Dec. 31, 2017ft²Option | Feb. 29, 2016ft² | Dec. 31, 2019USD ($)ft² | Dec. 31, 2020ft² | |
Lessee Lease Description [Line Items] | |||||
Lease extension period, number of years | 5 years | 5 years | |||
ASU 2016-02 [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Transition amount | $ | $ 15.7 | $ 15.7 | |||
Kiev, Ukraine Lease [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Lease extension period, number of years | 5 years 6 months | 5 years 6 months | |||
Number of options to extend term of the lease | Option | 1 | ||||
Kiev, Ukraine Lease [Member] | Lease Agreement Expires on May 31, 2025 [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Current leased space | 17,000 | 17,000 | |||
Lease agreement expires, date | May 31, 2025 | ||||
Kiev, Ukraine Lease [Member] | Lease Agreement Expires on April 26, 2020 [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Current leased space | 10,000 | 10,000 | |||
Lease agreement expires, date | Apr. 26, 2020 | ||||
Little Falls, NJ Lease [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Lease extension period, number of years | 5 years | ||||
Current leased space | 26,000 | ||||
Lease agreement expires, date | Jun. 30, 2023 | ||||
Incentives | $ | $ 0.9 | ||||
Current Headquarters [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Lease extension period, number of years | 5 years | ||||
Lease agreement expires, date | Apr. 30, 2025 | ||||
Number of options to extend term of the lease | Option | 2 | ||||
Incentives | $ | $ 9.9 | ||||
Current Headquarters [Member] | Minneapolis, Minnesota [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Current leased space | 189,000 | ||||
Current Headquarters [Member] | Scenario, Forecast [Member] | Minneapolis, Minnesota [Member] | |||||
Lessee Lease Description [Line Items] | |||||
Future expansion of headquarters | 25,000 |
Leases - Components of Lease Ex
Leases - Components of Lease Expense (Detail) $ in Thousands | 12 Months Ended |
Dec. 31, 2019USD ($) | |
Leases [Abstract] | |
Operating lease cost | $ 2,569 |
Variable lease cost | 3,390 |
Lease expense | $ 5,959 |
Leases - Schedule of Rent Expen
Leases - Schedule of Rent Expense Under Operating Leases (Detail) - USD ($) $ in Millions | 12 Months Ended | |
Dec. 31, 2018 | Dec. 31, 2017 | |
Leases [Abstract] | ||
Rent expense | $ 5,577 | $ 4,941 |
Leases - Schedule of Supplement
Leases - Schedule of Supplemental Cash Flow Information Related to Leases (Detail) $ in Thousands | 12 Months Ended |
Dec. 31, 2019USD ($) | |
Cash paid for amounts included in the measurement of lease liabilities | |
Operating cash flows from operating leases | $ 4,383 |
ROU assets obtained in exchange for operating lease liabilities | $ 2,537 |
Leases - Schedule of Suppleme_2
Leases - Schedule of Supplemental Balance Sheet Information Related to Leases (Detail) | Dec. 31, 2019 |
Leases [Abstract] | |
Weighted-average remaining lease term - operating leases | 5 years |
Weighted-average discount rate - operating leases | 4.50% |
Leases - Schedule of Future Min
Leases - Schedule of Future Minimum Payments Under Operating Leases (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Leases [Abstract] | ||
2020 | $ 4,595 | |
2021 | 5,600 | |
2022 | 5,091 | |
2023 | 4,903 | |
2024 | 4,651 | |
Thereafter | 1,604 | |
Future minimum payments | 26,444 | |
Less: imputed interest | (2,576) | |
Operating lease liability | $ 23,868 | |
2019 | $ 4,209 | |
2020 | 3,542 | |
2021 | 4,414 | |
2022 | 4,042 | |
2023 | 3,854 | |
Thereafter | 4,817 | |
Operating leases, total | $ 24,878 |
Stockholders' Equity - Addition
Stockholders' Equity - Additional Information (Detail) $ in Thousands | Nov. 02, 2019USD ($) | Aug. 22, 2019shares | Aug. 22, 2019 | Aug. 08, 2019 | Dec. 18, 2018USD ($)shares | Dec. 31, 2019USD ($)shares | Dec. 31, 2018USD ($)shares | Dec. 31, 2017USD ($)shares | Nov. 02, 2017USD ($) |
Schedule Of Stockholders Equity [Line Items] | |||||||||
Stock split ratio | 2 | 2 | 2 | ||||||
Change in number of common stock, shares authorized | shares | 0 | ||||||||
Stock issued for acquisition | $ 3,371 | ||||||||
Stock split description | two-for-one stock split | ||||||||
Treasury stock at cost | $ 20,618 | $ 19,864 | $ 5,815 | ||||||
Common Stock [Member] | |||||||||
Schedule Of Stockholders Equity [Line Items] | |||||||||
Stock issued for acquisition, Shares | shares | 80,956 | ||||||||
Stock split description | two-for-one stock split | ||||||||
Stock repurchase program, authorized amount | $ 50,000 | $ 50,000 | |||||||
Repurchase of treasury shares | shares | 417,564 | 579,490 | 244,294 | ||||||
Stock repurchase program, authorized repurchase amount expired | $ 3,700 | ||||||||
Stock repurchase program, period | 2 years | ||||||||
Stock repurchase program, available for future repurchases | $ 50,000 | ||||||||
CovalentWorks [Member] | |||||||||
Schedule Of Stockholders Equity [Line Items] | |||||||||
Stock split ratio | 2 | ||||||||
Stock issued for acquisition, Shares | shares | 80,956 | ||||||||
Stock issued for acquisition | $ 3,400 | ||||||||
Stock split description | two-for-one stock split |
Stock-Based Compensation - Addi
Stock-Based Compensation - Additional Information (Detail) $ / shares in Units, $ in Thousands | 1 Months Ended | 12 Months Ended | |||||
Feb. 28, 2019shares | Feb. 28, 2018 | Feb. 28, 2017shares | Dec. 31, 2019USD ($)Offering$ / sharesshares | Dec. 31, 2018USD ($) | Dec. 31, 2017USD ($) | Jan. 31, 2018shares | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Shares available for grant | shares | 12,100,000 | ||||||
Stock-based compensation expense | $ 14,690 | $ 12,510 | $ 12,727 | ||||
Unrecognized stock-based compensation expense | $ 18,700 | ||||||
Unrecognized stock-based compensation, expected to be recognized, weighted average period | 2 years 6 months | ||||||
Employee Stock Purchase Plan [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Additional shares reserved for issuance under the plan | shares | 1,900,000 | ||||||
Number of offerings per year | Offering | 2 | ||||||
Maximum [Member] | Employee Stock Purchase Plan [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Purchase price as a percentage of fair market value | 85.00% | ||||||
Chief Executive Officers [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock-based compensation expense | 3,600 | ||||||
Equity Incentive Plan [Member] | 2010 [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Additional shares reserved for issuance under the plan | shares | 2,081,488 | 2,049,736 | 2,055,240 | ||||
Stock Options [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock-based compensation expense | $ 3,211 | 3,355 | 5,223 | ||||
Vesting period | 4 years | ||||||
Stock options exercisable | shares | 1,160,714 | ||||||
Weighted average exercise price | $ / shares | $ 27.23 | ||||||
Weighted average remaining contractual life | 3 years 7 months 6 days | ||||||
Stock Options [Member] | Minimum [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock options contractual term range | 7 years | ||||||
Stock Options [Member] | Maximum [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock options contractual term range | 10 years | ||||||
PSU [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Vesting period | 3 years | 3 years | 3 years | ||||
Restricted Stock Units [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock-based compensation expense | $ 7,553 | 5,930 | 6,526 | ||||
Vesting period | 4 years | ||||||
Restricted Stock Award [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Stock-based compensation expense | $ 519 | $ 487 | $ 318 | ||||
Restricted stock awards units restrictions lapse, period | 1 year | ||||||
PSU's and RSU's [Member] | |||||||
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||||||
Number of RSU's vested and not issued during the period | shares | 124,786 |
Stock-Based Compensation - Stoc
Stock-Based Compensation - Stock-Based Compensation Expense (Detail) - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | $ 14,690 | $ 12,510 | $ 12,727 |
Stock Options [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 3,211 | 3,355 | 5,223 |
Performance Share Unit [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Performance Share Units | 1,379 | 1,034 | |
Restricted Stock Units [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 7,553 | 5,930 | 6,526 |
Restricted Stock Award [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 519 | 487 | 318 |
Employee Stock Purchase Plan [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 701 | 466 | 660 |
401(k) Stock Match [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 1,327 | 1,238 | |
Cost of Revenues [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 2,819 | 2,168 | 1,887 |
Sales and Marketing [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 2,946 | 2,675 | 2,197 |
Research and Development [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | 2,651 | 1,505 | 949 |
General and Administrative [Member] | |||
Share-based Compensation Arrangement by Share-based Payment Award, Compensation Cost [Line Items] | |||
Stock-based compensation expense | $ 6,274 | $ 6,162 | $ 7,694 |
Stock-Based Compensation - St_2
Stock-Based Compensation - Stock Option Activity (Detail) - $ / shares | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Disclosure Of Compensation Related Costs Sharebased Payments [Abstract] | |||
Options Outstanding, Beginning balance | 1,746,468 | 2,194,662 | 2,032,024 |
Options, Granted | 184,434 | 362,944 | 345,394 |
Options, Exercised | (346,098) | (688,668) | (131,004) |
Options, Forfeited | (40,892) | (122,470) | (51,752) |
Options Outstanding, Ending balance | 1,543,912 | 1,746,468 | 2,194,662 |
Weighted Average Exercise Price, Outstanding, Beginning Balance | $ 25.93 | $ 23.80 | $ 22.36 |
Weighted Average Exercise Price, Granted | 53.92 | 29.94 | 27.94 |
Weighted Average Exercise Price, Exercised | 21.98 | 20.83 | 10.77 |
Weighted Average Exercise Price, Forfeited | 30.74 | 28.34 | 27.97 |
Weighted Average Exercise Price, Outstanding, Ending Balance | $ 30.03 | $ 25.93 | $ 23.80 |
Stock-Based Compensation - Summ
Stock-Based Compensation - Summary of Intrinsic Value of Options Exercised and Outstanding (Detail) - USD ($) $ / shares in Units, $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Disclosure Of Compensation Related Costs Sharebased Payments [Abstract] | |||
Fair value of options vested | $ 3,393 | $ 3,689 | $ 4,227 |
Intrinsic value of options exercised | 11,103 | 14,852 | 2,752 |
Intrinsic value of options outstanding | $ 39,194 | $ 26,654 | $ 7,312 |
Weighted-average fair value per share of options granted | $ 16.86 | $ 9.74 | $ 9.43 |
Stock-Based Compensation - Weig
Stock-Based Compensation - Weighted Average Fair Value Per Share of Options Granted, Assumptions (Detail) - Stock Options [Member] | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||
Volatility | 33.00% | 35.00% | 38.00% |
Dividend yield | 0.00% | 0.00% | 0.00% |
Life (in years) | 4 years 5 months 4 days | 4 years 5 months 8 days | 4 years 6 months 3 days |
Risk-free interest rate | 2.41% | 2.54% | 1.85% |
Stock-Based Compensation - PSUs
Stock-Based Compensation - PSUs and RSUs (Detail) - PSU's and RSU's [Member] - $ / shares | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||
Stock awards, Outstanding, Beginning Balance | 754,670 | 643,824 | 378,084 |
Granted, stock units | 278,622 | 345,590 | 422,336 |
Vested and common stock issued, stock units | (206,380) | (163,122) | (129,900) |
Forfeited, stock units | (31,826) | (71,622) | (26,696) |
Stock awards, Outstanding, Ending Balance | 795,086 | 754,670 | 643,824 |
Weighted average grant date fair value, Outstanding, Beginning Balance | $ 29.95 | $ 27.58 | $ 27.07 |
Granted, Weighted Average Grant Date Fair Value | 55.83 | 33.02 | 27.81 |
Vested and common stock issued, Weighted Average Grant Date Fair Value | 30.20 | 28.16 | 26.82 |
Forfeited, Weighted Average Grant Date Fair Value | 34.67 | 27.52 | 27.70 |
Weighted average grant date fair value, Outstanding, Ending Balance | $ 38.76 | $ 29.95 | $ 27.58 |
Stock-Based Compensation - Rest
Stock-Based Compensation - Restricted Stock Awards (Detail) - Restricted Stock Award [Member] - $ / shares | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||
Stock awards, Outstanding, Beginning Balance | 3,664 | 2,736 | 3,048 |
Restricted common stock issued, stock awards | 9,840 | 14,608 | 10,908 |
Restrictions lapsed, stock awards | (11,044) | (13,680) | (11,220) |
Stock awards, Outstanding, Ending Balance | 2,460 | 3,664 | 2,736 |
Weighted average grant date fair value, Outstanding, Beginning Balance | $ 37.22 | $ 29.15 | $ 26.14 |
Restricted common stock issued, Weighted Average Grant Date Fair Value | 51.80 | 37.22 | 29.15 |
Restrictions lapsed, Weighted Average Grant Date Fair Value | 46.96 | 35.60 | 28.33 |
Weighted average grant date fair value, Outstanding, Ending Balance | $ 51.80 | $ 37.22 | $ 29.15 |
Stock-Based Compensation - Su_2
Stock-Based Compensation - Summary of ESPP Activity (Detail) - Employee Stock Purchase Plan [Member] - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||
Withholdings for share purchases | $ 2,270 | $ 1,745 | $ 1,933 |
Shares purchased | 58,851 | 69,596 | 81,936 |
Stock-Based Compensation - Fair
Stock-Based Compensation - Fair Value Estimation of Common Stock Using Black-Scholes Option Pricing Model, Weighted-Average Assumptions (Detail) - Employee Stock Purchase Plan [Member] | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Share-based Compensation Arrangement by Share-based Payment Award [Line Items] | |||
Volatility | 36.00% | 26.00% | 32.00% |
Dividend yield | 0.00% | 0.00% | 0.00% |
Life (in years) | 6 months | 6 months | 6 months |
Risk-free interest rate | 2.36% | 1.77% | 0.90% |
Income Taxes - Schedule of Prov
Income Taxes - Schedule of Provision for Income Taxes (Detail) - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Current | |||
Federal | $ (184) | ||
State | $ 599 | $ 1,103 | 258 |
Foreign | 169 | 540 | 652 |
Deferred | |||
Federal | 6,595 | 3,011 | 10,262 |
State | 1,156 | 224 | (291) |
Foreign | (161) | (410) | (355) |
Total provision for income taxes | $ 8,358 | $ 4,468 | $ 10,342 |
Income Taxes - Additional Infor
Income Taxes - Additional Information (Detail) - USD ($) | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Income Tax Expense Benefit [Line Items] | |||
Reclass of AMT credit carryforward to current federal expense | $ 400,000 | ||
Income tax refund | $ 200,000 | ||
Unutilized alternative minimum tax credit carryforwards partially refundable year one | 2020 | ||
Unutilized alternative minimum tax credit carryforwards partially refundable year two | 2021 | ||
Unutilized alternative minimum tax credit carryforwards fully refundable year | 2022 | ||
Tax expense related to The Job Cuts and Tax Act (“Tax Act”), primarily due to reduction in corporate tax rate | $ 6,796,000 | ||
Corporate federal income tax rate | 21.00% | 21.00% | |
Valuation allowance against our deferred tax assets | $ 1,068,000 | $ 797,000 | |
Domestic Tax Authority [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Net operating loss carryforward | $ 34,000,000 | ||
Expiration of net operating loss carryforwards | loss carryforwards for federal tax purposes will expire between 2020 and 2039 if not utilized | ||
Losses expected to expire unused | $ 17,600,000 | ||
Maximum annual limitation | 1,000,000 | ||
Domestic Tax Authority [Member] | Research and Development [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Research and development credit carryforwards | $ 4,200,000 | ||
Year in which credit carryforward begins to expire | 2030 | ||
Domestic Tax Authority [Member] | U.S. Internal Revenue Code [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Net operating loss carryforward | $ 21,600,000 | ||
Operating loss carryforwards subject to maximum annual limitation | 4,000,000 | ||
State and Local Jurisdiction [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Net operating loss carryforward | $ 3,600,000 | ||
Expiration of net operating loss carryforwards | loss carryforwards for state tax purposes will expire between 2021 and 2031 if not utilized | ||
State and Local Jurisdiction [Member] | Net Operating Loss and Credit Carryforwards [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Valuation allowance against our deferred tax assets | $ 1,100,000 | ||
State and Local Jurisdiction [Member] | Research and Development [Member] | |||
Income Tax Expense Benefit [Line Items] | |||
Research and development credit carryforwards | $ 1,400,000 | ||
Year in which credit carryforward begins to expire | 2025 |
Income Taxes - Reconciliation o
Income Taxes - Reconciliation of Provision for Income Taxes to Statutory Federal Rate (Detail) - USD ($) $ in Thousands | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Income Tax Disclosure [Abstract] | |||
Expected federal income tax at statutory rate | $ 8,835 | $ 5,951 | $ 3,635 |
State income taxes, net of federal tax effect | 1,933 | 1,293 | 417 |
Tax impact of foreign activity | (108) | 57 | (105) |
Nondeductible executive compensation | 940 | 902 | 530 |
Nondeductible expenses | 329 | 351 | 268 |
Change in valuation allowance | (4) | 16 | |
Change in state deferred rate | 47 | 38 | (134) |
Research and development credit | (1,252) | (1,843) | (227) |
Tax impact of Tax Cuts and Jobs Act | 6,796 | ||
Tax impact of stock activity | (2,518) | (2,438) | (925) |
Other | 152 | 161 | 71 |
Total provision for income taxes | $ 8,358 | $ 4,468 | $ 10,342 |
Income Taxes - Significant Comp
Income Taxes - Significant Components of Deferred Tax Assets (Liabilities) (Detail) - USD ($) $ in Thousands | Dec. 31, 2019 | Dec. 31, 2018 |
Deferred tax assets | ||
Net operating loss and credit carryforwards | $ 9,122 | $ 8,356 |
Stock-based compensation expense | 3,944 | 3,647 |
Accounts receivable allowances | 496 | 464 |
Accrued expenses | 2,916 | 3,185 |
Other | 9 | 180 |
Gross deferred tax assets | 16,487 | 15,832 |
Less: valuation allowance | (1,068) | (797) |
Total net deferred tax assets | 15,419 | 15,035 |
Deferred tax liabilities | ||
Deferred operations | (8,820) | (2,787) |
Foreign operations | (144) | (135) |
Depreciation and amortization | (4,975) | (2,943) |
Other | (43) | (90) |
Total deferred tax liabilities | (13,982) | (5,955) |
Net deferred tax assets | $ 1,437 | $ 9,080 |
Net Income Per Share - Componen
Net Income Per Share - Components of Computation of Basic and Diluted Net Income Per Share (Detail) - USD ($) $ / shares in Units, shares in Thousands, $ in Thousands | 3 Months Ended | 12 Months Ended | |||||||||
Dec. 31, 2019 | Sep. 30, 2019 | Jun. 30, 2019 | Mar. 31, 2019 | Dec. 31, 2018 | Sep. 30, 2018 | Jun. 30, 2018 | Mar. 31, 2018 | Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Numerator | |||||||||||
Net income | $ 9,162 | $ 8,941 | $ 8,796 | $ 6,813 | $ 7,141 | $ 8,061 | $ 5,416 | $ 3,254 | $ 33,712 | $ 23,872 | $ 351 |
Denominator | |||||||||||
Weighted average common shares outstanding, basic | 35,024 | 34,392 | 34,366 | ||||||||
Options to purchase common stock | 680 | 612 | 300 | ||||||||
PSUs, RSUs and RSAs | 298 | 208 | 46 | ||||||||
Weighted average common shares outstanding, diluted | 36,002 | 35,212 | 34,712 | ||||||||
Net income per share | |||||||||||
Basic | $ 0.96 | $ 0.69 | $ 0.01 | ||||||||
Diluted | $ 0.25 | $ 0.25 | $ 0.25 | $ 0.19 | $ 0.21 | $ 0.23 | $ 0.15 | $ 0.09 | $ 0.94 | $ 0.68 | $ 0.01 |
Net Income Per Share - Addition
Net Income Per Share - Additional Information (Detail) shares in Thousands | Aug. 22, 2019 | Aug. 22, 2019 | Aug. 08, 2019 | Dec. 31, 2019shares | Dec. 31, 2018shares | Dec. 31, 2017shares |
Net Income Per Share [Abstract] | ||||||
Stock split description | two-for-one stock split | |||||
Stock split ratio | 2 | 2 | 2 | |||
Outstanding potential common shares excluded from calculation of diluted net income (loss) per share | 181,000 | 1,000 | 566,000 |
Retirement Savings Plan - Addit
Retirement Savings Plan - Additional Information (Detail) - USD ($) $ in Millions | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Defined Contribution Pension And Other Postretirement Plans Disclosure [Abstract] | |||
Maximum allowable contribution by employee percentage | 80.00% | 80.00% | 80.00% |
Defined benefit plan employer matching contribution percent | 50.00% | 50.00% | |
Maximum annual contribution per employee, percent | 6.00% | ||
Employer matching contribution amount | $ 3.3 | $ 2.9 | $ 1.6 |
Related Party Transactions - Ad
Related Party Transactions - Additional Information (Detail) - SPS Commerce Foundation [Member] - USD ($) | 12 Months Ended | ||
Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Related Party Transaction [Line Items] | |||
Contributions to Foundation | $ 0 | $ 700,000 | $ 200,000 |
Legal obligations for future commitments to Foundation | 0 | ||
Directors of Foundation [Member] | |||
Related Party Transaction [Line Items] | |||
Officers' compensation from Foundation | $ 0 |
Selected Quarterly Financial _3
Selected Quarterly Financial Data (Unaudited) - Summary of Unaudited Quarterly Statements of Comprehensive Income Data (Detail) - USD ($) $ / shares in Units, $ in Thousands | 3 Months Ended | 12 Months Ended | |||||||||
Dec. 31, 2019 | Sep. 30, 2019 | Jun. 30, 2019 | Mar. 31, 2019 | Dec. 31, 2018 | Sep. 30, 2018 | Jun. 30, 2018 | Mar. 31, 2018 | Dec. 31, 2019 | Dec. 31, 2018 | Dec. 31, 2017 | |
Quarterly Financial Information Disclosure [Abstract] | |||||||||||
Revenues | $ 72,733 | $ 70,928 | $ 68,529 | $ 66,934 | $ 65,189 | $ 62,868 | $ 61,091 | $ 59,092 | $ 279,124 | $ 248,240 | $ 220,085 |
Gross profit | 48,824 | 47,665 | 44,829 | 45,567 | 44,012 | 42,457 | 40,689 | 39,334 | 186,885 | 166,492 | 146,460 |
Income from operations | 10,764 | 10,933 | 9,330 | 7,379 | 8,209 | 8,257 | 5,965 | 4,300 | 38,406 | 26,731 | 9,981 |
Net income | $ 9,162 | $ 8,941 | $ 8,796 | $ 6,813 | $ 7,141 | $ 8,061 | $ 5,416 | $ 3,254 | $ 33,712 | $ 23,872 | $ 351 |
Diluted earnings per share | $ 0.25 | $ 0.25 | $ 0.25 | $ 0.19 | $ 0.21 | $ 0.23 | $ 0.15 | $ 0.09 | $ 0.94 | $ 0.68 | $ 0.01 |