XML 66 R65.htm IDEA: XBRL DOCUMENT v2.4.1.9
Loans and Allowances for Credit Losses, Troubled Debt Restructurings (Details) (USD $)
In Thousands, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment $ 114,350us-gaap_FinancingReceivableModificationsRecordedInvestment $ 106,281us-gaap_FinancingReceivableModificationsRecordedInvestment
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 41,719bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms 42,343bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 72,631bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms 63,938bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
Troubled Debt Restructuring, Specific allowance 285bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance 441bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
Troubled Debt Restructuring, Charge-offs 5,107us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown 1,481us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
Accruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 73,985us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
54,322us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 17,274bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
13,384bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 56,711bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
40,938bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 40,365us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
51,959us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 24,445bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
28,959bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 15,920bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
23,000bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Specific allowance 285bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
441bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Charge-offs 5,107us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
1,481us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Commercial [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 6,061us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
3,632us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 4,423bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,114bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,638bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
2,518bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Specific allowance 157bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
246bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Charge-offs 3,000us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
154us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Energy [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Services [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 1,666us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
2,235us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 706bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
852bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 960bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,383bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Specific allowance 148bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
237bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Wholesale/retail [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 3,381us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
235us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 3,284bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
89bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 97bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
146bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Specific allowance 9bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
9bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Manufacturing [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 340us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
391us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 340bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
391bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructuring, Charge-offs 3,000us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
154us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Healthcare [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Other commercial and industrial [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 674us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
771us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 93bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
173bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 581bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
598bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Commercial Real Estate [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 10,711us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
24,577us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 4,720bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
11,342bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 5,991bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
13,235bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Specific allowance 23bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
107bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Charge-offs 1,597us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
745us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Residential construction and land development [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 3,140us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
10,148us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 641bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
1,444bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 2,499bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
8,704bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Specific allowance 23bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
107bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Charge-offs 1,597us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
46us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Retail [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 3,600us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
4,359us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 2,432bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
3,141bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,168bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
1,218bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
582us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Office [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 2,324us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
5,059us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
3,872bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 2,324bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
1,187bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
117us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Multifamily [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Industrial [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Other commercial real estate [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 1,647us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
5,011us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 1,647bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
2,885bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 0bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
2,126bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Residential Mortgage [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 23,174us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
22,742us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 15,049bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
15,745bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 8,125bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
6,997bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Specific allowance 105bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
88bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Charge-offs 509us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
581us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Permanent mortgage [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 16,393us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
18,697us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 11,134bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
12,214bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 5,259bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
6,483bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Specific allowance 105bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
88bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Charge-offs 262us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
469us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortgages guaranteed by U.S. government agencies [Member] | Accruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 73,985us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
54,322us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 17,274bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
13,384bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 56,711bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
40,938bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by U.S. government agencies [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 1,597us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 179bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,418bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Home equity | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 5,184us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
4,045us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 3,736bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
3,531bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,448bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
514bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Charge-offs 247us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
112us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Consumer [Member] | Nonaccruing [Member]    
Financing Receivable, Modifications [Line Items]    
Troubled Debt Restructuring, Recorded Investment 419us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
1,008us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 253bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
758bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 166bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
250bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Charge-offs $ 1us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
$ 1us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember