Annual report pursuant to Section 13 and 15(d)

Fair Value Measurements - Reconciliation (Details)

v2.4.1.9
Fair Value Measurements - Reconciliation (Details) (USD $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Roll Forward]      
Balance, beginning $ (224)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs $ 1,468us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs $ 5,866us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
Gains (Losses) in Earnings 463us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInEarnings (304)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInEarnings (221)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInEarnings
Gains (Losses) in OCI 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInOtherComprehensiveIncomeLoss 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInOtherComprehensiveIncomeLoss 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationGainLossIncludedInOtherComprehensiveIncomeLoss
Purchases 823us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationPurchases 824us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationPurchases 893us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationPurchases
Sales (1,738)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSales (1,467)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSales (1,012)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSales
Issuances 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationIssues 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationIssues 0us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationIssues
Settlements (432)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSettlements (1,362)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSettlements (3,328)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationSettlements
Gross Transfers into Level 3 28us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersIntoLevel3 (10)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersIntoLevel3 (269)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersIntoLevel3
Gross Transfers out of Level 3 160us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersOutOfLevel3 627us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersOutOfLevel3 (461)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisUnobservableInputsReconciliationTransfersOutOfLevel3
Balance, ending (920)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs (224)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs 1,468us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Transfers between asset classes     900bac_FairValueMeasurementwithUnobservableInputsReconciliationRecurringBasisAssetTransfersBetweenAssetClasses
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]      
Gross Derivative Assets 984,800us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement 920,300us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement  
Gross Derivative Liabilities 981,800us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement 906,400us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement  
Level 3 | Recurring      
Fair Value, Net Derivative Asset (Liability) Measured on Recurring Basis, Unobservable Input Reconciliation [Roll Forward]      
Balance, ending (920)us-gaap_FairValueNetDerivativeAssetLiabilityMeasuredOnRecurringBasisWithUnobservableInputs
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
(224)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 6,851us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
7,277us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
8,100us-gaap_DerivativeAssetFairValueGrossAssetIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
Gross Derivative Liabilities 7,771us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
7,501us-gaap_DerivativeLiabilityFairValueGrossLiabilityIncludingNotSubjectToMasterNettingArrangement
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
6,600us-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 (35)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(64)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(114)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gains (Losses) in Earnings 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
4us-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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Sales (10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(43)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(116)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Sales 13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
54us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
136us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
80us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gross Transfers into Level 3 (9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(68)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gross Transfers out of Level 3 10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
44us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
54us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Balance, ending (36)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(35)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(64)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     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Gains (Losses) in OCI     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Sales     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Sales     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Issuances     (232)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Settlements     232us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Gross Transfers into Level 3     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Gross Transfers out of Level 3     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
Balance, ending     0us-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
(15)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(14)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Gains (Losses) in Earnings 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(4)us-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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Issuances (3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(751)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(9)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
724us-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
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Gross Transfers out of Level 3 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Balance, ending (10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(15)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 (1,990)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(2,301)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(2,943)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Gains (Losses) in Earnings 49us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(307)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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInOtherComprehensiveIncome
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Sales (169)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(358)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(290)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityPurchases
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability, Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
33us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySales
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Issuances (615)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(172)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(259)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityIssues
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Settlements 540us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
258us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
1,239us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilitySettlements
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Gross Transfers into Level 3 (1,581)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(1,331)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(2,040)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersIntoLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Gross Transfers out of Level 3 1,066us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
1,189us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
1,752us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationLiabilityTransfersOutOfLevel3
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Balance, ending (2,362)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(1,990)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(2,301)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
U.S. government and agency securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Purchases 87us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Sales (87)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Balance, ending 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_USGovernmentCorporationsAndAgenciesSecuritiesMember
   
Corporate securities, trading loans and other      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 3,559us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3,726us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
6,880us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gains (Losses) in Earnings 180us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
242us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
195us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Purchases 1,675us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3,848us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
2,798us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Sales (857)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(3,110)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(4,556)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
59us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Settlements (938)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(651)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(1,077)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gross Transfers into Level 3 1,275us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
890us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
436us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Gross Transfers out of Level 3 (1,624)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(1,445)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(950)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Balance, ending 3,270us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3,559us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
3,726us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Equity securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 386us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
545us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
544us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
74us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
31us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Purchases 104us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
96us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
201us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Sales (86)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(175)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(271)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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Settlements (16)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(100)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
27us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Gross Transfers into Level 3 146us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
70us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
90us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Gross Transfers out of Level 3 (182)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(124)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
(77)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Balance, ending 352us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
386us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
545us-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 468us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
353us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
342us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Gains (Losses) in Earnings 30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
50us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Purchases 120us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
122us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
388us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Sales (34)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(18)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(359)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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Settlements (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(36)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Gross Transfers into Level 3 11us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Gross Transfers out of Level 3 (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
(21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Balance, ending 574us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
468us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
353us-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 4,631us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
4,935us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
3,689us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Gains (Losses) in Earnings 199us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
53us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
215us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Purchases 1,643us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
2,514us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
2,574us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Sales (1,259)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(1,993)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(1,536)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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Settlements (585)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(868)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(678)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Gross Transfers into Level 3 39us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
20us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
844us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Gross Transfers out of Level 3 (2,605)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(30)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(173)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Balance, ending 2,063us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
4,631us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
4,935us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Trading Securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 9,044us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
9,559us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
11,455us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Gains (Losses) in Earnings 409us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
419us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
449us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Purchases 3,629us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
6,580us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
5,961us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Sales (2,323)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(5,296)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(6,722)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
59us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Settlements (1,558)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(1,655)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(1,733)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Gross Transfers into Level 3 1,471us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
982us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
1,370us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Gross Transfers out of Level 3 (4,413)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(1,604)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(1,221)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Balance, ending 6,259us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
9,044us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
9,559us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Agency      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning     37us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Gains (Losses) in Earnings     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Gains (Losses) in OCI     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Purchases     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Sales     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Issuances     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Settlements     (4)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Gross Transfers into Level 3     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Gross Transfers out of Level 3     (33)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Balance, ending     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageBackedSecuritiesAgencyMember
Non-agency residential      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  860us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Gains (Losses) in Earnings (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  (69)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Purchases 11us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  (306)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Gross Transfers into Level 3 270us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  (502)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Balance, ending 279us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Commercial      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning   10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
40us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Gains (Losses) in Earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Gains (Losses) in OCI   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Purchases   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Sales   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
(24)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Issuances   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Settlements   (10)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
(6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Gross Transfers into Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Gross Transfers out of Level 3   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Balance, ending   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
Non-U.S. securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 107us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gains (Losses) in Earnings (7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gains (Losses) in OCI (11)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Purchases 241us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
(1)us-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 (147)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
100us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Gross Transfers out of Level 3 (173)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Balance, ending 10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
107us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Corporate/Agency bonds      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
92us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
162us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Gains (Losses) in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
(2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Settlements 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
(39)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Gross Transfers into Level 3 93us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Gross Transfers out of Level 3 (93)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
(96)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
(27)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Balance, ending 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
92us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateandAgencyBondsMember
Other taxable securities, substantially all asset-backed securities      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 3,847us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,928us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
4,265us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Gains (Losses) in Earnings 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
23us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Gains (Losses) in OCI (8)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
15us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
26us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Purchases 154us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
1,055us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,196us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Sales 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(28)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Settlements (1,381)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(1,155)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(3,345)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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Gross Transfers out of Level 3 (954)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
(209)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Balance, ending 1,667us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,847us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
3,928us-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 806us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
1,061us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
2,648us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Gains (Losses) in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
61us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
20us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Purchases 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Sales (16)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
(133)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Settlements (235)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
(109)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
(1,535)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Gross Transfers into Level 3 36us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Gross Transfers out of Level 3   (168)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Balance, ending 599us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
806us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
1,061us-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 4,760us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
5,091us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
8,012us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Gains (Losses) in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
17us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Gains (Losses) in OCI (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
40us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
65us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Purchases 406us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
1,056us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
3,194us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Sales (16)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(491)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Issuances 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Settlements (1,763)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(1,274)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(4,931)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Gross Transfers into Level 3 399us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
100us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Gross Transfers out of Level 3 (1,220)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(269)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
(771)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Balance, ending 2,555us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
4,760us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
5,091us-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 3,057us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
2,287us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
2,744us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Gains (Losses) in Earnings 69us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
98us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
334us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
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
310us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
564us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Sales (3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(128)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(1,520)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Issuances 699us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
1,252us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Settlements (1,591)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(757)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(274)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Gross Transfers into Level 3 25us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
450us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Gross Transfers out of Level 3 (273)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(24)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
(11)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Balance, ending 1,983us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
3,057us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
2,287us-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 5,042us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
5,716us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
7,378us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Gains (Losses) in Earnings (1,231)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
1,941us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(430)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Sales (61)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(2,044)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(122)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Issuances 707us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
472us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
374us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Settlements (927)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(1,043)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(1,484)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Gross Transfers into Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Gross Transfers out of Level 3 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Balance, ending 3,530us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
5,042us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
5,716us-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 929us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
2,733us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
3,387us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Gains (Losses) in Earnings 45us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
62us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
352us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Purchases 59us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
794us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Sales (725)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(402)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(834)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Issuances 23us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Settlements (216)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(1,507)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(414)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Gross Transfers into Level 3 83us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
34us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
80us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Gross Transfers out of Level 3 (25)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(3)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
(632)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Balance, ending 173us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
929us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
2,733us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Other assets      
Fair Value, Assets Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]      
Balance, beginning 1,669us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
3,129us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
4,235us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Gains (Losses) in Earnings (98)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(288)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(54)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Gains (Losses) in OCI 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInOtherComprehensiveIncomeLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
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
46us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
109us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetPurchases
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Sales (430)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(383)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSales
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(1,039)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
270us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetIssues
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Settlements (245)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(1,019)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(381)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetSettlements
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Gross Transfers into Level 3 39us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
239us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersIntoLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Gross Transfers out of Level 3 (24)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(55)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(11)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetTransfersOutOfLevel3
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Balance, ending $ 911us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
$ 1,669us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
$ 3,129us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetValue
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember