2019 Q4 Form 10-K Financial Statement
#000156459020006450 Filed on February 25, 2020
Income Statement
Concept | 2019 Q4 | 2019 Q3 | 2019 Q2 |
---|---|---|---|
Revenue | $72.73M | $70.93M | $68.53M |
YoY Change | 11.57% | 12.82% | 12.18% |
Cost Of Revenue | $23.91M | $23.26M | $23.70M |
YoY Change | 12.89% | 13.97% | 16.17% |
Gross Profit | $48.82M | $47.67M | $44.83M |
YoY Change | 10.93% | 12.27% | 10.17% |
Gross Profit Margin | 67.13% | 67.2% | 65.42% |
Selling, General & Admin | $28.78M | $27.66M | $27.72M |
YoY Change | 1.77% | -1.65% | -2.39% |
% of Gross Profit | 58.95% | 58.03% | 61.83% |
Research & Development | $7.860M | $7.743M | $6.509M |
YoY Change | 20.55% | 50.47% | 22.97% |
% of Gross Profit | 16.1% | 16.24% | 14.52% |
Depreciation & Amortization | $4.400M | $4.150M | $3.950M |
YoY Change | 34.15% | 35.62% | 26.2% |
% of Gross Profit | 9.01% | 8.71% | 8.81% |
Operating Expenses | $38.06M | $36.73M | $6.509M |
YoY Change | 6.31% | 7.4% | -81.26% |
Operating Profit | $10.76M | $10.93M | $9.330M |
YoY Change | 31.12% | 32.41% | 56.41% |
Interest Expense | $710.0K | $840.0K | $810.0K |
YoY Change | -4.05% | 33.33% | 47.27% |
% of Operating Profit | 6.6% | 7.68% | 8.68% |
Other Income/Expense, Net | $320.0K | $700.0K | $1.453M |
YoY Change | -277.78% | 71.15% | 283.38% |
Pretax Income | $11.80M | $11.63M | $10.78M |
YoY Change | 34.55% | 34.24% | 69.97% |
Income Tax | $2.640M | $2.692M | $1.987M |
% Of Pretax Income | 22.37% | 23.14% | 18.43% |
Net Earnings | $9.162M | $8.941M | $8.796M |
YoY Change | 28.3% | 10.92% | 62.41% |
Net Earnings / Revenue | 12.6% | 12.61% | 12.84% |
Basic Earnings Per Share | $0.26 | $0.25 | |
Diluted Earnings Per Share | $0.25 | $0.25 | $0.24 |
COMMON SHARES | |||
Basic Shares Outstanding | 34.84M | 35.02M | 35.01M |
Diluted Shares Outstanding | 35.93M | 36.02M |
Balance Sheet
Concept | 2019 Q4 | 2019 Q3 | 2019 Q2 |
---|---|---|---|
SHORT-TERM ASSETS | |||
Cash & Short-Term Investments | $213.5M | $201.2M | $198.7M |
YoY Change | 19.67% | 6.23% | 15.06% |
Cash & Equivalents | $179.3M | $149.7M | $147.0M |
Short-Term Investments | $34.30M | $51.40M | $51.70M |
Other Short-Term Assets | $11.28M | $8.385M | $8.265M |
YoY Change | 22.21% | 26.8% | -78.81% |
Inventory | |||
Prepaid Expenses | |||
Receivables | $31.53M | $29.38M | $30.75M |
Other Receivables | $0.00 | $0.00 | $0.00 |
Total Short-Term Assets | $291.6M | $273.5M | $272.8M |
YoY Change | 16.83% | 6.66% | 13.7% |
LONG-TERM ASSETS | |||
Property, Plant & Equipment | $23.75M | $20.76M | $20.60M |
YoY Change | 13.34% | 7.17% | 13.8% |
Goodwill | $76.85M | $76.37M | $70.30M |
YoY Change | 10.32% | 51.21% | |
Intangibles | |||
YoY Change | |||
Long-Term Investments | |||
YoY Change | |||
Other Assets | $2.513M | $2.621M | $2.452M |
YoY Change | 45.85% | 53.27% | -89.78% |
Total Long-Term Assets | $155.8M | $153.1M | $145.8M |
YoY Change | 14.15% | 36.65% | 30.44% |
TOTAL ASSETS | |||
Total Short-Term Assets | $291.6M | $273.5M | $272.8M |
Total Long-Term Assets | $155.8M | $153.1M | $145.8M |
Total Assets | $447.4M | $426.6M | $418.6M |
YoY Change | 15.88% | 15.78% | 19.02% |
SHORT-TERM LIABILITIES | |||
YoY Change | |||
Accounts Payable | $4.274M | $4.367M | $3.708M |
YoY Change | -3.74% | 13.34% | 0.22% |
Accrued Expenses | $6.207M | $4.874M | $4.964M |
YoY Change | 36.18% | 22.59% | -74.01% |
Deferred Revenue | $31.46M | $30.35M | $30.38M |
YoY Change | 24.22% | 21.66% | |
Short-Term Debt | $0.00 | $0.00 | $0.00 |
YoY Change | |||
Long-Term Debt Due | |||
YoY Change | |||
Total Short-Term Liabilities | $68.03M | $60.53M | $58.40M |
YoY Change | 20.36% | 21.86% | 20.66% |
LONG-TERM LIABILITIES | |||
Long-Term Debt | $0.00 | $0.00 | $0.00 |
YoY Change | |||
Other Long-Term Liabilities | $405.0K | $1.002M | $1.024M |
YoY Change | -70.39% | -85.04% | -85.16% |
Total Long-Term Liabilities | $405.0K | $1.002M | $1.024M |
YoY Change | -70.39% | -85.04% | -85.16% |
TOTAL LIABILITIES | |||
Total Short-Term Liabilities | $68.03M | $60.53M | $58.40M |
Total Long-Term Liabilities | $405.0K | $1.002M | $1.024M |
Total Liabilities | $92.56M | $81.53M | $80.27M |
YoY Change | 37.85% | 40.84% | 40.83% |
SHAREHOLDERS EQUITY | |||
Retained Earnings | $48.97M | $39.81M | $30.87M |
YoY Change | 220.9% | 390.28% | 52222.03% |
Common Stock | $354.2M | $349.1M | $344.3M |
YoY Change | 6.48% | 7.88% | 9.68% |
Preferred Stock | |||
YoY Change | |||
Treasury Stock (at cost) | |||
YoY Change | |||
Treasury Stock Shares | |||
Shareholders Equity | $354.9M | $345.1M | $338.3M |
YoY Change | |||
Total Liabilities & Shareholders Equity | $447.4M | $426.6M | $418.6M |
YoY Change | 15.88% | 15.78% | 19.03% |
Cashflow Statement
Concept | 2019 Q4 | 2019 Q3 | 2019 Q2 |
---|---|---|---|
OPERATING ACTIVITIES | |||
Net Income | $9.162M | $8.941M | $8.796M |
YoY Change | 28.3% | 10.92% | 62.41% |
Depreciation, Depletion And Amortization | $4.400M | $4.150M | $3.950M |
YoY Change | 34.15% | 35.62% | 26.2% |
Cash From Operating Activities | $20.83M | $21.30M | $19.46M |
YoY Change | 19.23% | 39.22% | 50.85% |
INVESTING ACTIVITIES | |||
Capital Expenditures | -$5.200M | -$3.040M | -$2.450M |
YoY Change | 34.37% | -10.59% | -5.77% |
Acquisitions | |||
YoY Change | |||
Other Investing Activities | $17.51M | -$11.42M | -$9.600M |
YoY Change | -179.95% | -526.12% | 104.69% |
Cash From Investing Activities | $12.32M | -$14.46M | -$12.05M |
YoY Change | -147.79% | 1936.62% | 65.29% |
FINANCING ACTIVITIES | |||
Cash Dividend Paid | |||
YoY Change | |||
Common Stock Issuance & Retirement, Net | |||
YoY Change | |||
Debt Paid & Issued, Net | |||
YoY Change | |||
Cash From Financing Activities | -3.600M | -4.020M | -4.030M |
YoY Change | 41.18% | -185.9% | 437.33% |
NET CHANGE | |||
Cash From Operating Activities | 20.83M | 21.30M | 19.46M |
Cash From Investing Activities | 12.32M | -14.46M | -12.05M |
Cash From Financing Activities | -3.600M | -4.020M | -4.030M |
Net Change In Cash | 29.55M | 2.820M | 3.380M |
YoY Change | -372.1% | -85.37% | -30.45% |
FREE CASH FLOW | |||
Cash From Operating Activities | $20.83M | $21.30M | $19.46M |
Capital Expenditures | -$5.200M | -$3.040M | -$2.450M |
Free Cash Flow | $26.03M | $24.34M | $21.91M |
YoY Change | 21.98% | 30.16% | 41.35% |
Facts In Submission
Frame | Concept Type | Concept / XBRL Key | Value | Unit |
---|---|---|---|---|
CY2019Q4 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
||
CY2019Q4 | us-gaap |
Preferred Stock Shares Issued
PreferredStockSharesIssued
|
0 | |
CY2019Q4 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
||
CY2019Q4 | us-gaap |
Liabilities
Liabilities
|
92564000 | |
CY2019Q4 | us-gaap |
Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
|
0.001 | |
CY2019Q4 | us-gaap |
Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
|
0 | |
CY2019Q4 | us-gaap |
Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
|
5000000 | |
CY2019Q4 | us-gaap |
Common Stock Shares Authorized
CommonStockSharesAuthorized
|
55000000 | |
CY2019Q4 | us-gaap |
Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
|
0.001 | |
CY2019Q4 | us-gaap |
Common Stock Shares Issued
CommonStockSharesIssued
|
36104619 | |
CY2019Q4 | us-gaap |
Common Stock Shares Outstanding
CommonStockSharesOutstanding
|
34863271 | |
CY2019 | dei |
Document Annual Report
DocumentAnnualReport
|
true | |
CY2019 | dei |
Document Transition Report
DocumentTransitionReport
|
false | |
CY2019 | dei |
Entity File Number
EntityFileNumber
|
001-34702 | |
CY2019 | dei |
Entity Incorporation State Country Code
EntityIncorporationStateCountryCode
|
DE | |
CY2019 | dei |
Entity Tax Identification Number
EntityTaxIdentificationNumber
|
41-2015127 | |
CY2018Q4 | us-gaap |
Other Assets Current
OtherAssetsCurrent
|
9229000 | |
CY2018Q4 | us-gaap |
Preferred Stock Value
PreferredStockValue
|
||
CY2018Q4 | us-gaap |
Commitments And Contingencies
CommitmentsAndContingencies
|
||
CY2018Q4 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
133859000 | |
CY2018Q4 | us-gaap |
Short Term Investments
ShortTermInvestments
|
44537000 | |
CY2018Q4 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
386123000 | |
CY2017 | us-gaap |
Cost Of Revenue
CostOfRevenue
|
73625000 | |
CY2018 | us-gaap |
Gross Profit
GrossProfit
|
166492000 | |
CY2017 | us-gaap |
Gross Profit
GrossProfit
|
146460000 | |
CY2019 | us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
70140000 | |
CY2018Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
20957000 | |
CY2018Q4 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
27488000 | |
CY2018Q4 | us-gaap |
Deferred Costs Current
DeferredCostsCurrent
|
34502000 | |
CY2018Q4 | us-gaap |
Assets Current
AssetsCurrent
|
249615000 | |
CY2018Q4 | us-gaap |
Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
|
-3218000 | |
CY2018Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
318974000 | |
CY2018Q4 | us-gaap |
Common Stock Value
CommonStockValue
|
36000 | |
CY2018Q4 | us-gaap |
Treasury Stock Common Value
TreasuryStockCommonValue
|
25679000 | |
CY2018Q4 | us-gaap |
Liabilities
Liabilities
|
67149000 | |
CY2018Q4 | us-gaap |
Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
|
332574000 | |
CY2018Q4 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
15261000 | |
CY2019Q4 | us-gaap |
Treasury Stock Common Shares
TreasuryStockCommonShares
|
1241348 | |
CY2019Q4 | us-gaap |
Treasury Stock Common Value
TreasuryStockCommonValue
|
46297000 | |
CY2019Q4 | us-gaap |
Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
|
354115000 | |
CY2019Q4 | us-gaap |
Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
|
48973000 | |
CY2019Q4 | us-gaap |
Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
|
-1951000 | |
CY2019Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
354876000 | |
CY2019Q4 | us-gaap |
Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
|
447440000 | |
CY2019 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
279124000 | |
CY2018 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
248240000 | |
CY2019 | us-gaap |
Cost Of Revenue
CostOfRevenue
|
92239000 | |
CY2019 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
3664000 | |
CY2018 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
1609000 | |
CY2017 | us-gaap |
Nonoperating Income Expense
NonoperatingIncomeExpense
|
712000 | |
CY2019 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
42070000 | |
CY2018 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
28340000 | |
CY2017 | us-gaap |
Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
|
10693000 | |
CY2019 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
8358000 | |
CY2018 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
4468000 | |
CY2017 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
10342000 | |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
33712000 | |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23872000 | |
CY2017 | us-gaap |
Net Income Loss
NetIncomeLoss
|
351000 | |
CY2019 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
1290000 | |
CY2018 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
-3999000 | |
CY2017 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
|
3944000 | |
CY2019 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
367000 | |
CY2018 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
|
397000 | |
CY2018 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
273000 | |
CY2017 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
-39000 | |
CY2017 | us-gaap |
Net Income Loss
NetIncomeLoss
|
351000 | |
CY2019 | us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
44719000 | |
CY2018 | us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
71719000 | |
CY2017 | us-gaap |
Selling And Marketing Expense
SellingAndMarketingExpense
|
71261000 | |
CY2019 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
28305000 | |
CY2018 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
22087000 | |
CY2017 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
9616000 | |
CY2017 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
7208000 | |
CY2017 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
4574000 | |
CY2017 | us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
1705000 | |
CY2017 | us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
15000 | |
CY2017 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
5586000 | |
CY2017 | us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
7813000 | |
CY2017 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
-393000 | |
CY2017 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
832000 | |
CY2017 | us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
1304000 | |
CY2017 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
1192000 | |
CY2017 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
5588000 | |
CY2017 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
31050000 | |
CY2017 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
7271000 | |
CY2017 | us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
47878000 | |
CY2017 | us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
33029000 | |
CY2019 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
2269000 | |
CY2019 | spsc |
Stock Issued During Period Value Restricted Stock And Stock Options Exercised
StockIssuedDuringPeriodValueRestrictedStockAndStockOptionsExercised
|
6207000 | |
CY2018Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
22741000 | |
CY2019Q4 | us-gaap |
Deferred Costs
DeferredCosts
|
11667000 | |
CY2018Q4 | us-gaap |
Deferred Costs
DeferredCosts
|
10973000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Net Noncurrent
DeferredTaxAssetsNetNoncurrent
|
2630000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Net Noncurrent
DeferredTaxAssetsNetNoncurrent
|
10456000 | |
CY2019 | dei |
Entity Address Address Line1
EntityAddressAddressLine1
|
333 South Seventh Street | |
CY2019 | dei |
Entity Address Address Line2
EntityAddressAddressLine2
|
Suite 1000 | |
CY2019 | dei |
Entity Address City Or Town
EntityAddressCityOrTown
|
Minneapolis | |
CY2019 | dei |
Entity Address State Or Province
EntityAddressStateOrProvince
|
MN | |
CY2019 | dei |
Entity Address Postal Zip Code
EntityAddressPostalZipCode
|
55402 | |
CY2019 | dei |
City Area Code
CityAreaCode
|
612 | |
CY2019 | dei |
Local Phone Number
LocalPhoneNumber
|
435-9400 | |
CY2019 | dei |
Security12b Title
Security12bTitle
|
Common Stock, par value $0.001 per share | |
CY2019 | dei |
Security Exchange Name
SecurityExchangeName
|
NASDAQ | |
CY2019 | dei |
Entity Interactive Data Current
EntityInteractiveDataCurrent
|
Yes | |
CY2019Q4 | us-gaap |
Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
|
179252000 | |
CY2019Q4 | us-gaap |
Short Term Investments
ShortTermInvestments
|
34284000 | |
CY2019Q4 | us-gaap |
Accounts Receivable Net Current
AccountsReceivableNetCurrent
|
31532000 | |
CY2019Q4 | us-gaap |
Deferred Costs Current
DeferredCostsCurrent
|
35274000 | |
CY2019Q4 | us-gaap |
Other Assets Current
OtherAssetsCurrent
|
11279000 | |
CY2019Q4 | us-gaap |
Assets Current
AssetsCurrent
|
291621000 | |
CY2019Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
23752000 | |
CY2019Q4 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
15744000 | |
CY2019Q4 | us-gaap |
Goodwill
Goodwill
|
76845000 | |
CY2018Q4 | us-gaap |
Goodwill
Goodwill
|
69658000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
22668000 | |
CY2019Q4 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
2513000 | |
CY2018Q4 | us-gaap |
Other Assets Noncurrent
OtherAssetsNoncurrent
|
1723000 | |
CY2019Q4 | us-gaap |
Assets
Assets
|
447440000 | |
CY2018Q4 | us-gaap |
Assets
Assets
|
386123000 | |
CY2019Q4 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
4274000 | |
CY2018Q4 | us-gaap |
Accounts Payable Current
AccountsPayableCurrent
|
4440000 | |
CY2019Q4 | us-gaap |
Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
|
22303000 | |
CY2018Q4 | us-gaap |
Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
|
20415000 | |
CY2019Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
6207000 | |
CY2018Q4 | us-gaap |
Accrued Liabilities Current
AccruedLiabilitiesCurrent
|
4558000 | |
CY2019Q4 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
31463000 | |
CY2018Q4 | us-gaap |
Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
|
25328000 | |
CY2018Q4 | us-gaap |
Deferred Rent Credit Current
DeferredRentCreditCurrent
|
1781000 | |
CY2019Q4 | us-gaap |
Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
|
3783000 | |
CY2019Q4 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
68030000 | |
CY2018Q4 | us-gaap |
Liabilities Current
LiabilitiesCurrent
|
56522000 | |
CY2019Q4 | us-gaap |
Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
|
2851000 | |
CY2018Q4 | us-gaap |
Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
|
2512000 | |
CY2017 | us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
5815000 | |
CY2017 | us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
1410000 | |
CY2017 | us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
1933000 | |
CY2018Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
133859000 | |
CY2017Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
123127000 | |
CY2017 | us-gaap |
Research And Development Expense
ResearchAndDevelopmentExpense
|
23183000 | |
CY2018 | us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
41862000 | |
CY2017 | us-gaap |
General And Administrative Expense
GeneralAndAdministrativeExpense
|
37461000 | |
CY2018 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
4093000 | |
CY2018Q4 | us-gaap |
Deferred Rent Credit Noncurrent
DeferredRentCreditNoncurrent
|
5371000 | |
CY2019Q4 | us-gaap |
Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
|
20085000 | |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Noncurrent
DeferredTaxLiabilitiesNoncurrent
|
1193000 | |
CY2018Q4 | us-gaap |
Deferred Tax Liabilities Noncurrent
DeferredTaxLiabilitiesNoncurrent
|
1376000 | |
CY2019Q4 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
405000 | |
CY2018Q4 | us-gaap |
Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
|
1368000 | |
CY2019Q4 | us-gaap |
Common Stock Value
CommonStockValue
|
36000 | |
CY2018 | us-gaap |
Cost Of Revenue
CostOfRevenue
|
81748000 | |
CY2019 | us-gaap |
Gross Profit
GrossProfit
|
186885000 | |
CY2019 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
5315000 | |
CY2019 | us-gaap |
Operating Expenses
OperatingExpenses
|
148479000 | |
CY2018 | us-gaap |
Operating Expenses
OperatingExpenses
|
139761000 | |
CY2019 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
38406000 | |
CY2018 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
26731000 | |
CY2017 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
9981000 | |
CY2019 | us-gaap |
Interest Income Expense Net
InterestIncomeExpenseNet
|
2947000 | |
CY2018 | us-gaap |
Interest Income Expense Net
InterestIncomeExpenseNet
|
2329000 | |
CY2017 | us-gaap |
Interest Income Expense Net
InterestIncomeExpenseNet
|
1032000 | |
CY2019 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
272000 | |
CY2018 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-626000 | |
CY2017 | us-gaap |
Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
|
-320000 | |
CY2019 | us-gaap |
Business Combination Contingent Consideration Arrangements Change In Amount Of Contingent Consideration Liability1
BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
|
-445000 | |
CY2018 | us-gaap |
Business Combination Contingent Consideration Arrangements Change In Amount Of Contingent Consideration Liability1
BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
|
94000 | |
CY2019 | us-gaap |
Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
|
122000 | |
CY2018 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
|
-91000 | |
CY2019 | us-gaap |
Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
|
398000 | |
CY2019 | us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
34971000 | |
CY2018 | us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
19997000 | |
CY2017 | us-gaap |
Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
|
4334000 | |
CY2019 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.96 | |
CY2018 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.69 | |
CY2017 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.01 | |
CY2019 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.94 | |
CY2018 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.68 | |
CY2017 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.01 | |
CY2019 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
35024000 | |
CY2018 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
34392000 | |
CY2017 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
34366000 | |
CY2019 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
36002000 | |
CY2018 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
35212000 | |
CY2017 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
34712000 | |
CY2016Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
257767000 | |
CY2017 | us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
12728000 | |
CY2017 | spsc |
Stock Issued During Period Value Restricted Stock And Stock Options Exercised
StockIssuedDuringPeriodValueRestrictedStockAndStockOptionsExercised
|
1410000 | |
CY2017 | us-gaap |
Cumulative Effect On Retained Earnings Tax1
CumulativeEffectOnRetainedEarningsTax1
|
16277000 | |
CY2017 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
1933000 | |
CY2017 | spsc |
Stock Retirement Of Escrow Shares During Period Value
StockRetirementOfEscrowSharesDuringPeriodValue
|
523000 | |
CY2017 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
5815000 | |
CY2017 | us-gaap |
Net Income Loss
NetIncomeLoss
|
351000 | |
CY2017 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Net Of Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
|
3944000 | |
CY2017 | spsc |
Reclassification Of Gain Loss On Investments Into Earnings
ReclassificationOfGainLossOnInvestmentsIntoEarnings
|
39000 | |
CY2017 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
4574000 | |
CY2017 | us-gaap |
Operating Expenses
OperatingExpenses
|
136479000 | |
CY2018Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
318974000 | |
CY2019 | us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
13365000 | |
CY2019 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
20618000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
22668000 | |
CY2019 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
14690000 | |
CY2018 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
12510000 | |
CY2017 | us-gaap |
Share Based Compensation
ShareBasedCompensation
|
12728000 | |
CY2019 | us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
574000 | |
CY2018 | us-gaap |
Other Noncash Income Expense
OtherNoncashIncomeExpense
|
364000 | |
CY2019 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
6771000 | |
CY2018 | us-gaap |
Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
|
4569000 | |
CY2019 | us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
1441000 | |
CY2018 | us-gaap |
Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
|
5564000 | |
CY2019 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
2768000 | |
CY2018 | us-gaap |
Increase Decrease In Other Operating Assets
IncreaseDecreaseInOtherOperatingAssets
|
3333000 | |
CY2019 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
-489000 | |
CY2018 | us-gaap |
Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
|
937000 | |
CY2017Q4 | us-gaap |
Stockholders Equity
StockholdersEquity
|
288111000 | |
CY2018 | us-gaap |
Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
|
11270000 | |
CY2018 | spsc |
Stock Issued During Period Value Restricted Stock And Stock Options Exercised
StockIssuedDuringPeriodValueRestrictedStockAndStockOptionsExercised
|
14344000 | |
CY2018 | us-gaap |
Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
|
1745000 | |
CY2018 | us-gaap |
Stock Issued During Period Value Acquisitions
StockIssuedDuringPeriodValueAcquisitions
|
3371000 | |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23872000 | |
CY2018 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Net Of Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
|
-3999000 | |
CY2018 | us-gaap |
Other Comprehensive Income Loss Available For Sale Securities Adjustment Net Of Tax
OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
|
397000 | |
CY2018 | spsc |
Reclassification Of Gain Loss On Investments Into Earnings
ReclassificationOfGainLossOnInvestmentsIntoEarnings
|
-273000 | |
CY2019 | us-gaap |
Stock Repurchased And Retired During Period Value
StockRepurchasedAndRetiredDuringPeriodValue
|
300000 | |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
33712000 | |
CY2019 | us-gaap |
Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Net Of Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
|
1290000 | |
CY2019 | us-gaap |
Other Comprehensive Income Loss Available For Sale Securities Adjustment Net Of Tax
OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
|
367000 | |
CY2019 | spsc |
Reclassification Of Gain Loss On Investments Into Earnings
ReclassificationOfGainLossOnInvestmentsIntoEarnings
|
-398000 | |
CY2019 | us-gaap |
New Accounting Pronouncement Or Change In Accounting Principle Effect Of Adoption Quantification
NewAccountingPronouncementOrChangeInAccountingPrincipleEffectOfAdoptionQuantification
|
8000 | |
CY2019Q3 | us-gaap |
Stockholders Equity Note Stock Split Conversion Ratio1
StockholdersEquityNoteStockSplitConversionRatio1
|
2 | |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
33712000 | |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23872000 | |
CY2019 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
7581000 | |
CY2018 | us-gaap |
Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
|
2798000 | |
CY2019 | us-gaap |
Business Combination Contingent Consideration Arrangements Change In Amount Of Contingent Consideration Liability1
BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
|
-445000 | |
CY2018 | us-gaap |
Business Combination Contingent Consideration Arrangements Change In Amount Of Contingent Consideration Liability1
BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
|
94000 | |
CY2019 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
11123000 | |
CY2018 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
8593000 | |
CY2019 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
5315000 | |
CY2018 | us-gaap |
Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
|
4093000 | |
CY2019 | us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
3499000 | |
CY2018 | us-gaap |
Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
|
2592000 | |
CY2019 | us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
319000 | |
CY2018 | us-gaap |
Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
|
3957000 | |
CY2019 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
706000 | |
CY2018 | us-gaap |
Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
|
-135000 | |
CY2019 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
6366000 | |
CY2018 | us-gaap |
Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
|
7094000 | |
CY2018 | us-gaap |
Increase Decrease In Other Deferred Liability
IncreaseDecreaseInOtherDeferredLiability
|
2440000 | |
CY2017 | us-gaap |
Increase Decrease In Other Deferred Liability
IncreaseDecreaseInOtherDeferredLiability
|
-1027000 | |
CY2019 | spsc |
Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
|
971000 | |
CY2019 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
71794000 | |
CY2018 | us-gaap |
Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
|
55015000 | |
CY2018 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
12510000 | |
CY2019 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
14690000 | |
CY2019 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
13585000 | |
CY2019 | spsc |
Deferred Commission Expected Amortization Period
DeferredCommissionExpectedAmortizationPeriod
|
P2Y | |
CY2017 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
1335000 | |
CY2018 | us-gaap |
Stock Issued1
StockIssued1
|
3371000 | |
CY2018 | us-gaap |
Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
|
13750000 | |
CY2019 | us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
73700000 | |
CY2018 | us-gaap |
Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
|
81666000 | |
CY2019 | us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
84472000 | |
CY2018 | us-gaap |
Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
|
82224000 | |
CY2019 | spsc |
Payments To Acquire Businesses And Intangible Assets Net Of Cash Acquired
PaymentsToAcquireBusinessesAndIntangibleAssetsNetOfCashAcquired
|
11500000 | |
CY2018 | spsc |
Payments To Acquire Businesses And Intangible Assets Net Of Cash Acquired
PaymentsToAcquireBusinessesAndIntangibleAssetsNetOfCashAcquired
|
27273000 | |
CY2017 | spsc |
Payments To Acquire Businesses And Intangible Assets Net Of Cash Acquired
PaymentsToAcquireBusinessesAndIntangibleAssetsNetOfCashAcquired
|
500000 | |
CY2019 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-14313000 | |
CY2018 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-40465000 | |
CY2017 | us-gaap |
Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
|
-22620000 | |
CY2019 | us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
20618000 | |
CY2018 | us-gaap |
Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
|
19864000 | |
CY2019 | us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
6207000 | |
CY2018 | us-gaap |
Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
|
14344000 | |
CY2019 | us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
2269000 | |
CY2018 | us-gaap |
Proceeds From Stock Plans
ProceedsFromStockPlans
|
1745000 | |
CY2019 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-12142000 | |
CY2018 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-3775000 | |
CY2017 | us-gaap |
Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
|
-2472000 | |
CY2019 | us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
54000 | |
CY2018 | us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
-43000 | |
CY2017 | us-gaap |
Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
1292000 | |
CY2019 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
45393000 | |
CY2018 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
10732000 | |
CY2017 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
|
7250000 | |
CY2018Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
133859000 | |
CY2017Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
123127000 | |
CY2016Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
115877000 | |
CY2019Q4 | us-gaap |
Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
|
179252000 | |
CY2019 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
1545000 | |
CY2018 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
1534000 | |
CY2017 | us-gaap |
Income Taxes Paid Net
IncomeTaxesPaidNet
|
1068000 | |
CY2019 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
322000 | |
CY2018 | us-gaap |
Capital Expenditures Incurred But Not Yet Paid
CapitalExpendituresIncurredButNotYetPaid
|
405000 | |
CY2019Q3 | us-gaap |
Stockholders Equity Note Stock Split Conversion Ratio1
StockholdersEquityNoteStockSplitConversionRatio1
|
2 | |
CY2019Q3 | spsc |
Stock Dividend Percentage In Stock Split
StockDividendPercentageInStockSplit
|
1 | |
CY2019Q3 | spsc |
Stock Dividend Percentage In Stock Split
StockDividendPercentageInStockSplit
|
1 | |
CY2019Q3 | us-gaap |
Stockholders Equity Note Stock Split Conversion Ratio1
StockholdersEquityNoteStockSplitConversionRatio1
|
2 | |
CY2019 | us-gaap |
Use Of Estimates
UseOfEstimates
|
<p style="margin-bottom:0pt;margin-top:18pt;text-indent:0%;font-weight:bold;font-style:italic;font-size:10pt;font-family:Times New Roman;text-transform:none;font-variant: normal;">Use of Estimates</p> <p style="margin-bottom:0pt;margin-top:6pt;text-indent:5.24%;color:#000000;font-size:10pt;font-family:Times New Roman;font-weight:normal;font-style:normal;text-transform:none;font-variant: normal;">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.</p> | |
CY2019 | us-gaap |
Number Of Reportable Segments
NumberOfReportableSegments
|
1 | |
CY2018 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
248240000 | |
CY2019 | us-gaap |
Concentration Risk Credit Risk
ConcentrationRiskCreditRisk
|
<p style="margin-bottom:0pt;margin-top:18pt;text-indent:0%;font-weight:bold;font-style:italic;font-size:10pt;font-family:Times New Roman;text-transform:none;font-variant: normal;">Concentration of Credit Risk</p> <p style="margin-bottom:0pt;margin-top:6pt;text-indent:5.24%;font-size:10pt;font-family:Times New Roman;font-weight:normal;font-style:normal;text-transform:none;font-variant: normal;">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.</p> | |
CY2018Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
45475000 | |
CY2019Q3 | us-gaap |
Finitelived Intangible Assets Acquired1
FinitelivedIntangibleAssetsAcquired1
|
5000000 | |
CY2019 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
279124000 | |
CY2017 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
220085000 | |
CY2019 | spsc |
Recurring Revenues Timing Of Billings Latest Period
RecurringRevenuesTimingOfBillingsLatestPeriod
|
P30D | |
CY2019 | spsc |
Estimated Period For Material Rights Present To Customers
EstimatedPeriodForMaterialRightsPresentToCustomers
|
P2Y | |
CY2019 | spsc |
Set Up Fees Recognized Period
SetUpFeesRecognizedPeriod
|
P2Y | |
CY2019 | spsc |
Maximum Recognition Period For Miscellaneous One Time Fee
MaximumRecognitionPeriodForMiscellaneousOneTimeFee
|
P1Y | |
CY2019 | spsc |
Deferred Commission Expected Amortization Period
DeferredCommissionExpectedAmortizationPeriod
|
P2Y | |
CY2019 | spsc |
Deferred Customer Implementation Costs Expected Amortization Period
DeferredCustomerImplementationCostsExpectedAmortizationPeriod
|
P2Y | |
CY2018Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
45475000 | |
CY2017Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
39933000 | |
CY2019 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
49883000 | |
CY2018 | spsc |
Deferred Costs Incurred
DeferredCostsIncurred
|
49583000 | |
CY2019 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
-48417000 | |
CY2018 | spsc |
Deferred Costs Amortized
DeferredCostsAmortized
|
-44041000 | |
CY2019Q4 | us-gaap |
Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
|
46941000 | |
CY2019 | spsc |
Earn Out Liability Expected To Be Paid On Completion Of Revenue Milestones
EarnOutLiabilityExpectedToBePaidOnCompletionOfRevenueMilestones
|
500000 | |
CY2019Q4 | us-gaap |
Fair Value Assets Level1 To Level2 Transfers Amount
FairValueAssetsLevel1ToLevel2TransfersAmount
|
0 | |
CY2018Q4 | us-gaap |
Fair Value Assets Level1 To Level2 Transfers Amount
FairValueAssetsLevel1ToLevel2TransfersAmount
|
0 | |
CY2019 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Liability Transfers Into Level3
FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
|
0 | |
CY2018 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Liability Transfers Into Level3
FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
|
0 | |
CY2019 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Liability Transfers Out Of Level3
FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
|
0 | |
CY2018 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Liability Transfers Out Of Level3
FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
|
0 | |
CY2019Q4 | us-gaap |
Fair Value Assets Level2 To Level1 Transfers Amount
FairValueAssetsLevel2ToLevel1TransfersAmount
|
0 | |
CY2018Q4 | us-gaap |
Fair Value Assets Level2 To Level1 Transfers Amount
FairValueAssetsLevel2ToLevel1TransfersAmount
|
0 | |
CY2019Q4 | us-gaap |
Fair Value Liabilities Level1 To Level2 Transfers Amount
FairValueLiabilitiesLevel1ToLevel2TransfersAmount
|
0 | |
CY2018Q4 | us-gaap |
Fair Value Liabilities Level1 To Level2 Transfers Amount
FairValueLiabilitiesLevel1ToLevel2TransfersAmount
|
0 | |
CY2019Q4 | us-gaap |
Fair Value Liabilities Level2 To Level1 Transfers Amount
FairValueLiabilitiesLevel2ToLevel1TransfersAmount
|
0 | |
CY2018Q4 | us-gaap |
Fair Value Liabilities Level2 To Level1 Transfers Amount
FairValueLiabilitiesLevel2ToLevel1TransfersAmount
|
0 | |
CY2019 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Recurring Basis Asset Transfers Into Level3
FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
|
0 | |
CY2018 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Recurring Basis Asset Transfers Into Level3
FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
|
0 | |
CY2019 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Recurring Basis Asset Transfers Out Of Level3
FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
|
0 | |
CY2018 | us-gaap |
Fair Value Measurement With Unobservable Inputs Reconciliation Recurring Basis Asset Transfers Out Of Level3
FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
|
0 | |
CY2019Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
74326000 | |
CY2018Q4 | us-gaap |
Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
|
62132000 | |
CY2019Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
50574000 | |
CY2018Q4 | us-gaap |
Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
|
41175000 | |
CY2019Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
23752000 | |
CY2018Q4 | us-gaap |
Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
|
20957000 | |
CY2019 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
11100000 | |
CY2018 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
8600000 | |
CY2017 | us-gaap |
Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
|
7200000 | |
CY2018Q4 | us-gaap |
Goodwill
Goodwill
|
69658000 | |
CY2017Q4 | us-gaap |
Goodwill
Goodwill
|
51613000 | |
CY2019 | us-gaap |
Goodwill Acquired During Period
GoodwillAcquiredDuringPeriod
|
6372000 | |
CY2018 | us-gaap |
Goodwill Acquired During Period
GoodwillAcquiredDuringPeriod
|
20272000 | |
CY2019 | us-gaap |
Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
|
815000 | |
CY2018 | us-gaap |
Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
|
-2227000 | |
CY2019Q4 | us-gaap |
Goodwill
Goodwill
|
76845000 | |
CY2018Q4 | us-gaap |
Goodwill
Goodwill
|
69658000 | |
CY2019 | us-gaap |
Goodwill Impairment Loss
GoodwillImpairmentLoss
|
0 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
54737000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
32301000 | |
CY2019Q4 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
232000 | |
CY2018Q4 | us-gaap |
Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
|
50971000 | |
CY2018Q4 | us-gaap |
Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
|
27543000 | |
CY2018Q4 | spsc |
Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
|
-687000 | |
CY2018Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
22741000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
|
5359000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Two
FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
|
4518000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
|
3415000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
|
3342000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
|
2101000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Amortization Expense After Year Five
FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
|
3933000 | |
CY2019Q4 | us-gaap |
Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
|
22668000 | |
CY2018Q4 | us-gaap |
Capitalized Computer Software Net
CapitalizedComputerSoftwareNet
|
455000 | |
CY2019 | us-gaap |
Capitalized Computer Software Additions
CapitalizedComputerSoftwareAdditions
|
797000 | |
CY2018 | us-gaap |
Capitalized Computer Software Additions
CapitalizedComputerSoftwareAdditions
|
455000 | |
CY2019 | us-gaap |
Capitalized Computer Software Amortization1
CapitalizedComputerSoftwareAmortization1
|
86000 | |
CY2019Q4 | us-gaap |
Capitalized Computer Software Net
CapitalizedComputerSoftwareNet
|
1166000 | |
CY2018Q4 | us-gaap |
Capitalized Computer Software Net
CapitalizedComputerSoftwareNet
|
455000 | |
CY2019 | us-gaap |
Capitalized Computer Software Impairments1
CapitalizedComputerSoftwareImpairments1
|
0 | |
CY2019Q4 | us-gaap |
Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
|
15744000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Renewal Term
LesseeOperatingLeaseRenewalTerm
|
P5Y | |
CY2019 | us-gaap |
Operating Lease Cost
OperatingLeaseCost
|
2569000 | |
CY2019 | us-gaap |
Variable Lease Cost
VariableLeaseCost
|
3390000 | |
CY2019 | us-gaap |
Lease Cost
LeaseCost
|
5959000 | |
CY2018 | us-gaap |
Lease And Rental Expense
LeaseAndRentalExpense
|
5577000000 | |
CY2017 | us-gaap |
Lease And Rental Expense
LeaseAndRentalExpense
|
4941000000 | |
CY2019 | us-gaap |
Operating Lease Payments
OperatingLeasePayments
|
4383000 | |
CY2019 | us-gaap |
Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
|
2537000 | |
CY2019Q4 | us-gaap |
Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
|
P5Y | |
CY2019Q4 | us-gaap |
Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
|
0.045 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
|
4595000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
|
5600000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
|
5091000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Four
LesseeOperatingLeaseLiabilityPaymentsDueYearFour
|
4903000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due Year Five
LesseeOperatingLeaseLiabilityPaymentsDueYearFive
|
4651000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due After Year Five
LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
|
1604000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
|
26444000 | |
CY2019Q4 | us-gaap |
Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
|
2576000 | |
CY2019Q4 | us-gaap |
Operating Lease Liability
OperatingLeaseLiability
|
23868000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due Current
OperatingLeasesFutureMinimumPaymentsDueCurrent
|
4209000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due In Two Years
OperatingLeasesFutureMinimumPaymentsDueInTwoYears
|
3542000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due In Three Years
OperatingLeasesFutureMinimumPaymentsDueInThreeYears
|
4414000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due In Four Years
OperatingLeasesFutureMinimumPaymentsDueInFourYears
|
4042000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due In Five Years
OperatingLeasesFutureMinimumPaymentsDueInFiveYears
|
3854000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due Thereafter
OperatingLeasesFutureMinimumPaymentsDueThereafter
|
4817000 | |
CY2018Q4 | us-gaap |
Operating Leases Future Minimum Payments Due
OperatingLeasesFutureMinimumPaymentsDue
|
24878000 | |
CY2019Q3 | us-gaap |
Stockholders Equity Note Stock Split Conversion Ratio1
StockholdersEquityNoteStockSplitConversionRatio1
|
2 | |
CY2019Q3 | spsc |
Increase Decrease In Common Stock Shares Authorized
IncreaseDecreaseInCommonStockSharesAuthorized
|
0 | |
CY2019 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
20600000 | |
CY2018 | us-gaap |
Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
|
19900000 | |
CY2019Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant
ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
|
12100000 | |
CY2017 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
12727000 | |
CY2019 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
14690000 | |
CY2018 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
12510000 | |
CY2017 | us-gaap |
Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
|
12727000 | |
CY2019Q4 | us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
|
18700000 | |
CY2019 | us-gaap |
Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized Period For Recognition1
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
|
P2Y6M | |
CY2016Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
2032024 | |
CY2016Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
22.36 | |
CY2017 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
|
345394 | |
CY2017 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
|
27.94 | |
CY2017 | us-gaap |
Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
|
131004 | |
CY2017 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
|
10.77 | |
CY2017 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
|
51752 | |
CY2017 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
|
27.97 | |
CY2017Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
2194662 | |
CY2017Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
23.80 | |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
|
362944 | |
CY2018 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
|
29.94 | |
CY2018 | us-gaap |
Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
|
688668 | |
CY2018 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
|
20.83 | |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
|
122470 | |
CY2018 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
|
28.34 | |
CY2018Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
1746468 | |
CY2018Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
25.93 | |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
|
184434 | |
CY2019 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
|
53.92 | |
CY2019 | us-gaap |
Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
|
346098 | |
CY2019 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
|
21.98 | |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
|
40892 | |
CY2019 | us-gaap |
Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
|
30.74 | |
CY2019Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
|
1543912 | |
CY2019Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
|
30.03 | |
CY2019 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Options Vested In Period Fair Value1
SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
|
3393000 | |
CY2018 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Options Vested In Period Fair Value1
SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
|
3689000 | |
CY2017 | us-gaap |
Sharebased Compensation Arrangement By Sharebased Payment Award Options Vested In Period Fair Value1
SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedInPeriodFairValue1
|
4227000 | |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
|
11103000 | |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
|
14852000 | |
CY2017 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Exercises In Period Total Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
|
2752000 | |
CY2019Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
|
39194000 | |
CY2018Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
|
26654000 | |
CY2017Q4 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Intrinsic Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
|
7312000 | |
CY2019 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
16.86 | |
CY2018 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
9.74 | |
CY2017 | us-gaap |
Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
|
9.43 | |
CY2017 | us-gaap |
Current Federal Tax Expense Benefit
CurrentFederalTaxExpenseBenefit
|
-184000 | |
CY2019 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
599000 | |
CY2018 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
1103000 | |
CY2017 | us-gaap |
Current State And Local Tax Expense Benefit
CurrentStateAndLocalTaxExpenseBenefit
|
258000 | |
CY2019 | us-gaap |
Current Foreign Tax Expense Benefit
CurrentForeignTaxExpenseBenefit
|
169000 | |
CY2018 | us-gaap |
Current Foreign Tax Expense Benefit
CurrentForeignTaxExpenseBenefit
|
540000 | |
CY2017 | us-gaap |
Current Foreign Tax Expense Benefit
CurrentForeignTaxExpenseBenefit
|
652000 | |
CY2019 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
6595000 | |
CY2018 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
3011000 | |
CY2017 | us-gaap |
Deferred Federal Income Tax Expense Benefit
DeferredFederalIncomeTaxExpenseBenefit
|
10262000 | |
CY2019 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
1156000 | |
CY2018 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
224000 | |
CY2017 | us-gaap |
Deferred State And Local Income Tax Expense Benefit
DeferredStateAndLocalIncomeTaxExpenseBenefit
|
-291000 | |
CY2019 | us-gaap |
Deferred Foreign Income Tax Expense Benefit
DeferredForeignIncomeTaxExpenseBenefit
|
-161000 | |
CY2018 | us-gaap |
Deferred Foreign Income Tax Expense Benefit
DeferredForeignIncomeTaxExpenseBenefit
|
-410000 | |
CY2017 | us-gaap |
Deferred Foreign Income Tax Expense Benefit
DeferredForeignIncomeTaxExpenseBenefit
|
-355000 | |
CY2019 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
8358000 | |
CY2018 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
4468000 | |
CY2017 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
10342000 | |
CY2017 | spsc |
Reclassification Of Alternative Minimum Tax Credit Carry Forward
ReclassificationOfAlternativeMinimumTaxCreditCarryForward
|
400000 | |
CY2019Q4 | us-gaap |
Income Tax Examination Liability Refund Adjustment From Settlement With Taxing Authority
IncomeTaxExaminationLiabilityRefundAdjustmentFromSettlementWithTaxingAuthority
|
200000 | |
CY2019 | spsc |
Unutilized Alternative Minimum Tax Credit Carryforwards Partially Refundable Year One
UnutilizedAlternativeMinimumTaxCreditCarryforwardsPartiallyRefundableYearOne
|
2020 | |
CY2019 | spsc |
Unutilized Alternative Minimum Tax Credit Carryforwards Partially Refundable Year Two
UnutilizedAlternativeMinimumTaxCreditCarryforwardsPartiallyRefundableYearTwo
|
2021 | |
CY2019 | spsc |
Unutilized Alternative Minimum Tax Credit Carryforwards Fully Refundable Year
UnutilizedAlternativeMinimumTaxCreditCarryforwardsFullyRefundableYear
|
2022 | |
CY2019 | us-gaap |
Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
|
8835000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
|
5951000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Income Tax Expense Benefit At Federal Statutory Income Tax Rate
IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate
|
3635000 | |
CY2019 | us-gaap |
Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
|
1933000 | |
CY2018 | us-gaap |
Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
|
1293000 | |
CY2017 | us-gaap |
Income Tax Reconciliation State And Local Income Taxes
IncomeTaxReconciliationStateAndLocalIncomeTaxes
|
417000 | |
CY2019 | us-gaap |
Income Tax Reconciliation Foreign Income Tax Rate Differential
IncomeTaxReconciliationForeignIncomeTaxRateDifferential
|
-108000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Foreign Income Tax Rate Differential
IncomeTaxReconciliationForeignIncomeTaxRateDifferential
|
57000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Foreign Income Tax Rate Differential
IncomeTaxReconciliationForeignIncomeTaxRateDifferential
|
-105000 | |
CY2019 | spsc |
Income Tax Reconciliation Nondeductible Expense For Executive Compensation
IncomeTaxReconciliationNondeductibleExpenseForExecutiveCompensation
|
940000 | |
CY2018 | spsc |
Income Tax Reconciliation Nondeductible Expense For Executive Compensation
IncomeTaxReconciliationNondeductibleExpenseForExecutiveCompensation
|
902000 | |
CY2017 | spsc |
Income Tax Reconciliation Nondeductible Expense For Executive Compensation
IncomeTaxReconciliationNondeductibleExpenseForExecutiveCompensation
|
530000 | |
CY2019 | us-gaap |
Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
|
329000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
|
351000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Nondeductible Expense
IncomeTaxReconciliationNondeductibleExpense
|
268000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Change In Deferred Tax Assets Valuation Allowance
IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
|
-4000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Change In Deferred Tax Assets Valuation Allowance
IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance
|
16000 | |
CY2019 | spsc |
Income Tax Reconciliation Change In State Deferred Rate
IncomeTaxReconciliationChangeInStateDeferredRate
|
47000 | |
CY2018 | spsc |
Income Tax Reconciliation Change In State Deferred Rate
IncomeTaxReconciliationChangeInStateDeferredRate
|
38000 | |
CY2017 | spsc |
Income Tax Reconciliation Change In State Deferred Rate
IncomeTaxReconciliationChangeInStateDeferredRate
|
-134000 | |
CY2019 | us-gaap |
Income Tax Reconciliation Tax Credits Research
IncomeTaxReconciliationTaxCreditsResearch
|
1252000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Tax Credits Research
IncomeTaxReconciliationTaxCreditsResearch
|
1843000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Tax Credits Research
IncomeTaxReconciliationTaxCreditsResearch
|
227000 | |
CY2017 | us-gaap |
Tax Cuts And Jobs Act Of2017 Change In Tax Rate Income Tax Expense Benefit
TaxCutsAndJobsActOf2017ChangeInTaxRateIncomeTaxExpenseBenefit
|
6796000 | |
CY2019 | spsc |
Income Tax Reconciliation Tax Benefits For Excess Tax Deduction From Stock Activity
IncomeTaxReconciliationTaxBenefitsForExcessTaxDeductionFromStockActivity
|
2518000 | |
CY2018 | spsc |
Income Tax Reconciliation Tax Benefits For Excess Tax Deduction From Stock Activity
IncomeTaxReconciliationTaxBenefitsForExcessTaxDeductionFromStockActivity
|
2438000 | |
CY2017 | spsc |
Income Tax Reconciliation Tax Benefits For Excess Tax Deduction From Stock Activity
IncomeTaxReconciliationTaxBenefitsForExcessTaxDeductionFromStockActivity
|
925000 | |
CY2019 | us-gaap |
Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
|
152000 | |
CY2018 | us-gaap |
Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
|
161000 | |
CY2017 | us-gaap |
Income Tax Reconciliation Other Adjustments
IncomeTaxReconciliationOtherAdjustments
|
71000 | |
CY2019 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.96 | |
CY2019 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
36002000 | |
CY2019 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
8358000 | |
CY2018 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
4468000 | |
CY2017 | us-gaap |
Income Tax Expense Benefit
IncomeTaxExpenseBenefit
|
10342000 | |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.210 | |
CY2018 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.210 | |
CY2019 | us-gaap |
Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate
EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
|
0.210 | |
CY2017 | us-gaap |
Tax Cuts And Jobs Act Of2017 Change In Tax Rate Income Tax Expense Benefit
TaxCutsAndJobsActOf2017ChangeInTaxRateIncomeTaxExpenseBenefit
|
6800000 | |
CY2019Q4 | spsc |
Deferred Tax Assets Operating Loss And Tax Credit Carryforwards
DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards
|
9122000 | |
CY2018Q4 | spsc |
Deferred Tax Assets Operating Loss And Tax Credit Carryforwards
DeferredTaxAssetsOperatingLossAndTaxCreditCarryforwards
|
8356000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Share Based Compensation Cost
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
|
3944000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Compensation And Benefits Share Based Compensation Cost
DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
|
3647000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals Allowance For Doubtful Accounts
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts
|
496000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals Allowance For Doubtful Accounts
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts
|
464000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals Accrued Liabilities
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
|
2916000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Tax Deferred Expense Reserves And Accruals Accrued Liabilities
DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAccruedLiabilities
|
3185000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Other
DeferredTaxAssetsOther
|
9000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Other
DeferredTaxAssetsOther
|
180000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Gross
DeferredTaxAssetsGross
|
16487000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Gross
DeferredTaxAssetsGross
|
15832000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
|
1068000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Valuation Allowance
DeferredTaxAssetsValuationAllowance
|
797000 | |
CY2019Q4 | us-gaap |
Deferred Tax Assets Net
DeferredTaxAssetsNet
|
15419000 | |
CY2018Q4 | us-gaap |
Deferred Tax Assets Net
DeferredTaxAssetsNet
|
15035000 | |
CY2019Q4 | spsc |
Deferred Tax Liabilities Deferred Revenue And Expense
DeferredTaxLiabilitiesDeferredRevenueAndExpense
|
8820000 | |
CY2018Q4 | spsc |
Deferred Tax Liabilities Deferred Revenue And Expense
DeferredTaxLiabilitiesDeferredRevenueAndExpense
|
2787000 | |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Undistributed Foreign Earnings
DeferredTaxLiabilitiesUndistributedForeignEarnings
|
144000 | |
CY2018Q4 | us-gaap |
Deferred Tax Liabilities Undistributed Foreign Earnings
DeferredTaxLiabilitiesUndistributedForeignEarnings
|
135000 | |
CY2019Q4 | spsc |
Deferred Tax Liabilities Property Plant And Equipment And Other Finite Lived Assets
DeferredTaxLiabilitiesPropertyPlantAndEquipmentAndOtherFiniteLivedAssets
|
4975000 | |
CY2018Q4 | spsc |
Deferred Tax Liabilities Property Plant And Equipment And Other Finite Lived Assets
DeferredTaxLiabilitiesPropertyPlantAndEquipmentAndOtherFiniteLivedAssets
|
2943000 | |
CY2019Q4 | us-gaap |
Deferred Tax Liabilities Other
DeferredTaxLiabilitiesOther
|
43000 | |
CY2018Q4 | us-gaap |
Deferred Tax Liabilities Other
DeferredTaxLiabilitiesOther
|
90000 | |
CY2019Q4 | us-gaap |
Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
|
13982000 | |
CY2018Q4 | us-gaap |
Deferred Income Tax Liabilities
DeferredIncomeTaxLiabilities
|
5955000 | |
CY2019Q4 | us-gaap |
Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
|
1437000 | |
CY2018Q4 | us-gaap |
Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
|
9080000 | |
CY2019 | us-gaap |
Net Income Loss
NetIncomeLoss
|
33712000 | |
CY2018 | us-gaap |
Net Income Loss
NetIncomeLoss
|
23872000 | |
CY2017 | us-gaap |
Net Income Loss
NetIncomeLoss
|
351000 | |
CY2019 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
35024000 | |
CY2018 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
34392000 | |
CY2017 | us-gaap |
Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
|
34366000 | |
CY2019 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
680000 | |
CY2018 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
612000 | |
CY2017 | us-gaap |
Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
|
300000 | |
CY2019 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
298000 | |
CY2018 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
208000 | |
CY2017 | us-gaap |
Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
|
46000 | |
CY2018 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
35212000 | |
CY2017 | us-gaap |
Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
|
34712000 | |
CY2018 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.69 | |
CY2019Q1 | us-gaap |
Net Income Loss
NetIncomeLoss
|
6813000 | |
CY2017 | us-gaap |
Earnings Per Share Basic
EarningsPerShareBasic
|
0.01 | |
CY2019 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.94 | |
CY2018 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.68 | |
CY2017 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.01 | |
CY2019 | us-gaap |
Stockholders Equity Note Stock Split
StockholdersEquityNoteStockSplit
|
two-for-one stock split | |
CY2019Q3 | us-gaap |
Stockholders Equity Note Stock Split Conversion Ratio1
StockholdersEquityNoteStockSplitConversionRatio1
|
2 | |
CY2019 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
181000000 | |
CY2018 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
1000000 | |
CY2017 | us-gaap |
Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
|
566000000 | |
CY2019 | us-gaap |
Defined Contribution Plan Maximum Annual Contributions Per Employee Percent
DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
|
0.80 | |
CY2018 | us-gaap |
Defined Contribution Plan Maximum Annual Contributions Per Employee Percent
DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
|
0.80 | |
CY2017 | us-gaap |
Defined Contribution Plan Maximum Annual Contributions Per Employee Percent
DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
|
0.80 | |
CY2019 | us-gaap |
Defined Contribution Plan Employer Matching Contribution Percent Of Match
DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
|
0.50 | |
CY2018 | us-gaap |
Defined Contribution Plan Employer Matching Contribution Percent Of Match
DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
|
0.50 | |
CY2019 | us-gaap |
Defined Contribution Plan Employer Matching Contribution Percent
DefinedContributionPlanEmployerMatchingContributionPercent
|
0.06 | |
CY2019 | spsc |
Defined Contribution Plan Employer Not Note Discretionary Contribution Amount
DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount
|
3300000 | |
CY2018 | spsc |
Defined Contribution Plan Employer Not Note Discretionary Contribution Amount
DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount
|
2900000 | |
CY2017 | spsc |
Defined Contribution Plan Employer Not Note Discretionary Contribution Amount
DefinedContributionPlanEmployerNotNoteDiscretionaryContributionAmount
|
1600000 | |
CY2019Q4 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
72733000 | |
CY2019Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
70928000 | |
CY2019Q2 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
68529000 | |
CY2019Q1 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
66934000 | |
CY2019Q4 | us-gaap |
Gross Profit
GrossProfit
|
48824000 | |
CY2019Q3 | us-gaap |
Gross Profit
GrossProfit
|
47665000 | |
CY2019Q2 | us-gaap |
Gross Profit
GrossProfit
|
44829000 | |
CY2019Q1 | us-gaap |
Gross Profit
GrossProfit
|
45567000 | |
CY2019Q4 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
10764000 | |
CY2019Q3 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
10933000 | |
CY2019Q2 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
9330000 | |
CY2019Q1 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
7379000 | |
CY2019Q4 | us-gaap |
Net Income Loss
NetIncomeLoss
|
9162000 | |
CY2019Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
8941000 | |
CY2019Q2 | us-gaap |
Net Income Loss
NetIncomeLoss
|
8796000 | |
CY2019Q4 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.25 | |
CY2019Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.25 | |
CY2019Q2 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.25 | |
CY2019Q1 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.19 | |
CY2018Q4 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
65189000 | |
CY2018Q3 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
62868000 | |
CY2018Q2 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
61091000 | |
CY2018Q1 | us-gaap |
Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
|
59092000 | |
CY2018Q4 | us-gaap |
Gross Profit
GrossProfit
|
44012000 | |
CY2018Q3 | us-gaap |
Gross Profit
GrossProfit
|
42457000 | |
CY2018Q2 | us-gaap |
Gross Profit
GrossProfit
|
40689000 | |
CY2018Q1 | us-gaap |
Gross Profit
GrossProfit
|
39334000 | |
CY2018Q4 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
8209000 | |
CY2018Q3 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
8257000 | |
CY2018Q2 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
5965000 | |
CY2018Q1 | us-gaap |
Operating Income Loss
OperatingIncomeLoss
|
4300000 | |
CY2018Q4 | us-gaap |
Net Income Loss
NetIncomeLoss
|
7141000 | |
CY2018Q3 | us-gaap |
Net Income Loss
NetIncomeLoss
|
8061000 | |
CY2018Q2 | us-gaap |
Net Income Loss
NetIncomeLoss
|
5416000 | |
CY2018Q1 | us-gaap |
Net Income Loss
NetIncomeLoss
|
3254000 | |
CY2018Q4 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.21 | |
CY2018Q3 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.23 | |
CY2018Q2 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.15 | |
CY2018Q1 | us-gaap |
Earnings Per Share Diluted
EarningsPerShareDiluted
|
0.09 |