Annual report pursuant to Section 13 and 15(d)

Outstanding Loans and Leases - Commercial - Credit Quality Indicators (Details)

v2.4.1.9
Outstanding Loans and Leases - Commercial - Credit Quality Indicators (Details) (USD $)
In Millions, unless otherwise specified
Dec. 31, 2014
Dec. 31, 2013
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases $ 881,391us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome $ 928,233us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
Loans and leases, measured at fair value 8,681us-gaap_LoansReceivableFairValueDisclosure 10,042us-gaap_LoansReceivableFairValueDisclosure
Percentage outstanding, current or less than 30 days past due 93.44%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding 91.99%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
Commercial Portfolio Segment    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 392,821us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
396,283us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Loans and leases, measured at fair value 6,604us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
7,878us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Commercial Portfolio Segment | Commercial Real Estate    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 47,682us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
47,893us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
Commercial Portfolio Segment | Commercial Lease Financing    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 24,866us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
25,199us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
Commercial Portfolio Segment | Pass rated | Commercial Real Estate    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 46,632us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
46,507us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
Commercial Portfolio Segment | Pass rated | Commercial Lease Financing    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 23,832us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
24,211us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
Commercial Portfolio Segment | Reservable criticized | Commercial Real Estate    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 1,050us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
1,386us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
Commercial Portfolio Segment | Reservable criticized | Commercial Lease Financing    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 1,034us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
988us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_FinanceLeasesFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
Commercial Portfolio Segment | United States    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 220,293us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
212,557us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Loans and leases, measured at fair value 1,900us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,500us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Commercial Real Estate    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 45,200us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
46,300us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 13,293us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
13,294us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Pass rated    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 213,839us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= country_US
205,416us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Pass rated | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 751us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,191us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Reservable criticized    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 6,454us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= country_US
7,141us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Reservable criticized | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 182us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= country_US
346us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Internal Credit Metrics | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Percentage outstanding, current or less than 30 days past due 98.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_InternalCreditMetricsMember
/ us-gaap_StatementGeographicalAxis
= country_US
99.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_InternalCreditMetricsMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | United States | Business Card and Small Business Loan | Refreshed FICO or Internal Credit Metric | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 762us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RefreshedFICOorInternalCreditMetricMember
/ us-gaap_ProductOrServiceAxis
= bac_BusinessCardandSmallBusinessLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
289us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RefreshedFICOorInternalCreditMetricMember
/ us-gaap_ProductOrServiceAxis
= bac_BusinessCardandSmallBusinessLoanMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | Non United States    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 80,083us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
89,462us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Loans and leases, measured at fair value 4,700us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
6,400us-gaap_LoansReceivableFairValueDisclosure
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial Portfolio Segment | Non United States | Commercial Real Estate    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 2,500us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
1,600us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_RealEstateLoanMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial Portfolio Segment | Non United States | Pass rated    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 79,367us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
88,138us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsPassRatedMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial Portfolio Segment | Non United States | Reservable criticized    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 716us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
1,324us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_InternalCreditAssessmentAxis
= bac_RiskRatingsReservableCriticizedMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Commercial Portfolio Segment | Less than 620 | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 184us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScoreLessThan620Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
224us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScoreLessThan620Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | Greater than or equal to 620 and less than 680 | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 529us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScorebetween620and680Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
534us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScorebetween620and680Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | Greater than or equal to 680 and less than 740 | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 1,591us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScorebetween680and740Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,567us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScorebetween680and740Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | Greater than or equal to 740 | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases 2,910us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScoreGreaterThanOrEqualTo740Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
2,779us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFICOScoreGreaterThanOrEqualTo740Member
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Portfolio Segment | Refreshed FICO score other internal credit metrics [Member] | United States | Small Business Commercial    
Financing Receivable, Recorded Investment [Line Items]    
Loans and leases $ 7,146us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFicoScoreOtherInternalCreditMetricsMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
$ 6,653us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
/ bac_CreditScoreFicoAxis
= bac_RefreshedFicoScoreOtherInternalCreditMetricsMember
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_SmallBusinessFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US