{
 "version": "2.2",
 "instance": {
  "spsc-20260630.htm": {
   "nsprefix": "spsc",
   "nsuri": "http://www.spscommerce.com/20260630",
   "dts": {
    "inline": {
     "local": [
      "spsc-20260630.htm"
     ]
    },
    "schema": {
     "local": [
      "spsc-20260630.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/2023/calculation-1.1.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://www.xbrl.org/dtr/type/2024-01-31/types.xsd",
      "https://xbrl.fasb.org/srt/2026/elts/srt-2026.xsd",
      "https://xbrl.fasb.org/srt/2026/elts/srt-roles-2026.xsd",
      "https://xbrl.fasb.org/srt/2026/elts/srt-types-2026.xsd",
      "https://xbrl.fasb.org/us-gaap/2026/elts/us-gaap-2026.xsd",
      "https://xbrl.fasb.org/us-gaap/2026/elts/us-roles-2026.xsd",
      "https://xbrl.fasb.org/us-gaap/2026/elts/us-types-2026.xsd",
      "https://xbrl.sec.gov/country/2026/country-2026.xsd",
      "https://xbrl.sec.gov/dei/2026/dei-2026.xsd",
      "https://xbrl.sec.gov/ecd/2026/ecd-2026.xsd",
      "https://xbrl.sec.gov/stpr/2026/stpr-2026.xsd"
     ]
    },
    "calculationLink": {
     "local": [
      "spsc-20260630_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "spsc-20260630_def.xml"
     ]
    },
    "labelLink": {
     "local": [
      "spsc-20260630_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "spsc-20260630_pre.xml"
     ]
    }
   },
   "keyStandard": 269,
   "keyCustom": 30,
   "axisStandard": 21,
   "axisCustom": 0,
   "memberStandard": 24,
   "memberCustom": 16,
   "hidden": {
    "total": 6,
    "http://xbrl.sec.gov/dei/2026": 5,
    "http://www.spscommerce.com/20260630": 1
   },
   "contextCount": 179,
   "entityCount": 1,
   "segmentCount": 42,
   "elementCount": 549,
   "unitCount": 5,
   "baseTaxonomies": {
    "http://fasb.org/us-gaap/2026": 720,
    "http://xbrl.sec.gov/dei/2026": 30,
    "http://fasb.org/srt/2026": 5,
    "http://xbrl.sec.gov/ecd/2026": 4
   },
   "report": {
    "R1": {
     "role": "http://www.spscommerce.com/role/COVER",
     "longName": "0000001 - Document - COVER",
     "shortName": "COVER",
     "isDefault": "true",
     "groupType": "document",
     "subGroupType": "",
     "menuCat": "Cover",
     "order": "1",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R2": {
     "role": "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
     "longName": "9952151 - Statement - CONDENSED CONSOLIDATED BALANCE SHEETS",
     "shortName": "CONDENSED CONSOLIDATED BALANCE SHEETS",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "2",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R3": {
     "role": "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical",
     "longName": "9952152 - Statement - CONDENSED CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "shortName": "CONDENSED CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "parenthetical",
     "menuCat": "Statements",
     "order": "3",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PreferredStockParOrStatedValuePerShare",
      "unitRef": "usdPerShare",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "us-gaap:PreferredStockParOrStatedValuePerShare",
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PreferredStockParOrStatedValuePerShare",
      "unitRef": "usdPerShare",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "us-gaap:PreferredStockParOrStatedValuePerShare",
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R4": {
     "role": "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
     "longName": "9952153 - Statement - CONDENSED CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME",
     "shortName": "CONDENSED CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "4",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:CostOfRevenue",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R5": {
     "role": "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
     "longName": "9952154 - Statement - CONDENSED CONSOLIDATED STATEMENTS OF STOCKHOLDERS\u2019 EQUITY",
     "shortName": "CONDENSED CONSOLIDATED STATEMENTS OF STOCKHOLDERS\u2019 EQUITY",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "5",
     "firstAnchor": {
      "contextRef": "c-41",
      "name": "us-gaap:CommonStockSharesOutstanding",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-41",
      "name": "us-gaap:CommonStockSharesOutstanding",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R6": {
     "role": "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS",
     "longName": "9952155 - Statement - CONDENSED CONSOLIDATED STATEMENTS OF CASH FLOWS",
     "shortName": "CONDENSED CONSOLIDATED STATEMENTS OF CASH FLOWS",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "6",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:DeferredIncomeTaxExpenseBenefit",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R7": {
     "role": "http://www.spscommerce.com/role/General",
     "longName": "9952156 - Disclosure - General",
     "shortName": "General",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "7",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R8": {
     "role": "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactions",
     "longName": "9952157 - Disclosure - Business Acquisitions and Other Transactions",
     "shortName": "Business Acquisitions and Other Transactions",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "8",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R9": {
     "role": "http://www.spscommerce.com/role/Revenue",
     "longName": "9952158 - Disclosure - Revenue",
     "shortName": "Revenue",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "9",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R10": {
     "role": "http://www.spscommerce.com/role/DeferredCosts",
     "longName": "9952159 - Disclosure - Deferred Costs",
     "shortName": "Deferred Costs",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "10",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "spsc:DeferredCostsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "spsc:DeferredCostsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R11": {
     "role": "http://www.spscommerce.com/role/FairValueMeasurements",
     "longName": "9952160 - Disclosure - Fair Value Measurements",
     "shortName": "Fair Value Measurements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "11",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:FinancialInstrumentsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:FinancialInstrumentsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R12": {
     "role": "http://www.spscommerce.com/role/AllowanceforCreditLosses",
     "longName": "9952161 - Disclosure - Allowance for Credit Losses",
     "shortName": "Allowance for Credit Losses",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "12",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:AllowanceForCreditLossesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:AllowanceForCreditLossesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R13": {
     "role": "http://www.spscommerce.com/role/PropertyandEquipmentNet",
     "longName": "9952162 - Disclosure - Property and Equipment, Net",
     "shortName": "Property and Equipment, Net",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "13",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R14": {
     "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet",
     "longName": "9952163 - Disclosure - Goodwill and Intangible Assets, Net",
     "shortName": "Goodwill and Intangible Assets, Net",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "14",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R15": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingencies",
     "longName": "9952164 - Disclosure - Commitments and Contingencies",
     "shortName": "Commitments and Contingencies",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "15",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R16": {
     "role": "http://www.spscommerce.com/role/StockholdersEquity",
     "longName": "9952165 - Disclosure - Stockholders' Equity",
     "shortName": "Stockholders' Equity",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "16",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R17": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensation",
     "longName": "9952166 - Disclosure - Stock-Based Compensation",
     "shortName": "Stock-Based Compensation",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "17",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R18": {
     "role": "http://www.spscommerce.com/role/IncomeTaxes",
     "longName": "9952167 - Disclosure - Income Taxes",
     "shortName": "Income Taxes",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "18",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R19": {
     "role": "http://www.spscommerce.com/role/OtherIncomeandExpense",
     "longName": "9952168 - Disclosure - Other Income and Expense",
     "shortName": "Other Income and Expense",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "19",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OtherNonoperatingIncomeAndExpenseTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R20": {
     "role": "http://www.spscommerce.com/role/NetIncomePerShare",
     "longName": "9952169 - Disclosure - Net Income Per Share",
     "shortName": "Net Income Per Share",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "20",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R21": {
     "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements",
     "longName": "995445 - Disclosure - Insider Trading Arrangements",
     "shortName": "Insider Trading Arrangements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "21",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "ecd:Rule10b51ArrAdoptedFlag",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "ecd:Rule10b51ArrAdoptedFlag",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R22": {
     "role": "http://www.spscommerce.com/role/GeneralPolicies",
     "longName": "9955511 - Disclosure - General (Policies)",
     "shortName": "General (Policies)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "policies",
     "menuCat": "Policies",
     "order": "22",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "spsc:BusinessDescriptionPolicyPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "spsc:BusinessDescriptionPolicyPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R23": {
     "role": "http://www.spscommerce.com/role/GeneralTables",
     "longName": "9955512 - Disclosure - General (Tables)",
     "shortName": "General (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "23",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R24": {
     "role": "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsTables",
     "longName": "9955513 - Disclosure - Business Acquisitions and Other Transactions (Tables)",
     "shortName": "Business Acquisitions and Other Transactions (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "24",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R25": {
     "role": "http://www.spscommerce.com/role/RevenueTables",
     "longName": "9955514 - Disclosure - Revenue (Tables)",
     "shortName": "Revenue (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "25",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R26": {
     "role": "http://www.spscommerce.com/role/DeferredCostsTables",
     "longName": "9955515 - Disclosure - Deferred Costs (Tables)",
     "shortName": "Deferred Costs (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "26",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "spsc:DeferredCostsAndAmortizationTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "spsc:DeferredCostsAndAmortizationTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R27": {
     "role": "http://www.spscommerce.com/role/FairValueMeasurementsTables",
     "longName": "9955516 - Disclosure - Fair Value Measurements (Tables)",
     "shortName": "Fair Value Measurements (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "27",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R28": {
     "role": "http://www.spscommerce.com/role/AllowanceforCreditLossesTables",
     "longName": "9955517 - Disclosure - Allowance for Credit Losses (Tables)",
     "shortName": "Allowance for Credit Losses (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "28",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R29": {
     "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetTables",
     "longName": "9955518 - Disclosure - Property and Equipment, Net (Tables)",
     "shortName": "Property and Equipment, Net (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "29",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R30": {
     "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables",
     "longName": "9955519 - Disclosure - Goodwill and Intangible Assets, Net (Tables)",
     "shortName": "Goodwill and Intangible Assets, Net (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "30",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R31": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesTables",
     "longName": "9955520 - Disclosure - Commitments and Contingencies (Tables)",
     "shortName": "Commitments and Contingencies (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "31",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:LeaseCostTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:LeaseCostTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R32": {
     "role": "http://www.spscommerce.com/role/StockholdersEquityTables",
     "longName": "9955521 - Disclosure - Stockholders' Equity (Tables)",
     "shortName": "Stockholders' Equity (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "32",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfRepurchaseAgreements",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfRepurchaseAgreements",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R33": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationTables",
     "longName": "9955522 - Disclosure - Stock-Based Compensation (Tables)",
     "shortName": "Stock-Based Compensation (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "33",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R34": {
     "role": "http://www.spscommerce.com/role/OtherIncomeandExpenseTables",
     "longName": "9955523 - Disclosure - Other Income and Expense (Tables)",
     "shortName": "Other Income and Expense (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "34",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R35": {
     "role": "http://www.spscommerce.com/role/NetIncomePerShareTables",
     "longName": "9955524 - Disclosure - Net Income Per Share (Tables)",
     "shortName": "Net Income Per Share (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "35",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R36": {
     "role": "http://www.spscommerce.com/role/GeneralDetails",
     "longName": "9955525 - Disclosure - General (Details)",
     "shortName": "General (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "36",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R37": {
     "role": "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
     "longName": "9955526 - Disclosure - Business Acquisitions and Other Transactions - Narrative (Details)",
     "shortName": "Business Acquisitions and Other Transactions - Narrative (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "37",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-62",
      "name": "us-gaap:ProceedsFromDivestitureOfBusinessesNetOfCashDivested",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R38": {
     "role": "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
     "longName": "9955527 - Disclosure - Business Acquisitions and Other Transactions - Summary of Estimated Fair Values of Assets Acquired and Liabilities Assumed (Details)",
     "shortName": "Business Acquisitions and Other Transactions - Summary of Estimated Fair Values of Assets Acquired and Liabilities Assumed (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "38",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:Goodwill",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-63",
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R39": {
     "role": "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails",
     "longName": "9955528 - Disclosure - Business Acquisitions and Other Transactions - Summary of Estimated Useful Lives for each acquired Intangible Asset (Details)",
     "shortName": "Business Acquisitions and Other Transactions - Summary of Estimated Useful Lives for each acquired Intangible Asset (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "39",
     "firstAnchor": {
      "contextRef": "c-65",
      "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-65",
      "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R40": {
     "role": "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails",
     "longName": "9955529 - Disclosure - Revenue - Summary of Revenues by Revenue Stream (Details)",
     "shortName": "Revenue - Summary of Revenues by Revenue Stream (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "40",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-79",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R41": {
     "role": "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails",
     "longName": "9955530 - Disclosure - Revenue - Summary of Percentage of Domestic Revenue (Details)",
     "shortName": "Revenue - Summary of Percentage of Domestic Revenue (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "41",
     "firstAnchor": {
      "contextRef": "c-87",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "unitRef": "number",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "2",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-87",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "unitRef": "number",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "2",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R42": {
     "role": "http://www.spscommerce.com/role/RevenueNarrativeDetails",
     "longName": "9955531 - Disclosure - Revenue - Narrative (Details)",
     "shortName": "Revenue - Narrative (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "42",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "spsc:RecurringRevenuesTimingOfBillingsLatestPeriod",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "spsc:RecurringRevenuesTimingOfBillingsLatestPeriod",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R43": {
     "role": "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails",
     "longName": "9955532 - Disclosure - Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details)",
     "shortName": "Revenue - Summary of Deferred Revenue Liability Relating to Set-Up Fees (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "43",
     "firstAnchor": {
      "contextRef": "c-94",
      "name": "us-gaap:ContractWithCustomerLiability",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-94",
      "name": "us-gaap:ContractWithCustomerLiability",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R44": {
     "role": "http://www.spscommerce.com/role/DeferredCostsDetails",
     "longName": "9955533 - Disclosure - Deferred Costs (Details)",
     "shortName": "Deferred Costs (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "44",
     "firstAnchor": {
      "contextRef": "c-30",
      "name": "us-gaap:DeferredCostsCurrentAndNoncurrent",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "spsc:DeferredCostsAndAmortizationTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-30",
      "name": "us-gaap:DeferredCostsCurrentAndNoncurrent",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "spsc:DeferredCostsAndAmortizationTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R45": {
     "role": "http://www.spscommerce.com/role/FairValueMeasurementsDetails",
     "longName": "9955534 - Disclosure - Fair Value Measurements (Details)",
     "shortName": "Fair Value Measurements (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "45",
     "firstAnchor": {
      "contextRef": "c-104",
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-104",
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R46": {
     "role": "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails",
     "longName": "9955535 - Disclosure - Allowance for Credit Losses (Details)",
     "shortName": "Allowance for Credit Losses (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "46",
     "firstAnchor": {
      "contextRef": "c-4",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-46",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R47": {
     "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails",
     "longName": "9955536 - Disclosure - Property and Equipment, Net - Summary of Property and Equipment, Net (Details)",
     "shortName": "Property and Equipment, Net - Summary of Property and Equipment, Net (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "47",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R48": {
     "role": "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
     "longName": "9955537 - Disclosure - Property and Equipment, Net - Summary of Percentage of Property and Equipment, Net Located Outside of the U.S. (Details)",
     "shortName": "Property and Equipment, Net - Summary of Percentage of Property and Equipment, Net Located Outside of the U.S. (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "48",
     "firstAnchor": {
      "contextRef": "c-114",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "unitRef": "number",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "2",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-114",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "unitRef": "number",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "2",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R49": {
     "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofActivityinGoodwillDetails",
     "longName": "9955538 - Disclosure - Goodwill and Intangible Assets, Net - Summary of Activity in Goodwill (Details)",
     "shortName": "Goodwill and Intangible Assets, Net - Summary of Activity in Goodwill (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "49",
     "firstAnchor": {
      "contextRef": "c-4",
      "name": "us-gaap:Goodwill",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:GoodwillWrittenOffRelatedToSaleOfBusinessUnit",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R50": {
     "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails",
     "longName": "9955539 - Disclosure - Goodwill and Intangible Assets, Net - Summary of Intangible Assets, Net (Details)",
     "shortName": "Goodwill and Intangible Assets, Net - Summary of Intangible Assets, Net (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "50",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R51": {
     "role": "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails",
     "longName": "9955540 - Disclosure - Goodwill and Intangible Assets, Net - Summary of Estimated Future Annual Amortization Expense Related to Intangible Assets (Details)",
     "shortName": "Goodwill and Intangible Assets, Net - Summary of Estimated Future Annual Amortization Expense Related to Intangible Assets (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "51",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R52": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails",
     "longName": "9955541 - Disclosure - Commitments and Contingencies - Narrative (Details)",
     "shortName": "Commitments and Contingencies - Narrative (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "52",
     "firstAnchor": {
      "contextRef": "c-120",
      "name": "spsc:LesseeOperatingLeaseLeasedArea",
      "unitRef": "sqft",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-120",
      "name": "spsc:LesseeOperatingLeaseLeasedArea",
      "unitRef": "sqft",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R53": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails",
     "longName": "9955542 - Disclosure - Commitments and Contingencies - Summary of Components of Lease Expense (Details)",
     "shortName": "Commitments and Contingencies - Summary of Components of Lease Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "53",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:OperatingLeaseCost",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:LeaseCostTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:OperatingLeaseCost",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:LeaseCostTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R54": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails",
     "longName": "9955543 - Disclosure - Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details)",
     "shortName": "Commitments and Contingencies - Summary of Supplemental Cash Flow Information Related to Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "54",
     "firstAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OperatingLeasePayments",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-1",
      "name": "us-gaap:OperatingLeasePayments",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R55": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalBalanceSheetInformationRelatedtoOperatingLeasesDetails",
     "longName": "9955544 - Disclosure - Commitments and Contingencies - Summary of Supplemental Balance Sheet Information Related to Operating Leases (Details)",
     "shortName": "Commitments and Contingencies - Summary of Supplemental Balance Sheet Information Related to Operating Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "55",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "spsc:ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R56": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails",
     "longName": "9955545 - Disclosure - Commitments and Contingencies - Summary of Future Minimum Payments Under Operating Leases (Details)",
     "shortName": "Commitments and Contingencies - Summary of Future Minimum Payments Under Operating Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "56",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R57": {
     "role": "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails",
     "longName": "9955546 - Disclosure - Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details)",
     "shortName": "Commitments and Contingencies - Summary of Remaining Purchase Commitments (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "57",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R58": {
     "role": "http://www.spscommerce.com/role/StockholdersEquityNarrativeDetails",
     "longName": "9955547 - Disclosure - Stockholders' Equity - Narrative (Details)",
     "shortName": "Stockholders' Equity - Narrative (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "58",
     "firstAnchor": {
      "contextRef": "c-122",
      "name": "spsc:StockRepurchaseProgramAdditionalAuthorizedAmount",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-122",
      "name": "spsc:StockRepurchaseProgramAdditionalAuthorizedAmount",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R59": {
     "role": "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails",
     "longName": "9955548 - Disclosure - Stockholders' Equity - Summary of Share Repurchase Plan (Details)",
     "shortName": "Stockholders' Equity - Summary of Share Repurchase Plan (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "59",
     "firstAnchor": {
      "contextRef": "c-122",
      "name": "srt:StockRepurchaseProgramAuthorizedAmount1",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-124",
      "name": "srt:StockRepurchaseProgramAuthorizedAmount1",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRepurchaseAgreements",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R60": {
     "role": "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyPeriodDetails",
     "longName": "9955549 - Disclosure - Stockholders' Equity - Summary of Stock Repurchase Activity by Period (Details)",
     "shortName": "Stockholders' Equity - Summary of Stock Repurchase Activity by Period (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "60",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:TreasuryStockSharesAcquired",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:TreasuryStockAcquiredAverageCostPerShare",
      "unitRef": "usdPerShare",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "2",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R61": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
     "longName": "9955550 - Disclosure - Stock-Based Compensation - Narrative (Details)",
     "shortName": "Stock-Based Compensation - Narrative (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "61",
     "firstAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-3",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-5",
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R62": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails",
     "longName": "9955551 - Disclosure - Stock-Based Compensation - Summary of Stock-Based Compensation Expense (Details)",
     "shortName": "Stock-Based Compensation - Summary of Stock-Based Compensation Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "62",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R63": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails",
     "longName": "9955552 - Disclosure - Stock-Based Compensation - Summary of Stock Option Activity (Details)",
     "shortName": "Stock-Based Compensation - Summary of Stock Option Activity (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "63",
     "firstAnchor": {
      "contextRef": "c-4",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-4",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R64": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails",
     "longName": "9955553 - Disclosure - Stock-Based Compensation - Summary of Weighted Average Assumptions Used in Black-Scholes Option Pricing Model (Details)",
     "shortName": "Stock-Based Compensation - Summary of Weighted Average Assumptions Used in Black-Scholes Option Pricing Model (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "64",
     "firstAnchor": {
      "contextRef": "c-144",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-144",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R65": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails",
     "longName": "9955554 - Disclosure - Stock-Based Compensation - Summary of Activity for PSUs, RSUs, RSAs, and DSUs (Details)",
     "shortName": "Stock-Based Compensation - Summary of Activity for PSUs, RSUs, RSAs, and DSUs (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "65",
     "firstAnchor": {
      "contextRef": "c-171",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-171",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "INF",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R66": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
     "longName": "9955555 - Disclosure - Stock-Based Compensation - Summary of ESPP Activity (Details)",
     "shortName": "Stock-Based Compensation - Summary of ESPP Activity (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "66",
     "firstAnchor": {
      "contextRef": "c-175",
      "name": "spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-175",
      "name": "spsc:ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R67": {
     "role": "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
     "longName": "9955556 - Disclosure - Stock-Based Compensation - Summary of Fair Value Assumptions for ESPP (Details)",
     "shortName": "Stock-Based Compensation - Summary of Fair Value Assumptions for ESPP (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "67",
     "firstAnchor": {
      "contextRef": "c-177",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-177",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R68": {
     "role": "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails",
     "longName": "9955557 - Disclosure - Other Income and Expense (Details)",
     "shortName": "Other Income and Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "68",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:InvestmentIncomeNet",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:InvestmentIncomeNet",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    },
    "R69": {
     "role": "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails",
     "longName": "9955558 - Disclosure - Net Income Per Share - Summary of Components and Computation of Basic and Diluted Net Income Per Share (Details)",
     "shortName": "Net Income Per Share - Summary of Components and Computation of Basic and Diluted Net Income Per Share (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "69",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "usd",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "unique": true
     }
    },
    "R70": {
     "role": "http://www.spscommerce.com/role/NetIncomePerShareSummaryofAntidilutiveCommonSharesExcludedfromCalculationofDilutedNetIncomePerShareDetails",
     "longName": "9955559 - Disclosure - Net Income Per Share - Summary of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details)",
     "shortName": "Net Income Per Share - Summary of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "70",
     "firstAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "c-5",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "unitRef": "shares",
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": "-3",
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "spsc-20260630.htm",
      "first": true,
      "unique": true
     }
    }
   },
   "tag": {
    "spsc_A2024StockRepurchaseProgramMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "A2024StockRepurchaseProgramMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2024 Program",
        "label": "2024 Stock Repurchase Program [Member]",
        "documentation": "2024 Stock Repurchase Program"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_A2025StockRepurchaseProgramMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "A2025StockRepurchaseProgramMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2025 Program",
        "label": "2025 Stock Repurchase Program [Member]",
        "documentation": "2025 Stock Repurchase Program"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_A3PRevenueRecoveryBusinessMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "A3PRevenueRecoveryBusinessMember",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "3P Revenue Recovery Business",
        "label": "3P Revenue Recovery Business [Member]",
        "documentation": "3P Revenue Recovery Business"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccountsPayableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccountsPayableCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accounts payable",
        "label": "Accounts Payable, Current",
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r944",
      "r1069",
      "r1071"
     ]
    },
    "us-gaap_AccountsReceivableGrossCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccountsReceivableGrossCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AccountsReceivableNetCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accounts receivable",
        "label": "Accounts Receivable, before Allowance for Credit Loss, Current",
        "documentation": "Amount, before allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current."
       }
      }
     },
     "auth_ref": [
      "r121",
      "r145",
      "r238",
      "r843"
     ]
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccountsReceivableNetCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Accounts receivable, net",
        "label": "Accounts Receivable, after Allowance for Credit Loss, Current",
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current."
       }
      }
     },
     "auth_ref": [
      "r1153"
     ]
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccruedLiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accrued expenses",
        "label": "Accrued Liabilities, Current",
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r1072"
     ]
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails": {
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Less: accumulated depreciation and amortization",
        "label": "Property, Plant, and Equipment, Accumulated Depreciation, Depletion, and Amortization",
        "documentation": "Amount of accumulated depreciation, depletion, and amortization of property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r129",
      "r318",
      "r326",
      "r716",
      "r717",
      "r730",
      "r1187"
     ]
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accumulated other comprehensive loss",
        "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax",
        "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source."
       }
      }
     },
     "auth_ref": [
      "r10",
      "r11",
      "r22",
      "r147",
      "r379",
      "r679",
      "r680",
      "r688",
      "r727",
      "r755",
      "r756",
      "r1264"
     ]
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accumulated Other Comprehensive Gain (Loss)",
        "label": "AOCI Attributable to Parent [Member]",
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r1",
      "r6",
      "r11",
      "r579",
      "r582",
      "r585",
      "r635",
      "r751",
      "r752",
      "r1079",
      "r1080",
      "r1081",
      "r1134",
      "r1135",
      "r1136",
      "r1139",
      "r1217",
      "r1218"
     ]
    },
    "ecd_Additional402vDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "Additional402vDisclosureTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Additional 402(v) Disclosure",
        "label": "Additional 402(v) Disclosure [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r999"
     ]
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AdditionalPaidInCapitalCommonStock",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Additional paid-in capital",
        "label": "Additional Paid in Capital, Common Stock",
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital."
       }
      }
     },
     "auth_ref": [
      "r1076",
      "r1216"
     ]
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AdditionalPaidInCapitalMember",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Additional Paid-in Capital",
        "label": "Additional Paid-in Capital [Member]",
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders."
       }
      }
     },
     "auth_ref": [
      "r718",
      "r767",
      "r1134",
      "r1135",
      "r1136",
      "r1139",
      "r1265",
      "r1336"
     ]
    },
    "ecd_AdjToCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AdjToCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Adjustment to Compensation, Amount",
        "label": "Adjustment to Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "ecd_AdjToCompAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AdjToCompAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Adjustment to Compensation:",
        "label": "Adjustment to Compensation [Axis]"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "ecd_AdjToNonPeoNeoCompFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AdjToNonPeoNeoCompFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Adjustment to Non-PEO NEO Compensation Footnote",
        "label": "Adjustment to Non-PEO NEO Compensation Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "ecd_AdjToPeoCompFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AdjToPeoCompFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Adjustment To PEO Compensation, Footnote",
        "label": "Adjustment To PEO Compensation, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "us-gaap_AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AdjustmentsRelatedToTaxWithholdingForShareBasedCompensation",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Shares withheld for net share settlement",
        "label": "Share-Based Payment Arrangement, Decrease for Tax Withholding Obligation",
        "documentation": "Amount of decrease to equity for grantee's tax withholding obligation for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r1253"
     ]
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock-based compensation",
        "label": "APIC, Share-Based Payment Arrangement, Increase for Cost Recognition",
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r427"
     ]
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Reconciliation of net income to net cash provided by operating activities",
        "label": "Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "ecd_AggtChngPnsnValInSummryCompstnTblForAplblYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AggtChngPnsnValInSummryCompstnTblForAplblYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table",
        "label": "Aggregate Change in Present Value of Accumulated Benefit for All Pension Plans Reported in Summary Compensation Table [Member]"
       }
      }
     },
     "auth_ref": [
      "r1045"
     ]
    },
    "ecd_AggtErrCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AggtErrCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Erroneous Compensation Amount",
        "label": "Aggregate Erroneous Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r971",
      "r981",
      "r991",
      "r1023"
     ]
    },
    "ecd_AggtErrCompNotYetDeterminedTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AggtErrCompNotYetDeterminedTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Erroneous Compensation Not Yet Determined",
        "label": "Aggregate Erroneous Compensation Not Yet Determined [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r974",
      "r984",
      "r994",
      "r1026"
     ]
    },
    "ecd_AggtPnsnAdjsSvcCstMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AggtPnsnAdjsSvcCstMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Pension Adjustments Service Cost",
        "label": "Aggregate Pension Adjustments Service Cost [Member]"
       }
      }
     },
     "auth_ref": [
      "r1046"
     ]
    },
    "ecd_AllAdjToCompMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AllAdjToCompMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "All Adjustments to Compensation",
        "label": "All Adjustments to Compensation [Member]"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "ecd_AllExecutiveCategoriesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AllExecutiveCategoriesMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "All Executive Categories",
        "label": "All Executive Categories [Member]"
       }
      }
     },
     "auth_ref": [
      "r1019"
     ]
    },
    "ecd_AllIndividualsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AllIndividualsMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure",
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure",
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements",
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "All Individuals",
        "label": "All Individuals [Member]"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1019",
      "r1027",
      "r1031",
      "r1039"
     ]
    },
    "ecd_AllTradingArrangementsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AllTradingArrangementsMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "All Trading Arrangements",
        "label": "All Trading Arrangements [Member]"
       }
      }
     },
     "auth_ref": [
      "r1037"
     ]
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllocatedShareBasedCompensationExpense",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock-based compensation expense",
        "label": "Share-Based Payment Arrangement, Expense",
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized."
       }
      }
     },
     "auth_ref": [
      "r458",
      "r464",
      "r465"
     ]
    },
    "us-gaap_AllowanceForCreditLossAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForCreditLossAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Allowance for Credit Loss [Abstract]",
        "label": "Allowance for Credit Loss [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLossesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Allowance for Credit Losses Activity Included in Accounts Receivable, Net",
        "label": "Financing Receivable, Allowance for Credit Loss [Table Text Block]",
        "documentation": "Tabular disclosure of allowance for credit loss on financing receivable."
       }
      }
     },
     "auth_ref": [
      "r1162"
     ]
    },
    "us-gaap_AllowanceForCreditLossesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForCreditLossesTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLosses"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Allowance for Credit Losses",
        "label": "Allowance for Credit Losses [Text Block]",
        "documentation": "The entire disclosure for allowance for credit losses."
       }
      }
     },
     "auth_ref": [
      "r17"
     ]
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AccountsReceivableNetCurrent",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Allowance for credit losses",
        "periodStartLabel": "Balance, beginning of period",
        "periodEndLabel": "Balance, end of period",
        "label": "Accounts Receivable, Allowance for Credit Loss, Current",
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current."
       }
      }
     },
     "auth_ref": [
      "r151",
      "r239",
      "r273"
     ]
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForDoubtfulAccountsReceivableRollforward",
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]",
        "label": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]",
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AllowanceForDoubtfulAccountsReceivableWriteOffs",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Write-offs, net of recoveries",
        "label": "Accounts Receivable, Allowance for Credit Loss, Writeoff",
        "documentation": "Amount of direct write-downs of accounts receivable charged against the allowance."
       }
      }
     },
     "auth_ref": [
      "r277"
     ]
    },
    "dei_AmendmentFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "AmendmentFlag",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Amendment Flag",
        "label": "Amendment Flag",
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AmortizationOfIntangibleAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 4.0
      },
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Amortization of intangible assets",
        "terseLabel": "Amortization of intangible assets",
        "label": "Intangible Asset, Finite-Lived, Amortization Expense",
        "documentation": "Amount of amortization expense for finite-lived intangible asset. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r5",
      "r168",
      "r298",
      "r305",
      "r839",
      "r848",
      "r849",
      "r851",
      "r853",
      "r1187"
     ]
    },
    "spsc_AnalyticsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "AnalyticsMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Analytics",
        "label": "Analytics [Member]",
        "documentation": "Analytics."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofAntidilutiveCommonSharesExcludedfromCalculationofDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Anti-dilutive shares (in shares)",
        "label": "Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount",
        "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented."
       }
      }
     },
     "auth_ref": [
      "r214"
     ]
    },
    "us-gaap_ArrangementsAndNonarrangementTransactionsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ArrangementsAndNonarrangementTransactionsMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Domain]",
        "documentation": "Collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations."
       }
      }
     },
     "auth_ref": [
      "r555"
     ]
    },
    "us-gaap_Assets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "Assets",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total assets",
        "label": "Assets",
        "documentation": "Amount of asset recognized for present right to economic benefit."
       }
      }
     },
     "auth_ref": [
      "r107",
      "r113",
      "r133",
      "r173",
      "r174",
      "r175",
      "r219",
      "r226",
      "r232",
      "r233",
      "r270",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r556",
      "r559",
      "r608",
      "r679",
      "r680",
      "r682",
      "r694",
      "r695",
      "r722",
      "r792",
      "r859",
      "r860",
      "r871",
      "r944",
      "r950",
      "r951",
      "r962",
      "r1209",
      "r1210",
      "r1278"
     ]
    },
    "us-gaap_AssetsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AssetsAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "ASSETS",
        "label": "Assets [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total current assets",
        "label": "Assets, Current",
        "documentation": "Amount of asset recognized for present right to economic benefit, classified as current."
       }
      }
     },
     "auth_ref": [
      "r107",
      "r113",
      "r153",
      "r173",
      "r174",
      "r175",
      "r270",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r556",
      "r559",
      "r608",
      "r944",
      "r1066",
      "r1209",
      "r1210",
      "r1278"
     ]
    },
    "us-gaap_AssetsCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AssetsCurrentAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Current assets",
        "label": "Assets, Current [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Amortized Cost",
        "label": "Debt Securities, Available-for-Sale, Amortized Cost",
        "documentation": "Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)."
       }
      }
     },
     "auth_ref": [
      "r241",
      "r288",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r721",
      "r1289"
     ]
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecurities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AvailableForSaleSecuritiesDebtSecurities",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails": {
       "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Fair Value",
        "label": "Debt Securities, Available-for-Sale",
        "documentation": "Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)."
       }
      }
     },
     "auth_ref": [
      "r242",
      "r288",
      "r596",
      "r603",
      "r604",
      "r605",
      "r606",
      "r679",
      "r680",
      "r690",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r930",
      "r934",
      "r941",
      "r942",
      "r1154",
      "r1267",
      "r1268",
      "r1269",
      "r1280",
      "r1290"
     ]
    },
    "ecd_AwardExrcPrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardExrcPrice",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Exercise Price",
        "label": "Award Exercise Price"
       }
      }
     },
     "auth_ref": [
      "r1034"
     ]
    },
    "ecd_AwardGrantDateFairValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardGrantDateFairValue",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Fair Value as of Grant Date",
        "label": "Award Grant Date Fair Value"
       }
      }
     },
     "auth_ref": [
      "r1035"
     ]
    },
    "ecd_AwardTmgDiscLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgDiscLineItems",
     "lang": {
      "en-us": {
       "role": {
        "label": "Award Timing Disclosures [Line Items]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "ecd_AwardTmgHowMnpiCnsdrdTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgHowMnpiCnsdrdTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Timing, How MNPI Considered",
        "label": "Award Timing, How MNPI Considered [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "ecd_AwardTmgMethodTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgMethodTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Timing Method",
        "label": "Award Timing Method [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "ecd_AwardTmgMnpiCnsdrdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgMnpiCnsdrdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Timing MNPI Considered",
        "label": "Award Timing MNPI Considered [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "ecd_AwardTmgMnpiDiscTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgMnpiDiscTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Timing MNPI Disclosure",
        "label": "Award Timing MNPI Disclosure [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "ecd_AwardTmgPredtrmndFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardTmgPredtrmndFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Timing Predetermined",
        "label": "Award Timing Predetermined [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "us-gaap_AwardTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "AwardTypeAxis",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails",
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Type",
        "label": "Award Type [Axis]",
        "documentation": "Information by type of award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r438",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457"
     ]
    },
    "ecd_AwardUndrlygSecuritiesAmt": {
     "xbrltype": "decimalItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardUndrlygSecuritiesAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Underlying Securities",
        "label": "Award Underlying Securities Amount"
       }
      }
     },
     "auth_ref": [
      "r1033"
     ]
    },
    "ecd_AwardsCloseToMnpiDiscIndName": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardsCloseToMnpiDiscIndName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Name",
        "label": "Awards Close in Time to MNPI Disclosures, Individual Name"
       }
      }
     },
     "auth_ref": [
      "r1032"
     ]
    },
    "ecd_AwardsCloseToMnpiDiscTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardsCloseToMnpiDiscTable",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Awards Close in Time to MNPI Disclosures",
        "label": "Awards Close in Time to MNPI Disclosures [Table]"
       }
      }
     },
     "auth_ref": [
      "r1031"
     ]
    },
    "ecd_AwardsCloseToMnpiDiscTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "AwardsCloseToMnpiDiscTableTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Awards Close in Time to MNPI Disclosures, Table",
        "label": "Awards Close in Time to MNPI Disclosures [Table Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1031"
     ]
    },
    "us-gaap_BasisOfAccountingPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BasisOfAccountingPolicyPolicyTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralPolicies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Basis of Presentation",
        "label": "Basis of Accounting, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS)."
       }
      }
     },
     "auth_ref": [
      "r1127"
     ]
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessAcquisitionAcquireeDomain",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Combination",
        "label": "Business Combination [Domain]",
        "documentation": "Business combination or series of individually immaterial business combinations."
       }
      }
     },
     "auth_ref": [
      "r296",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r491",
      "r492",
      "r493",
      "r494",
      "r495",
      "r496",
      "r497",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r503",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r509",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r549",
      "r550",
      "r551",
      "r759",
      "r837",
      "r880",
      "r881",
      "r1256",
      "r1258",
      "r1260"
     ]
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessAcquisitionAxis",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Combination",
        "label": "Business Combination [Axis]",
        "documentation": "Information by business combination or series of individually immaterial business combinations."
       }
      }
     },
     "auth_ref": [
      "r296",
      "r299",
      "r300",
      "r301",
      "r302",
      "r303",
      "r491",
      "r492",
      "r493",
      "r494",
      "r495",
      "r496",
      "r497",
      "r498",
      "r499",
      "r500",
      "r501",
      "r502",
      "r503",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r509",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r540",
      "r541",
      "r542",
      "r543",
      "r544",
      "r545",
      "r546",
      "r547",
      "r549",
      "r550",
      "r551",
      "r759",
      "r837",
      "r880",
      "r881",
      "r1256",
      "r1258",
      "r1260"
     ]
    },
    "us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Number of shares issued in business combination (in shares)",
        "label": "Business Combination, Consideration Transferred, Equity Interest, Share Issued, Number of Shares",
        "documentation": "Number of shares of equity interest issued or issuable by acquirer as part of consideration transferred in business combination."
       }
      }
     },
     "auth_ref": [
      "r885",
      "r890",
      "r891",
      "r923",
      "r924"
     ]
    },
    "us-gaap_BusinessAcquisitionLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessAcquisitionLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Combination [Line Items]",
        "label": "Business Combination [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r296",
      "r491",
      "r492",
      "r493",
      "r494",
      "r500",
      "r501",
      "r502",
      "r503",
      "r509",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r545",
      "r546",
      "r547",
      "r551",
      "r885",
      "r895",
      "r1256",
      "r1258",
      "r1260"
     ]
    },
    "us-gaap_BusinessCombinationAndAssetAcquisitionAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationAndAssetAcquisitionAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Combination, Asset Acquisition, Transaction between Entities under Common Control, and Joint Venture Formation [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationConsiderationTransferred1",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total consideration",
        "label": "Business Combination, Consideration Transferred",
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer."
       }
      }
     },
     "auth_ref": [
      "r535",
      "r547",
      "r885",
      "r890"
     ]
    },
    "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Value of common stock transferred",
        "terseLabel": "Equity consideration",
        "label": "Business Combination, Consideration Transferred, Equity Interest",
        "documentation": "Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination."
       }
      }
     },
     "auth_ref": [
      "r885",
      "r890",
      "r891",
      "r923",
      "r924"
     ]
    },
    "spsc_BusinessCombinationConsiderationTransferredNetOfCashAcquired": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "BusinessCombinationConsiderationTransferredNetOfCashAcquired",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Consideration transferred, net of cash acquired",
        "label": "Business Combination, Consideration Transferred, Net Of Cash Acquired",
        "documentation": "Business Combination, Consideration Transferred, Net Of Cash Acquired"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactions"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Acquisitions and Other Transactions",
        "label": "Business Combination [Text Block]",
        "documentation": "The entire disclosure for business combination."
       }
      }
     },
     "auth_ref": [
      "r490",
      "r491",
      "r495",
      "r504",
      "r508",
      "r509",
      "r510",
      "r511",
      "r512",
      "r513",
      "r515",
      "r516",
      "r522",
      "r525",
      "r526",
      "r532",
      "r533",
      "r534",
      "r542",
      "r546",
      "r547",
      "r548",
      "r550",
      "r552",
      "r885",
      "r886",
      "r887",
      "r888",
      "r892",
      "r893",
      "r894"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash",
        "label": "Business Combination, Recognized Asset Acquired, Cash and Cash Equivalent",
        "documentation": "Amount of cash and cash equivalent acquired in business combination and recognized at acquisition date."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accounts receivable",
        "label": "Business Combination, Recognized Asset Acquired, Receivable, Current",
        "documentation": "Amount of receivable acquired in business combination and recognized at acquisition date, classified as current. Includes, but is not limited to, receivable from customer for product and service."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": -1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Deferred revenue",
        "label": "Business Combination, Recognized Liability Assumed, Deferred Revenue, Current",
        "documentation": "Amount of deferred revenue assumed in business combination and recognized at acquisition date, classified as current."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": -1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Deferred income tax liabilities, net",
        "label": "Business Combination, Recognized Liability Assumed, Deferred Tax Liability",
        "documentation": "Amount of deferred tax liability assumed in business combination and recognized at acquisition date."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible assets",
        "label": "Business Combination, Recognized Asset Acquired, Identifiable Intangible Asset, Excluding Goodwill",
        "documentation": "Amount of identifiable intangible asset acquired in business combination and recognized at acquisition date. Excludes goodwill and financial asset."
       }
      }
     },
     "auth_ref": [
      "r885",
      "r890",
      "r893",
      "r1259",
      "r1261"
     ]
    },
    "spsc_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesOther": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesOther",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": -1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Other liabilities, current and non-current",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Liabilities, Other",
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Liabilities, Other"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total fair value of assets and liabilities acquired",
        "label": "Business Combination, Recognized Asset Acquired to Liability Assumed, Excess (Less)",
        "documentation": "Amount of asset acquired in excess of (less than) liability assumed in business combination and recognized at acquisition date. Excludes goodwill."
       }
      }
     },
     "auth_ref": [
      "r885",
      "r890",
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNetAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNetAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Estimated fair value of assets and liabilities acquired:",
        "label": "Business Combination, Recognized Asset Acquired to Liability Assumed, Excess (Less) [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherAssets",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNet",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Other assets, current and non-current",
        "label": "Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets",
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired And Liabilities Assumed, Other Assets"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_BusinessDescriptionCommerceIntelligencePeriod": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "BusinessDescriptionCommerceIntelligencePeriod",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business description, commerce intelligence period",
        "label": "Business Description, Commerce Intelligence Period",
        "documentation": "Business Description, Commerce Intelligence Period"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_BusinessDescriptionPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "BusinessDescriptionPolicyPolicyTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralPolicies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Description",
        "label": "Business Description Policy [Policy Text Block]",
        "documentation": "Business description policy."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_Carbon6Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "Carbon6Member",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Carbon6",
        "label": "Carbon6 [Member]",
        "documentation": "Carbon6"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash and cash equivalents",
        "label": "Cash and Cash Equivalent",
        "documentation": "Amount of cash and cash equivalent. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r171",
      "r172",
      "r842",
      "r1280"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Cash and cash equivalents at beginning of period",
        "periodEndLabel": "Cash and cash equivalents at end of period",
        "label": "Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation",
        "documentation": "Amount of cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate."
       }
      }
     },
     "auth_ref": [
      "r35",
      "r171",
      "r172"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Net increase (decrease) in cash and cash equivalents",
        "label": "Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Period Increase (Decrease), Including Exchange Rate Effect and Discontinued Operation",
        "documentation": "Amount of increase (decrease) in cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; including effect from exchange rate change and including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate."
       }
      }
     },
     "auth_ref": [
      "r0",
      "r35"
     ]
    },
    "spsc_CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash paid for amounts included in the measurement of lease liabilities",
        "label": "Cash Paid For Amounts Included In Measurement Of Lease Liabilities [Abstract]",
        "documentation": "Cash paid for amounts included in the measurement of lease liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_ChangedPeerGroupFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ChangedPeerGroupFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Changed Peer Group, Footnote",
        "label": "Changed Peer Group, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1010"
     ]
    },
    "ecd_ChngInFrValAsOfVstngDtOfPrrYrEqtyAwrdsVstdInCvrdYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ChngInFrValAsOfVstngDtOfPrrYrEqtyAwrdsVstdInCvrdYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year",
        "label": "Change in Fair Value as of Vesting Date of Prior Year Equity Awards Vested in Covered Year [Member]"
       }
      }
     },
     "auth_ref": [
      "r1007"
     ]
    },
    "ecd_ChngInFrValOfOutsdngAndUnvstdEqtyAwrdsGrntdInPrrYrsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ChngInFrValOfOutsdngAndUnvstdEqtyAwrdsGrntdInPrrYrsMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested",
        "label": "Year-over-Year Change in Fair Value of Equity Awards Granted in Prior Years That are Outstanding and Unvested [Member]"
       }
      }
     },
     "auth_ref": [
      "r1005"
     ]
    },
    "dei_CityAreaCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "CityAreaCode",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "City Area Code",
        "label": "City Area Code",
        "documentation": "Area code of city"
       }
      }
     },
     "auth_ref": []
    },
    "ecd_CoSelectedMeasureAmt": {
     "xbrltype": "decimalItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CoSelectedMeasureAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Company Selected Measure Amount",
        "label": "Company Selected Measure Amount"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "ecd_CoSelectedMeasureName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CoSelectedMeasureName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Company Selected Measure Name",
        "label": "Company Selected Measure Name"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "us-gaap_CollaborativeArrangementsAndNoncollaborativeArrangementTransactionsLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CollaborativeArrangementsAndNoncollaborativeArrangementTransactionsLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative [Line Items]",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r555"
     ]
    },
    "us-gaap_CommitmentsAndContingencies": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommitmentsAndContingencies",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Commitments and contingencies (Note I)",
        "label": "Commitments and Contingencies",
        "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur."
       }
      }
     },
     "auth_ref": [
      "r139",
      "r679",
      "r680",
      "r684",
      "r724",
      "r779"
     ]
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommitmentsAndContingenciesDisclosureAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Commitments and Contingencies Disclosure [Abstract]",
        "label": "Commitments and Contingencies Disclosure [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommitmentsAndContingenciesDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingencies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Commitments and Contingencies",
        "label": "Commitments and Contingencies Disclosure [Text Block]",
        "documentation": "The entire disclosure for commitments and contingencies."
       }
      }
     },
     "auth_ref": [
      "r331",
      "r332",
      "r834",
      "r1202",
      "r1205",
      "r1206"
     ]
    },
    "us-gaap_CommonStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockMember",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common Stock",
        "label": "Common Stock [Member]",
        "documentation": "Stock that is subordinate to all other stock of the issuer."
       }
      }
     },
     "auth_ref": [
      "r144",
      "r378",
      "r679",
      "r680",
      "r687",
      "r953",
      "r954",
      "r955",
      "r957",
      "r958",
      "r959",
      "r960",
      "r1134",
      "r1135",
      "r1139",
      "r1265",
      "r1334",
      "r1336"
     ]
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockParOrStatedValuePerShare",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock, par value (in dollars per share)",
        "label": "Common Stock, Par or Stated Value Per Share",
        "documentation": "Face amount or stated value per share of common stock."
       }
      }
     },
     "auth_ref": [
      "r1075",
      "r1215",
      "r1284",
      "r1285",
      "r1287"
     ]
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockSharesAuthorized",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock, shares authorized (in shares)",
        "label": "Common Stock, Shares Authorized",
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws."
       }
      }
     },
     "auth_ref": [
      "r144",
      "r378",
      "r679",
      "r680",
      "r687",
      "r780"
     ]
    },
    "us-gaap_CommonStockSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockSharesIssued",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock, shares issued (in shares)",
        "label": "Common Stock, Shares, Issued",
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury."
       }
      }
     },
     "auth_ref": [
      "r144",
      "r378",
      "r679",
      "r680",
      "r687"
     ]
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockSharesOutstanding",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock, shares outstanding (in shares)",
        "periodStartLabel": "Beginning balance (in shares)",
        "periodEndLabel": "Ending balance (in shares)",
        "label": "Common Stock, Shares, Outstanding",
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation."
       }
      }
     },
     "auth_ref": [
      "r144",
      "r378",
      "r679",
      "r680",
      "r687",
      "r780",
      "r798",
      "r1213",
      "r1336",
      "r1337"
     ]
    },
    "us-gaap_CommonStockValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CommonStockValue",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock, $0.001 par value; 110,000,000 shares authorized; 40,392,619 and 40,048,410 shares issued; and 36,194,528 and 37,517,239 shares outstanding, respectively",
        "label": "Common Stock, Value, Issued",
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity."
       }
      }
     },
     "auth_ref": [
      "r144",
      "r350",
      "r356",
      "r378",
      "r679",
      "r680",
      "r687",
      "r726",
      "r944"
     ]
    },
    "ecd_CompActuallyPaidVsCoSelectedMeasureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CompActuallyPaidVsCoSelectedMeasureTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Compensation Actually Paid vs. Company Selected Measure",
        "label": "Compensation Actually Paid vs. Company Selected Measure [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1016"
     ]
    },
    "ecd_CompActuallyPaidVsNetIncomeTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CompActuallyPaidVsNetIncomeTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Compensation Actually Paid vs. Net Income",
        "label": "Compensation Actually Paid vs. Net Income [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1015"
     ]
    },
    "ecd_CompActuallyPaidVsOtherMeasureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CompActuallyPaidVsOtherMeasureTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Compensation Actually Paid vs. Other Measure",
        "label": "Compensation Actually Paid vs. Other Measure [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1017"
     ]
    },
    "ecd_CompActuallyPaidVsTotalShareholderRtnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "CompActuallyPaidVsTotalShareholderRtnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Compensation Actually Paid vs. Total Shareholder Return",
        "label": "Compensation Actually Paid vs. Total Shareholder Return [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1014"
     ]
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ComprehensiveIncomeNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Comprehensive income",
        "label": "Comprehensive Income (Loss), Net of Tax, Attributable to Parent",
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r12",
      "r155",
      "r157",
      "r161",
      "r692",
      "r736",
      "r737"
     ]
    },
    "us-gaap_ComputerEquipmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ComputerEquipmentMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Computer equipment",
        "label": "Computer Equipment [Member]",
        "documentation": "Long lived, depreciable assets that are used in the creation, maintenance and utilization of information systems."
       }
      }
     },
     "auth_ref": [
      "r1192",
      "r1193"
     ]
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ConcentrationRiskBenchmarkDomain",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Concentration Risk Benchmark",
        "label": "Concentration Risk Benchmark [Domain]",
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage."
       }
      }
     },
     "auth_ref": [
      "r222",
      "r236",
      "r760",
      "r761",
      "r833",
      "r1143",
      "r1144",
      "r1145",
      "r1146",
      "r1147"
     ]
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Concentration Risk Benchmark",
        "label": "Concentration Risk Benchmark [Axis]",
        "documentation": "Information by benchmark of concentration risk."
       }
      }
     },
     "auth_ref": [
      "r222",
      "r236",
      "r760",
      "r761",
      "r833",
      "r1143",
      "r1144",
      "r1145",
      "r1146",
      "r1147"
     ]
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ConcentrationRiskByTypeAxis",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Concentration Risk Type",
        "label": "Concentration Risk Type [Axis]",
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender."
       }
      }
     },
     "auth_ref": [
      "r222",
      "r236",
      "r760",
      "r761",
      "r833",
      "r1143",
      "r1144",
      "r1145",
      "r1146",
      "r1147"
     ]
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ConcentrationRiskPercentage1",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Concentration risk, percentage",
        "label": "Concentration Risk, Percentage",
        "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division."
       }
      }
     },
     "auth_ref": [
      "r222",
      "r236",
      "r1143",
      "r1144",
      "r1145",
      "r1146",
      "r1147"
     ]
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ConcentrationRiskTypeDomain",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Concentration Risk Type",
        "label": "Concentration Risk Type [Domain]",
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration."
       }
      }
     },
     "auth_ref": [
      "r222",
      "r236",
      "r760",
      "r761",
      "r833",
      "r1143",
      "r1144",
      "r1145",
      "r1146",
      "r1147"
     ]
    },
    "spsc_ContractTermMaximum": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ContractTermMaximum",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Contract term maximum",
        "label": "Contract Term Maximum",
        "documentation": "Contract Term Maximum"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerAssetAndLiabilityTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Deferred Revenue Liability Relating to Set-Up Fees",
        "label": "Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]",
        "documentation": "Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability."
       }
      }
     },
     "auth_ref": [
      "r1220"
     ]
    },
    "us-gaap_ContractWithCustomerDurationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerDurationAxis",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Contract with Customer, Duration",
        "label": "Contract with Customer, Duration [Axis]",
        "documentation": "Information by duration of contract with customer. Includes, but is not limited to, short-term and long-term contracts."
       }
      }
     },
     "auth_ref": [
      "r872",
      "r877"
     ]
    },
    "us-gaap_ContractWithCustomerDurationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerDurationDomain",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Contract with Customer, Duration",
        "label": "Contract with Customer, Duration [Domain]",
        "documentation": "Duration of contract with customer. Includes, but is not limited to, short-term and long-term contracts."
       }
      }
     },
     "auth_ref": [
      "r872",
      "r877"
     ]
    },
    "us-gaap_ContractWithCustomerLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerLiability",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Balance, beginning of period",
        "periodEndLabel": "Balance, end of period",
        "label": "Contract with Customer, Liability",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r400",
      "r402",
      "r414"
     ]
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred revenue",
        "label": "Contract with Customer, Liability, Current",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r400",
      "r402",
      "r414",
      "r846"
     ]
    },
    "us-gaap_ContractWithCustomerLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerLiabilityNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred revenue, non-current",
        "label": "Contract with Customer, Liability, Noncurrent",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r399",
      "r400",
      "r402",
      "r414"
     ]
    },
    "us-gaap_ContractWithCustomerLiabilityRevenueRecognized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ContractWithCustomerLiabilityRevenueRecognized",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred revenue",
        "label": "Contract with Customer, Liability, Revenue Recognized",
        "documentation": "Amount of revenue recognized that was previously included in balance of obligation to transfer good or service to customer for which consideration from customer has been received or is due."
       }
      }
     },
     "auth_ref": [
      "r415"
     ]
    },
    "srt_ContractualObligationFiscalYearMaturityScheduleTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ContractualObligationFiscalYearMaturityScheduleTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Remaining Purchase Commitments and Estimated Purchase Timing",
        "label": "Contractual Obligation, Fiscal Year Maturity [Table Text Block]",
        "documentation": "Tabular disclosure of contractual obligation by timing of payment due. Includes, but is not limited to, long-term debt obligation, lease obligation, and purchase obligation."
       }
      }
     },
     "auth_ref": [
      "r1059",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_CostOfRevenue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CostOfRevenue",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cost of revenues",
        "label": "Cost of Revenue",
        "documentation": "The aggregate cost of goods produced and sold and services rendered during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r25",
      "r173",
      "r174",
      "r175",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r608",
      "r859",
      "r1064",
      "r1065",
      "r1161",
      "r1209"
     ]
    },
    "dei_CoverAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "CoverAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cover [Abstract]",
        "label": "Cover [Abstract]",
        "documentation": "Cover page."
       }
      }
     },
     "auth_ref": []
    },
    "dei_CurrentFiscalYearEndDate": {
     "xbrltype": "gMonthDayItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "CurrentFiscalYearEndDate",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Current Fiscal Year End Date",
        "label": "Current Fiscal Year End Date",
        "documentation": "End date of current fiscal year in the format --MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_CustomerContractCancellationPeriod": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "CustomerContractCancellationPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Customer contract cancellation period",
        "label": "Customer Contract Cancellation Period",
        "documentation": "Customer contract cancellation period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CustomerRelationshipsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "CustomerRelationshipsMember",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Customer relationships",
        "netLabel": "Customer relationships",
        "verboseLabel": "Customer relationships",
        "label": "Customer Relationships [Member]",
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships."
       }
      }
     },
     "auth_ref": [
      "r904",
      "r1176",
      "r1177",
      "r1178",
      "r1179",
      "r1180",
      "r1182",
      "r1185",
      "r1186"
     ]
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails": {
       "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Unrealized Gains (Losses), net",
        "label": "Debt Securities, Available-for-Sale, Accumulated Gross Unrealized Gain (Loss), before Tax",
        "documentation": "Amount, before tax, of unrealized gain (loss) in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)."
       }
      }
     },
     "auth_ref": [
      "r1155",
      "r1156"
     ]
    },
    "us-gaap_DebtSecuritiesAvailableForSaleTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DebtSecuritiesAvailableForSaleTable",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Schedule of Financial Instruments [Table]",
        "label": "Debt Securities, Available-for-Sale [Table]",
        "documentation": "Disclosure of information about investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale)."
       }
      }
     },
     "auth_ref": [
      "r240",
      "r241",
      "r242",
      "r243",
      "r244",
      "r245",
      "r246",
      "r247",
      "r248",
      "r249",
      "r250",
      "r251",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709",
      "r710",
      "r711",
      "r712",
      "r713",
      "r714",
      "r715"
     ]
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredCompensationArrangementWithIndividualCommonStockReservedForFutureIssuance",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Common stock reserved for future issuance (in shares)",
        "label": "Deferred Compensation Arrangement with Individual, Common Stock Reserved for Future Issuance",
        "documentation": "Number of common shares reserved for future issuance related to deferred compensation arrangements with individuals."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredCosts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredCosts",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred costs, non-current",
        "label": "Deferred Costs, Noncurrent",
        "documentation": "Amount of deferred cost, excluding capitalized cost related to contract with customer; classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r1068",
      "r1070"
     ]
    },
    "us-gaap_DeferredCostsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredCostsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred Costs [Abstract]",
        "label": "Deferred Costs [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredCostsAmortized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredCostsAmortized",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCostsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Amortized deferred costs",
        "label": "Deferred Costs Amortized",
        "documentation": "Deferred costs amortized."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredCostsAndAmortizationTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredCostsAndAmortizationTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCostsTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Deferred Costs Activity",
        "label": "Deferred Costs And Amortization [Table Text Block]",
        "documentation": "Deferred costs and amortization."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredCostsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredCostsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred costs",
        "label": "Deferred Costs, Current",
        "documentation": "Sum of the carrying amounts as of the balance sheet date of deferred costs capitalized at the end of the reporting period that are expected to be charged against earnings within one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r845",
      "r1077"
     ]
    },
    "us-gaap_DeferredCostsCurrentAndNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredCostsCurrentAndNoncurrent",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCostsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Balance, beginning of period",
        "periodEndLabel": "Balance, end of period",
        "label": "Deferred Costs",
        "documentation": "The carrying amount of deferred costs."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredCostsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredCostsDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCosts"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred Costs",
        "label": "Deferred Costs Disclosure [Text Block]",
        "documentation": "Deferred costs."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredCostsIncurred": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredCostsIncurred",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCostsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Incurred deferred costs",
        "label": "Deferred Costs Incurred",
        "documentation": "Deferred costs incurred."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredCostsRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredCostsRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/DeferredCostsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred Costs [Roll Forward]",
        "label": "Deferred Costs [Roll Forward]",
        "documentation": "Deferred Costs"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredIncomeTaxAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred income tax assets",
        "label": "Deferred Income Tax Assets, Net",
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r469",
      "r470"
     ]
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred income taxes",
        "label": "Deferred Income Tax Expense (Benefit)",
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r5",
      "r52",
      "r1128",
      "r1132"
     ]
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred income tax liabilities",
        "label": "Deferred Income Tax Liabilities, Net",
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r140",
      "r469",
      "r470",
      "r679",
      "r680",
      "r683",
      "r723"
     ]
    },
    "spsc_DeferredRevenueAmortizedSetUpFees": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredRevenueAmortizedSetUpFees",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Recognized set-up fees",
        "label": "Deferred Revenue Amortized Set Up Fees",
        "documentation": "Deferred revenue amortized set up fees."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredRevenueArrangementRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredRevenueArrangementRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred Revenue Arrangement [Roll Forward]",
        "label": "Deferred Revenue Arrangement [Roll Forward]",
        "documentation": "Deferred Revenue Arrangement"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_DeferredRevenueInvoicedSetUpFees": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "DeferredRevenueInvoicedSetUpFees",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Invoiced set-up fees",
        "label": "Deferred Revenue Invoiced Set Up Fees",
        "documentation": "Deferred revenue Invoiced set up fees."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DepreciationDepletionAndAmortization",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Depreciation and amortization of property and equipment",
        "label": "Depreciation, Depletion and Amortization",
        "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets."
       }
      }
     },
     "auth_ref": [
      "r5",
      "r169",
      "r219",
      "r229",
      "r233",
      "r848",
      "r859",
      "r860",
      "r1183",
      "r1187",
      "r1191",
      "r1193"
     ]
    },
    "us-gaap_DisaggregationOfRevenueLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisaggregationOfRevenueLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disaggregation Of Revenue [Line Items]",
        "label": "Disaggregation of Revenue [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r412",
      "r413",
      "r873",
      "r874",
      "r875",
      "r876",
      "r877",
      "r878",
      "r879"
     ]
    },
    "us-gaap_DisaggregationOfRevenueTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisaggregationOfRevenueTable",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disaggregation Of Revenue [Table]",
        "label": "Disaggregation of Revenue [Table]",
        "documentation": "Disclosure of information about disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor."
       }
      }
     },
     "auth_ref": [
      "r412",
      "r413",
      "r873",
      "r874",
      "r875",
      "r876",
      "r877",
      "r878",
      "r879"
     ]
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisaggregationOfRevenueTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Revenues by Revenue Stream and Customer Type",
        "label": "Disaggregation of Revenue [Table Text Block]",
        "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor."
       }
      }
     },
     "auth_ref": [
      "r1221"
     ]
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensation"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock-Based Compensation",
        "label": "Share-Based Payment Arrangement [Text Block]",
        "documentation": "The entire disclosure for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r425",
      "r430",
      "r459",
      "r460",
      "r462",
      "r883"
     ]
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share-based Payment Arrangement [Abstract]",
        "label": "Share-Based Payment Arrangement [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DisposalGroupClassificationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisposalGroupClassificationAxis",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disposal Group Classification [Axis]",
        "label": "Disposal Group Classification [Axis]",
        "documentation": "Information by disposal group classification."
       }
      }
     },
     "auth_ref": [
      "r98",
      "r99",
      "r108",
      "r109",
      "r110",
      "r111",
      "r112",
      "r115",
      "r117",
      "r316",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r841",
      "r1189",
      "r1198",
      "r1199",
      "r1200",
      "r1201"
     ]
    },
    "us-gaap_DisposalGroupClassificationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisposalGroupClassificationDomain",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disposal Group Classification [Domain]",
        "label": "Disposal Group Classification [Domain]",
        "documentation": "Component or group of components disposed of, including but not limited to, disposal group held-for-sale or disposed of by sale, disposed of by means other than sale, and discontinued operations."
       }
      }
     },
     "auth_ref": [
      "r98",
      "r99",
      "r108",
      "r109",
      "r110",
      "r111",
      "r112",
      "r115",
      "r117",
      "r316",
      "r320",
      "r321",
      "r322",
      "r323",
      "r324",
      "r841",
      "r1189",
      "r1198",
      "r1199",
      "r1200",
      "r1201"
     ]
    },
    "us-gaap_DisposalGroupDisposedOfBySaleNotDiscontinuedOperationsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisposalGroupDisposedOfBySaleNotDiscontinuedOperationsMember",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disposal Group, Disposed of by Sale, Not Discontinued Operations",
        "label": "Disposal Group, Disposed of by Sale, Not Discontinued Operations [Member]",
        "documentation": "Disposal group that has been sold. Excludes disposals classified as discontinued operations."
       }
      }
     },
     "auth_ref": [
      "r1189",
      "r1194",
      "r1195",
      "r1196",
      "r1197",
      "r1198",
      "r1199",
      "r1200",
      "r1201"
     ]
    },
    "us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "DisposalGroupsIncludingDiscontinuedOperationsNameDomain",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disposal Group Name [Domain]",
        "label": "Disposal Group Name [Domain]",
        "documentation": "Name of disposal group."
       }
      }
     },
     "auth_ref": [
      "r100",
      "r101",
      "r102",
      "r103",
      "r104",
      "r105",
      "r106",
      "r323",
      "r325",
      "r880",
      "r881",
      "r1062",
      "r1063",
      "r1198",
      "r1199",
      "r1200",
      "r1201"
     ]
    },
    "dei_DocumentFiscalPeriodFocus": {
     "xbrltype": "fiscalPeriodItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentFiscalPeriodFocus",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Document Fiscal Period Focus",
        "label": "Document Fiscal Period Focus",
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentFiscalYearFocus": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentFiscalYearFocus",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Fiscal Year Focus",
        "label": "Document Fiscal Year Focus",
        "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodEndDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentPeriodEndDate",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Period End Date",
        "label": "Document Period End Date",
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentQuarterlyReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentQuarterlyReport",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Quarterly Report",
        "label": "Document Quarterly Report",
        "documentation": "Boolean flag that is true only for a form used as an quarterly report."
       }
      }
     },
     "auth_ref": [
      "r966"
     ]
    },
    "dei_DocumentTransitionReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentTransitionReport",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Document Transition Report",
        "label": "Document Transition Report",
        "documentation": "Boolean flag that is true only for a form used as a transition report."
       }
      }
     },
     "auth_ref": [
      "r998"
     ]
    },
    "dei_DocumentType": {
     "xbrltype": "submissionTypeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "DocumentType",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Document Type",
        "label": "Document Type",
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_DvddsOrOthrErngsPdOnEqtyAwrdsNtOthrwsRflctdInTtlCompForCvrdYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "DvddsOrOthrErngsPdOnEqtyAwrdsNtOthrwsRflctdInTtlCompForCvrdYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year",
        "label": "Dividends or Other Earnings Paid on Equity Awards not Otherwise Reflected in Total Compensation for Covered Year [Member]"
       }
      }
     },
     "auth_ref": [
      "r1009"
     ]
    },
    "us-gaap_EarningsPerShareAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EarningsPerShareAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Net income per share",
        "label": "Earnings Per Share [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareBasic": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EarningsPerShareBasic",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Basic (in dollars per share)",
        "label": "Earnings Per Share, Basic",
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r92",
      "r162",
      "r181",
      "r183",
      "r184",
      "r185",
      "r186",
      "r187",
      "r188",
      "r189",
      "r190",
      "r196",
      "r198",
      "r211",
      "r212",
      "r213",
      "r218",
      "r312",
      "r348",
      "r419",
      "r463",
      "r488",
      "r554",
      "r594",
      "r595",
      "r693",
      "r738",
      "r855"
     ]
    },
    "spsc_EarningsPerShareBasicAndDilutedEPSAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "EarningsPerShareBasicAndDilutedEPSAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Net income per share",
        "label": "Earnings Per Share, Basic And Diluted EPS [Abstract]",
        "documentation": "Earnings Per Share, Basic And Diluted EPS"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareDiluted": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EarningsPerShareDiluted",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Diluted (in dollars per share)",
        "label": "Earnings Per Share, Diluted",
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r92",
      "r162",
      "r181",
      "r183",
      "r184",
      "r185",
      "r186",
      "r187",
      "r188",
      "r189",
      "r190",
      "r198",
      "r211",
      "r212",
      "r213",
      "r218",
      "r312",
      "r348",
      "r419",
      "r463",
      "r488",
      "r554",
      "r594",
      "r595",
      "r693",
      "r738",
      "r855"
     ]
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EarningsPerShareTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShare"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Net Income Per Share",
        "label": "Earnings Per Share [Text Block]",
        "documentation": "The entire disclosure for earnings per share."
       }
      }
     },
     "auth_ref": [
      "r195",
      "r214",
      "r215",
      "r216",
      "r217",
      "r387"
     ]
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Effect of foreign currency exchange rate changes",
        "label": "Effect of Exchange Rate on Cash, Cash Equivalent, Restricted Cash, and Restricted Cash Equivalent, Including Discontinued Operation",
        "documentation": "Amount of increase (decrease) from effect of exchange rate change on cash and cash equivalent, and cash and cash equivalent restricted to withdrawal or usage; held in foreign currency; including, but not limited to, discontinued operation. Cash includes, but is not limited to, currency on hand, demand deposit with financial institution, and account with general characteristic of demand deposit. Cash equivalent includes, but is not limited to, short-term, highly liquid investment that is both readily convertible to known amount of cash and so near maturity that it presents insignificant risk of change in value because of change in interest rate."
       }
      }
     },
     "auth_ref": [
      "r1275"
     ]
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accrued compensation",
        "label": "Employee-related Liabilities, Current",
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r1072"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Line Items]",
        "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r1251"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Unrecognized stock-based compensation expense",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount",
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r461"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Unrecognized stock-based compensation, expected to be recognized, weighted average period",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition",
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r461"
     ]
    },
    "us-gaap_EmployeeStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeStockMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Employee Stock Purchase Plan",
        "label": "Employee Stock [Member]",
        "documentation": "An Employee Stock Purchase Plan is a tax-efficient means by which employees of a corporation can purchase the corporation's stock."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EmployeeStockOptionMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EmployeeStockOptionMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails",
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock options",
        "label": "Share-Based Payment Arrangement, Option [Member]",
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time."
       }
      }
     },
     "auth_ref": [
      "r1224",
      "r1225",
      "r1226",
      "r1227",
      "r1228",
      "r1229",
      "r1230",
      "r1231",
      "r1232",
      "r1233",
      "r1234",
      "r1236",
      "r1237",
      "r1238",
      "r1239",
      "r1240",
      "r1241",
      "r1242",
      "r1243",
      "r1244",
      "r1245",
      "r1246",
      "r1247",
      "r1248",
      "r1249",
      "r1250"
     ]
    },
    "spsc_EmployeeStockPurchasePlanMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "EmployeeStockPurchasePlanMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "ESPP",
        "label": "Employee Stock Purchase Plan [Member]",
        "documentation": "Employee stock purchase plan."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine1": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityAddressAddressLine1",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Address Line One",
        "label": "Entity Address, Address Line One",
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine2": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityAddressAddressLine2",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Address Line Two",
        "label": "Entity Address, Address Line Two",
        "documentation": "Address Line 2 such as Street or Suite number"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCityOrTown": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityAddressCityOrTown",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, City or Town",
        "label": "Entity Address, City or Town",
        "documentation": "Name of the City or Town"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressPostalZipCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityAddressPostalZipCode",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, Postal Zip Code",
        "label": "Entity Address, Postal Zip Code",
        "documentation": "Code for the postal or zip code"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressStateOrProvince": {
     "xbrltype": "stateOrProvinceItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityAddressStateOrProvince",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Address, State or Province",
        "label": "Entity Address, State or Province",
        "documentation": "Name of the state or province."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCentralIndexKey": {
     "xbrltype": "centralIndexKeyItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityCentralIndexKey",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Central Index Key",
        "label": "Entity Central Index Key",
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityCommonStockSharesOutstanding",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Common Stock, Shares Outstanding",
        "label": "Entity Common Stock, Shares Outstanding",
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCurrentReportingStatus": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityCurrentReportingStatus",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Current Reporting Status",
        "label": "Entity Current Reporting Status",
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityEmergingGrowthCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityEmergingGrowthCompany",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Emerging Growth Company",
        "label": "Entity Emerging Growth Company",
        "documentation": "Indicate if registrant meets the emerging growth company criteria."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntityFileNumber": {
     "xbrltype": "fileNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityFileNumber",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity File Number",
        "label": "Entity File Number",
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityFilerCategory": {
     "xbrltype": "filerCategoryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityFilerCategory",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Filer Category",
        "label": "Entity Filer Category",
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntityIncorporationStateCountryCode": {
     "xbrltype": "edgarStateCountryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityIncorporationStateCountryCode",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Incorporation, State or Country Code",
        "label": "Entity Incorporation, State or Country Code",
        "documentation": "Two-character EDGAR code representing the state or country of incorporation."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityInteractiveDataCurrent": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityInteractiveDataCurrent",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Interactive Data Current",
        "label": "Entity Interactive Data Current",
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)."
       }
      }
     },
     "auth_ref": [
      "r1048"
     ]
    },
    "dei_EntityRegistrantName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityRegistrantName",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Registrant Name",
        "label": "Entity Registrant Name",
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntityShellCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityShellCompany",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Shell Company",
        "label": "Entity Shell Company",
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntitySmallBusiness": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntitySmallBusiness",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Small Business",
        "label": "Entity Small Business",
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "dei_EntityTaxIdentificationNumber": {
     "xbrltype": "employerIdItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "EntityTaxIdentificationNumber",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Entity Tax Identification Number",
        "label": "Entity Tax Identification Number",
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS."
       }
      }
     },
     "auth_ref": [
      "r964"
     ]
    },
    "ecd_EqtyAwrdsAdjFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "EqtyAwrdsAdjFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Awards Adjustments, Footnote",
        "label": "Equity Awards Adjustments, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1003"
     ]
    },
    "ecd_EqtyAwrdsAdjsExclgValRprtdInSummryCompstnTblMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "EqtyAwrdsAdjsExclgValRprtdInSummryCompstnTblMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Awards Adjustments, Excluding Value Reported in Compensation Table",
        "label": "Equity Awards Adjustments, Excluding Value Reported in the Compensation Table [Member]"
       }
      }
     },
     "auth_ref": [
      "r1044"
     ]
    },
    "ecd_EqtyAwrdsAdjsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "EqtyAwrdsAdjsMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Awards Adjustments",
        "label": "Equity Awards Adjustments [Member]"
       }
      }
     },
     "auth_ref": [
      "r1044"
     ]
    },
    "ecd_EqtyAwrdsInSummryCompstnTblForAplblYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "EqtyAwrdsInSummryCompstnTblForAplblYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table",
        "label": "Aggregate Grant Date Fair Value of Equity Award Amounts Reported in Summary Compensation Table [Member]"
       }
      }
     },
     "auth_ref": [
      "r1044"
     ]
    },
    "us-gaap_EquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EquityAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity [Abstract]",
        "label": "Equity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EquityComponentDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "EquityComponentDomain",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Component",
        "label": "Equity Component [Domain]",
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc."
       }
      }
     },
     "auth_ref": [
      "r91",
      "r92",
      "r119",
      "r143",
      "r144",
      "r158",
      "r159",
      "r160",
      "r178",
      "r179",
      "r180",
      "r182",
      "r189",
      "r191",
      "r193",
      "r220",
      "r271",
      "r272",
      "r311",
      "r312",
      "r313",
      "r347",
      "r371",
      "r376",
      "r377",
      "r378",
      "r381",
      "r383",
      "r386",
      "r417",
      "r418",
      "r420",
      "r421",
      "r463",
      "r478",
      "r479",
      "r485",
      "r486",
      "r487",
      "r489",
      "r553",
      "r554",
      "r578",
      "r579",
      "r580",
      "r581",
      "r582",
      "r583",
      "r584",
      "r585",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r593",
      "r616",
      "r617",
      "r618",
      "r619",
      "r620",
      "r621",
      "r622",
      "r635",
      "r673",
      "r679",
      "r680",
      "r686",
      "r687",
      "r718",
      "r734",
      "r751",
      "r752",
      "r753",
      "r767",
      "r818",
      "r1219"
     ]
    },
    "ecd_EquityValuationAssumptionDifferenceFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "EquityValuationAssumptionDifferenceFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Valuation Assumption Difference, Footnote",
        "label": "Equity Valuation Assumption Difference, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1013"
     ]
    },
    "ecd_ErrCompAnalysisTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ErrCompAnalysisTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Erroneous Compensation Analysis",
        "label": "Erroneous Compensation Analysis [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r971",
      "r981",
      "r991",
      "r1023"
     ]
    },
    "ecd_ErrCompRecoveryTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ErrCompRecoveryTable",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Erroneously Awarded Compensation Recovery",
        "label": "Erroneously Awarded Compensation Recovery [Table]"
       }
      }
     },
     "auth_ref": [
      "r968",
      "r978",
      "r988",
      "r1020"
     ]
    },
    "ecd_ExecutiveCategoryAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ExecutiveCategoryAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Executive Category:",
        "label": "Executive Category [Axis]"
       }
      }
     },
     "auth_ref": [
      "r1019"
     ]
    },
    "us-gaap_FairValueDisclosuresAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FairValueDisclosuresAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Fair Value Disclosures [Abstract]",
        "label": "Fair Value Disclosures [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FinancialInstrumentAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FinancialInstrumentAxis",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Financial Instrument",
        "label": "Financial Instrument [Axis]",
        "documentation": "Information by type of financial instrument."
       }
      }
     },
     "auth_ref": [
      "r240",
      "r241",
      "r242",
      "r243",
      "r244",
      "r245",
      "r246",
      "r247",
      "r248",
      "r249",
      "r250",
      "r251",
      "r252",
      "r253",
      "r254",
      "r255",
      "r256",
      "r257",
      "r258",
      "r259",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r265",
      "r266",
      "r267",
      "r268",
      "r269",
      "r274",
      "r275",
      "r276",
      "r278",
      "r279",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r285",
      "r286",
      "r287",
      "r289",
      "r290",
      "r291",
      "r346",
      "r370",
      "r577",
      "r601",
      "r607",
      "r610",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r644",
      "r645",
      "r646",
      "r647",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668",
      "r669",
      "r670",
      "r671",
      "r672",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709",
      "r710",
      "r711",
      "r712",
      "r713",
      "r714",
      "r715",
      "r720",
      "r735",
      "r865",
      "r930",
      "r932",
      "r934",
      "r935",
      "r936",
      "r937",
      "r938",
      "r939",
      "r940",
      "r1051",
      "r1052",
      "r1053",
      "r1054",
      "r1055",
      "r1056",
      "r1057",
      "r1157",
      "r1158",
      "r1159",
      "r1160",
      "r1266",
      "r1267",
      "r1268",
      "r1269",
      "r1270",
      "r1271",
      "r1272",
      "r1273"
     ]
    },
    "us-gaap_FinancialInstrumentsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FinancialInstrumentsDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Fair Value Measurements",
        "label": "Financial Instruments Disclosure [Text Block]",
        "documentation": "The entire disclosure for financial instruments. This disclosure includes, but is not limited to, fair value measurements of short and long term marketable securities, international currencies forward contracts, and auction rate securities. Financial instruments may include hedging and non-hedging currency exchange instruments, derivatives, securitizations and securities available for sale at fair value. Also included are investment results, realized and unrealized gains and losses as well as impairments and risk management disclosures."
       }
      }
     },
     "auth_ref": [
      "r602"
     ]
    },
    "us-gaap_FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedAndIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Estimated Useful Lives for Each Acquired Intangible Asset",
        "label": "Business Combination, Intangible Asset, Acquired, Finite-Lived and Indefinite-Lived [Table Text Block]",
        "documentation": "Tabular disclosure of finite-lived and indefinite-lived intangible assets acquired in business combination."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "spsc_FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Thereafter",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, After Year Four",
        "documentation": "Finite lived intangible assets, amortization expense after year four."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FiniteLivedIntangibleAssetUsefulLife": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible assets useful life",
        "label": "Intangible Asset, Finite-Lived, Useful Life",
        "documentation": "Useful life of finite-lived intangible asset, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r310"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Accumulated Amortization",
        "label": "Intangible Asset, Finite-Lived, Accumulated Amortization",
        "documentation": "Amount of accumulated amortization of finite-lived intangible asset. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r131",
      "r292",
      "r304",
      "r839",
      "r1187"
     ]
    },
    "spsc_FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Foreign Currency Translation",
        "label": "Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss",
        "documentation": "Finite lived intangible assets accumulated foreign currency translation gain (loss)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2027",
        "label": "Intangible Asset, Finite-Lived, Estimated Amortization Expense, Year One",
        "documentation": "Amount of amortization expense for finite-lived intangible asset expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach). Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r306",
      "r839"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Remainder of 2026",
        "label": "Intangible Asset, Finite-Lived, Estimated Amortization Expense, Remainder of Fiscal Year",
        "documentation": "Amount of amortization expense for finite-lived intangible asset expected to be recognized in remainder of current fiscal year. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r1184"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2030",
        "label": "Intangible Asset, Finite-Lived, Estimated Amortization Expense, Year Four",
        "documentation": "Amount of amortization expense for finite-lived intangible asset expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach). Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r306",
      "r839"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2029",
        "label": "Intangible Asset, Finite-Lived, Estimated Amortization Expense, Year Three",
        "documentation": "Amount of amortization expense for finite-lived intangible asset expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach). Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r306",
      "r839"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2028",
        "label": "Intangible Asset, Finite-Lived, Estimated Amortization Expense, Year Two",
        "documentation": "Amount of amortization expense for finite-lived intangible asset expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach). Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r306",
      "r839"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Finite Lived Intangible Assets by Major Class",
        "label": "Intangible Asset, Finite-Lived, Class [Axis]",
        "documentation": "Information by class of finite-lived intangible asset."
       }
      }
     },
     "auth_ref": [
      "r297",
      "r299",
      "r300",
      "r301",
      "r303",
      "r304",
      "r307",
      "r308",
      "r677",
      "r678",
      "r759",
      "r837",
      "r839",
      "r896",
      "r897",
      "r898",
      "r899",
      "r900",
      "r901",
      "r902",
      "r903",
      "r904",
      "r905",
      "r906",
      "r907",
      "r908",
      "r909",
      "r910",
      "r911",
      "r912",
      "r913",
      "r914",
      "r915",
      "r916",
      "r917",
      "r918",
      "r919",
      "r920",
      "r921",
      "r922",
      "r1187",
      "r1338",
      "r1339",
      "r1340"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsGross",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails": {
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Gross Carrying Amount",
        "label": "Intangible Asset, Finite-Lived, before Accumulated Amortization",
        "documentation": "Amount, before accumulated amortization, of finite-lived intangible asset. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r292",
      "r304",
      "r678",
      "r839",
      "r1187"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible Asset, Finite-Lived [Line Items]",
        "label": "Intangible Asset, Finite-Lived [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r297",
      "r304",
      "r307",
      "r308",
      "r309",
      "r677",
      "r837",
      "r839",
      "r896",
      "r897",
      "r898",
      "r899",
      "r900",
      "r901",
      "r902",
      "r903",
      "r904",
      "r905",
      "r906",
      "r907",
      "r908",
      "r909",
      "r910",
      "r911",
      "r912",
      "r913",
      "r914",
      "r915",
      "r916",
      "r917",
      "r918",
      "r919",
      "r920",
      "r921",
      "r922",
      "r1187",
      "r1338",
      "r1339",
      "r1340"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Finite Lived Intangible Assets, Major Class Name",
        "label": "Intangible Asset, Finite-Lived, Class [Domain]",
        "documentation": "Class of finite-lived intangible asset."
       }
      }
     },
     "auth_ref": [
      "r297",
      "r299",
      "r300",
      "r301",
      "r303",
      "r304",
      "r307",
      "r308",
      "r759",
      "r837",
      "r839",
      "r896",
      "r897",
      "r898",
      "r899",
      "r900",
      "r901",
      "r902",
      "r903",
      "r904",
      "r905",
      "r906",
      "r907",
      "r908",
      "r909",
      "r910",
      "r911",
      "r912",
      "r913",
      "r914",
      "r915",
      "r916",
      "r917",
      "r918",
      "r919",
      "r920",
      "r921",
      "r922",
      "r1187",
      "r1338",
      "r1339",
      "r1340"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 5.0
      },
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      },
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofEstimatedFutureAnnualAmortizationExpenseRelatedtoIntangibleAssetsDetails",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible assets, net",
        "totalLabel": "Total future amortization",
        "label": "Intangible Asset, Finite-Lived, after Accumulated Amortization",
        "documentation": "Amount, after accumulated amortization, of finite-lived intangible asset. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r677",
      "r1182"
     ]
    },
    "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted Average Remaining Amortization Period",
        "label": "Intangible Asset, Finite-Lived, Remaining Amortization Period",
        "documentation": "Period remaining for amortization of finite-lived intangible asset, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Excludes goodwill and capitalized cost for software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r677"
     ]
    },
    "us-gaap_ForeignCurrencyTransactionGainLossBeforeTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ForeignCurrencyTransactionGainLossBeforeTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails": {
       "parentTag": "us-gaap_NonoperatingIncomeExpense",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Realized gain from investments and foreign currency transactions",
        "label": "Gain (Loss), Foreign Currency Transaction, before Tax",
        "documentation": "Amount, before tax, of realized and unrealized gain (loss) from foreign currency transaction."
       }
      }
     },
     "auth_ref": [
      "r167",
      "r612",
      "r613",
      "r614",
      "r615",
      "r815"
     ]
    },
    "ecd_ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ForgoneRecoveryDueToDisqualificationOfTaxBenefitsAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forgone Recovery due to Disqualification of Tax Benefits, Amount",
        "label": "Forgone Recovery due to Disqualification of Tax Benefits, Amount"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1027"
     ]
    },
    "ecd_ForgoneRecoveryDueToExpenseOfEnforcementAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ForgoneRecoveryDueToExpenseOfEnforcementAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forgone Recovery due to Expense of Enforcement, Amount",
        "label": "Forgone Recovery due to Expense of Enforcement, Amount"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1027"
     ]
    },
    "ecd_ForgoneRecoveryDueToViolationOfHomeCountryLawAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ForgoneRecoveryDueToViolationOfHomeCountryLawAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forgone Recovery due to Violation of Home Country Law, Amount",
        "label": "Forgone Recovery due to Violation of Home Country Law, Amount"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1027"
     ]
    },
    "ecd_ForgoneRecoveryExplanationOfImpracticabilityTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ForgoneRecoveryExplanationOfImpracticabilityTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forgone Recovery, Explanation of Impracticability",
        "label": "Forgone Recovery, Explanation of Impracticability [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1027"
     ]
    },
    "ecd_ForgoneRecoveryIndName": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "ForgoneRecoveryIndName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Name",
        "label": "Forgone Recovery, Individual Name"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1027"
     ]
    },
    "spsc_FourZeroOneKStockMatchMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "FourZeroOneKStockMatchMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "401(k) stock match",
        "label": "Four Zero One K Stock Match [Member]",
        "documentation": "Four zero one (k) stock match."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_FrValAsOfPrrYrEndOfEqtyAwrdsGrntdInPrrYrsFldVstngCondsDrngCvrdYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "FrValAsOfPrrYrEndOfEqtyAwrdsGrntdInPrrYrsFldVstngCondsDrngCvrdYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year",
        "label": "Prior Year End Fair Value of Equity Awards Granted in Any Prior Year that Fail to Meet Applicable Vesting Conditions During Covered Year [Member]"
       }
      }
     },
     "auth_ref": [
      "r1008"
     ]
    },
    "spsc_FulfillmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "FulfillmentMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Fulfillment",
        "label": "Fulfillment [Member]",
        "documentation": "Fulfillment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_GainLossOnSaleOfBusiness": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GainLossOnSaleOfBusiness",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": -1.0,
       "order": 5.0
      },
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 16.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Loss on sale of business",
        "label": "Gain (Loss) on Disposition of Business",
        "documentation": "Amount of gain (loss) from sale and disposal of integrated set of activities and assets capable of being conducted and managed for purpose of providing return in form of dividend, lower cost, or other economic benefit to investor, owner, member and participant."
       }
      }
     },
     "auth_ref": [
      "r558",
      "r1125"
     ]
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeneralAndAdministrativeExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "General and administrative",
        "label": "General and Administrative Expense",
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line."
       }
      }
     },
     "auth_ref": [
      "r27",
      "r801"
     ]
    },
    "us-gaap_GeographicConcentrationRiskMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeographicConcentrationRiskMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Geographic Concentration Risk",
        "label": "Geographic Concentration Risk [Member]",
        "documentation": "Reflects the percentage that a specified dollar value on the balance sheet or income statement in the period from one or more specified geographic areas is to a corresponding consolidated, segment, or product line amount. Risk is the materially adverse effects of economic decline or antagonistic political actions resulting in loss of assets, sales volume, labor supply, or source of materials and supplies in a US state or a specified country, continent, or region such as EMEA (Europe, Middle East, Africa)."
       }
      }
     },
     "auth_ref": [
      "r833",
      "r1147"
     ]
    },
    "us-gaap_GeographicDistributionAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeographicDistributionAxis",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Geographic Distribution",
        "label": "Geographic Distribution [Axis]",
        "documentation": "Information by geographic distribution of business activity identified as either domestic or foreign. Excludes names of countries, states and provinces, and cities."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r56",
      "r57",
      "r58",
      "r59",
      "r60",
      "r61",
      "r62",
      "r63",
      "r64",
      "r65",
      "r66",
      "r67",
      "r68",
      "r69",
      "r70",
      "r71",
      "r72",
      "r694",
      "r695",
      "r696",
      "r697",
      "r862",
      "r863",
      "r864"
     ]
    },
    "us-gaap_GeographicDistributionDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeographicDistributionDomain",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Geographic Distribution",
        "label": "Geographic Distribution [Domain]",
        "documentation": "Allocation of business activity identified as domestic or foreign. Excludes names of countries, states and provinces, and cities."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r56",
      "r57",
      "r58",
      "r59",
      "r60",
      "r61",
      "r62",
      "r63",
      "r64",
      "r65",
      "r66",
      "r67",
      "r68",
      "r69",
      "r70",
      "r71",
      "r72",
      "r694",
      "r695",
      "r696",
      "r697",
      "r863",
      "r864"
     ]
    },
    "us-gaap_GeographicDistributionDomesticMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeographicDistributionDomesticMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Domestic revenue",
        "label": "Geographic Distribution, Domestic [Member]",
        "documentation": "Allocation of business activity identified as domestic."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r56",
      "r57",
      "r58",
      "r59",
      "r60",
      "r61",
      "r62",
      "r63",
      "r64",
      "r65",
      "r67",
      "r68",
      "r69",
      "r70",
      "r71",
      "r72",
      "r863"
     ]
    },
    "us-gaap_GeographicDistributionForeignMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GeographicDistributionForeignMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "International property and equipment",
        "label": "Geographic Distribution, Foreign [Member]",
        "documentation": "Allocation of business activity identified as foreign."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r56",
      "r57",
      "r58",
      "r59",
      "r60",
      "r61",
      "r62",
      "r63",
      "r64",
      "r65",
      "r66",
      "r67",
      "r68",
      "r69",
      "r70",
      "r71",
      "r72",
      "r694",
      "r695",
      "r696",
      "r697",
      "r864"
     ]
    },
    "us-gaap_Goodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "Goodwill",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofActivityinGoodwillDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Goodwill",
        "verboseLabel": "Goodwill",
        "periodStartLabel": "Balance, beginning of period",
        "periodEndLabel": "Balance, end of period",
        "label": "Goodwill",
        "documentation": "Amount, after accumulated impairment loss, of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r123",
      "r130",
      "r293",
      "r679",
      "r680",
      "r681",
      "r860",
      "r866",
      "r885",
      "r889",
      "r890",
      "r925",
      "r931",
      "r944",
      "r1165",
      "r1172",
      "r1262"
     ]
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible Asset, Goodwill and Other [Abstract]",
        "label": "Intangible Asset, Goodwill and Other [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNet"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Goodwill and Intangible Assets, Net",
        "label": "Intangible Asset and Goodwill [Text Block]",
        "documentation": "The entire disclosure for intangible asset and goodwill. Includes, but is not limited to, finite- and indefinite-lived intangible assets, capitalized cost for internal-use software and software to be sold, leased, or marketed."
       }
      }
     },
     "auth_ref": [
      "r1163",
      "r1175"
     ]
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GoodwillForeignCurrencyTranslationGainLoss",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofActivityinGoodwillDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Foreign currency translation and other",
        "label": "Goodwill, Foreign Currency Translation, Gain (Loss)",
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) asset representing future economic benefit from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r295",
      "r551"
     ]
    },
    "us-gaap_GoodwillRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GoodwillRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofActivityinGoodwillDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Goodwill [Roll Forward]",
        "label": "Goodwill [Roll Forward]",
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_GoodwillWrittenOffRelatedToSaleOfBusinessUnit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GoodwillWrittenOffRelatedToSaleOfBusinessUnit",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofActivityinGoodwillDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Disposition due to divestiture",
        "label": "Goodwill, Divestiture",
        "documentation": "Amount of decrease in goodwill acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized, from divestiture."
       }
      }
     },
     "auth_ref": [
      "r294",
      "r551",
      "r866"
     ]
    },
    "us-gaap_GrossProfit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "GrossProfit",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Gross profit",
        "label": "Gross Profit",
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r25",
      "r173",
      "r174",
      "r175",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r608",
      "r858",
      "r859",
      "r1064",
      "r1065",
      "r1142",
      "r1149",
      "r1150",
      "r1151",
      "r1152",
      "r1161",
      "r1209"
     ]
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Income before income taxes",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest",
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r43",
      "r694",
      "r696",
      "r732",
      "r840",
      "r850",
      "r852",
      "r854",
      "r858",
      "r859",
      "r1142",
      "r1149",
      "r1150",
      "r1151",
      "r1152"
     ]
    },
    "us-gaap_IncomeStatementAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeStatementAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Income Statement [Abstract]",
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Disposal Group Name [Axis]",
        "label": "Disposal Group Name [Axis]",
        "documentation": "Information by name of disposal group."
       }
      }
     },
     "auth_ref": [
      "r100",
      "r101",
      "r102",
      "r103",
      "r104",
      "r105",
      "r106",
      "r323",
      "r325",
      "r880",
      "r881",
      "r1062",
      "r1063",
      "r1198",
      "r1199",
      "r1200",
      "r1201"
     ]
    },
    "us-gaap_IncomeTaxDisclosureAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeTaxDisclosureAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Income Tax Disclosure [Abstract]",
        "label": "Income Tax Disclosure [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeTaxDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/IncomeTaxes"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Income Taxes",
        "label": "Income Tax Disclosure [Text Block]",
        "documentation": "The entire disclosure for income tax."
       }
      }
     },
     "auth_ref": [
      "r173",
      "r176",
      "r468",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r480",
      "r482",
      "r483",
      "r484",
      "r719",
      "r758",
      "r766",
      "r884"
     ]
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Income tax expense",
        "label": "Income Tax Expense (Benefit)",
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations."
       }
      }
     },
     "auth_ref": [
      "r45",
      "r53",
      "r173",
      "r192",
      "r193",
      "r219",
      "r230",
      "r233",
      "r471",
      "r472",
      "r481",
      "r739",
      "r840",
      "r850",
      "r852",
      "r854",
      "r884"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInAccountsPayable",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 11.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accounts payable",
        "label": "Increase (Decrease) in Accounts Payable",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 8.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Accounts receivable",
        "label": "Increase (Decrease) in Accounts Receivable",
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccruedLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInAccruedLiabilities",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 13.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accrued expenses",
        "label": "Increase (Decrease) in Accrued Liabilities",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of expenses incurred but not yet paid."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInContractWithCustomerLiability",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 14.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Deferred revenue",
        "label": "Increase (Decrease) in Contract with Customer, Liability",
        "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable."
       }
      }
     },
     "auth_ref": [
      "r675",
      "r1124"
     ]
    },
    "us-gaap_IncreaseDecreaseInDeferredCharges": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInDeferredCharges",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 9.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Deferred costs",
        "label": "Increase (Decrease) in Deferred Charges",
        "documentation": "The increase (decrease) during the reporting period in the value of expenditures made during the current reporting period for benefits that will be received over a period of years. Deferred charges differ from prepaid expenses in that they usually extend over a long period of time and may or may not be regularly recurring costs of operation."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInEmployeeRelatedLiabilities",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 12.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Accrued compensation",
        "label": "Increase (Decrease) in Employee Related Liabilities",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Changes in assets and liabilities, net of effects of acquisitions",
        "label": "Adjustment to Reconcile Net Income to Cash Provided by (Used in) Operating Activity, Increase (Decrease) in Operating Capital [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_IncreaseDecreaseInOperatingLeases": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "IncreaseDecreaseInOperatingLeases",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 15.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating leases",
        "label": "Increase (Decrease) In Operating Leases",
        "documentation": "Increase decrease in operating leases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInOtherOperatingCapitalNet",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 10.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Other assets and liabilities",
        "label": "Increase (Decrease) in Other Operating Assets and Liabilities, Net",
        "documentation": "Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_IncreaseDecreaseInStockholdersEquityRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncreaseDecreaseInStockholdersEquityRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Increase (Decrease) in Stockholders' Equity [Roll Forward]",
        "label": "Increase (Decrease) in Stockholders' Equity [Roll Forward]",
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncrementalCommonSharesAttributableToContingentlyIssuableShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncrementalCommonSharesAttributableToContingentlyIssuableShares",
     "calculation": {
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PSUs, RSUs, RSAs, and DSUs (in shares)",
        "label": "Incremental Common Shares Attributable to Dilutive Effect of Contingently Issuable Shares",
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of contingently issuable shares. Contingently issuable shares are those shares that are issuable for little or no cash contingent on certain conditions being met."
       }
      }
     },
     "auth_ref": [
      "r200",
      "r201",
      "r203",
      "r204",
      "r205",
      "r206",
      "r207",
      "r208",
      "r209",
      "r213"
     ]
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "calculation": {
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Options to purchase common stock and ESPP (in shares)",
        "label": "Incremental Common Shares Attributable to Dilutive Effect of Share-Based Payment Arrangements",
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method."
       }
      }
     },
     "auth_ref": [
      "r199",
      "r200",
      "r202",
      "r213",
      "r429"
     ]
    },
    "ecd_IndividualAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "IndividualAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure",
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure",
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements",
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Individual:",
        "label": "Individual [Axis]"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1019",
      "r1027",
      "r1031",
      "r1039"
     ]
    },
    "ecd_InsiderTradingArrLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "InsiderTradingArrLineItems",
     "lang": {
      "en-us": {
       "role": {
        "label": "Insider Trading Arrangements [Line Items]"
       }
      }
     },
     "auth_ref": [
      "r1037"
     ]
    },
    "ecd_InsiderTradingPoliciesProcLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "InsiderTradingPoliciesProcLineItems",
     "lang": {
      "en-us": {
       "role": {
        "label": "Insider Trading Policies and Procedures [Line Items]"
       }
      }
     },
     "auth_ref": [
      "r967",
      "r1043"
     ]
    },
    "ecd_InsiderTrdPoliciesProcAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "InsiderTrdPoliciesProcAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Insider Trading Policies and Procedures Adopted",
        "label": "Insider Trading Policies and Procedures Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r967",
      "r1043"
     ]
    },
    "ecd_InsiderTrdPoliciesProcNotAdoptedTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "InsiderTrdPoliciesProcNotAdoptedTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingPoliciesProc"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Insider Trading Policies and Procedures Not Adopted",
        "label": "Insider Trading Policies and Procedures Not Adopted [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r967",
      "r1043"
     ]
    },
    "spsc_InternallyDevelopedSoftwareMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "InternallyDevelopedSoftwareMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Internally developed software",
        "label": "Internally Developed Software [Member]",
        "documentation": "Internally Developed Software"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_InvestmentIncomeNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "InvestmentIncomeNet",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails": {
       "parentTag": "us-gaap_NonoperatingIncomeExpense",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Investment income",
        "label": "Investment Income, Net",
        "documentation": "Amount after accretion (amortization) of discount (premium), and investment expense, of interest income and dividend income on nonoperating securities."
       }
      }
     },
     "auth_ref": [
      "r28",
      "r29",
      "r31"
     ]
    },
    "us-gaap_LeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total lease expense",
        "label": "Lease, Cost",
        "documentation": "Amount of lease cost recognized by lessee for lease contract."
       }
      }
     },
     "auth_ref": [
      "r626",
      "r943"
     ]
    },
    "us-gaap_LeaseCostTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LeaseCostTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Components of Lease Expense",
        "label": "Lease, Cost [Table Text Block]",
        "documentation": "Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income."
       }
      }
     },
     "auth_ref": [
      "r1276"
     ]
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LeaseholdImprovementsMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Leasehold improvements",
        "label": "Leasehold Improvements [Member]",
        "documentation": "Additions or improvements to assets held under a lease arrangement."
       }
      }
     },
     "auth_ref": [
      "r634",
      "r1192",
      "r1193"
     ]
    },
    "spsc_LesseeOperatingLeaseLeaseIncentives": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "LesseeOperatingLeaseLeaseIncentives",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Lease incentives",
        "label": "Lessee, Operating Lease, Lease Incentives",
        "documentation": "Lessee, Operating Lease, Lease Incentives"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_LesseeOperatingLeaseLeaseIncentivesUtilized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "LesseeOperatingLeaseLeaseIncentivesUtilized",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Lease incentives, expects to be utilized during future period",
        "label": "Lessee, Operating Lease, Lease Incentives Utilized",
        "documentation": "Lessee, Operating Lease, Lease Incentives Utilized"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_LesseeOperatingLeaseLeasedArea": {
     "xbrltype": "areaItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "LesseeOperatingLeaseLeasedArea",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating lease, leased area",
        "label": "Lessee, Operating Lease, Leased Area",
        "documentation": "Lessee, Operating Lease, Leased Area"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Future Minimum Payments Under Operating Leases",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Maturity [Table Text Block]",
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position."
       }
      }
     },
     "auth_ref": [
      "r1277"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      },
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total future gross payments",
        "label": "Lessee, Operating Lease, Liability, to be Paid",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "2027",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year One",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2030",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Four",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2029",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2028",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Two",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r633",
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Remainder of 2026",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Remainder of Fiscal Year",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease having initial or remaining lease term in excess of one year to be paid in remainder of current fiscal year."
       }
      }
     },
     "auth_ref": [
      "r1277"
     ]
    },
    "spsc_LesseeOperatingLeaseLiabilityToBePaidAfterYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "LesseeOperatingLeaseLiabilityToBePaidAfterYearFour",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Thereafter",
        "label": "Lessee, Operating Lease, Liability, To Be Paid, After Year Four",
        "documentation": "Lessee, Operating Lease, Liability, To Be Paid, After Year Four"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Less: imputed interest",
        "label": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease."
       }
      }
     },
     "auth_ref": [
      "r633"
     ]
    },
    "us-gaap_Liabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "Liabilities",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total liabilities",
        "label": "Liabilities",
        "documentation": "Amount of liability recognized for present obligation requiring transfer or otherwise providing economic benefit to others."
       }
      }
     },
     "auth_ref": [
      "r107",
      "r113",
      "r173",
      "r174",
      "r175",
      "r270",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r557",
      "r559",
      "r560",
      "r608",
      "r778",
      "r857",
      "r871",
      "r962",
      "r1078",
      "r1209",
      "r1278",
      "r1279"
     ]
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LiabilitiesAndStockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total liabilities and stockholders\u2019 equity",
        "label": "Liabilities and Equity",
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any."
       }
      }
     },
     "auth_ref": [
      "r150",
      "r679",
      "r680",
      "r689",
      "r729",
      "r944",
      "r950",
      "r951",
      "r1128",
      "r1131",
      "r1161",
      "r1274"
     ]
    },
    "us-gaap_LiabilitiesAndStockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LiabilitiesAndStockholdersEquityAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "LIABILITIES AND STOCKHOLDERS\u2019 EQUITY",
        "label": "Liabilities and Equity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total current liabilities",
        "label": "Liabilities, Current",
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r107",
      "r113",
      "r118",
      "r135",
      "r173",
      "r174",
      "r175",
      "r270",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r382",
      "r557",
      "r559",
      "r560",
      "r608",
      "r944",
      "r1209",
      "r1278",
      "r1279"
     ]
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "LiabilitiesCurrentAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Current liabilities",
        "label": "Liabilities, Current [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "dei_LocalPhoneNumber": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "LocalPhoneNumber",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Local Phone Number",
        "label": "Local Phone Number",
        "documentation": "Local phone number for entity."
       }
      }
     },
     "auth_ref": []
    },
    "srt_MaximumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "MaximumMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Maximum",
        "label": "Maximum [Member]",
        "documentation": "Upper limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r74",
      "r75",
      "r76",
      "r77",
      "r84",
      "r85",
      "r86",
      "r89",
      "r90",
      "r114",
      "r116",
      "r225",
      "r333",
      "r334",
      "r335",
      "r336",
      "r423",
      "r454",
      "r455",
      "r456",
      "r466",
      "r597",
      "r643",
      "r644",
      "r645",
      "r646",
      "r648",
      "r649",
      "r650",
      "r651",
      "r674",
      "r747",
      "r749",
      "r757",
      "r770",
      "r771",
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r829",
      "r830",
      "r831",
      "r832",
      "r835",
      "r836",
      "r861",
      "r882",
      "r885",
      "r892",
      "r895",
      "r934",
      "r935",
      "r939",
      "r940",
      "r947",
      "r1211",
      "r1212"
     ]
    },
    "spsc_MaximumRecognitionPeriodForMiscellaneousOneTimeFee": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "MaximumRecognitionPeriodForMiscellaneousOneTimeFee",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Maximum recognition period for miscellaneous one-time fee",
        "label": "Maximum Recognition Period For Miscellaneous One Time Fee",
        "documentation": "Maximum recognition period for miscellaneous one-time fee."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_MeasureAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "MeasureAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Measure:",
        "label": "Measure [Axis]"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "ecd_MeasureName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "MeasureName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Name",
        "label": "Measure Name"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "srt_MinimumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "MinimumMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Minimum",
        "label": "Minimum [Member]",
        "documentation": "Lower limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r74",
      "r75",
      "r76",
      "r77",
      "r84",
      "r85",
      "r86",
      "r89",
      "r90",
      "r114",
      "r116",
      "r225",
      "r333",
      "r334",
      "r335",
      "r336",
      "r423",
      "r454",
      "r455",
      "r456",
      "r466",
      "r597",
      "r643",
      "r644",
      "r645",
      "r646",
      "r648",
      "r649",
      "r650",
      "r651",
      "r674",
      "r747",
      "r749",
      "r757",
      "r770",
      "r771",
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r829",
      "r830",
      "r831",
      "r832",
      "r835",
      "r836",
      "r861",
      "r882",
      "r885",
      "r892",
      "r895",
      "r934",
      "r935",
      "r939",
      "r947",
      "r1211",
      "r1212"
     ]
    },
    "ecd_MnpiDiscTimedForCompValFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "MnpiDiscTimedForCompValFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "MNPI Disclosure Timed for Compensation Value",
        "label": "MNPI Disclosure Timed for Compensation Value [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1030"
     ]
    },
    "us-gaap_MoneyMarketFundsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "MoneyMarketFundsMember",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Money market funds",
        "label": "Money Market Funds [Member]",
        "documentation": "Fund that invests in short-term money-market instruments, for example, but not limited to, commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and other highly liquid securities."
       }
      }
     },
     "auth_ref": [
      "r1222",
      "r1223"
     ]
    },
    "ecd_MtrlTermsOfTrdArrTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "MtrlTermsOfTrdArrTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Material Terms of Trading Arrangement",
        "label": "Material Terms of Trading Arrangement [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1038"
     ]
    },
    "ecd_NamedExecutiveOfficersFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NamedExecutiveOfficersFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Named Executive Officers, Footnote",
        "label": "Named Executive Officers, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Net cash used in financing activities",
        "label": "Cash Provided by (Used in) Financing Activity, Including Discontinued Operation",
        "documentation": "Amount of cash inflow (outflow) from financing activity, including, but not limited to, discontinued operation. Financing activity includes, but is not limited to, obtaining resource from owner and providing return on, and return of, their investment; borrowing money and repaying amount borrowed, or settling obligation; and obtaining and paying for other resource obtained from creditor on long-term credit."
       }
      }
     },
     "auth_ref": [
      "r170"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash flows from financing activities",
        "label": "Cash Provided by (Used in) Financing Activity, Including Discontinued Operation [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Net cash used in investing activities",
        "label": "Cash Provided by (Used in) Investing Activity, Including Discontinued Operation",
        "documentation": "Amount of cash inflow (outflow) from investing activity, including, but not limited to, discontinued operation. Investing activity includes, but is not limited to, making and collecting loan, acquiring and disposing of debt and equity instruments, property, plant, and equipment, and other productive assets."
       }
      }
     },
     "auth_ref": [
      "r170"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash flows from investing activities",
        "label": "Cash Provided by (Used in) Investing Activity, Including Discontinued Operation [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Net cash provided by operating activities",
        "label": "Cash Provided by (Used in) Operating Activity, Including Discontinued Operation",
        "documentation": "Amount of cash inflow (outflow) from operating activity, including, but not limited to, discontinued operation. Operating activity includes, but is not limited to, transaction, adjustment, and change in value not defined as investing or financing activity."
       }
      }
     },
     "auth_ref": [
      "r35",
      "r36",
      "r37"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash flows from operating activities",
        "label": "Cash Provided by (Used in) Operating Activity, Including Discontinued Operation [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 1.0
      },
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Net income",
        "netLabel": "Net income",
        "terseLabel": "Net income",
        "verboseLabel": "Net income",
        "label": "Net Income (Loss) Attributable to Parent",
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent."
       }
      }
     },
     "auth_ref": [
      "r26",
      "r37",
      "r44",
      "r92",
      "r107",
      "r113",
      "r154",
      "r156",
      "r160",
      "r173",
      "r174",
      "r175",
      "r177",
      "r181",
      "r185",
      "r186",
      "r187",
      "r188",
      "r189",
      "r192",
      "r193",
      "r210",
      "r270",
      "r312",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341",
      "r342",
      "r343",
      "r344",
      "r345",
      "r348",
      "r351",
      "r353",
      "r357",
      "r382",
      "r419",
      "r463",
      "r488",
      "r554",
      "r595",
      "r608",
      "r733",
      "r799",
      "r816",
      "r817",
      "r850",
      "r852",
      "r854",
      "r961",
      "r1209"
     ]
    },
    "us-gaap_NetIncomeLossAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NetIncomeLossAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Numerator",
        "label": "Net Income (Loss) Attributable to Parent [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralPolicies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Significant Accounting Policies, Accounting Pronouncements Recently Adopted, and Accounting Pronouncements Not Yet Adopted",
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact."
       }
      }
     },
     "auth_ref": [
      "r194"
     ]
    },
    "ecd_NonGaapMeasureDescriptionTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonGaapMeasureDescriptionTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-GAAP Measure Description",
        "label": "Non-GAAP Measure Description [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "ecd_NonNeosMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonNeosMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-NEOs",
        "label": "Non-NEOs [Member]"
       }
      }
     },
     "auth_ref": [
      "r975",
      "r985",
      "r995",
      "r1019",
      "r1027"
     ]
    },
    "ecd_NonPeoNeoAvgCompActuallyPaidAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonPeoNeoAvgCompActuallyPaidAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-PEO NEO Average Compensation Actually Paid Amount",
        "label": "Non-PEO NEO Average Compensation Actually Paid Amount"
       }
      }
     },
     "auth_ref": [
      "r1002"
     ]
    },
    "ecd_NonPeoNeoAvgTotalCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonPeoNeoAvgTotalCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-PEO NEO Average Total Compensation Amount",
        "label": "Non-PEO NEO Average Total Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r1001"
     ]
    },
    "ecd_NonPeoNeoMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonPeoNeoMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-PEO NEO",
        "label": "Non-PEO NEO [Member]"
       }
      }
     },
     "auth_ref": [
      "r1019"
     ]
    },
    "ecd_NonRule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonRule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted",
        "label": "Non-Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1038"
     ]
    },
    "ecd_NonRule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "NonRule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated",
        "label": "Non-Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1038"
     ]
    },
    "us-gaap_NonoperatingIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "NonoperatingIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 2.0
      },
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other income, net",
        "totalLabel": "Total other income, net",
        "label": "Nonoperating Income (Expense)",
        "documentation": "The aggregate amount of income or expense from ancillary business-related activities (that is to say, excluding major activities considered part of the normal operations of the business)."
       }
      }
     },
     "auth_ref": [
      "r30",
      "r1064",
      "r1065",
      "r1161"
     ]
    },
    "spsc_OfficeEquipmentAndFurnitureMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "OfficeEquipmentAndFurnitureMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Office equipment and furniture",
        "label": "Office Equipment And Furniture [Member]",
        "documentation": "Office Equipment And Furniture"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_OneTimeRevenuesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "OneTimeRevenuesMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "One-time revenues",
        "label": "One Time Revenues [Member]",
        "documentation": "One time revenues."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OperatingExpenses": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingExpenses",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total operating expenses",
        "label": "Operating Expenses",
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense."
       }
      }
     },
     "auth_ref": [
      "r854",
      "r1064",
      "r1065",
      "r1161"
     ]
    },
    "us-gaap_OperatingExpensesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingExpensesAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating expenses",
        "label": "Operating Expenses [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OperatingIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Income from operations",
        "label": "Operating Income (Loss)",
        "documentation": "The net result for the period of deducting operating expenses from operating revenues."
       }
      }
     },
     "auth_ref": [
      "r850",
      "r854",
      "r858",
      "r1064",
      "r1065",
      "r1142",
      "r1149",
      "r1150",
      "r1151",
      "r1152",
      "r1161"
     ]
    },
    "us-gaap_OperatingLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating lease cost",
        "label": "Operating Lease, Cost",
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability."
       }
      }
     },
     "auth_ref": [
      "r627",
      "r943"
     ]
    },
    "us-gaap_OperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails_1": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofFutureMinimumPaymentsUnderOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Total operating lease liabilities",
        "label": "Operating Lease, Liability",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease."
       }
      }
     },
     "auth_ref": [
      "r624"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating lease liabilities",
        "label": "Operating Lease, Liability, Current",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current."
       }
      }
     },
     "auth_ref": [
      "r624",
      "r847"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating lease liabilities, non-current",
        "label": "Operating Lease, Liability, Noncurrent",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r624"
     ]
    },
    "us-gaap_OperatingLeasePayments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeasePayments",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating cash outflows from operating leases",
        "label": "Operating Lease, Payments",
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use."
       }
      }
     },
     "auth_ref": [
      "r625",
      "r629"
     ]
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseRightOfUseAsset",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Operating lease right-of-use assets",
        "label": "Operating Lease, Right-of-Use Asset",
        "documentation": "Amount of lessee's right to use underlying asset under operating lease."
       }
      }
     },
     "auth_ref": [
      "r623"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalBalanceSheetInformationRelatedtoOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted-average discount rate",
        "label": "Operating Lease, Weighted Average Discount Rate, Percent",
        "documentation": "Weighted average discount rate for operating lease calculated at point in time."
       }
      }
     },
     "auth_ref": [
      "r632",
      "r943"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalBalanceSheetInformationRelatedtoOperatingLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted-average remaining lease term",
        "label": "Operating Lease, Weighted Average Remaining Lease Term",
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r631",
      "r943"
     ]
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Organization, Consolidation and Presentation of Financial Statements [Abstract]",
        "label": "Organization, Consolidation and Presentation of Financial Statements [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/General"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "General",
        "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]",
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure."
       }
      }
     },
     "auth_ref": [
      "r42",
      "r93",
      "r94",
      "r96",
      "r762",
      "r763"
     ]
    },
    "us-gaap_OtherAssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherAssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other assets",
        "label": "Other Assets, Current",
        "documentation": "Amount of current assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r152",
      "r944"
     ]
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherAssetsNoncurrent",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 8.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other assets, non-current",
        "label": "Other Assets, Noncurrent",
        "documentation": "Amount of noncurrent assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r124",
      "r132"
     ]
    },
    "us-gaap_OtherAssetsNoncurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherAssetsNoncurrentAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other assets",
        "label": "Other Assets, Noncurrent [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherCommitmentsLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherCommitmentsLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other Commitments [Line Items]",
        "label": "Other Commitments [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherCommitmentsTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherCommitmentsTable",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other Commitments [Table]",
        "label": "Other Commitments [Table]",
        "documentation": "Disclosure of information about obligations resulting from other commitments."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Foreign currency translation adjustments",
        "verboseLabel": "Foreign currency translation adjustments",
        "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, before Tax",
        "documentation": "Amount before tax, after reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature."
       }
      }
     },
     "auth_ref": [
      "r2",
      "r22",
      "r734"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParentAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other comprehensive income (expense)",
        "label": "Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherIncomeAndExpensesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherIncomeAndExpensesAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other Income and Expenses [Abstract]",
        "label": "Other Income and Expenses [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherLiabilitiesNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other liabilities, non-current",
        "label": "Other Liabilities, Noncurrent",
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r138",
      "r1073"
     ]
    },
    "us-gaap_OtherLiabilitiesNoncurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherLiabilitiesNoncurrentAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other liabilities",
        "label": "Other Liabilities, Noncurrent [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_OtherMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "OtherMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other",
        "label": "Other [Member]",
        "documentation": "Other."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherNoncashIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherNoncashIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Other, net",
        "label": "Other Noncash Income (Expense)",
        "documentation": "Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other."
       }
      }
     },
     "auth_ref": [
      "r37"
     ]
    },
    "us-gaap_OtherNonoperatingIncomeAndExpenseTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherNonoperatingIncomeAndExpenseTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/OtherIncomeandExpense"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other Income and Expense",
        "label": "Other Nonoperating Income and Expense [Text Block]",
        "documentation": "The entire disclosure for the components of non-operating income or non-operating expense, including, but not limited to, amounts earned from dividends, interest on securities, gain (loss) on securities sold, equity earnings of unconsolidated affiliates, gain (loss) on sales of business, interest expense and other miscellaneous income or expense items."
       }
      }
     },
     "auth_ref": [
      "r164",
      "r165"
     ]
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "OtherNonoperatingIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails": {
       "parentTag": "us-gaap_NonoperatingIncomeExpense",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/OtherIncomeandExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other income (expense), net",
        "label": "Other Nonoperating Income (Expense)",
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other."
       }
      }
     },
     "auth_ref": [
      "r32",
      "r926"
     ]
    },
    "ecd_OtherPerfMeasureAmt": {
     "xbrltype": "decimalItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "OtherPerfMeasureAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Other Performance Measure, Amount",
        "label": "Other Performance Measure, Amount"
       }
      }
     },
     "auth_ref": [
      "r1011"
     ]
    },
    "ecd_OutstandingAggtErrCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "OutstandingAggtErrCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Outstanding Aggregate Erroneous Compensation Amount",
        "label": "Outstanding Aggregate Erroneous Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r973",
      "r983",
      "r993",
      "r1025"
     ]
    },
    "ecd_OutstandingRecoveryCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "OutstandingRecoveryCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Compensation Amount",
        "label": "Outstanding Recovery Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r976",
      "r986",
      "r996",
      "r1028"
     ]
    },
    "ecd_OutstandingRecoveryIndName": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "OutstandingRecoveryIndName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Name",
        "label": "Outstanding Recovery, Individual Name"
       }
      }
     },
     "auth_ref": [
      "r976",
      "r986",
      "r996",
      "r1028"
     ]
    },
    "ecd_PayVsPerformanceDisclosureLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PayVsPerformanceDisclosureLineItems",
     "lang": {
      "en-us": {
       "role": {
        "label": "Pay vs Performance Disclosure [Line Items]"
       }
      }
     },
     "auth_ref": [
      "r1000"
     ]
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Repurchases of common stock",
        "label": "Payments for Repurchase of Common Stock",
        "documentation": "The cash outflow to reacquire common stock during the period."
       }
      }
     },
     "auth_ref": [
      "r34"
     ]
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PaymentsToAcquireBusinessesGross",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails": {
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Cash paid",
        "label": "Payments to Acquire Businesses, Gross",
        "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price."
       }
      }
     },
     "auth_ref": [
      "r14",
      "r536",
      "r885",
      "r890",
      "r924"
     ]
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedTerseLabel": "Acquisition of business, net",
        "verboseLabel": "Payments to acquire businesses, net of cash acquired",
        "label": "Payments to Acquire Businesses, Net of Cash Acquired",
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase."
       }
      }
     },
     "auth_ref": [
      "r14"
     ]
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Purchases of property and equipment",
        "label": "Payments to Acquire Property, Plant, and Equipment",
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets."
       }
      }
     },
     "auth_ref": [
      "r33"
     ]
    },
    "ecd_PeerGroupIssuersFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeerGroupIssuersFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Peer Group Issuers, Footnote",
        "label": "Peer Group Issuers, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1010"
     ]
    },
    "ecd_PeerGroupTotalShareholderRtnAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeerGroupTotalShareholderRtnAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Peer Group Total Shareholder Return Amount",
        "label": "Peer Group Total Shareholder Return Amount"
       }
      }
     },
     "auth_ref": [
      "r1010"
     ]
    },
    "ecd_PeoActuallyPaidCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeoActuallyPaidCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PEO Actually Paid Compensation Amount",
        "label": "PEO Actually Paid Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r1002"
     ]
    },
    "ecd_PeoMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeoMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PEO",
        "label": "PEO [Member]"
       }
      }
     },
     "auth_ref": [
      "r1019"
     ]
    },
    "ecd_PeoName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeoName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PEO Name",
        "label": "PEO Name"
       }
      }
     },
     "auth_ref": [
      "r1012"
     ]
    },
    "ecd_PeoTotalCompAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PeoTotalCompAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PEO Total Compensation Amount",
        "label": "PEO Total Compensation Amount"
       }
      }
     },
     "auth_ref": [
      "r1001"
     ]
    },
    "spsc_PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "PerformanceShareUnitsRestrictedStockUnitsRestrictedStockAwardsAndDeferredStockUnitsMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PSUs, RSUs, RSAs and DSUs",
        "label": "Performance Share Units, Restricted Stock Units, Restricted Stock Awards And Deferred Stock Units [Member]",
        "documentation": "Performance share units, restricted stock units, restricted stock awards, and deferred stock units."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PerformanceSharesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PerformanceSharesMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "PSUs",
        "label": "Performance Shares [Member]",
        "documentation": "Share-based payment arrangement awarded for meeting performance target."
       }
      }
     },
     "auth_ref": [
      "r1224",
      "r1225",
      "r1226",
      "r1227",
      "r1228",
      "r1229",
      "r1230",
      "r1231",
      "r1232",
      "r1233",
      "r1234",
      "r1236",
      "r1237",
      "r1238",
      "r1239",
      "r1240",
      "r1241",
      "r1242",
      "r1243",
      "r1244",
      "r1245",
      "r1246",
      "r1247",
      "r1248",
      "r1249",
      "r1250"
     ]
    },
    "ecd_PnsnAdjsPrrSvcCstMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PnsnAdjsPrrSvcCstMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pension Adjustments Prior Service Cost",
        "label": "Pension Adjustments Prior Service Cost [Member]"
       }
      }
     },
     "auth_ref": [
      "r1003"
     ]
    },
    "ecd_PnsnAdjsSvcCstMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PnsnAdjsSvcCstMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pension Adjustments Service Cost",
        "label": "Pension Adjustments Service Cost [Member]"
       }
      }
     },
     "auth_ref": [
      "r1047"
     ]
    },
    "ecd_PnsnBnftsAdjFnTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PnsnBnftsAdjFnTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pension Benefits Adjustments, Footnote",
        "label": "Pension Benefits Adjustments, Footnote [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1002"
     ]
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PreferredStockParOrStatedValuePerShare",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Preferred stock, par value (in dollars per share)",
        "label": "Preferred Stock, Par or Stated Value Per Share",
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer."
       }
      }
     },
     "auth_ref": [
      "r361",
      "r1067",
      "r1074",
      "r1214",
      "r1284",
      "r1285",
      "r1286"
     ]
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PreferredStockSharesAuthorized",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Preferred stock, shares authorized (in shares)",
        "label": "Preferred Stock, Shares Authorized",
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r143",
      "r377",
      "r679",
      "r680",
      "r686",
      "r780"
     ]
    },
    "us-gaap_PreferredStockSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PreferredStockSharesIssued",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Preferred stock, shares issued (in shares)",
        "label": "Preferred Stock, Shares Issued",
        "documentation": "Number of shares issued for nonredeemable preferred shares and preferred shares redeemable solely at option of issuer. Includes, but is not limited to, preferred shares issued, repurchased, and held as treasury shares. Excludes preferred shares classified as debt."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r143",
      "r361",
      "r377",
      "r679",
      "r680",
      "r686"
     ]
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PreferredStockSharesOutstanding",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Preferred stock, shares outstanding (in shares)",
        "label": "Preferred Stock, Shares Outstanding",
        "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r143",
      "r377",
      "r679",
      "r680",
      "r686",
      "r780",
      "r798",
      "r1213",
      "r1336",
      "r1337"
     ]
    },
    "us-gaap_PreferredStockValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PreferredStockValue",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Preferred stock, $0.001 par value; 5,000,000 shares authorized; 0 shares issued and outstanding",
        "label": "Preferred Stock, Value, Issued",
        "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r143",
      "r350",
      "r355",
      "r377",
      "r679",
      "r680",
      "r686",
      "r725",
      "r944"
     ]
    },
    "us-gaap_ProceedsFromDivestitureOfBusinessesNetOfCashDivested": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ProceedsFromDivestitureOfBusinessesNetOfCashDivested",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Proceeds from sale, net",
        "label": "Proceeds from Divestiture of Businesses, Net of Cash Divested",
        "documentation": "This element represents the cash inflow during the period from the sale of a component of the entity."
       }
      }
     },
     "auth_ref": [
      "r13"
     ]
    },
    "us-gaap_ProceedsFromStockOptionsExercised": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ProceedsFromStockOptionsExercised",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Net proceeds from exercise of options to purchase common stock",
        "label": "Proceeds from Stock Options Exercised",
        "documentation": "Amount of cash inflow from exercise of option under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r3",
      "r9"
     ]
    },
    "us-gaap_ProceedsFromStockPlans": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ProceedsFromStockPlans",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Net proceeds from employee stock purchase plan activity",
        "label": "Proceeds from Stock Plans",
        "documentation": "The cash inflow associated with the amount received from the stock plan during the period."
       }
      }
     },
     "auth_ref": [
      "r3"
     ]
    },
    "srt_ProductOrServiceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ProductOrServiceAxis",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Product and Service",
        "label": "Product and Service [Axis]",
        "documentation": "Information by product and service, or group of similar products and similar services."
       }
      }
     },
     "auth_ref": [
      "r78",
      "r79",
      "r80",
      "r81",
      "r82",
      "r83",
      "r87",
      "r234",
      "r676",
      "r740",
      "r741",
      "r742",
      "r743",
      "r744",
      "r745",
      "r746",
      "r838",
      "r849",
      "r852",
      "r854",
      "r872",
      "r873",
      "r946",
      "r947",
      "r948",
      "r949",
      "r952",
      "r1060",
      "r1082",
      "r1083",
      "r1084",
      "r1085",
      "r1086",
      "r1087",
      "r1088",
      "r1089",
      "r1090",
      "r1091",
      "r1092",
      "r1093",
      "r1094",
      "r1095",
      "r1096",
      "r1097",
      "r1098",
      "r1099",
      "r1100",
      "r1101",
      "r1102",
      "r1103",
      "r1104",
      "r1105",
      "r1106",
      "r1107",
      "r1108",
      "r1109",
      "r1110",
      "r1111",
      "r1112",
      "r1113",
      "r1114",
      "r1115",
      "r1116",
      "r1117",
      "r1118",
      "r1119",
      "r1120",
      "r1121",
      "r1122",
      "r1123",
      "r1207",
      "r1208",
      "r1291",
      "r1295",
      "r1296",
      "r1297",
      "r1298",
      "r1299",
      "r1300",
      "r1301",
      "r1302",
      "r1303",
      "r1304",
      "r1305",
      "r1306",
      "r1307",
      "r1308",
      "r1309",
      "r1310",
      "r1311",
      "r1312",
      "r1313",
      "r1314",
      "r1315",
      "r1316",
      "r1317",
      "r1318",
      "r1319",
      "r1320",
      "r1321",
      "r1322",
      "r1323",
      "r1324",
      "r1325",
      "r1326",
      "r1327",
      "r1328",
      "r1329",
      "r1330",
      "r1331",
      "r1332",
      "r1333"
     ]
    },
    "srt_ProductsAndServicesDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ProductsAndServicesDomain",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Product and Service",
        "label": "Product and Service [Domain]",
        "documentation": "Product or service, or a group of similar products or similar services."
       }
      }
     },
     "auth_ref": [
      "r78",
      "r79",
      "r80",
      "r81",
      "r82",
      "r83",
      "r87",
      "r234",
      "r676",
      "r740",
      "r741",
      "r742",
      "r743",
      "r744",
      "r745",
      "r746",
      "r838",
      "r849",
      "r852",
      "r854",
      "r872",
      "r873",
      "r946",
      "r947",
      "r948",
      "r949",
      "r952",
      "r1060",
      "r1082",
      "r1083",
      "r1084",
      "r1085",
      "r1086",
      "r1087",
      "r1088",
      "r1089",
      "r1090",
      "r1091",
      "r1092",
      "r1093",
      "r1094",
      "r1095",
      "r1096",
      "r1097",
      "r1098",
      "r1099",
      "r1100",
      "r1101",
      "r1102",
      "r1103",
      "r1104",
      "r1105",
      "r1106",
      "r1107",
      "r1108",
      "r1109",
      "r1110",
      "r1111",
      "r1112",
      "r1113",
      "r1114",
      "r1115",
      "r1116",
      "r1117",
      "r1118",
      "r1119",
      "r1120",
      "r1121",
      "r1122",
      "r1123",
      "r1207",
      "r1208",
      "r1291",
      "r1295",
      "r1296",
      "r1297",
      "r1298",
      "r1299",
      "r1300",
      "r1301",
      "r1302",
      "r1303",
      "r1304",
      "r1305",
      "r1306",
      "r1307",
      "r1308",
      "r1309",
      "r1310",
      "r1311",
      "r1312",
      "r1313",
      "r1314",
      "r1315",
      "r1316",
      "r1317",
      "r1318",
      "r1319",
      "r1320",
      "r1321",
      "r1322",
      "r1323",
      "r1324",
      "r1325",
      "r1326",
      "r1327",
      "r1328",
      "r1329",
      "r1330",
      "r1331",
      "r1332",
      "r1333"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant, and Equipment [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Long-Lived Asset, Class [Axis]",
        "label": "Long-Lived Asset, Class [Axis]",
        "documentation": "Information by class of long-lived asset. Includes, but is not limited to, property, plant, and equipment; right-of-use asset from finance lease; long-lived asset of lessor subject to operating lease; proved oil and gas property accounted for under successful efforts method; and long-term prepaid asset."
       }
      }
     },
     "auth_ref": [
      "r317",
      "r318",
      "r634",
      "r867",
      "r868",
      "r869",
      "r870",
      "r1187",
      "r1188",
      "r1282"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNet"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Property and Equipment, Net",
        "label": "Property, Plant, and Equipment [Text Block]",
        "documentation": "The entire disclosure for property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r48",
      "r50",
      "r51",
      "r314",
      "r315",
      "r319",
      "r320",
      "r321",
      "r327"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentGross",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails": {
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Property and equipment, cost",
        "label": "Property, Plant, and Equipment, before Accumulated Depreciation, Depletion, and Amortization",
        "documentation": "Amount, before accumulated depreciation, depletion, and amortization, of property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r122",
      "r128",
      "r317",
      "r731",
      "r1187"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Property, Plant, and Equipment [Line Items]",
        "label": "Property, Plant, and Equipment [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r317",
      "r318",
      "r634",
      "r867",
      "r868",
      "r869",
      "r870",
      "r1187",
      "r1188",
      "r1282"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentMember",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "International property and equipment",
        "label": "Property, Plant and Equipment [Member]",
        "documentation": "Physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r1204"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentNet",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 2.0
      },
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Property and equipment, net",
        "totalLabel": "Total property and equipment, net",
        "label": "Property, Plant, and Equipment, after Accumulated Depreciation, Depletion, and Amortization",
        "documentation": "Amount, after accumulated depreciation, depletion, and amortization, of property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r634",
      "r679",
      "r680",
      "r691",
      "r716",
      "r717",
      "r731",
      "r944",
      "r1192"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Property and Equipment, Net",
        "label": "Property, Plant, and Equipment [Table Text Block]",
        "documentation": "Tabular disclosure of property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r1190"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Long-Lived Asset, Class [Domain]",
        "label": "Long-Lived Asset, Class [Domain]",
        "documentation": "Class of long-lived asset. Includes, but is not limited to, property, plant, and equipment; right-of-use asset from finance lease; long-lived asset of lessor subject to operating lease; proved oil and gas property accounted for under successful efforts method; and long-term prepaid asset."
       }
      }
     },
     "auth_ref": [
      "r317",
      "r318",
      "r634",
      "r867",
      "r868",
      "r869",
      "r870",
      "r1187",
      "r1188",
      "r1282"
     ]
    },
    "us-gaap_ProvisionForDoubtfulAccounts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ProvisionForDoubtfulAccounts",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/AllowanceforCreditLossesDetails",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Provision for credit losses",
        "terseLabel": "Provision for credit losses",
        "label": "Accounts Receivable, Credit Loss Expense (Reversal)",
        "documentation": "Amount of expense (reversal of expense) for expected credit loss on accounts receivable."
       }
      }
     },
     "auth_ref": [
      "r163",
      "r166",
      "r276"
     ]
    },
    "us-gaap_PurchaseObligation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligation",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total estimated future purchases",
        "label": "Purchase Obligation",
        "documentation": "Minimum amount of purchase arrangement in which the entity has agreed to expend funds to procure goods or services from a supplier."
       }
      }
     },
     "auth_ref": [
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_PurchaseObligationDueInFourthYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligationDueInFourthYear",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": "us-gaap_PurchaseObligation",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2030",
        "label": "Purchase Obligation, to be Paid, Year Four",
        "documentation": "Amount of purchase arrangement to be paid in fourth fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_PurchaseObligationDueInNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligationDueInNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": "us-gaap_PurchaseObligation",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2027",
        "label": "Purchase Obligation, to be Paid, Year One",
        "documentation": "Amount of purchase arrangement to be paid in next fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_PurchaseObligationDueInSecondYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligationDueInSecondYear",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": "us-gaap_PurchaseObligation",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2028",
        "label": "Purchase Obligation, to be Paid, Year Two",
        "documentation": "Amount of purchase arrangement to be paid in second fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_PurchaseObligationDueInThirdYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligationDueInThirdYear",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": "us-gaap_PurchaseObligation",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "2029",
        "label": "Purchase Obligation, to be Paid, Year Three",
        "documentation": "Amount of purchase arrangement to be paid in third fiscal year following current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r1129",
      "r1133",
      "r1288"
     ]
    },
    "us-gaap_PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails": {
       "parentTag": "us-gaap_PurchaseObligation",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofRemainingPurchaseCommitmentsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Remainder of 2026",
        "label": "Purchase Obligation, to be Paid, Remainder of Fiscal Year",
        "documentation": "Amount of purchase arrangement to be paid in remainder of current fiscal year. Includes, but is not limited to, recorded and unrecorded purchase obligations, long-term purchase commitment, and short-term purchase commitment."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_PvpTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PvpTable",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pay vs Performance Disclosure",
        "label": "Pay vs Performance Disclosure [Table]"
       }
      }
     },
     "auth_ref": [
      "r1000"
     ]
    },
    "ecd_PvpTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "PvpTableTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Pay vs Performance Disclosure, Table",
        "label": "Pay vs Performance [Table Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1000"
     ]
    },
    "srt_RangeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "RangeAxis",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statistical Measurement",
        "label": "Statistical Measurement [Axis]",
        "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r74",
      "r75",
      "r76",
      "r77",
      "r84",
      "r85",
      "r86",
      "r89",
      "r90",
      "r114",
      "r116",
      "r225",
      "r333",
      "r334",
      "r335",
      "r336",
      "r422",
      "r423",
      "r454",
      "r455",
      "r456",
      "r462",
      "r466",
      "r597",
      "r643",
      "r644",
      "r645",
      "r646",
      "r648",
      "r649",
      "r650",
      "r651",
      "r657",
      "r674",
      "r747",
      "r749",
      "r757",
      "r770",
      "r771",
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r829",
      "r830",
      "r831",
      "r832",
      "r835",
      "r836",
      "r861",
      "r882",
      "r885",
      "r892",
      "r895",
      "r934",
      "r935",
      "r939",
      "r940",
      "r947",
      "r955",
      "r1203",
      "r1211",
      "r1212",
      "r1268"
     ]
    },
    "srt_RangeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "RangeMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statistical Measurement",
        "label": "Statistical Measurement [Domain]",
        "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r74",
      "r75",
      "r76",
      "r77",
      "r84",
      "r85",
      "r86",
      "r89",
      "r90",
      "r114",
      "r116",
      "r225",
      "r333",
      "r334",
      "r335",
      "r336",
      "r422",
      "r423",
      "r454",
      "r455",
      "r456",
      "r462",
      "r466",
      "r597",
      "r643",
      "r644",
      "r645",
      "r646",
      "r648",
      "r649",
      "r650",
      "r651",
      "r657",
      "r674",
      "r747",
      "r749",
      "r757",
      "r770",
      "r771",
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r829",
      "r830",
      "r831",
      "r832",
      "r835",
      "r836",
      "r861",
      "r882",
      "r885",
      "r892",
      "r895",
      "r934",
      "r935",
      "r939",
      "r940",
      "r947",
      "r955",
      "r1203",
      "r1211",
      "r1212",
      "r1268"
     ]
    },
    "ecd_RecoveryOfErrCompDisclosureLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "RecoveryOfErrCompDisclosureLineItems",
     "lang": {
      "en-us": {
       "role": {
        "label": "Recovery of Erroneously Awarded Compensation Disclosure [Line Items]"
       }
      }
     },
     "auth_ref": [
      "r968",
      "r978",
      "r988",
      "r1020"
     ]
    },
    "spsc_RecurringRevenuesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "RecurringRevenuesMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Recurring revenues",
        "label": "Recurring Revenues [Member]",
        "documentation": "Recurring revenues."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_RecurringRevenuesTimingOfBillingsLatestPeriod": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "RecurringRevenuesTimingOfBillingsLatestPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Latest timing of billings",
        "label": "Recurring Revenues Timing Of Billings Latest Period",
        "documentation": "Recurring revenues timing of billings latest period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ResearchAndDevelopmentExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Research and development",
        "label": "Research and Development Expense",
        "documentation": "Amount of expense for research and development. Includes, but is not limited to, cost for computer software product to be sold, leased, or otherwise marketed and writeoff of research and development assets acquired in transaction other than business combination or joint venture formation or both. Excludes write-down of intangible asset acquired in business combination or from joint venture formation or both, used in research and development activity."
       }
      }
     },
     "auth_ref": [
      "r467",
      "r837",
      "r850",
      "r851",
      "r859",
      "r1283"
     ]
    },
    "ecd_RestatementDateAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "RestatementDateAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Restatement Determination Date:",
        "label": "Restatement Determination Date [Axis]"
       }
      }
     },
     "auth_ref": [
      "r969",
      "r979",
      "r989",
      "r1021"
     ]
    },
    "ecd_RestatementDeterminationDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "RestatementDeterminationDate",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Restatement Determination Date",
        "label": "Restatement Determination Date"
       }
      }
     },
     "auth_ref": [
      "r970",
      "r980",
      "r990",
      "r1022"
     ]
    },
    "ecd_RestatementDoesNotRequireRecoveryTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "RestatementDoesNotRequireRecoveryTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Restatement does not require Recovery",
        "label": "Restatement Does Not Require Recovery [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r977",
      "r987",
      "r997",
      "r1029"
     ]
    },
    "us-gaap_RestrictedStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RestrictedStockMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "RSAs",
        "label": "Restricted Stock [Member]",
        "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met."
       }
      }
     },
     "auth_ref": [
      "r1141",
      "r1224",
      "r1225",
      "r1226",
      "r1227",
      "r1228",
      "r1229",
      "r1230",
      "r1231",
      "r1232",
      "r1233",
      "r1234",
      "r1236",
      "r1237",
      "r1238",
      "r1239",
      "r1240",
      "r1241",
      "r1242",
      "r1243",
      "r1244",
      "r1245",
      "r1246",
      "r1247",
      "r1248",
      "r1249",
      "r1250"
     ]
    },
    "spsc_RestrictedStockUnitsAndDeferredStockUnitsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "RestrictedStockUnitsAndDeferredStockUnitsMember",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "RSUs &amp; DSUs",
        "label": "Restricted Stock Units And Deferred Stock Units [Member]",
        "documentation": "Restricted stock units and deferred stock units member."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RetainedEarningsAccumulatedDeficit",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Retained earnings",
        "label": "Retained Earnings (Accumulated Deficit)",
        "documentation": "Amount of accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r146",
      "r148",
      "r379",
      "r679",
      "r680",
      "r688",
      "r728",
      "r754",
      "r756",
      "r765",
      "r781",
      "r944"
     ]
    },
    "us-gaap_RetainedEarningsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RetainedEarningsMember",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Retained Earnings",
        "label": "Retained Earnings [Member]",
        "documentation": "Accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r91",
      "r92",
      "r178",
      "r179",
      "r180",
      "r182",
      "r189",
      "r191",
      "r193",
      "r271",
      "r272",
      "r311",
      "r312",
      "r313",
      "r347",
      "r376",
      "r386",
      "r417",
      "r418",
      "r420",
      "r421",
      "r463",
      "r478",
      "r479",
      "r485",
      "r486",
      "r487",
      "r489",
      "r553",
      "r554",
      "r578",
      "r579",
      "r580",
      "r581",
      "r583",
      "r584",
      "r586",
      "r593",
      "r622",
      "r673",
      "r718",
      "r751",
      "r753",
      "r767",
      "r1217",
      "r1218",
      "r1336"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueFromContractWithCustomerAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue from Contract with Customer [Abstract]",
        "label": "Revenue from Contract with Customer [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueFromContractWithCustomerExcludingAssessedTax",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenues",
        "verboseLabel": "Total revenue",
        "label": "Revenue from Contract with Customer, Excluding Assessed Tax",
        "documentation": "Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise."
       }
      }
     },
     "auth_ref": [
      "r219",
      "r227",
      "r228",
      "r231",
      "r233",
      "r234",
      "r235",
      "r236",
      "r411",
      "r412",
      "r413",
      "r676",
      "r850",
      "r854"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/Revenue"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue",
        "label": "Revenue from Contract with Customer [Text Block]",
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts."
       }
      }
     },
     "auth_ref": [
      "r54",
      "r401",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r409",
      "r410",
      "r413",
      "r416"
     ]
    },
    "spsc_RevenueRecognitionLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "RevenueRecognitionLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue Recognition [Line Items]",
        "label": "Revenue Recognition [Line Items]",
        "documentation": "Revenue recognition."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_RevenueRecognitionTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "RevenueRecognitionTable",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofRevenuesbyRevenueStreamDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue Recognition [Table]",
        "label": "Revenue Recognition [Table]",
        "documentation": "Revenue Recognition."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RevenueRemainingPerformanceObligation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueRemainingPerformanceObligation",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue recognition",
        "label": "Revenue, Remaining Performance Obligation, Amount",
        "documentation": "Amount of transaction price allocated to performance obligation that has not been recognized as revenue."
       }
      }
     },
     "auth_ref": [
      "r49"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue recognition period",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Period",
        "documentation": "Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r408"
     ]
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]",
        "label": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date [Axis]",
        "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in YYYY-MM-DD format."
       }
      }
     },
     "auth_ref": [
      "r408"
     ]
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofSupplementalCashFlowInformationRelatedtoLeasesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Right-of-use assets obtained in exchange for operating lease liabilities",
        "label": "Right-of-Use Asset Obtained in Exchange for Operating Lease Liability",
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability."
       }
      }
     },
     "auth_ref": [
      "r630",
      "r943",
      "r1126"
     ]
    },
    "ecd_Rule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "Rule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Rule 10b5-1 Arrangement Adopted",
        "label": "Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1038"
     ]
    },
    "ecd_Rule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "Rule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Rule 10b5-1 Arrangement Terminated",
        "label": "Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r1038"
     ]
    },
    "us-gaap_SaleOfStockNameOfTransactionDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SaleOfStockNameOfTransactionDomain",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Sale of Stock",
        "label": "Sale of Stock [Domain]",
        "documentation": "Sale of the entity's stock, including, but not limited to, initial public offering (IPO) and private placement."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SalesRevenueNetMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SalesRevenueNetMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Revenue Benchmark",
        "label": "Revenue Benchmark [Member]",
        "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation."
       }
      }
     },
     "auth_ref": [
      "r236",
      "r1144",
      "r1145"
     ]
    },
    "srt_ScenarioForecastMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ScenarioForecastMember",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forecast",
        "label": "Forecast [Member]",
        "documentation": "Information reported for future period. Excludes information expected to be reported in future period for effect on historical fact."
       }
      }
     },
     "auth_ref": [
      "r424",
      "r1058"
     ]
    },
    "srt_ScenarioUnspecifiedDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ScenarioUnspecifiedDomain",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Scenario",
        "label": "Scenario [Domain]",
        "documentation": "Scenario reported, distinguishing information from actual fact. Includes, but is not limited to, pro forma and forecast. Excludes actual facts."
       }
      }
     },
     "auth_ref": [
      "r88",
      "r95",
      "r97",
      "r194",
      "r424",
      "r1049"
     ]
    },
    "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Anti-dilutive Common Shares Excluded from Calculation of Diluted Net Income Per Share",
        "label": "Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block]",
        "documentation": "Tabular disclosure of securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) in the future that were not included in the computation of diluted EPS because to do so would increase EPS amounts or decrease loss per share amounts for the period presented, by antidilutive securities."
       }
      }
     },
     "auth_ref": [
      "r1141"
     ]
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Schedule of Financial Instruments [Line Items]",
        "label": "Debt Securities, Available-for-Sale [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r240",
      "r241",
      "r242",
      "r243",
      "r244",
      "r245",
      "r246",
      "r247",
      "r248",
      "r249",
      "r250",
      "r251",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709",
      "r710",
      "r711",
      "r712",
      "r713",
      "r714",
      "r715"
     ]
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTable",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsNarrativeDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Business Combination [Table]",
        "label": "Business Combination [Table]",
        "documentation": "Disclosure of information about business combination. Includes, but is not limited to, recognized asset and liability."
       }
      }
     },
     "auth_ref": [
      "r296",
      "r491",
      "r492",
      "r493",
      "r494",
      "r500",
      "r501",
      "r502",
      "r503",
      "r509",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r527",
      "r528",
      "r529",
      "r530",
      "r531",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r539",
      "r545",
      "r546",
      "r547",
      "r551",
      "r885",
      "r895",
      "r1256",
      "r1258",
      "r1260"
     ]
    },
    "us-gaap_ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfCashCashEquivalentsAndShortTermInvestmentsTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Cash Equivalents",
        "label": "Cash, Cash Equivalent, and Investment [Table Text Block]",
        "documentation": "Tabular disclosure of cash, cash equivalent, and investment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleOfCollaborativeArrangementsAndNoncollaborativeArrangementTransactionsTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfCollaborativeArrangementsAndNoncollaborativeArrangementTransactionsTable",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative [Table]",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Table]",
        "documentation": "Disclosure of information about collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations."
       }
      }
     },
     "auth_ref": [
      "r555"
     ]
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/NetIncomePerShareTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Components and Computation of Basic and Diluted Net Income Per Share",
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]",
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r1140"
     ]
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table]",
        "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table]",
        "documentation": "Disclosure of information about amount recognized for award under share-based payment arrangement. Includes, but is not limited to, amount expensed in statement of income or comprehensive income, amount capitalized in statement of financial position, and corresponding reporting line item in financial statements."
       }
      }
     },
     "auth_ref": [
      "r21"
     ]
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Stock-Based Compensation Expense",
        "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]",
        "documentation": "Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement."
       }
      }
     },
     "auth_ref": [
      "r21"
     ]
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTable",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Intangible Asset, Finite-Lived [Table]",
        "label": "Intangible Asset, Finite-Lived [Table]",
        "documentation": "Disclosure of information about finite-lived intangible asset. Excludes goodwill."
       }
      }
     },
     "auth_ref": [
      "r297",
      "r304",
      "r307",
      "r308",
      "r309",
      "r677",
      "r837",
      "r839",
      "r896",
      "r897",
      "r898",
      "r899",
      "r900",
      "r901",
      "r902",
      "r903",
      "r904",
      "r905",
      "r906",
      "r907",
      "r908",
      "r909",
      "r910",
      "r911",
      "r912",
      "r913",
      "r914",
      "r915",
      "r916",
      "r917",
      "r918",
      "r919",
      "r920",
      "r921",
      "r922",
      "r1187",
      "r1338",
      "r1339",
      "r1340"
     ]
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Intangible Assets, Net",
        "label": "Intangible Asset, Finite-Lived [Table Text Block]",
        "documentation": "Tabular disclosure of finite-lived intangible asset. Excludes goodwill."
       }
      }
     },
     "auth_ref": [
      "r839",
      "r1181"
     ]
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfGoodwillTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Activity in Goodwill",
        "label": "Goodwill [Table Text Block]",
        "documentation": "Tabular disclosure of goodwill."
       }
      }
     },
     "auth_ref": [
      "r866",
      "r1164",
      "r1165",
      "r1166",
      "r1167",
      "r1168",
      "r1169",
      "r1170",
      "r1171",
      "r1172",
      "r1173",
      "r1174"
     ]
    },
    "us-gaap_ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfNewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Accounting Pronouncements Recently Adopted and Accounting Pronouncements Not Yet Adopted",
        "label": "Accounting Standards Update and Change in Accounting Principle [Table Text Block]",
        "documentation": "Tabular disclosure of changes in accounting principles, including adoption of new accounting pronouncements, that describes the new methods, amount and effects on financial statement line items."
       }
      }
     },
     "auth_ref": [
      "r15",
      "r16",
      "r1061",
      "r1137",
      "r1138",
      "r1263",
      "r1281"
     ]
    },
    "us-gaap_ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfOtherNonoperatingIncomeExpenseTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/OtherIncomeandExpenseTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Other Income, Net",
        "label": "Schedule of Other Nonoperating Income (Expense) [Table Text Block]",
        "documentation": "Tabular disclosure of the components of non-operating income or non-operating expense that may include amounts earned from dividends, interest on securities, gains (losses) on securities sold, equity earnings of unconsolidated affiliates, net gain (loss) on sales of business, interest expense and other miscellaneous income or expense items."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ScheduleOfPercentageOfPropertyAndEquipmentNetTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Percentage of Property and Equipment Net Located at Subsidiary and Office Locations Outside of Unites States",
        "label": "Schedule Of Percentage Of Property And Equipment Net [Table Text Block]",
        "documentation": "Schedule Of Percentage Of Property And Equipment Net"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfPropertyPlantAndEquipmentTable",
     "presentation": [
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPercentageofPropertyandEquipmentNetLocatedOutsideoftheUSDetails",
      "http://www.spscommerce.com/role/PropertyandEquipmentNetSummaryofPropertyandEquipmentNetDetails",
      "http://www.spscommerce.com/role/RevenueSummaryofPercentageofDomesticRevenueDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Property, Plant, and Equipment [Table]",
        "label": "Property, Plant, and Equipment [Table]",
        "documentation": "Disclosure of information about property, plant, and equipment. Includes, but is not limited to, land and land improvement; building; machinery and equipment; furniture and fixture; and work of art, historical treasure, or similar asset classified as collection."
       }
      }
     },
     "auth_ref": [
      "r317",
      "r318",
      "r634",
      "r867",
      "r868",
      "r869",
      "r870",
      "r1187",
      "r1188",
      "r1282"
     ]
    },
    "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Estimated Fair Values of Assets Acquired and Liabilities Assumed at Acquisition Date",
        "label": "Business Combination, Recognized Asset Acquired and Liability Assumed [Table Text Block]",
        "documentation": "Tabular disclosure of asset acquired and liability assumed in business combination and recognized at acquisition date."
       }
      }
     },
     "auth_ref": [
      "r1259",
      "r1261"
     ]
    },
    "us-gaap_ScheduleOfRepurchaseAgreements": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfRepurchaseAgreements",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquityTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Repurchase Agreements",
        "label": "Schedule of Repurchase Agreements [Table Text Block]",
        "documentation": "The entire disclosure for repurchase agreements."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]",
        "label": "Schedule of Share-Based Compensation Arrangements by Share-Based Payment Award [Table]",
        "documentation": "Disclosure of information about share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r428",
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r438",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r462"
     ]
    },
    "us-gaap_ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfShareBasedCompensationEmployeeStockPurchasePlanActivityTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of ESPP Activity",
        "label": "Schedule of Share-Based Compensation, Employee Stock Purchase Plan, Activity [Table Text Block]",
        "documentation": "Tabular disclosure of employee stock purchase plan activity."
       }
      }
     },
     "auth_ref": [
      "r20",
      "r1254"
     ]
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Stock Option Activity",
        "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]",
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value."
       }
      }
     },
     "auth_ref": [
      "r7",
      "r8",
      "r39"
     ]
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Fair Value Assumptions for ESPP",
        "label": "Schedule of Share-Based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]",
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions."
       }
      }
     },
     "auth_ref": [
      "r41",
      "r1254"
     ]
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Weighted Average Assumptions Used in Black-Scholes Option Pricing Model",
        "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]",
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions."
       }
      }
     },
     "auth_ref": [
      "r41"
     ]
    },
    "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Activity for PSUs, RSUs, RSAs, and DSUs",
        "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]",
        "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year."
       }
      }
     },
     "auth_ref": [
      "r1235"
     ]
    },
    "spsc_ScheduleOfStockholdersEquityLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ScheduleOfStockholdersEquityLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Schedule of Stockholders Equity [Line Items]",
        "label": "Schedule Of Stockholders Equity [Line Items]",
        "documentation": "Schedule of stockholders equity."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_ScheduleOfStockholdersEquityTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ScheduleOfStockholdersEquityTable",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Schedule of Stockholders Equity [Table]",
        "label": "Schedule Of Stockholders Equity [Table]",
        "documentation": "Schedule of stockholders equity."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ScheduleOfSupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Supplemental Balance Sheet Information Related to Operating Leases",
        "label": "Schedule Of Supplemental Balance Sheet Information Related To Leases [Table Text Block]",
        "documentation": "Schedule of supplemental balance sheet information related to leases."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ScheduleOfSupplementalCashFlowInformationRelatedToLeasesTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Supplemental Cash Flow Information Related to Leases",
        "label": "Schedule Of Supplemental Cash Flow Information Related To Leases [Table Text Block]",
        "documentation": "Schedule of supplemental cash flow information related to leases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Estimated Future Annual Amortization Expense Related to Intangible Assets",
        "label": "Intangible Asset, Finite-Lived, and Capitalized Cost, Software to be Sold, Leased, or Marketed, Estimated Amortization Expense [Table Text Block]",
        "documentation": "Tabular disclosure of estimated amortization expense for finite-lived intangible asset and capitalized cost for software to be sold, leased, or marketed, expected to be recognized for each of five succeeding fiscal years. Excludes goodwill."
       }
      }
     },
     "auth_ref": [
      "r839",
      "r1184"
     ]
    },
    "us-gaap_SchedulesOfConcentrationOfRiskByRiskFactorTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SchedulesOfConcentrationOfRiskByRiskFactorTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueTables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Summary of Percentage of Domestic Revenue",
        "label": "Schedules of Concentration of Risk, by Risk Factor [Table Text Block]",
        "documentation": "Tabular disclosure of the nature of a concentration, a benchmark to which it is compared, and the percentage that the risk is to the benchmark."
       }
      }
     },
     "auth_ref": [
      "r1143",
      "r1148"
     ]
    },
    "dei_Security12bTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "Security12bTitle",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Title of 12(b) Security",
        "label": "Title of 12(b) Security",
        "documentation": "Title of a 12(b) registered security."
       }
      }
     },
     "auth_ref": [
      "r963"
     ]
    },
    "dei_SecurityExchangeName": {
     "xbrltype": "edgarExchangeCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "SecurityExchangeName",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Security Exchange Name",
        "label": "Security Exchange Name",
        "documentation": "Name of the Exchange on which a security is registered."
       }
      }
     },
     "auth_ref": [
      "r965"
     ]
    },
    "us-gaap_SellingAndMarketingExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SellingAndMarketingExpense",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Sales and marketing",
        "label": "Selling and Marketing Expense",
        "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_SetUpFeesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "SetUpFeesMember",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Set-Up Fees",
        "label": "Set Up Fees [Member]",
        "documentation": "Set up fees."
       }
      }
     },
     "auth_ref": []
    },
    "spsc_SetUpFeesRecognizedPeriod": {
     "xbrltype": "durationItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "SetUpFeesRecognizedPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Set up fees recognized period",
        "label": "Set Up Fees Recognized Period",
        "documentation": "Set up fees recognized period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensation",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock-based compensation",
        "label": "Share-Based Payment Arrangement, Noncash Expense",
        "documentation": "Amount of noncash expense for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r4"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Vesting period",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period",
        "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition."
       }
      }
     },
     "auth_ref": [
      "r883"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Forfeited (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period",
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r447"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forfeited (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value",
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event."
       }
      }
     },
     "auth_ref": [
      "r447"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Granted (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period",
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r445"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Granted (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value",
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r445"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Beginning balance (in shares)",
        "periodEndLabel": "Ending balance (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number",
        "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date."
       }
      }
     },
     "auth_ref": [
      "r442",
      "r443"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "#",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]",
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Beginning balance (in dollars per share)",
        "periodEndLabel": "Ending balance (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value",
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options."
       }
      }
     },
     "auth_ref": [
      "r442",
      "r443"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted Average Grant Date Fair Value ($/share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAtPeriodEnd",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Vested number of units (less than) (in shares)",
        "label": "Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End",
        "documentation": "Share-Based Compensation Arrangement By Share-Based Payment Award, Equity Instruments Other Than Options, Vested At Period End"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Vested and common stock issued (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period",
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r446"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Vested and common stock issued (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value",
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement."
       }
      }
     },
     "auth_ref": [
      "r446"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Dividend yield",
        "terseLabel": "Dividend yield",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Dividend Rate",
        "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Volatility",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Volatility Rate",
        "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period."
       }
      }
     },
     "auth_ref": [
      "r454"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Risk-free interest rate",
        "terseLabel": "Risk-free interest rate",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Risk Free Interest Rate",
        "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares."
       }
      }
     },
     "auth_ref": [
      "r456"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsWeightedAverageVolatilityRate",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Volatility",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Weighted Average Volatility Rate",
        "documentation": "Rate of weighted-average expected volatility for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r454"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award [Line Items]",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r426",
      "r428",
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r438",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r462"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Shares available for grant (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant",
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable."
       }
      }
     },
     "auth_ref": [
      "r18"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Outstanding and exercisable options (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Number",
        "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan."
       }
      }
     },
     "auth_ref": [
      "r436"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted average exercise price (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price",
        "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan."
       }
      }
     },
     "auth_ref": [
      "r436"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Forfeited (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period",
        "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan."
       }
      }
     },
     "auth_ref": [
      "r440",
      "r1067",
      "r1074",
      "r1075",
      "r1214",
      "r1215"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Granted (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross",
        "documentation": "Gross number of share options (or share units) granted during the period."
       }
      }
     },
     "auth_ref": [
      "r438",
      "r1067",
      "r1074",
      "r1075",
      "r1214",
      "r1215"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted average fair value per share of options granted (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value",
        "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology."
       }
      }
     },
     "auth_ref": [
      "r448"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Beginning balance (in shares)",
        "periodEndLabel": "Ending balance (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number",
        "documentation": "Number of options outstanding, including both vested and non-vested options."
       }
      }
     },
     "auth_ref": [
      "r434",
      "r435"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Options (#)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]",
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "periodStartLabel": "Beginning balance (in dollars per share)",
        "periodEndLabel": "Ending balance (in dollars per share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price",
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan."
       }
      }
     },
     "auth_ref": [
      "r434",
      "r435"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted Average Exercise Price ($/share)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Shares purchased (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Shares Purchased for Award",
        "documentation": "Number of shares purchased for issuance under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r1252"
     ]
    },
    "spsc_ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardValuePurchasedForAward",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Amounts for shares purchased",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award, Value Purchased For Award",
        "documentation": "Share-based compensation arrangement by share-based payment award value purchased for award."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofActivityforPSUsRSUsRSAsandDSUsDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails",
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Award Type",
        "label": "Award Type [Domain]",
        "documentation": "Award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r438",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Exercised (in dollars per share)",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price",
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares."
       }
      }
     },
     "auth_ref": [
      "r439"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Forfeited (in dollars per share)",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price",
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated."
       }
      }
     },
     "auth_ref": [
      "r440"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Granted (in dollars per share)",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price",
        "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options."
       }
      }
     },
     "auth_ref": [
      "r438"
     ]
    },
    "srt_ShareRepurchaseProgramAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ShareRepurchaseProgramAxis",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share Repurchase Program",
        "label": "Share Repurchase Program [Axis]",
        "documentation": "Information by share repurchase program."
       }
      }
     },
     "auth_ref": [
      "r1219"
     ]
    },
    "srt_ShareRepurchaseProgramDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "ShareRepurchaseProgramDomain",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share Repurchase Program",
        "label": "Share Repurchase Program [Domain]",
        "documentation": "Name of share repurchase program."
       }
      }
     },
     "auth_ref": [
      "r1219"
     ]
    },
    "spsc_ShareRepurchaseProgramUnusedAndExpiredShareValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "ShareRepurchaseProgramUnusedAndExpiredShareValue",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share Value Repurchased",
        "label": "Share Repurchase Program, Unused And Expired Share, Value",
        "documentation": "Share Repurchase Program, Unused And Expired Share, Value"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofWeightedAverageAssumptionsUsedinBlackScholesOptionPricingModelDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Life (in years)",
        "terseLabel": "Life (in years)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term",
        "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r453"
     ]
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted average remaining contractual life",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted-Average Remaining Contractual Term",
        "documentation": "Weighted-average contractual term remaining for option award outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r40"
     ]
    },
    "us-gaap_SharesPaidForTaxWithholdingForShareBasedCompensation": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SharesPaidForTaxWithholdingForShareBasedCompensation",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Shares withheld for net share settlement (in shares)",
        "label": "Share-Based Payment Arrangement, Shares Withheld for Tax Withholding Obligation",
        "documentation": "Number of shares used to settle grantee's tax withholding obligation for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r1253"
     ]
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementEquityComponentsAxis",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Equity Components",
        "label": "Equity Components [Axis]",
        "documentation": "Information by component of equity."
       }
      }
     },
     "auth_ref": [
      "r91",
      "r92",
      "r119",
      "r143",
      "r144",
      "r158",
      "r159",
      "r160",
      "r178",
      "r179",
      "r180",
      "r182",
      "r189",
      "r191",
      "r193",
      "r220",
      "r271",
      "r272",
      "r311",
      "r312",
      "r313",
      "r347",
      "r371",
      "r376",
      "r377",
      "r378",
      "r381",
      "r383",
      "r386",
      "r417",
      "r418",
      "r420",
      "r421",
      "r463",
      "r478",
      "r479",
      "r485",
      "r486",
      "r487",
      "r489",
      "r553",
      "r554",
      "r578",
      "r579",
      "r580",
      "r581",
      "r582",
      "r583",
      "r584",
      "r585",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r593",
      "r616",
      "r617",
      "r618",
      "r619",
      "r620",
      "r621",
      "r622",
      "r635",
      "r673",
      "r679",
      "r680",
      "r686",
      "r687",
      "r718",
      "r734",
      "r751",
      "r752",
      "r753",
      "r767",
      "r818",
      "r1219"
     ]
    },
    "us-gaap_StatementLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementLineItems",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statement [Line Items]",
        "label": "Statement [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r120",
      "r125",
      "r126",
      "r134",
      "r136",
      "r137",
      "r141",
      "r142",
      "r143",
      "r144",
      "r148",
      "r178",
      "r179",
      "r180",
      "r220",
      "r349",
      "r350",
      "r352",
      "r354",
      "r359",
      "r371",
      "r373",
      "r374",
      "r375",
      "r376",
      "r377",
      "r378",
      "r379",
      "r380",
      "r381",
      "r383",
      "r385",
      "r386",
      "r398",
      "r622",
      "r676",
      "r679",
      "r680",
      "r685",
      "r686",
      "r687",
      "r764",
      "r768",
      "r769",
      "r772",
      "r773",
      "r774",
      "r775",
      "r776",
      "r777",
      "r780",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788",
      "r789",
      "r790",
      "r791",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r800",
      "r801",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r818",
      "r844",
      "r852",
      "r854",
      "r956",
      "r1335"
     ]
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementOfCashFlowsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statement of Cash Flows [Abstract]",
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementOfFinancialPositionAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statement of Financial Position [Abstract]",
        "label": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfFinancialPositionLocationBalanceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementOfFinancialPositionLocationBalanceAxis",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Location, Statement of Financial Position, Balance",
        "label": "Location, Statement of Financial Position, Balance [Axis]",
        "documentation": "Information by location in statement of financial position line item where disaggregated cumulative balance is reported."
       }
      }
     },
     "auth_ref": [
      "r328",
      "r561",
      "r563",
      "r564",
      "r565",
      "r566",
      "r569",
      "r570",
      "r571",
      "r572",
      "r573",
      "r574",
      "r575",
      "r607",
      "r927",
      "r928",
      "r1292",
      "r1293"
     ]
    },
    "us-gaap_StatementOfIncomeLocationBalanceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementOfIncomeLocationBalanceAxis",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockBasedCompensationExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Income Statement Location",
        "label": "Location, Statement of Income, Balance [Axis]",
        "documentation": "Information by location in statement of income line item where disaggregated amount is reported."
       }
      }
     },
     "auth_ref": [
      "r323",
      "r328",
      "r329",
      "r330",
      "r562",
      "r567",
      "r568",
      "r576",
      "r598",
      "r599",
      "r600",
      "r609",
      "r610",
      "r611",
      "r748",
      "r750",
      "r802",
      "r837",
      "r885",
      "r890",
      "r928",
      "r929",
      "r933",
      "r941",
      "r942",
      "r1255",
      "r1257",
      "r1294"
     ]
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementOfStockholdersEquityAbstract",
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statement of Stockholders' Equity [Abstract]",
        "label": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "srt_StatementScenarioAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "StatementScenarioAxis",
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Scenario",
        "label": "Scenario [Axis]",
        "documentation": "Information by scenario reported, distinguishing information from actual fact. Includes, but is not limited to, pro forma and forecast. Excludes actual facts."
       }
      }
     },
     "auth_ref": [
      "r88",
      "r95",
      "r97",
      "r194",
      "r424",
      "r1049",
      "r1050"
     ]
    },
    "us-gaap_StatementTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StatementTable",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Statement [Table]",
        "label": "Statement [Table]",
        "documentation": "Presentation of information about comprehensive income, income, other comprehensive income, financial position, cash flows, and shareholders' equity."
       }
      }
     },
     "auth_ref": [
      "r98",
      "r119",
      "r120",
      "r125",
      "r126",
      "r134",
      "r136",
      "r137",
      "r141",
      "r142",
      "r143",
      "r144",
      "r148",
      "r178",
      "r179",
      "r180",
      "r220",
      "r237",
      "r349",
      "r350",
      "r352",
      "r354",
      "r359",
      "r371",
      "r373",
      "r374",
      "r375",
      "r376",
      "r377",
      "r378",
      "r379",
      "r380",
      "r381",
      "r383",
      "r385",
      "r386",
      "r398",
      "r622",
      "r676",
      "r679",
      "r680",
      "r685",
      "r686",
      "r687",
      "r718",
      "r764",
      "r768",
      "r769",
      "r772",
      "r773",
      "r774",
      "r775",
      "r776",
      "r777",
      "r780",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788",
      "r789",
      "r790",
      "r791",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r800",
      "r801",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r818",
      "r844",
      "r852",
      "r854",
      "r956",
      "r1335"
     ]
    },
    "ecd_StkPrcOrTsrEstimationMethodTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "StkPrcOrTsrEstimationMethodTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/ErrCompDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock Price or TSR Estimation Method",
        "label": "Stock Price or TSR Estimation Method [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r972",
      "r982",
      "r992",
      "r1024"
     ]
    },
    "us-gaap_StockAppreciationRightsSARSMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockAppreciationRightsSARSMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stock Appreciation Rights (SARs)",
        "label": "Stock Appreciation Rights (SARs) [Member]",
        "documentation": "Right to receive cash or shares equal to appreciation of predetermined number of grantor's shares during predetermined time period."
       }
      }
     },
     "auth_ref": [
      "r1224",
      "r1225",
      "r1226",
      "r1227",
      "r1228",
      "r1229",
      "r1230",
      "r1231",
      "r1232",
      "r1233",
      "r1234",
      "r1236",
      "r1237",
      "r1238",
      "r1239",
      "r1240",
      "r1241",
      "r1242",
      "r1243",
      "r1244",
      "r1245",
      "r1246",
      "r1247",
      "r1248",
      "r1249",
      "r1250"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Employee stock purchase plan activity (in shares)",
        "label": "Stock Issued During Period, Shares, Employee Stock Purchase Plans",
        "documentation": "Number of shares issued during the period as a result of an employee stock purchase plan."
       }
      }
     },
     "auth_ref": [
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Shares issued pursuant to stock awards (in shares)",
        "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture",
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)."
       }
      }
     },
     "auth_ref": [
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofStockOptionActivityDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Exercised (in shares)",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period",
        "documentation": "Number of share options (or share units) exercised during the current period."
       }
      }
     },
     "auth_ref": [
      "r439",
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodSharesTreasuryStockReissued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodSharesTreasuryStockReissued",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Reissuances of treasury stock (in shares)",
        "label": "Stock Issued During Period, Shares, Treasury Stock Reissued",
        "documentation": "Number of treasury shares or units reissued. Excludes reissuance of shares or units in treasury for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r1075",
      "r1213",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodValueEmployeeStockPurchasePlan",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Employee stock purchase plan activity",
        "label": "Stock Issued During Period, Value, Employee Stock Purchase Plan",
        "documentation": "Aggregate change in value for stock issued during the period as a result of employee stock purchase plan."
       }
      }
     },
     "auth_ref": [
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodValueShareBasedCompensation",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Shares issued pursuant to stock awards",
        "label": "Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture",
        "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP)."
       }
      }
     },
     "auth_ref": [
      "r19",
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodValueTreasuryStockReissued": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockIssuedDuringPeriodValueTreasuryStockReissued",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Reissuances of treasury stock",
        "label": "Stock Issued During Period, Value, Treasury Stock Reissued",
        "documentation": "Value of treasury shares or units reissued. Excludes reissuance of shares or units in treasury for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "spsc_StockRepurchaseProgramAdditionalAuthorizedAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://www.spscommerce.com/20260630",
     "localname": "StockRepurchaseProgramAdditionalAuthorizedAmount",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquityNarrativeDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share repurchase program, additional authorized amount",
        "label": "Stock Repurchase Program, Additional Authorized Amount",
        "documentation": "Stock Repurchase Program, Additional Authorized Amount"
       }
      }
     },
     "auth_ref": []
    },
    "srt_StockRepurchaseProgramAuthorizedAmount1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/srt/2026",
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquityNarrativeDetails",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Share repurchase program, authorized amount",
        "terseLabel": "Share Value Authorized for Repurchase",
        "label": "Share Repurchase Program, Authorized, Amount",
        "documentation": "Amount authorized for purchase of share under share repurchase plan. Includes, but is not limited to, repurchase of stock and unit of ownership."
       }
      }
     },
     "auth_ref": [
      "r1219"
     ]
    },
    "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1",
     "crdr": "credit",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Share Value Available for Future Repurchase",
        "label": "Share Repurchase Program, Remaining Authorized, Amount",
        "documentation": "Amount remaining authorized for purchase of share under share repurchase plan. Includes, but is not limited to, repurchase of stock and unit of ownership."
       }
      }
     },
     "auth_ref": [
      "r1219"
     ]
    },
    "us-gaap_StockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "totalLabel": "Total stockholders\u2019 equity",
        "periodStartLabel": "Beginning balance",
        "periodEndLabel": "Ending balance",
        "label": "Equity, Attributable to Parent",
        "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r38",
      "r782",
      "r798",
      "r819",
      "r820",
      "r944",
      "r962",
      "r1078",
      "r1128",
      "r1130",
      "r1131",
      "r1161",
      "r1274",
      "r1336"
     ]
    },
    "us-gaap_StockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockholdersEquityAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stockholders' equity",
        "label": "Equity, Attributable to Parent [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockholdersEquityNoteDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "StockholdersEquityNoteDisclosureTextBlock",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquity"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Stockholders' Equity",
        "label": "Equity [Text Block]",
        "documentation": "The entire disclosure for equity."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r143",
      "r144",
      "r149",
      "r358",
      "r360",
      "r362",
      "r363",
      "r364",
      "r365",
      "r366",
      "r367",
      "r368",
      "r369",
      "r372",
      "r377",
      "r378",
      "r381",
      "r383",
      "r384",
      "r388",
      "r389",
      "r390",
      "r391",
      "r392",
      "r393",
      "r394",
      "r397",
      "r577",
      "r591",
      "r592",
      "r636",
      "r821",
      "r822",
      "r828"
     ]
    },
    "us-gaap_SubsidiarySaleOfStockAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "SubsidiarySaleOfStockAxis",
     "presentation": [
      "http://www.spscommerce.com/role/StockBasedCompensationNarrativeDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofESPPActivityDetails",
      "http://www.spscommerce.com/role/StockBasedCompensationSummaryofFairValueAssumptionsforESPPDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Sale of Stock",
        "label": "Sale of Stock [Axis]",
        "documentation": "Information by type of sale of the entity's stock."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_TabularListTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TabularListTableTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Tabular List, Table",
        "label": "Tabular List [Table Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1018"
     ]
    },
    "us-gaap_TechnologyBasedIntangibleAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TechnologyBasedIntangibleAssetsMember",
     "presentation": [
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedFairValuesofAssetsAcquiredandLiabilitiesAssumedDetails",
      "http://www.spscommerce.com/role/BusinessAcquisitionsandOtherTransactionsSummaryofEstimatedUsefulLivesforeachacquiredIntangibleAssetDetails",
      "http://www.spscommerce.com/role/GoodwillandIntangibleAssetsNetSummaryofIntangibleAssetsNetDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Developed technology",
        "netLabel": "Developed technology",
        "terseLabel": "Developed technology",
        "label": "Technology-Based Intangible Assets [Member]",
        "documentation": "Technology-based intangible assets, including, but not limited to, patented technology, unpatented technology, and developed technology rights."
       }
      }
     },
     "auth_ref": [
      "r917",
      "r1176",
      "r1177",
      "r1178",
      "r1179",
      "r1180",
      "r1182",
      "r1185",
      "r1186"
     ]
    },
    "ecd_TotalShareholderRtnAmt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TotalShareholderRtnAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Total Shareholder Return Amount",
        "label": "Total Shareholder Return Amount"
       }
      }
     },
     "auth_ref": [
      "r1010"
     ]
    },
    "ecd_TotalShareholderRtnVsPeerGroupTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TotalShareholderRtnVsPeerGroupTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Total Shareholder Return Vs Peer Group",
        "label": "Total Shareholder Return Vs Peer Group [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r1017"
     ]
    },
    "ecd_TradingArrAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TradingArrAxis",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Trading Arrangement:",
        "label": "Trading Arrangement [Axis]"
       }
      }
     },
     "auth_ref": [
      "r1037"
     ]
    },
    "ecd_TradingArrByIndTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TradingArrByIndTable",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Trading Arrangements, by Individual",
        "label": "Trading Arrangements, by Individual [Table]"
       }
      }
     },
     "auth_ref": [
      "r1039"
     ]
    },
    "dei_TradingSymbol": {
     "xbrltype": "tradingSymbolItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2026",
     "localname": "TradingSymbol",
     "presentation": [
      "http://www.spscommerce.com/role/COVER"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Trading Symbol",
        "label": "Trading Symbol",
        "documentation": "Trading symbol of an instrument as listed on an exchange."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain",
     "presentation": [
      "http://www.spscommerce.com/role/FairValueMeasurementsDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Financial Instruments",
        "label": "Financial Instruments [Domain]",
        "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms."
       }
      }
     },
     "auth_ref": [
      "r240",
      "r241",
      "r242",
      "r243",
      "r244",
      "r245",
      "r246",
      "r247",
      "r248",
      "r249",
      "r250",
      "r251",
      "r252",
      "r253",
      "r254",
      "r255",
      "r256",
      "r257",
      "r258",
      "r259",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r265",
      "r266",
      "r267",
      "r268",
      "r269",
      "r275",
      "r276",
      "r278",
      "r279",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r285",
      "r286",
      "r287",
      "r346",
      "r370",
      "r577",
      "r601",
      "r607",
      "r610",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r644",
      "r645",
      "r646",
      "r647",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668",
      "r669",
      "r670",
      "r671",
      "r672",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r707",
      "r708",
      "r709",
      "r710",
      "r711",
      "r712",
      "r713",
      "r714",
      "r715",
      "r720",
      "r735",
      "r930",
      "r932",
      "r934",
      "r935",
      "r936",
      "r937",
      "r938",
      "r939",
      "r940",
      "r945",
      "r1051",
      "r1052",
      "r1053",
      "r1054",
      "r1055",
      "r1056",
      "r1057",
      "r1157",
      "r1158",
      "r1159",
      "r1160",
      "r1266",
      "r1267",
      "r1268",
      "r1269",
      "r1270",
      "r1271",
      "r1272",
      "r1273"
     ]
    },
    "ecd_TrdArrAdoptionDate": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrAdoptionDate",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Adoption Date",
        "label": "Trading Arrangement Adoption Date"
       }
      }
     },
     "auth_ref": [
      "r1040"
     ]
    },
    "ecd_TrdArrDuration": {
     "xbrltype": "durationItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrDuration",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Arrangement Duration",
        "label": "Trading Arrangement Duration"
       }
      }
     },
     "auth_ref": [
      "r1041"
     ]
    },
    "ecd_TrdArrExpirationDate": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrExpirationDate",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Expiration Date",
        "label": "Trading Arrangement Expiration Date"
       }
      }
     },
     "auth_ref": [
      "r1041"
     ]
    },
    "ecd_TrdArrIndName": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrIndName",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Name",
        "label": "Trading Arrangement, Individual Name"
       }
      }
     },
     "auth_ref": [
      "r1039"
     ]
    },
    "ecd_TrdArrIndTitle": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrIndTitle",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Title",
        "label": "Trading Arrangement, Individual Title"
       }
      }
     },
     "auth_ref": [
      "r1039"
     ]
    },
    "ecd_TrdArrSecuritiesAggAvailAmt": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrSecuritiesAggAvailAmt",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Aggregate Available",
        "label": "Trading Arrangement, Securities Aggregate Available Amount"
       }
      }
     },
     "auth_ref": [
      "r1042"
     ]
    },
    "ecd_TrdArrTerminationDate": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "TrdArrTerminationDate",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Termination Date",
        "label": "Trading Arrangement Termination Date"
       }
      }
     },
     "auth_ref": [
      "r1040"
     ]
    },
    "us-gaap_TreasuryStockAcquiredAverageCostPerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockAcquiredAverageCostPerShare",
     "presentation": [
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyPeriodDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Average total cost per repurchased share (in dollars per share)",
        "label": "Shares Acquired, Average Cost Per Share",
        "documentation": "Total cost of shares repurchased divided by the total number of shares repurchased."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TreasuryStockCommonMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockCommonMember",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Treasury Stock",
        "label": "Treasury Stock, Common [Member]",
        "documentation": "Previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r679",
      "r680",
      "r687",
      "r1219"
     ]
    },
    "us-gaap_TreasuryStockCommonShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockCommonShares",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETSParenthetical",
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Treasury stock, at cost (in shares)",
        "periodStartLabel": "Beginning balance (in shares)",
        "periodEndLabel": "Ending balance (in shares)",
        "label": "Treasury Stock, Common, Shares",
        "documentation": "Number of previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r395",
      "r396",
      "r1284",
      "r1285",
      "r1287"
     ]
    },
    "us-gaap_TreasuryStockCommonValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockCommonValue",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDBALANCESHEETS",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofShareRepurchasePlanDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Treasury stock, at cost; 4,198,091 and 2,531,171 shares, respectively",
        "terseLabel": "Share Value Repurchased",
        "label": "Treasury Stock, Common, Value",
        "documentation": "Amount allocated to previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r395",
      "r396",
      "r398",
      "r1075",
      "r1215",
      "r1284",
      "r1285",
      "r1287"
     ]
    },
    "us-gaap_TreasuryStockSharesAcquired": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockSharesAcquired",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyPeriodDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Repurchases of common stock, net of costs (in shares)",
        "verboseLabel": "Number of shares repurchased (in shares)",
        "label": "Treasury Stock, Shares, Acquired",
        "documentation": "Number of shares that have been repurchased during the period and are being held in treasury."
       }
      }
     },
     "auth_ref": [
      "r1075",
      "r1213",
      "r1215",
      "r1217",
      "r1218",
      "r1284",
      "r1285",
      "r1286",
      "r1287"
     ]
    },
    "us-gaap_TreasuryStockValueAcquiredCostMethod": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TreasuryStockValueAcquiredCostMethod",
     "crdr": "debit",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFSTOCKHOLDERSEQUITY",
      "http://www.spscommerce.com/role/StockholdersEquitySummaryofStockRepurchaseActivitybyPeriodDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "negatedLabel": "Repurchases of common stock, net of costs",
        "verboseLabel": "Total share repurchased cost",
        "label": "Treasury Stock, Value, Acquired, Cost Method",
        "documentation": "Equity impact of the cost of common and preferred stock that were repurchased during the period. Recorded using the cost method."
       }
      }
     },
     "auth_ref": [
      "r1067",
      "r1074",
      "r1075",
      "r1213",
      "r1214",
      "r1215",
      "r1217",
      "r1218"
     ]
    },
    "us-gaap_TypeOfArrangementAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "TypeOfArrangementAxis",
     "presentation": [
      "http://www.spscommerce.com/role/RevenueSummaryofDeferredRevenueLiabilityRelatingtoSetUpFeesDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Axis]",
        "documentation": "Information by collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations."
       }
      }
     },
     "auth_ref": [
      "r555"
     ]
    },
    "ecd_UndrlygSecurityMktPriceChngPct": {
     "xbrltype": "pureItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "UndrlygSecurityMktPriceChngPct",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/AwardTimingDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Underlying Security Market Price Change",
        "label": "Underlying Security Market Price Change, Percent"
       }
      }
     },
     "auth_ref": [
      "r1036"
     ]
    },
    "us-gaap_UseOfEstimates": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "UseOfEstimates",
     "presentation": [
      "http://www.spscommerce.com/role/GeneralPolicies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Use of Estimates",
        "label": "Use of Estimates, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles."
       }
      }
     },
     "auth_ref": [
      "r46",
      "r47",
      "r221",
      "r223",
      "r224",
      "r225",
      "r694",
      "r696",
      "r856"
     ]
    },
    "us-gaap_VariableLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "VariableLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CommitmentsandContingenciesSummaryofComponentsofLeaseExpenseDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Variable lease cost",
        "label": "Variable Lease, Cost",
        "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases."
       }
      }
     },
     "auth_ref": [
      "r628",
      "r943"
     ]
    },
    "ecd_VstngDtFrValOfEqtyAwrdsGrntdAndVstdInCvrdYrMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "VstngDtFrValOfEqtyAwrdsGrntdAndVstdInCvrdYrMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year",
        "label": "Vesting Date Fair Value of Equity Awards Granted and Vested in Covered Year [Member]"
       }
      }
     },
     "auth_ref": [
      "r1006"
     ]
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "calculation": {
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Diluted (in shares)",
        "totalLabel": "Weighted average common shares outstanding, diluted (in shares)",
        "label": "Weighted Average Number of Shares Outstanding, Diluted",
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period."
       }
      }
     },
     "auth_ref": [
      "r197",
      "r213"
     ]
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "WeightedAverageNumberOfSharesOutstandingAbstract",
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Weighted average common shares used to compute net income per share",
        "verboseLabel": "Denominator",
        "label": "Weighted Average Number of Shares Outstanding, Diluted [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2026",
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "calculation": {
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://www.spscommerce.com/role/CONDENSEDCONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://www.spscommerce.com/role/NetIncomePerShareSummaryofComponentsandComputationofBasicandDilutedNetIncomePerShareDetails"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Basic (in shares)",
        "verboseLabel": "Weighted average common shares outstanding, basic (in shares)",
        "label": "Weighted Average Number of Shares Outstanding, Basic",
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period."
       }
      }
     },
     "auth_ref": [
      "r196",
      "r213"
     ]
    },
    "ecd_YrEndFrValOfEqtyAwrdsGrntdInCvrdYrOutsdngAndUnvstdMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2026",
     "localname": "YrEndFrValOfEqtyAwrdsGrntdInCvrdYrOutsdngAndUnvstdMember",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/PvpDisclosure"
     ],
     "lang": {
      "en-us": {
       "role": {
        "terseLabel": "Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested",
        "label": "Year-end Fair Value of Equity Awards Granted in Covered Year that are Outstanding and Unvested [Member]"
       }
      }
     },
     "auth_ref": [
      "r1004"
     ]
    }
   }
  }
 },
 "std_ref": {
  "r0": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "SubTopic": "230",
   "Topic": "830",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1"
  },
  "r1": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A"
  },
  "r2": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A"
  },
  "r3": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-14"
  },
  "r4": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r5": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r6": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(3)",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r7": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "SubTopic": "10",
   "Topic": "718",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r8": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "SubTopic": "10",
   "Topic": "718",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r9": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2A",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "718",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2A"
  },
  "r10": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14"
  },
  "r11": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14A"
  },
  "r12": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-5"
  },
  "r13": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "12",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-12"
  },
  "r14": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-13"
  },
  "r15": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "270",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482989/270-10-45-12"
  },
  "r16": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "270",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482989/270-10-45-13"
  },
  "r17": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "310",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/310/tableOfContent"
  },
  "r18": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r19": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r20": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r21": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r22": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-11"
  },
  "r23": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r24": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r25": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r26": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r27": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r28": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(7)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r29": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(7)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r30": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r31": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r32": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r33": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-13"
  },
  "r34": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-15"
  },
  "r35": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24"
  },
  "r36": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-25"
  },
  "r37": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r38": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 4.E)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480418/310-10-S99-2"
  },
  "r39": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r40": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Section": "50",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r41": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Section": "50",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r42": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/810/tableOfContent"
  },
  "r43": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r44": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r45": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "SubTopic": "20",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482659/740-20-45-2"
  },
  "r46": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-1"
  },
  "r47": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-1"
  },
  "r48": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477798/958-360-50-1"
  },
  "r49": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-13"
  },
  "r50": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477798/958-360-50-6"
  },
  "r51": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "SubTopic": "360",
   "Topic": "958",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477798/958-360-50-7"
  },
  "r52": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-9"
  },
  "r53": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h))",
   "SubTopic": "10",
   "Topic": "235",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r54": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/606/tableOfContent"
  },
  "r55": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "a",
   "Subparagraph": "(Instruction 5)",
   "Publisher": "SEC"
  },
  "r56": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(1)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r57": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(2)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r58": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(3)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r59": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(4)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r60": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(5)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r61": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(1)(i)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r62": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(1)(ii)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r63": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(i)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r64": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(ii)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r65": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(iii)(Instruction 5)",
   "Publisher": "SEC"
  },
  "r66": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Subparagraph": "(Instruction 5)",
   "Publisher": "SEC"
  },
  "r67": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "a",
   "Subparagraph": "(1)",
   "Publisher": "SEC"
  },
  "r68": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "a",
   "Subparagraph": "(2)",
   "Publisher": "SEC"
  },
  "r69": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "a",
   "Subparagraph": "(3)",
   "Publisher": "SEC"
  },
  "r70": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "a",
   "Subparagraph": "(4)",
   "Publisher": "SEC"
  },
  "r71": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "a",
   "Subparagraph": "(5)",
   "Publisher": "SEC"
  },
  "r72": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1406",
   "Paragraph": "c",
   "Publisher": "SEC"
  },
  "r73": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r74": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12A",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r75": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12B",
   "Paragraph": "Column A",
   "Subparagraph": "(a)",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r76": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12B",
   "Paragraph": "Column A",
   "Subparagraph": "(b)",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r77": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "14",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r78": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column A",
   "Publisher": "SEC"
  },
  "r79": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column B",
   "Publisher": "SEC"
  },
  "r80": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column C",
   "Publisher": "SEC"
  },
  "r81": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column D",
   "Publisher": "SEC"
  },
  "r82": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column E",
   "Publisher": "SEC"
  },
  "r83": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column F",
   "Publisher": "SEC"
  },
  "r84": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "29",
   "Paragraph": "Column A",
   "Footnote": "3",
   "Publisher": "SEC"
  },
  "r85": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "29",
   "Paragraph": "Column B",
   "Publisher": "SEC"
  },
  "r86": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "29",
   "Paragraph": "Column C",
   "Publisher": "SEC"
  },
  "r87": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 11",
   "Section": "L",
   "Publisher": "SEC"
  },
  "r88": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 11",
   "Section": "M",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r89": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r90": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 4",
   "Publisher": "SEC"
  },
  "r91": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "9",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-9"
  },
  "r92": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "9",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-9"
  },
  "r93": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/205/tableOfContent"
  },
  "r94": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481034/205-10-S45-5"
  },
  "r95": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481003/205-10-S50-2"
  },
  "r96": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.4-03(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480922/205-10-S99-3"
  },
  "r97": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "7",
   "Subparagraph": "(SAB Topic 1.B.2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480922/205-10-S99-7"
  },
  "r98": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483475/205-20-45-10"
  },
  "r99": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483475/205-20-45-11"
  },
  "r100": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r101": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r102": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r103": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r104": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r105": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r106": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-4B"
  },
  "r107": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5A"
  },
  "r108": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5B"
  },
  "r109": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5B"
  },
  "r110": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5C",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5C"
  },
  "r111": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5C",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5C"
  },
  "r112": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5C",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5C"
  },
  "r113": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-7"
  },
  "r114": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480868/205-20-S45-2"
  },
  "r115": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480837/205-20-S50-1"
  },
  "r116": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.Z.5.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480781/205-20-S99-2"
  },
  "r117": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480781/205-20-S99-3"
  },
  "r118": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-5"
  },
  "r119": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-11"
  },
  "r120": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-13"
  },
  "r121": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-2"
  },
  "r122": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-5"
  },
  "r123": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-6"
  },
  "r124": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-7"
  },
  "r125": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-8"
  },
  "r126": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-9"
  },
  "r127": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r128": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(13))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r129": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r130": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r131": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(16))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r132": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r133": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r134": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19)(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r135": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r136": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r137": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r138": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r139": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r140": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r141": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(27)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r142": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(27))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r143": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(28))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r144": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(29))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r145": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(3)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r146": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r147": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r148": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r149": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(31))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r150": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(32))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r151": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r152": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r153": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r154": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A"
  },
  "r155": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A"
  },
  "r156": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B"
  },
  "r157": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B"
  },
  "r158": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4"
  },
  "r159": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5"
  },
  "r160": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6"
  },
  "r161": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r162": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r163": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r164": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r165": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r166": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r167": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(o)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r168": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r169": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r170": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24"
  },
  "r171": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-4"
  },
  "r172": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-8"
  },
  "r173": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-1"
  },
  "r174": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r175": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r176": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r177": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(k)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r178": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23"
  },
  "r179": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24"
  },
  "r180": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5"
  },
  "r181": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r182": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r183": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r184": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r185": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r186": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r187": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-3"
  },
  "r188": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-4"
  },
  "r189": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6"
  },
  "r190": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7"
  },
  "r191": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7"
  },
  "r192": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-8"
  },
  "r193": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-9"
  },
  "r194": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SAB Topic 11.M.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480530/250-10-S99-5"
  },
  "r195": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/260/tableOfContent"
  },
  "r196": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-10"
  },
  "r197": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "16",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-16"
  },
  "r198": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-2"
  },
  "r199": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-22"
  },
  "r200": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-23"
  },
  "r201": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "26",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-26"
  },
  "r202": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-28A"
  },
  "r203": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "44",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-44"
  },
  "r204": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "48",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-48"
  },
  "r205": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "48",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-48"
  },
  "r206": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "51",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-51"
  },
  "r207": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "52",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-52"
  },
  "r208": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "53",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-53"
  },
  "r209": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "54",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-54"
  },
  "r210": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B"
  },
  "r211": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B"
  },
  "r212": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-7"
  },
  "r213": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r214": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r215": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-2"
  },
  "r216": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-3"
  },
  "r217": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-12"
  },
  "r218": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-15"
  },
  "r219": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "270",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1"
  },
  "r220": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "272",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483014/272-10-45-1"
  },
  "r221": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-12"
  },
  "r222": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "20",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-20"
  },
  "r223": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-4"
  },
  "r224": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-6"
  },
  "r225": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-9"
  },
  "r226": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r227": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r228": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r229": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r230": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r231": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r232": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r233": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(ee)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r234": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "40",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-40"
  },
  "r235": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41"
  },
  "r236": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "42",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-42"
  },
  "r237": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-13"
  },
  "r238": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-2"
  },
  "r239": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481962/310-10-50-4"
  },
  "r240": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r241": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r242": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(aa)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r243": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(aaa)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r244": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r245": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r246": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r247": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3"
  },
  "r248": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3"
  },
  "r249": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3"
  },
  "r250": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3"
  },
  "r251": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-3"
  },
  "r252": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r253": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r254": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(aaa)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r255": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r256": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r257": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r258": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r259": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r260": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r261": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5"
  },
  "r262": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A"
  },
  "r263": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A"
  },
  "r264": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5A"
  },
  "r265": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B"
  },
  "r266": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B"
  },
  "r267": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B"
  },
  "r268": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B"
  },
  "r269": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-5B"
  },
  "r270": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3"
  },
  "r271": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r272": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "5",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-5"
  },
  "r273": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479344/326-20-45-1"
  },
  "r274": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-11"
  },
  "r275": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r276": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r277": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r278": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-14"
  },
  "r279": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-16"
  },
  "r280": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-16"
  },
  "r281": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-16"
  },
  "r282": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-16"
  },
  "r283": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-20"
  },
  "r284": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-3C"
  },
  "r285": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3D",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-3D"
  },
  "r286": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-5"
  },
  "r287": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-5"
  },
  "r288": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479130/326-30-45-1"
  },
  "r289": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-4"
  },
  "r290": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-7"
  },
  "r291": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479106/326-30-50-9"
  },
  "r292": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480265/350-10-S45-1"
  },
  "r293": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482598/350-20-45-1"
  },
  "r294": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r295": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r296": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-4"
  },
  "r297": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-1"
  },
  "r298": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-2"
  },
  "r299": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r300": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r301": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r302": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r303": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r304": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r305": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r306": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r307": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r308": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r309": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-3"
  },
  "r310": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-5"
  },
  "r311": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482705/350-40-65-4"
  },
  "r312": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482705/350-40-65-4"
  },
  "r313": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476166/350-60-65-1"
  },
  "r314": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/360/tableOfContent"
  },
  "r315": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482130/360-10-45-13"
  },
  "r316": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482130/360-10-45-14"
  },
  "r317": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r318": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r319": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-2"
  },
  "r320": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r321": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r322": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r323": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r324": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r325": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r326": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480204/360-10-S45-2"
  },
  "r327": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.CC)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480091/360-10-S99-2"
  },
  "r328": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r329": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482017/420-10-50-1"
  },
  "r330": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.P.4.c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479823/420-10-S99-2"
  },
  "r331": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "440",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482648/440-10-50-4"
  },
  "r332": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "440",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482648/440-10-50-4"
  },
  "r333": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-4"
  },
  "r334": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9"
  },
  "r335": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r336": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r337": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r338": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r339": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r340": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r341": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r342": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r343": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r344": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r345": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r346": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1I"
  },
  "r347": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(f)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481538/470-20-65-4"
  },
  "r348": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(f)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481538/470-20-65-4"
  },
  "r349": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-1"
  },
  "r350": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-2"
  },
  "r351": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479887/480-10-S45-3"
  },
  "r352": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479857/480-10-S50-1"
  },
  "r353": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479857/480-10-S50-3"
  },
  "r354": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1"
  },
  "r355": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(01)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1"
  },
  "r356": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(01)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-1"
  },
  "r357": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3A",
   "Subparagraph": "(24)(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A"
  },
  "r358": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/505/tableOfContent"
  },
  "r359": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481142/505-10-45-2"
  },
  "r360": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r361": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r362": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r363": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r364": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r365": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r366": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-14"
  },
  "r367": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-14"
  },
  "r368": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-14"
  },
  "r369": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "16",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-16"
  },
  "r370": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-18"
  },
  "r371": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-2"
  },
  "r372": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-3"
  },
  "r373": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-4"
  },
  "r374": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-5"
  },
  "r375": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-5"
  },
  "r376": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S35",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480125/505-10-S35-1"
  },
  "r377": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-2"
  },
  "r378": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-3"
  },
  "r379": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-4"
  },
  "r380": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-8"
  },
  "r381": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480070/505-10-S50-1"
  },
  "r382": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480070/505-10-S50-6"
  },
  "r383": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1"
  },
  "r384": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "4",
   "Subparagraph": "(SAB Topic 4.C)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-4"
  },
  "r385": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SAB Topic 4.F)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-5"
  },
  "r386": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "7",
   "Subparagraph": "(SAB Topic 5.Q.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-7"
  },
  "r387": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "05",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481468/505-20-05-5"
  },
  "r388": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S25",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479982/505-20-S25-1"
  },
  "r389": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S25",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479982/505-20-S25-2"
  },
  "r390": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S25",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479982/505-20-S25-3"
  },
  "r391": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479951/505-20-S50-1"
  },
  "r392": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479951/505-20-S50-2"
  },
  "r393": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479951/505-20-S50-3"
  },
  "r394": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 1.D.2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479921/505-20-S99-1"
  },
  "r395": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "30",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481108/505-30-30-6"
  },
  "r396": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481549/505-30-45-1"
  },
  "r397": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481520/505-30-50-2"
  },
  "r398": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481520/505-30-50-4"
  },
  "r399": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479837/606-10-45-1"
  },
  "r400": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479837/606-10-45-2"
  },
  "r401": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-10"
  },
  "r402": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-11"
  },
  "r403": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r404": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r405": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r406": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r407": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r408": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-13"
  },
  "r409": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-13"
  },
  "r410": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-15"
  },
  "r411": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-4"
  },
  "r412": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5"
  },
  "r413": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-7"
  },
  "r414": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-8"
  },
  "r415": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-8"
  },
  "r416": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-9"
  },
  "r417": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479719/606-10-65-2"
  },
  "r418": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479719/606-10-65-2"
  },
  "r419": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479719/606-10-65-2"
  },
  "r420": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "3",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479719/606-10-65-3"
  },
  "r421": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "3",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479719/606-10-65-3"
  },
  "r422": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1"
  },
  "r423": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-5"
  },
  "r424": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-5"
  },
  "r425": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/718/tableOfContent"
  },
  "r426": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-1D"
  },
  "r427": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-2"
  },
  "r428": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-3"
  },
  "r429": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480454/718-10-45-1"
  },
  "r430": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r431": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r432": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r433": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r434": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r435": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r436": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r437": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r438": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r439": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r440": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r441": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r442": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r443": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r444": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r445": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r446": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r447": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r448": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r449": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r450": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r451": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r452": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r453": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r454": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r455": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r456": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r457": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(v)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r458": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r459": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r460": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r461": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r462": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r463": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "17",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480336/718-10-65-17"
  },
  "r464": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479983/718-10-S45-1"
  },
  "r465": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.F)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479830/718-10-S99-1"
  },
  "r466": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "720",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483359/720-20-50-1"
  },
  "r467": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "730",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482916/730-10-50-1"
  },
  "r468": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/740/tableOfContent"
  },
  "r469": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-4"
  },
  "r470": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-6"
  },
  "r471": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-10"
  },
  "r472": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12"
  },
  "r473": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12B"
  },
  "r474": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12C"
  },
  "r475": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-14"
  },
  "r476": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "17",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-17"
  },
  "r477": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-21"
  },
  "r478": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8"
  },
  "r479": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8"
  },
  "r480": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.5.Q1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1"
  },
  "r481": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1"
  },
  "r482": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 11.C)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-2"
  },
  "r483": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "270",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477891/740-270-50-1"
  },
  "r484": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482603/740-30-50-2"
  },
  "r485": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r486": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r487": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r488": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r489": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r490": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/805-10/tableOfContent"
  },
  "r491": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r492": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r493": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r494": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r495": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r496": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r497": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r498": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r499": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r500": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r501": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r502": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r503": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r504": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r505": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r506": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r507": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r508": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r509": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-3"
  },
  "r510": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-4"
  },
  "r511": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-5"
  },
  "r512": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-7"
  },
  "r513": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/805-20/tableOfContent"
  },
  "r514": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r515": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r516": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r517": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r518": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r519": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r520": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r521": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r522": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r523": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r524": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r525": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-2"
  },
  "r526": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-3"
  },
  "r527": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4"
  },
  "r528": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A"
  },
  "r529": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A"
  },
  "r530": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-4A"
  },
  "r531": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-5"
  },
  "r532": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-5"
  },
  "r533": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/805-30/tableOfContent"
  },
  "r534": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r535": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r536": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r537": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r538": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r539": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r540": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r541": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r542": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r543": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r544": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r545": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r546": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r547": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-2"
  },
  "r548": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-3"
  },
  "r549": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4"
  },
  "r550": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4"
  },
  "r551": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4"
  },
  "r552": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479326/805-40-45-1"
  },
  "r553": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1"
  },
  "r554": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1"
  },
  "r555": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "808",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479402/808-10-50-1"
  },
  "r556": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25"
  },
  "r557": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25"
  },
  "r558": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1B"
  },
  "r559": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3"
  },
  "r560": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3"
  },
  "r561": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4A"
  },
  "r562": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4A"
  },
  "r563": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4B"
  },
  "r564": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4B"
  },
  "r565": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4B"
  },
  "r566": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4B"
  },
  "r567": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4C",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4C"
  },
  "r568": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4D",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4D"
  },
  "r569": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EE",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EE"
  },
  "r570": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EE",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EE"
  },
  "r571": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EE",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EE"
  },
  "r572": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EE",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EE"
  },
  "r573": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EEE",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EEE"
  },
  "r574": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EEE",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EEE"
  },
  "r575": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4EEE",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4EEE"
  },
  "r576": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4F",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4F"
  },
  "r577": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-8A"
  },
  "r578": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480339/815-10-65-8"
  },
  "r579": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480339/815-10-65-8"
  },
  "r580": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480339/815-10-65-8"
  },
  "r581": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r582": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r583": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r584": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r585": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r586": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(i)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r587": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2"
  },
  "r588": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2"
  },
  "r589": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2"
  },
  "r590": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2"
  },
  "r591": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480237/815-40-50-5"
  },
  "r592": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480237/815-40-50-6"
  },
  "r593": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r594": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r595": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r596": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r597": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r598": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r599": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r600": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-3"
  },
  "r601": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6B"
  },
  "r602": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/825/tableOfContent"
  },
  "r603": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482736/825-10-45-1A"
  },
  "r604": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-10"
  },
  "r605": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11"
  },
  "r606": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11"
  },
  "r607": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28"
  },
  "r608": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28"
  },
  "r609": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-30"
  },
  "r610": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-32"
  },
  "r611": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482804/825-20-50-1"
  },
  "r612": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481839/830-10-45-17"
  },
  "r613": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482014/830-20-35-1"
  },
  "r614": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481956/830-20-45-1"
  },
  "r615": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481926/830-20-50-1"
  },
  "r616": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-17"
  },
  "r617": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r618": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r619": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r620": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r621": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481674/830-30-50-1"
  },
  "r622": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "12A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479165/842-20-35-12A"
  },
  "r623": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1"
  },
  "r624": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1"
  },
  "r625": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-5"
  },
  "r626": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r627": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r628": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r629": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r630": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r631": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r632": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r633": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-6"
  },
  "r634": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-7A"
  },
  "r635": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2"
  },
  "r636": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "855",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 1.B.3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480148/855-10-S99-1"
  },
  "r637": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r638": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r639": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r640": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r641": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r642": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r643": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r644": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r645": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r646": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r647": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(cc)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r648": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r649": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r650": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r651": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r652": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r653": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r654": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r655": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-1A"
  },
  "r656": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-1A"
  },
  "r657": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-7"
  },
  "r658": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3"
  },
  "r659": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3"
  },
  "r660": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3"
  },
  "r661": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(4)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-3"
  },
  "r662": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r663": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r664": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r665": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r666": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r667": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r668": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)(7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r669": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r670": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r671": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r672": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-4"
  },
  "r673": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-5"
  },
  "r674": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "910",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482546/910-10-50-6"
  },
  "r675": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "912",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478345/912-310-45-11"
  },
  "r676": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "924",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 11.L)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479941/924-10-S99-1"
  },
  "r677": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "926",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483154/926-20-50-5"
  },
  "r678": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "928",
   "SubTopic": "340",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478859/928-340-50-1"
  },
  "r679": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477657/942-210-S45-1"
  },
  "r680": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478478/942-210-S50-1"
  },
  "r681": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r682": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r683": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r684": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r685": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r686": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r687": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r688": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r689": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r690": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r691": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r692": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(26))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r693": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(27))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r694": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478671/942-235-S50-1"
  },
  "r695": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-05(b)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1"
  },
  "r696": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1"
  },
  "r697": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-05(b)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1"
  },
  "r698": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r699": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r700": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r701": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r702": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r703": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(ff)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r704": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(fff)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r705": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-2"
  },
  "r706": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r707": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r708": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r709": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r710": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r711": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r712": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r713": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r714": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r715": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r716": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478443/942-360-45-1"
  },
  "r717": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478451/942-360-50-1"
  },
  "r718": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "405",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477787/942-405-45-2"
  },
  "r719": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "740",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477617/942-740-50-1"
  },
  "r720": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "825",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478898/942-825-50-1"
  },
  "r721": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r722": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r723": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r724": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r725": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r726": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r727": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r728": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r729": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r730": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r731": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r732": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r733": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r734": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r735": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r736": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r737": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r738": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r739": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r740": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r741": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r742": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r743": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r744": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r745": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column F))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r746": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4E"
  },
  "r747": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r748": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r749": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r750": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(a)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-9"
  },
  "r751": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r752": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r753": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r754": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r755": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r756": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r757": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.W.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479583/944-40-S99-1"
  },
  "r758": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "740",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478822/944-740-50-1"
  },
  "r759": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "805",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478072/944-805-50-1"
  },
  "r760": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "825",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477351/944-825-50-1B"
  },
  "r761": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "825",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477351/944-825-50-1B"
  },
  "r762": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-1"
  },
  "r763": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-2"
  },
  "r764": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479886/946-10-S99-3"
  },
  "r765": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-11"
  },
  "r766": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-13"
  },
  "r767": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4"
  },
  "r768": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-6"
  },
  "r769": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477796/946-210-45-4"
  },
  "r770": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r771": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r772": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r773": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r774": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r775": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r776": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r777": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r778": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r779": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r780": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(16)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r781": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r782": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r783": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r784": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r785": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r786": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r787": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r788": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r789": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r790": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r791": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r792": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r793": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r794": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r795": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r796": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r797": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2"
  },
  "r798": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2"
  },
  "r799": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-7"
  },
  "r800": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r801": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r802": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(2)(g)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r803": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r804": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r805": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r806": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r807": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r808": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r809": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r810": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r811": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r812": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r813": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r814": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r815": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r816": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r817": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(1)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r818": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r819": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r820": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r821": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477968/946-235-50-2"
  },
  "r822": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477968/946-235-50-2"
  },
  "r823": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1"
  },
  "r824": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2"
  },
  "r825": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r826": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r827": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6"
  },
  "r828": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "505",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478448/946-505-50-6"
  },
  "r829": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "948",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478322/948-310-S50-2"
  },
  "r830": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "948",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-29(Column A)(Footnote 3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1"
  },
  "r831": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "948",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-29(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1"
  },
  "r832": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "948",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-29(Column C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479628/948-310-S99-1"
  },
  "r833": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478785/954-310-50-2"
  },
  "r834": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "440",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478522/954-440-50-1"
  },
  "r835": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "976",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477332/976-310-50-1"
  },
  "r836": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "978",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479230/978-310-50-1"
  },
  "r837": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "985",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-2"
  },
  "r838": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "13H",
   "Subparagraph": "(a)",
   "SubTopic": "40",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-13H"
  },
  "r839": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "40",
   "SubTopic": "30",
   "Topic": "350",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482640/350-30-55-40"
  },
  "r840": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483475/205-20-45-3A"
  },
  "r841": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "102",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483474/205-20-55-102"
  },
  "r842": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r843": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r844": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r845": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r846": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "8",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-8"
  },
  "r847": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "8",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-8"
  },
  "r848": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-12"
  },
  "r849": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-11"
  },
  "r850": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-14"
  },
  "r851": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-18"
  },
  "r852": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-21"
  },
  "r853": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-24"
  },
  "r854": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476153/220-40-55-4"
  },
  "r855": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "52",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-52"
  },
  "r856": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482836/275-10-55-6"
  },
  "r857": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r858": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-31"
  },
  "r859": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "48",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-48"
  },
  "r860": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "49",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-49"
  },
  "r861": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481933/310-10-55-12A"
  },
  "r862": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479294/326-20-55-12"
  },
  "r863": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479294/326-20-55-12"
  },
  "r864": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479294/326-20-55-12"
  },
  "r865": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "326",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479081/326-30-55-8"
  },
  "r866": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482548/350-20-55-24"
  },
  "r867": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "05",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482338/360-10-05-3"
  },
  "r868": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "05",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482338/360-10-05-3"
  },
  "r869": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "05",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482338/360-10-05-3"
  },
  "r870": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "05",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482338/360-10-05-3"
  },
  "r871": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "64",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481620/480-10-55-64"
  },
  "r872": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5"
  },
  "r873": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r874": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r875": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r876": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r877": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r878": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r879": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r880": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-11"
  },
  "r881": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-6"
  },
  "r882": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480547/715-80-55-8"
  },
  "r883": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r884": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "231",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482663/740-10-55-231"
  },
  "r885": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-8"
  },
  "r886": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-29"
  },
  "r887": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-29"
  },
  "r888": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-38"
  },
  "r889": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "39",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-39"
  },
  "r890": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "41",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-41"
  },
  "r891": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "42",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-42"
  },
  "r892": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "43",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-43"
  },
  "r893": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "45",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-45"
  },
  "r894": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "46",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-46"
  },
  "r895": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "47",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479303/805-10-55-47"
  },
  "r896": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14"
  },
  "r897": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14"
  },
  "r898": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14"
  },
  "r899": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14"
  },
  "r900": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-14"
  },
  "r901": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20"
  },
  "r902": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "20",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20"
  },
  "r903": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "20",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20"
  },
  "r904": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "20",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-20"
  },
  "r905": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-29"
  },
  "r906": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-29"
  },
  "r907": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r908": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r909": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r910": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r911": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r912": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r913": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r914": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r915": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r916": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "31",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-31"
  },
  "r917": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r918": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r919": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r920": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r921": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r922": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "38",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479876/805-20-55-38"
  },
  "r923": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-1"
  },
  "r924": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-2"
  },
  "r925": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "805",
   "SubTopic": "740",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478064/805-740-55-13"
  },
  "r926": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4A"
  },
  "r927": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "181",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480401/815-10-55-181"
  },
  "r928": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "182",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480401/815-10-55-182"
  },
  "r929": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "815",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "184",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480401/815-10-55-184"
  },
  "r930": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "100",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100"
  },
  "r931": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "100",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100"
  },
  "r932": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "101",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-101"
  },
  "r933": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "102",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-102"
  },
  "r934": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "103",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-103"
  },
  "r935": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r936": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r937": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r938": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r939": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r940": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r941": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482881/825-10-55-10"
  },
  "r942": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482881/825-10-55-12"
  },
  "r943": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "53",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479589/842-20-55-53"
  },
  "r944": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481372/852-10-55-10"
  },
  "r945": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481395/860-30-55-4"
  },
  "r946": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479401/944-30-55-2"
  },
  "r947": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-29F"
  },
  "r948": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "9C",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9C"
  },
  "r949": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "9E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9E"
  },
  "r950": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477548/944-605-55-11"
  },
  "r951": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477548/944-605-55-14"
  },
  "r952": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480078/944-80-55-18"
  },
  "r953": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-1"
  },
  "r954": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r955": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477439/946-210-55-1"
  },
  "r956": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477802/946-310-45-1"
  },
  "r957": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1"
  },
  "r958": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2"
  },
  "r959": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r960": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6"
  },
  "r961": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-10"
  },
  "r962": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-12"
  },
  "r963": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b"
  },
  "r964": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r965": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r966": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 10-Q",
   "Number": "240",
   "Section": "308",
   "Subsection": "a"
  },
  "r967": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "16",
   "Subsection": "J",
   "Paragraph": "a"
  },
  "r968": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1"
  },
  "r969": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i"
  },
  "r970": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "A"
  },
  "r971": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "B"
  },
  "r972": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "C"
  },
  "r973": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "D"
  },
  "r974": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "E"
  },
  "r975": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "ii"
  },
  "r976": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "1",
   "Subparagraph": "iii"
  },
  "r977": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 20-F",
   "Section": "6",
   "Subsection": "F",
   "Paragraph": "2"
  },
  "r978": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a"
  },
  "r979": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1"
  },
  "r980": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "i"
  },
  "r981": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "ii"
  },
  "r982": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "iii"
  },
  "r983": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "iv"
  },
  "r984": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "v"
  },
  "r985": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "2"
  },
  "r986": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "a",
   "Subparagraph": "3"
  },
  "r987": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 40-F",
   "Section": "19",
   "Paragraph": "b"
  },
  "r988": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a"
  },
  "r989": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1"
  },
  "r990": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "i"
  },
  "r991": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "ii"
  },
  "r992": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "iii"
  },
  "r993": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "iv"
  },
  "r994": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "1",
   "Sentence": "v"
  },
  "r995": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "2"
  },
  "r996": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "a",
   "Subparagraph": "3"
  },
  "r997": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form N-CSR",
   "Section": "18",
   "Paragraph": "b"
  },
  "r998": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r999": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v"
  },
  "r1000": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "1"
  },
  "r1001": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "ii"
  },
  "r1002": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii"
  },
  "r1003": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "B",
   "Clause": "1",
   "Subclause": "ii"
  },
  "r1004": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "i"
  },
  "r1005": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "ii"
  },
  "r1006": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "iii"
  },
  "r1007": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "iv"
  },
  "r1008": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "v"
  },
  "r1009": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1",
   "Subclause": "vi"
  },
  "r1010": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iv"
  },
  "r1011": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "vi"
  },
  "r1012": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "3"
  },
  "r1013": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "4"
  },
  "r1014": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "5",
   "Subparagraph": "i"
  },
  "r1015": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "5",
   "Subparagraph": "ii"
  },
  "r1016": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "5",
   "Subparagraph": "iii"
  },
  "r1017": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "5",
   "Subparagraph": "iv"
  },
  "r1018": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "6"
  },
  "r1019": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "6",
   "Subparagraph": "i"
  },
  "r1020": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1"
  },
  "r1021": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i"
  },
  "r1022": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "A"
  },
  "r1023": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "B"
  },
  "r1024": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "C"
  },
  "r1025": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "D"
  },
  "r1026": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "i",
   "Sentence": "E"
  },
  "r1027": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "ii"
  },
  "r1028": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "1",
   "Subparagraph": "iii"
  },
  "r1029": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "w",
   "Paragraph": "2"
  },
  "r1030": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "1"
  },
  "r1031": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2"
  },
  "r1032": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2",
   "Subparagraph": "ii",
   "Sentence": "A"
  },
  "r1033": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2",
   "Subparagraph": "ii",
   "Sentence": "C"
  },
  "r1034": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2",
   "Subparagraph": "ii",
   "Sentence": "D"
  },
  "r1035": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2",
   "Subparagraph": "ii",
   "Sentence": "E"
  },
  "r1036": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "402",
   "Subsection": "x",
   "Paragraph": "2",
   "Subparagraph": "ii",
   "Sentence": "F"
  },
  "r1037": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a"
  },
  "r1038": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "1"
  },
  "r1039": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "2",
   "Subparagraph": "A"
  },
  "r1040": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "2",
   "Subparagraph": "B"
  },
  "r1041": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "2",
   "Subparagraph": "C"
  },
  "r1042": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "2",
   "Subparagraph": "D"
  },
  "r1043": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "b",
   "Paragraph": "1"
  },
  "r1044": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Section": "402",
   "Number": "229",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "C",
   "Clause": "1"
  },
  "r1045": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "A",
   "Number": "229"
  },
  "r1046": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "B",
   "Clause": "1",
   "Number": "229"
  },
  "r1047": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Section": "402",
   "Subsection": "v",
   "Paragraph": "2",
   "Subparagraph": "iii",
   "Sentence": "B",
   "Clause": "1",
   "Subclause": "i",
   "Number": "229"
  },
  "r1048": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-T",
   "Number": "232",
   "Section": "405"
  },
  "r1049": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-10"
  },
  "r1050": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "855",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483399/855-10-50-3"
  },
  "r1051": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "a",
   "Publisher": "SEC"
  },
  "r1052": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(1)",
   "Publisher": "SEC"
  },
  "r1053": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(2)",
   "Publisher": "SEC"
  },
  "r1054": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "b",
   "Subparagraph": "(3)",
   "Publisher": "SEC"
  },
  "r1055": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(i)",
   "Publisher": "SEC"
  },
  "r1056": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(ii)",
   "Publisher": "SEC"
  },
  "r1057": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Section": "1402",
   "Paragraph": "c",
   "Subparagraph": "(2)(iii)",
   "Publisher": "SEC"
  },
  "r1058": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "11",
   "Subsection": "03",
   "Publisher": "SEC"
  },
  "r1059": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "04",
   "Subparagraph": "(a)",
   "Publisher": "SEC"
  },
  "r1060": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r1061": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "9",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-9"
  },
  "r1062": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-1"
  },
  "r1063": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-1"
  },
  "r1064": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-5A"
  },
  "r1065": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-7"
  },
  "r1066": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r1067": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-11"
  },
  "r1068": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-7"
  },
  "r1069": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480657/210-10-S50-8"
  },
  "r1070": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1071": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1072": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1073": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1074": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(28))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1075": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(29))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1076": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1077": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1078": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r1079": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4"
  },
  "r1080": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5"
  },
  "r1081": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6"
  },
  "r1082": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1083": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1084": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1085": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1086": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1087": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1088": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1089": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1090": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1091": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(j)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1092": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(k)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1093": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1094": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(m)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-21"
  },
  "r1095": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1096": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1097": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1098": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1099": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1100": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1101": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1102": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1103": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1104": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(j)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1105": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(k)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1106": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1107": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(m)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1108": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(n)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1109": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(o)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1110": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(p)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1111": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(q)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1112": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(r)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1113": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(s)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1114": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(t)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1115": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(u)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-22"
  },
  "r1116": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-30"
  },
  "r1117": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-31"
  },
  "r1118": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-32"
  },
  "r1119": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "33",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-33"
  },
  "r1120": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r1121": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r1122": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r1123": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476148/220-40-50-6"
  },
  "r1124": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r1125": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r1126": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-3"
  },
  "r1127": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483426/235-10-50-4"
  },
  "r1128": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-1"
  },
  "r1129": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480738/235-10-S50-4"
  },
  "r1130": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r1131": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r1132": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r1133": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-04(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-3"
  },
  "r1134": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23"
  },
  "r1135": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24"
  },
  "r1136": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5"
  },
  "r1137": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r1138": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-3"
  },
  "r1139": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6"
  },
  "r1140": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r1141": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r1142": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "270",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1"
  },
  "r1143": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r1144": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r1145": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r1146": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r1147": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r1148": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-20"
  },
  "r1149": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r1150": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r1151": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(ee)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r1152": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r1153": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-2"
  },
  "r1154": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481830/320-10-45-1"
  },
  "r1155": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r1156": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-2"
  },
  "r1157": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "320",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481800/320-10-50-9"
  },
  "r1158": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "321",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3"
  },
  "r1159": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "321",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3"
  },
  "r1160": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "321",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479536/321-10-50-3"
  },
  "r1161": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3"
  },
  "r1162": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r1163": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/350-20/tableOfContent"
  },
  "r1164": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1165": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1166": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1167": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1168": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1169": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1170": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1171": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1172": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r1173": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1A"
  },
  "r1174": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-2"
  },
  "r1175": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/350-30/tableOfContent"
  },
  "r1176": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482686/350-30-45-1"
  },
  "r1177": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r1178": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r1179": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r1180": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r1181": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1182": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1183": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1184": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1185": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1186": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-2"
  },
  "r1187": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482558/350-40-50-1"
  },
  "r1188": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "30",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482222/360-10-30-2"
  },
  "r1189": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482130/360-10-45-5"
  },
  "r1190": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r1191": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r1192": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r1193": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r1194": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r1195": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r1196": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r1197": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r1198": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3A"
  },
  "r1199": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3A"
  },
  "r1200": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3A"
  },
  "r1201": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3A"
  },
  "r1202": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "405",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/405-30/tableOfContent"
  },
  "r1203": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481931/410-30-50-10"
  },
  "r1204": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "420",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.P.4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479823/420-10-S99-2"
  },
  "r1205": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "440",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/440/tableOfContent"
  },
  "r1206": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/450/tableOfContent"
  },
  "r1207": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9"
  },
  "r1208": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r1209": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r1210": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r1211": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r1212": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r1213": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-2"
  },
  "r1214": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-2"
  },
  "r1215": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-3"
  },
  "r1216": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480100/505-10-S45-4"
  },
  "r1217": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480070/505-10-S50-1"
  },
  "r1218": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1"
  },
  "r1219": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481520/505-30-50-4"
  },
  "r1220": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-10"
  },
  "r1221": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5"
  },
  "r1222": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1"
  },
  "r1223": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(c)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-5"
  },
  "r1224": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1225": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1226": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1227": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1228": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1229": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1230": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1231": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1232": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1233": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1234": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1235": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1236": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1237": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1238": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1239": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1240": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1241": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1242": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1243": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1244": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1245": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1246": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1247": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1248": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1249": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1250": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(v)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1251": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1252": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r1253": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-4"
  },
  "r1254": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/718-50/tableOfContent"
  },
  "r1255": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r1256": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r1257": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-3"
  },
  "r1258": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r1259": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r1260": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r1261": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-2"
  },
  "r1262": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479581/805-30-50-4"
  },
  "r1263": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "805",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1"
  },
  "r1264": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480870/815-30-50-2"
  },
  "r1265": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r1266": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "54B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482134/820-10-35-54B"
  },
  "r1267": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r1268": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r1269": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r1270": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2E"
  },
  "r1271": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r1272": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-10"
  },
  "r1273": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-11"
  },
  "r1274": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28"
  },
  "r1275": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "830",
   "SubTopic": "230",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1"
  },
  "r1276": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r1277": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-6"
  },
  "r1278": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7"
  },
  "r1279": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7"
  },
  "r1280": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(b)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-1A"
  },
  "r1281": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "50",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481229/860-50-50-5"
  },
  "r1282": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "905",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "25",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478704/905-360-25-4"
  },
  "r1283": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "912",
   "SubTopic": "730",
   "Name": "Accounting Standards Codification",
   "Section": "25",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479532/912-730-25-1"
  },
  "r1284": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477657/942-210-S45-1"
  },
  "r1285": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478478/942-210-S50-1"
  },
  "r1286": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r1287": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r1288": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.9-06)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-2"
  },
  "r1289": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3"
  },
  "r1290": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "942",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477268/942-320-50-3A"
  },
  "r1291": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479432/944-30-50-2B"
  },
  "r1292": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477363/944-310-50-3"
  },
  "r1293": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477363/944-310-50-3"
  },
  "r1294": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477363/944-310-50-3"
  },
  "r1295": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B"
  },
  "r1296": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B"
  },
  "r1297": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4C"
  },
  "r1298": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4D",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4D"
  },
  "r1299": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4G",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4G"
  },
  "r1300": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r1301": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r1302": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r1303": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r1304": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1305": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1306": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1307": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1308": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1309": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1310": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1311": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r1312": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1313": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1314": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1315": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1316": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1317": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r1318": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r1319": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r1320": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r1321": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1322": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1323": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1324": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1325": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1326": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1327": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1328": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1329": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1330": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "605",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479032/944-605-50-1"
  },
  "r1331": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2"
  },
  "r1332": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2"
  },
  "r1333": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2"
  },
  "r1334": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4"
  },
  "r1335": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-3"
  },
  "r1336": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r1337": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r1338": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "985",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-1"
  },
  "r1339": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "985",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-1"
  },
  "r1340": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "985",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481283/985-20-50-1"
  }
 }
}
