Annual report pursuant to Section 13 and 15(d)

Outstanding Loans and Leases - Home Loans - Modification Programs (Details)

v2.4.1.9
Outstanding Loans and Leases - Home Loans - Modification Programs (Details) (Residential Portfolio Segment, USD $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Financing Receivable, Modifications [Line Items]      
Carrying Value $ 5,712us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2 $ 10,537us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2 $ 13,086us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
Residential Mortgage
     
Financing Receivable, Modifications [Line Items]      
Carrying Value 5,120us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
10,016us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
12,228us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
Home equity lines of credit
     
Financing Receivable, Modifications [Line Items]      
Carrying Value 592us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
521us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
858us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
Modifications under government programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 832us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
2,022us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
840us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Modifications under government programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 757us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
1,950us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
730us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Modifications under government programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 75us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
72us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
110us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Modifications under proprietary programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 567us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
3,589us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
4,096us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Modifications under proprietary programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 421us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
3,505us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
4,015us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Modifications under proprietary programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 146us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
84us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
81us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Trial modifications      
Financing Receivable, Modifications [Line Items]      
Carrying Value 3,603us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
3,497us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
4,616us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
Trial modifications | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 3,421us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
3,410us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
4,547us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
Trial modifications | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 182us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
87us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
69us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_TrialModificationsMember
Loans discharged in Chapter 7 bankruptcy      
Financing Receivable, Modifications [Line Items]      
Carrying Value 710us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
1,429us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
3,534us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
Loans discharged in Chapter 7 bankruptcy | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 521us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
1,151us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
2,936us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
Loans discharged in Chapter 7 bankruptcy | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 189us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
278us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
598us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ChapterSevenBankruptcyMember
Contractual interest rate reduction | Modifications under government programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 699us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
1,863us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
720us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Contractual interest rate reduction | Modifications under government programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 643us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
1,815us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
642us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Contractual interest rate reduction | Modifications under government programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 56us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
48us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
78us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Contractual interest rate reduction | Modifications under proprietary programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 266us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
2,839us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
3,394us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Contractual interest rate reduction | Modifications under proprietary programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 244us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
2,799us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
3,350us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Contractual interest rate reduction | Modifications under proprietary programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 22us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
40us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
44us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_ContractualInterestRateReductionMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Capitalization of past due amounts | Modifications under proprietary programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 73us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
134us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
144us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Capitalization of past due amounts | Modifications under proprietary programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 71us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
132us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
144us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Capitalization of past due amounts | Modifications under proprietary programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 2us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
2us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_CapitlizationOfPastDueAmountsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Principal and/or interest forbearance | Modifications under government programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 34us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
59us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
82us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Principal and/or interest forbearance | Modifications under government programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 16us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
35us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
51us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Principal and/or interest forbearance | Modifications under government programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 18us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
24us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
31us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Principal and/or interest forbearance | Modifications under proprietary programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 141us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
486us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
440us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Principal and/or interest forbearance | Modifications under proprietary programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 66us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
469us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
424us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Principal and/or interest forbearance | Modifications under proprietary programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 75us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
17us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
16us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_PrincipalInterestForbearanceMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Other modifications | Modifications under government programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 99us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
100us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
38us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Other modifications | Modifications under government programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 98us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
100us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
37us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Other modifications | Modifications under government programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value 1us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
1us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_GovernmentModificationsMember
Other modifications | Modifications under proprietary programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 87us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
130us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
118us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Other modifications | Modifications under proprietary programs | Residential Mortgage      
Financing Receivable, Modifications [Line Items]      
Carrying Value 40us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
105us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
97us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_ResidentialMortgageMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
Other modifications | Modifications under proprietary programs | Home equity lines of credit      
Financing Receivable, Modifications [Line Items]      
Carrying Value $ 47us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
$ 25us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember
$ 21us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_HomeEquityMember
/ bac_LoanRestructuringModificationAxis
= bac_OtherModificationsMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ProprietaryModificationsMember