XML 94 R66.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
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period $ 44,210bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod $ 36,021bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
Troubled Debt Restructurings, Recorded Balance With Payment Default 34,607bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault 30,706bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 32,679bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
24,063bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 29,585bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
23,918bokf_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 15,386bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
11,545bokf_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 17,293bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
12,518bokf_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 11,531bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
11,958bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 5,022bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
6,788bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
Nonaccrual [Member] | Interest Rate 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
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
214bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
Nonaccrual [Member] | Payment Stream Modification [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,243bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
6,355bokf_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 7,288bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
5,389bokf_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 3,738bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,667bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 13bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,635bokf_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 3,738bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,667bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 13bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
1,635bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
Commercial [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
139bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 3,657bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,471bokf_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 81bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
57bokf_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] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_EnergyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
1,080bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
1,080bokf_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
1,080bokf_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,080bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
Services [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ServicesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
1,080bokf_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 3,261bokf_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 3,261bokf_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] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_WholesaleAndRetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 3,261bokf_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
391bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
391bokf_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
391bokf_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
391bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
Manufacturing [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_ManufacturingMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
391bokf_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] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_HealthcareMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 477bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
196bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 13bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
164bokf_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 477bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
196bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 13bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
164bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
Other commercial and industrial [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
139bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 396bokf_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 81bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialAndIndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
57bokf_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 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
3,822bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
3,822bokf_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 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
3,822bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
3,822bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
Commercial Real Estate [Member] | Nonaccrual [Member] | Interest Rate 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_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
= us-gaap_CommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
3,822bokf_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 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_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 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_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] | Interest Rate 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_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_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
486bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
486bokf_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
486bokf_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
486bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
Retail [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_RetailMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
486bokf_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
2,819bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
2,819bokf_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
2,819bokf_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
2,819bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
Office [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OfficeMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
2,819bokf_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] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_MultifamilyMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_IndustrialMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
517bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
517bokf_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
517bokf_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
517bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
Other commercial real estate [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_OtherCommercialRealEstateMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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
517bokf_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 40,396bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
29,819bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 34,569bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
25,094bokf_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 32,679bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
24,063bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 29,585bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
23,918bokf_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 15,386bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
11,545bokf_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 17,293bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
12,518bokf_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 7,717bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
5,756bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 4,984bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
1,176bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Residential Mortgage [Member] | Nonaccrual [Member] | Interest Rate 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_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 586bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,062bokf_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 7,131bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
4,694bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortgage [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,124bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
2,956bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 2,836bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
586bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortgage [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 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 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 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 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 mortgage [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 4,124bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
2,956bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 2,836bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
586bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
Permanent mortgage [Member] | Nonaccrual [Member] | Interest Rate 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_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
Permanent 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 586bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
1,062bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent 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 3,538bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
1,894bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentResidentialMortgageMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortgages guaranteed by U.S. government agencies [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 33,738bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
24,063bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 30,632bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
23,918bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by U.S. government agencies [Member] | Accruing [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 32,679bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
24,063bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 29,585bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
23,918bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by U.S. government 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 15,386bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
11,545bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Permanent mortgages guaranteed by U.S. government 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 17,293bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
12,518bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_FinancingReceivablesAccruingMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
Permanent mortgages guaranteed by U.S. government agencies [Member] | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 1,059bokf_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 1,047bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
0bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
Permanent mortgages guaranteed by U.S. government agencies [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bokf_PermanentMortgagesGuaranteedByUsGovernmentAgenciesMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
Permanent mortgages guaranteed by U.S. government 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 U.S. government 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 1,059bokf_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    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 2,534bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
2,800bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 1,101bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
590bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Home equity | 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 | 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 | 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 | Nonaccrual [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 2,534bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
2,800bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 1,101bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
590bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Home equity | Nonaccrual [Member] | Interest Rate 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_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
Home equity | 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_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
0bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_PaymentStreamModificationMember
Home equity | Nonaccrual [Member] | Combination & Other Modifications [Member]    
Accounts, Notes, Loans and Financing Receivable [Line Items]    
Troubled Debt Restructurings, Recorded Balance Modified During The Period 2,534bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
2,800bokf_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 76bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
713bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 25bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
155bokf_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 76bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
713bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Troubled Debt Restructurings, Recorded Balance With Payment Default 25bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
155bokf_TroubledDebtRestructuringsRecordedBalanceWithPaymentDefault
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
Consumer [Member] | Nonaccrual [Member] | Interest Rate 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_InterestRateModificationMember
75bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_InterestRateModificationMember
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 $ 76bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember
$ 638bokf_TroubledDebtRestructuringsRecordedBalanceModifiedDuringPeriod
/ bokf_AccruingStatusOfFinancingReceivablesAxis
= bokf_NonaccrualFinancingReceivableMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ bokf_TroubledDebtRestructuringTypeOfConcessionAxis
= bokf_CombinationOtherModificationsMember