Quarterly report pursuant to Section 13 or 15(d)

Fair Value Measurements - Reconciliation (Details)

v2.4.1.9
Fair Value Measurements - Reconciliation (Details) (USD $)
In Millions, unless otherwise specified
3 Months Ended
Mar. 31, 2015
Mar. 31, 2014
Dec. 31, 2014
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Roll Forward]      
Balance, beginning $ (920)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs $ (224)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs  
Gains (Losses) in Earnings (44)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInEarnings 14us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInEarnings  
Gains (Losses) in OCI (2) 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInOtherComprehensiveIncomeLoss 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInOtherComprehensiveIncomeLoss  
Purchases 56us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationPurchases 125us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationPurchases  
Sales (176)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSales (691)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSales  
Issuances 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationIssues 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationIssues  
Settlements 25us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSettlements (101)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSettlements  
Gross Transfers into Level 3 (46)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersIntoLevel3 12us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersIntoLevel3  
Gross Transfers out of Level 3 24us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersOutOfLevel3 26us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersOutOfLevel3  
Balance, ending (1,081)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs (839)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs  
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]      
Gross Derivative Assets 966,000us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement   984,800us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
Gross Derivative Liabilities 960,000us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement   981,800us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
Level 3 | Recurring      
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Roll Forward]      
Balance, beginning     (920)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
Balance, ending (1,081)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
  (920)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]      
Gross Derivative Assets 7,450us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
6,900us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
6,851us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
Gross Derivative Liabilities 8,531us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
7,700us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
7,771us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
Corporate securities, trading loans and other      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning (36)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(35)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gains (Losses) in Earnings 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Purchases 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Sales (8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Settlements   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Balance, ending (41)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(36)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Short-term borrowings      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Gains (Losses) in Earnings 5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Issuances (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Settlements 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Gross Transfers into Level 3 (4)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Gross Transfers out of Level 3 4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Balance, ending (15)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
   
Accrued expenses and other liabilities      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning (10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
   
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Balance, ending (10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
 
Long-term debt      
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning (2,362)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(1,990)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Gains (Losses) in Earnings 4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(67)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Purchases 132us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
46us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Issuances (90)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Settlements 97us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
119us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Gross Transfers into Level 3 (713)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(144)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Gross Transfers out of Level 3 126us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
204us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Balance, ending (2,806)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(1,841)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
 
Corporate securities, trading loans and other      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 3,270us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3,559us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gains (Losses) in Earnings (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
122us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Purchases 139us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
286us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Sales (95)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(354)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Settlements (435)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(238)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gross Transfers into Level 3 171us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
148us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Gross Transfers out of Level 3 (269)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(906)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Balance, ending 2,760us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
2,617us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
 
Equity securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 352us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
386us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Gains (Losses) in Earnings 3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Sales (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(29)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Settlements (5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Gross Transfers into Level 3 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
7us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Gross Transfers out of Level 3 (18)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(70)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Balance, ending 340us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
343us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
 
Non-U.S. sovereign debt      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 574us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
468us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Gains (Losses) in Earnings 85us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
55us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Gains (Losses) in OCI (2) (109)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Purchases 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
23us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Settlements (44)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Balance, ending 508us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
533us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
 
Mortgage trading loans and ABS      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 2,063us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
4,631us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Gains (Losses) in Earnings 60us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
78us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Gains (Losses) in OCI (2)   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Purchases 319us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
366us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Sales (249)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(552)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Settlements (83)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(224)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Gross Transfers into Level 3 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Gross Transfers out of Level 3 (13)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(12)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Balance, ending 2,106us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
4,287us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
 
Trading Securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 6,259us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
9,044us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Gains (Losses) in Earnings 127us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
274us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Gains (Losses) in OCI (2) (109)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Purchases 460us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
705us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Sales (345)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(941)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Settlements (567)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(468)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Gross Transfers into Level 3 189us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
155us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Gross Transfers out of Level 3 (300)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(989)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Balance, ending 5,714us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
7,780us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
 
Non-agency residential      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 279us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Gains (Losses) in Earnings (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Gains (Losses) in OCI (2) (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Purchases 21us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Settlements (9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Gross Transfers into Level 3 132us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Balance, ending 402us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
   
Non-U.S. securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
107us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gains (Losses) in Earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Settlements (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
(107)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Balance, ending 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Other taxable securities, substantially all asset-backed securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 1,667us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,847us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Gains (Losses) in OCI (2) (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
47us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Settlements (42)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(463)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Gross Transfers out of Level 3 (933)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Balance, ending 690us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,437us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
 
Tax-exempt securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 599us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
806us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Gains (Losses) in OCI (2) (3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Settlements (13)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
(25)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Gross Transfers out of Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Balance, ending 583us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
783us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
 
Available-for-sale Securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 2,555us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
4,760us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Gains (Losses) in Earnings (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Gains (Losses) in OCI (2) (7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Purchases 21us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
47us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Issuances   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Settlements (65)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(595)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Gross Transfers into Level 3 132us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Gross Transfers out of Level 3 (933)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Balance, ending 1,684us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
4,220us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
 
Loans and leases      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 1,983us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
3,057us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Gains (Losses) in Earnings 15us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
32us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Sales (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Issuances   689us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Settlements (43)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(723)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Gross Transfers into Level 3 6us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
6us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Gross Transfers out of Level 3 (6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Balance, ending 1,954us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
3,053us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
 
Mortgage servicing rights      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 3,530us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
5,042us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Gains (Losses) in Earnings (85)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(290)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(20)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Issuances 179us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
265us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Settlements (230)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(232)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Gross Transfers into Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Gross Transfers out of Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Balance, ending 3,394us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
4,765us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
 
Loans held-for-sale      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 173us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
929us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Gains (Losses) in Earnings (70)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Purchases 406us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Sales (82)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Issuances 21us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Settlements (6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(201)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Gross Transfers into Level 3 138us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Gross Transfers out of Level 3 (37)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Balance, ending 543us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
736us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
 
Other assets      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 911us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
1,669us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Gains (Losses) in Earnings 10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(60)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Gains (Losses) in OCI (2) 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Sales (31)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(269)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Settlements (9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(208)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Gross Transfers into Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Gross Transfers out of Level 3 (34)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
 
Balance, ending $ 847us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
$ 1,132us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember