Quarterly report pursuant to Section 13 or 15(d)

Outstanding Loans and Leases - Past Due (Details)

v2.4.1.9
Outstanding Loans and Leases - Past Due (Details) (USD $)
Mar. 31, 2015
Dec. 31, 2014
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due $ 5,423,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue $ 5,918,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
60-89 Days Past Due 2,525,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue 2,749,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
90 Days or More Past Due 17,061,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue 19,754,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
Total Past Due 30 Days or More 25,009,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue 28,421,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
Total Current or Less Than 30 Days Past Due 824,942,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue 823,520,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
Carrying value gross of valuation allowance 19,539,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality 20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
Loans and leases, measured at fair value 8,466,000,000us-gaap_LoansReceivableFairValueDisclosure 8,681,000,000us-gaap_LoansReceivableFairValueDisclosure
Total Outstandings 877,956,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome 881,391,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
Percentage outstanding, 30-59 days past due 0.62%bac_FinancingReceivableRecordedInvestment30to59DaysPastDuePercentageofTotalOutstanding 0.67%bac_FinancingReceivableRecordedInvestment30to59DaysPastDuePercentageofTotalOutstanding
Percentage outstanding, 60-90 days past due 0.29%bac_FinancingReceivableRecordedInvestment60to90DaysPastDuePercentageofTotalOutstanding 0.31%bac_FinancingReceivableRecordedInvestment60to90DaysPastDuePercentageofTotalOutstanding
Percentage outstanding, Equal to Greater than 90 days past due 1.94%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding 2.24%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding
Percentage outstanding, 30 days or more past due 2.85%bac_FinancingReceivableRecordedInvestment30DaysorMorePastDuePercentageofTotalOutstanding 3.22%bac_FinancingReceivableRecordedInvestment30DaysorMorePastDuePercentageofTotalOutstanding
Percentage outstanding, current or less than 30 days past due 93.96%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding 93.44%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
Percentage outstanding, purchase credit-impaired 2.23%bac_FinancingReceivableAcquiredwithDeterioratedCreditQualityPercentageofTotalOutstanding 2.36%bac_FinancingReceivableAcquiredwithDeterioratedCreditQualityPercentageofTotalOutstanding
Percentage outstanding, loans accounted for under the fair value option 0.96%bac_LoansReceivableFairValueDisclosurePercentageofTotalOutstanding 0.98%bac_LoansReceivableFairValueDisclosurePercentageofTotalOutstanding
Percentage outstanding, total outstanding 100.00%bac_LoansandLeasesReceivableNetofDeferredIncomePercentageofTotalOutstanding 100.00%bac_LoansandLeasesReceivableNetofDeferredIncomePercentageofTotalOutstanding
Federal National Mortgage Association Certificates and Obligations (FNMA) and Federal Home Loan Mortgage Corporation Certificates and Obligations (FHLMC) | Residential Mortgage    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Unpaid principal balance of loans covered by protection agreement 12,300,000,000bac_LongTermCreditProtectionAgreementsAmountCovered
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ us-gaap_InvestmentTypeAxis
= bac_FederalNationalMortgageAssociationCertificatesandObligationsFNMAandFederalHomeLoanMortgageCorporationCertificatesandObligationsFHLMCMember
17,200,000,000bac_LongTermCreditProtectionAgreementsAmountCovered
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
/ us-gaap_InvestmentTypeAxis
= bac_FederalNationalMortgageAssociationCertificatesandObligationsFNMAandFederalHomeLoanMortgageCorporationCertificatesandObligationsFHLMCMember
Other Loans | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 743,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_OtherLoansMember
 
Nonperforming Financing Receivable | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Current or Less Than 30 Days Past Due 27,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
27,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
Consumer Portfolio Segment    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 4,784,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
5,246,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
60-89 Days Past Due 2,314,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
2,492,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
90 Days or More Past Due 16,557,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
19,012,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Total Past Due 30 Days or More 23,655,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
26,750,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Total Current or Less Than 30 Days Past Due 429,233,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
438,974,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Carrying value gross of valuation allowance 19,539,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Loans and leases, measured at fair value 2,055,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
2,077,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Total Outstandings 474,482,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
488,570,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Consumer Portfolio Segment | Residential Mortgage    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Loans and leases, measured at fair value 1,900,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
1,900,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialMortgageMember
Consumer Portfolio Segment | Home equity    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Loans and leases, measured at fair value 205,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
196,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Consumer Portfolio Segment | Carrying Value    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 472,427,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
486,493,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Consumer Portfolio Segment | Estimate of Fair Value Measurement    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 2,055,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
2,077,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Consumer Real Estate    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Carrying value gross of valuation allowance 19,539,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Loans and leases, measured at fair value 2,100,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
2,100,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Consumer Real Estate | Core Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 1,727,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
1,847,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
60-89 Days Past Due 695,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
700,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
90 Days or More Past Due 5,000,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
5,561,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
Total Past Due 30 Days or More 7,422,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
8,108,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 149,466,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
154,112,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
Total Outstandings 156,888,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
162,220,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
Consumer Real Estate | Core Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 225,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
218,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
60-89 Days Past Due 119,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
105,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
90 Days or More Past Due 754,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
744,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
Total Past Due 30 Days or More 1,098,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
1,067,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 49,931,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
50,820,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
Total Outstandings 51,029,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
51,887,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
Consumer Real Estate | Legacy Assets and Servicing Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 1,764,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
2,008,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
60-89 Days Past Due 919,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
1,060,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
90 Days or More Past Due 8,697,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
10,513,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Total Past Due 30 Days or More 11,380,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
13,581,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 25,472,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
25,244,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Carrying value gross of valuation allowance 14,185,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
15,152,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Total Outstandings 36,852,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
38,825,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Consumer Real Estate | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 346,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
374,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
60-89 Days Past Due 174,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
174,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
90 Days or More Past Due 1,169,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
1,166,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Total Past Due 30 Days or More 1,689,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
1,714,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 25,499,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
26,507,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Carrying value gross of valuation allowance 5,354,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
5,617,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Total Outstandings 27,188,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
28,221,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Consumer Real Estate | Pay option | Legacy Assets and Servicing Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 2,900,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_PayOptionMember
3,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_PayOptionMember
Consumer Real Estate | Fully Insured Loans    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 1,800,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
2,100,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
60-89 Days Past Due 1,000,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
1,100,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
90 Days or More Past Due 9,900,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
11,400,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
Consumer Real Estate | Fully Insured Loans | Core Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 46,464,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
52,990,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
Consumer Real Estate | Fully Insured Loans | Core Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
Consumer Real Estate | Fully Insured Loans | Legacy Assets and Servicing Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 11,047,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
11,980,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
Consumer Real Estate | Fully Insured Loans | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_FullyInsuredLoansMember
Consumer Real Estate | Nonperforming Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 392,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
392,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
60-89 Days Past Due 370,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
332,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 3,800,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
3,600,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= us-gaap_NonperformingFinancingReceivableMember
Consumer Real Estate | Carrying Value | Core Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 156,888,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
162,220,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioResidentialFinancingReceivableMember
Consumer Real Estate | Carrying Value | Core Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 51,029,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
51,887,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_CorePortfolioHomeEquityFinancingReceivableMember
Consumer Real Estate | Carrying Value | Legacy Assets and Servicing Portfolio, Residential Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 51,037,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
53,977,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
Consumer Real Estate | Carrying Value | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 32,542,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
33,838,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
Credit card and other consumer | Credit Card Receivable | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 468,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
494,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
60-89 Days Past Due 318,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
341,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
90 Days or More Past Due 795,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
866,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Past Due 30 Days or More 1,581,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,701,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Current or Less Than 30 Days Past Due 85,707,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
90,178,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Outstandings 87,288,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
91,879,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Credit card and other consumer | Credit Card Receivable | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 46,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
49,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
60-89 Days Past Due 34,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
39,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
90 Days or More Past Due 88,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
95,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Past Due 30 Days or More 168,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
183,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Current or Less Than 30 Days Past Due 9,492,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
10,282,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Outstandings 9,660,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
10,465,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Percentage outstanding, Equal to Greater than 90 days past due 1.00%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
1.00%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Percentage outstanding, current or less than 30 days past due 98.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
98.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Credit card and other consumer | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 198,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
245,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
60-89 Days Past Due 53,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
71,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
90 Days or More Past Due 53,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
65,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
Total Past Due 30 Days or More 304,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
381,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 81,837,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
80,000,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
Total Outstandings 82,141,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
80,381,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
Credit card and other consumer | Other consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 10,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
11,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
60-89 Days Past Due 2,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
2,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
90 Days or More Past Due 1,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
2,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
Total Past Due 30 Days or More 13,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
15,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
Total Current or Less Than 30 Days Past Due 1,829,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
1,831,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
Total Outstandings 1,842,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
1,846,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
Credit card and other consumer | Dealer Financial Services Loans | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 38,900,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_DealerFinancialServicesLoansMember
37,700,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_DealerFinancialServicesLoansMember
Credit card and other consumer | Unsecured Consumed Lending Loans | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 1,300,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_UnsecuredConsumedLendingLoansMember
1,500,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_UnsecuredConsumedLendingLoansMember
Credit card and other consumer | Securities Based Lending Loans | Direct/Indirect Consumer | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 36,600,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_SecuritiesBasedLendingLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
35,800,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_SecuritiesBasedLendingLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Credit card and other consumer | Securities Based Lending Loans | Direct/Indirect Consumer | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 4,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_SecuritiesBasedLendingLoansMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
4,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_SecuritiesBasedLendingLoansMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Credit card and other consumer | Student Loans | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 611,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_StudentLoansMember
632,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_StudentLoansMember
Credit card and other consumer | Other Loans | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings   761,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
/ us-gaap_ProductOrServiceAxis
= bac_OtherLoansMember
Credit card and other consumer | Consumer Finance Loans | Other consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 646,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerFinanceLoansMember
676,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerFinanceLoansMember
Credit card and other consumer | Consumer Leases | Other consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 1,100,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerLeasesMember
1,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerLeasesMember
Credit card and other consumer | Consumer Overdrafts | Other consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 120,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerOverdraftsMember
162,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
/ us-gaap_ProductOrServiceAxis
= bac_ConsumerOverdraftsMember
Credit card and other consumer | Carrying Value | Credit Card Receivable | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 87,288,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
91,879,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Credit card and other consumer | Carrying Value | Credit Card Receivable | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 9,660,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
10,465,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Credit card and other consumer | Carrying Value | Direct/Indirect Consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 82,141,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
80,381,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_DirectandIndirectFinancingReceivableMember
Credit card and other consumer | Carrying Value | Other consumer    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 1,842,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
1,846,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_OtherFinancingReceivablesMember
Commercial    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 639,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
672,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
60-89 Days Past Due 211,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
257,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
90 Days or More Past Due 504,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
742,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Total Past Due 30 Days or More 1,354,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
1,671,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Total Current or Less Than 30 Days Past Due 395,709,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
384,546,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Loans and leases, measured at fair value 6,411,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
6,604,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Total Outstandings 403,474,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
392,821,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Commercial | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 272,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
320,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
60-89 Days Past Due 132,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
151,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
90 Days or More Past Due 269,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
318,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Past Due 30 Days or More 673,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
789,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Current or Less Than 30 Days Past Due 224,408,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
219,504,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Loans and leases, measured at fair value 2,000,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,900,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Total Outstandings 225,081,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
220,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 3,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
5,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
60-89 Days Past Due 3,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
4,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Past Due 30 Days or More 6,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
9,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Current or Less Than 30 Days Past Due 84,836,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
80,074,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Loans and leases, measured at fair value 4,500,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
4,700,000,000us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Total Outstandings 84,842,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
80,083,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial | Commercial Real Estate    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 42,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
138,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
60-89 Days Past Due 1,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
16,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
90 Days or More Past Due 137,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
288,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Total Past Due 30 Days or More 180,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
442,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Total Current or Less Than 30 Days Past Due 49,266,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
47,240,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Total Outstandings 49,446,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
47,682,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Commercial | Commercial Real Estate | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 46,700,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
45,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial | Commercial Real Estate | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 2,800,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
2,500,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial | Commercial Lease Financing    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 240,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
121,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
60-89 Days Past Due 37,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
41,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
90 Days or More Past Due 14,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
42,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Total Past Due 30 Days or More 291,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
204,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 24,177,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
24,662,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Total Outstandings 24,468,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
24,866,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Commercial | Small Business Commercial    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
30-59 Days Past Due 82,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
88,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
60-89 Days Past Due 38,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
45,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
90 Days or More Past Due 84,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
94,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
Total Past Due 30 Days or More 204,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
227,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
Total Current or Less Than 30 Days Past Due 13,022,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
13,066,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
Commercial | Small Business Commercial | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 13,226,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
13,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial | Carrying Value    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 397,063,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
386,217,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Commercial | Carrying Value | United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 225,081,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
220,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial | Carrying Value | Non United States    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 84,842,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
80,083,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial | Carrying Value | Commercial Real Estate    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 49,446,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
47,682,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Commercial | Carrying Value | Commercial Lease Financing    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 24,468,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
24,866,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Commercial | Carrying Value | Small Business Commercial    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings 13,226,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
13,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_CarryingReportedAmountFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
Commercial | Estimate of Fair Value Measurement    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Total Outstandings $ 6,411,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
$ 6,604,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember