XML 34 R44.htm IDEA: XBRL DOCUMENT v2.4.1.9
Loans and Allowances for Credit Losses, Troubled Debt Restructurings (Details) (USD $)
In Thousands, unless otherwise specified
3 Months Ended
Mar. 31, 2015
Mar. 31, 2014
Dec. 31, 2014
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment $ 122,609us-gaap_FinancingReceivableModificationsRecordedInvestment $ 109,754us-gaap_FinancingReceivableModificationsRecordedInvestment $ 114,350us-gaap_FinancingReceivableModificationsRecordedInvestment
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 53,578bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms 45,941bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms 41,719bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 69,031bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms 63,813bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms 72,631bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
Troubled Debt Restructuring, Specific allowance 259bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance 3,404bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance 285bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
Troubled Debt Restructuring, Charge-offs 33us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown 289us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown  
Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 42,384us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
54,247us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
40,365us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 29,095bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
30,292bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
24,445bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 13,289bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
23,955bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
15,920bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Specific allowance 259bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
3,404bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
285bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructuring, Charge-offs 33us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
289us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
 
Commercial [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 5,802us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
6,152us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
6,061us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 4,230bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,412bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
4,423bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,572bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
4,740bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,638bokf_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
3,157bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
157bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
 
Energy [Member] | Nonaccrual [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
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
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
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
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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 1,617us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,811us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,666us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 687bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
761bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
706bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 930bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,050bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
960bokf_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
148bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
148bokf_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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 3,224us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
207us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
3,381us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 3,131bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
73bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
3,284bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 93bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
134bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
97bokf_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
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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 325us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
3,384us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
340us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 325bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
384bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
340bokf_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
3,000bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0bokf_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
3,000bokf_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 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
 
Healthcare [Member] | Nonaccrual [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
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
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
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
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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 636us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
750us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
674us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 87bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
194bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
93bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 549bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
556bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
581bokf_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
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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 13,615us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
24,070us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
10,711us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 8,291bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
11,548bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
4,720bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 5,324bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
12,522bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
5,991bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
162bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
23bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
67us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
 
Residential construction and land development [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 7,234us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
10,083us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
3,140us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 5,724bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
1,839bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
641bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,510bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
8,244bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
2,499bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Specific allowance 0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
162bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
23bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructuring, Charge-offs 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
 
Retail [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 3,543us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
4,140us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
3,600us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 1,384bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
2,584bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
2,432bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 2,159bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
1,556bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
1,168bokf_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
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
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
 
Office [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 1,364us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
5,029us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
2,324us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 182bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
3,848bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,182bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
1,181bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
2,324bokf_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
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
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
 
Multifamily [Member] | Nonaccrual [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
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
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
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
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] | Nonaccrual [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
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
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
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
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] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 1,474us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
4,818us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
1,647us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 1,001bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
3,277bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
1,647bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 473bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
1,541bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_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
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
67us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
 
Residential Mortgage [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 22,557us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
23,266us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
23,174us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 16,320bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
16,749bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
15,049bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 6,237bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
6,517bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
8,125bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Specific allowance 102bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
85bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
105bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructuring, Charge-offs 29us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
222us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
 
Permanent mortage [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 15,680us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
18,755us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
16,393us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 11,667bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
13,117bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
11,134bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 4,013bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
5,638bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
5,259bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Specific allowance 102bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
85bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
105bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructuring, Charge-offs 5us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
208us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
 
Permanent mortgages guaranteed by US govenment agencies [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 1,579us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
474us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
1,597us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 320bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
181bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
179bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 1,259bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
293bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
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
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
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
0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
 
Permanent mortgages guaranteed by US govenment agencies [Member] | Accruing [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 80,225us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
55,507us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
73,985us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 24,483bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
15,649bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
17,274bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 55,742bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
39,858bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
56,711bokf_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
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
 
Home equity {Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 5,298us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
4,037us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
5,184us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 4,333bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
3,451bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
3,736bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 965bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
586bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
1,448bokf_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
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructuring, Charge-offs 24us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
14us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
 
Consumer [Member] | Nonaccrual [Member]      
Financing Receivable, Modifications [Line Items]      
Troubled Debt Restructuring, Recorded Investment 410us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
759us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
419us-gaap_FinancingReceivableModificationsRecordedInvestment
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Performing in Accordance With Modified Terms 254bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
583bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
253bokf_TroubledDebtFinancingReceivableModificationPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Not Performing in Accordance With Modified Terms 156bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
176bokf_TroubledDebtFinancingReceivableModificationNotPerformingAccordingToModifiedTerms
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
166bokf_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
0bokf_TroubledDebtRestructuringLoansAndLeasesReceivableSpecificAllowance
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructuring, Charge-offs $ 4us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
$ 0us-gaap_FinancingReceivablesImpairedTroubledDebtRestructuringWriteDown
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember