XML 42 R45.htm IDEA: XBRL DOCUMENT v2.4.1.9
Loans and Allowances for Credit Losses, Troubled Debt Restructurings, Modifications (Details) (USD $)
In Thousands, unless otherwise specified
3 Months Ended
Mar. 31, 2015
Mar. 31, 2014
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period $ 21,427bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod $ 8,908bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
Troubled Debt Restructurings, Recorded Balance With Payment Default 38,056bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault 19,625bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 14,298bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
4,544bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 33,920bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
13,686bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 7,990bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,653bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 6,308bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
2,891bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 7,129bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
4,364bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 4,136bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
5,939bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 5,460bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
3,492bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 1,669bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
872bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Commercial [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
3,029bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
4,050bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Commercial [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Commercial [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Commercial [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Commercial [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
3,029bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
4,050bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Commercial [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Commercial [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
29bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Energy [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Energy [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Energy [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Energy [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Energy [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
Energy [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Energy [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Services [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,050bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Services [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Services [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Services [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Services [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,050bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Services [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Services [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Wholesale/retail [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Wholesale/retail [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Wholesale/retail [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Wholesale/retail [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Wholesale/retail [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
Wholesale/retail [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Wholesale/retail [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Manufacturing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Manufacturing [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Manufacturing [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Manufacturing [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Manufacturing [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Manufacturing [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
3,000bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Manufacturing [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Healthcare [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Healthcare [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Healthcare [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Healthcare [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Healthcare [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
Healthcare [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Healthcare [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Other commercial and industrial [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
29bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Other commercial and industrial [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Other commercial and industrial [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Other commercial and industrial [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Other commercial and industrial [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
29bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Other commercial and industrial [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Other commercial and industrial [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
29bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Commercial Real Estate [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 363bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
679bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Commercial Real Estate [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Commercial Real Estate [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Commercial Real Estate [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Commercial Real Estate [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 363bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
679bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Commercial Real Estate [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Commercial Real Estate [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Residential construction and land development [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 363bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Residential construction and land development [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Residential construction and land development [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Residential construction and land development [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Residential construction and land development [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 363bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Residential construction and land development [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,649bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
428bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Residential construction and land development [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Retail [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
473bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Retail [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Retail [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Retail [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Retail [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
473bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Retail [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Retail [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Office [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
206bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Office [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Office [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Office [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Office [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
206bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Office [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Office [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Multifamily [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Multifamily [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Multifamily [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Multifamily [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Multifamily [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
Multifamily [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Multifamily [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Industrial [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Industrial [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Industrial [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Industrial [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Industrial [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
Industrial [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Industrial [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Other commercial real estate [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Other commercial real estate [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Other commercial real estate [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Other commercial real estate [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Other commercial real estate [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Other commercial real estate [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Other commercial real estate [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Residential Mortgage [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 16,715bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
5,415bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 37,669bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
14,851bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Residential Mortgage [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 14,298bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
4,544bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 33,920bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
13,686bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Residential Mortgage [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 7,990bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,653bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Residential Mortgage [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 6,308bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
2,891bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Residential Mortgage [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 2,417bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
871bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 3,749bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
1,165bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Residential Mortgage [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 811bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
64bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Residential Mortgage [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 1,606bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
807bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortage [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 1,281bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
525bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 2,383bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
445bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortage [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortage [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent mortage [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortage [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 1,281bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
525bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 2,383bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
445bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortage [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 659bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
64bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent mortage [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 622bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
461bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortgages guaranteed by US govenment agencies [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 14,440bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
4,544bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 34,593bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
13,979bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 14,298bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
4,544bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 33,920bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
13,686bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 7,990bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,653bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 6,308bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
2,891bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 142bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 673bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
293bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent mortgages guaranteed by US govenment agencies [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 142bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Home equity {Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 994bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
346bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 693bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
427bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Home equity {Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Home equity {Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Home equity {Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Home equity {Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 994bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
346bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 693bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
427bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Home equity {Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 152bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Home equity {Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 842bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
346bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Consumer [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 63bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
36bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 24bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
45bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Consumer [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Consumer [Member] | Accruing [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Consumer [Member] | Accruing [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Consumer [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 63bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
36bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 24bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
45bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Consumer [Member] | Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Consumer [Member] | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period $ 63bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
$ 36bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember