Annual report pursuant to Section 13 and 15(d)

Outstanding Loans and Leases - Credit Card and Other Consumer - Renegotiated TDRs Entered into During the Period by Program Type (Details)

v2.4.1.9
Outstanding Loans and Leases - Credit Card and Other Consumer - Renegotiated TDRs Entered into During the Period by Program Type (Details) (Consumer Portfolio Segment, USD $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Financing Receivable, Modifications [Line Items]      
Carrying Value $ 426us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2 $ 522us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2 $ 728us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
Period for payment default after modification 12 months    
Direct/Indirect Consumer
     
Financing Receivable, Modifications [Line Items]      
Carrying Value 19us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
38us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
113us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
Percent expected to be in payment default within 12 months after modification 12.00%bac_FinancingReceivableModificationSubsequentDefaultPercentExpectedtoBeinPaymentDefaultWithin12MonthsAfterModification
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
   
Trouble debt restructurings entered payment default that were modified during the preceding twelve months 5us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
12us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
35us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
Other consumer
     
Financing Receivable, Modifications [Line Items]      
Carrying Value   8us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
9us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
United States | Credit Card Receivable
     
Financing Receivable, Modifications [Line Items]      
Carrying Value 301us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
329us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
400us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Percent expected to be in payment default within 12 months after modification 14.00%bac_FinancingReceivableModificationSubsequentDefaultPercentExpectedtoBeinPaymentDefaultWithin12MonthsAfterModification
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
   
Trouble debt restructurings entered payment default that were modified during the preceding twelve months 56us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
61us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
203us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non United States | Credit Card Receivable
     
Financing Receivable, Modifications [Line Items]      
Carrying Value 106us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
147us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
206us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Percent expected to be in payment default within 12 months after modification 81.00%bac_FinancingReceivableModificationSubsequentDefaultPercentExpectedtoBeinPaymentDefaultWithin12MonthsAfterModification
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
   
Trouble debt restructurings entered payment default that were modified during the preceding twelve months 200us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
236us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
298us-gaap_FinancingReceivableModificationsSubsequentDefaultRecordedInvestment1
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Internal Programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 206us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
231us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
331us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
Internal Programs | Direct/Indirect Consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value 4us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
15us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
36us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
Internal Programs | Other consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value   8us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
9us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
Internal Programs | United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value 196us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
192us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
248us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
Internal Programs | Non United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value 6us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
16us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
38us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_InternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
External Programs      
Financing Receivable, Modifications [Line Items]      
Carrying Value 113us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
154us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
185us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
External Programs | Direct/Indirect Consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value 2us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
8us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
19us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
External Programs | Other consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value   0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
External Programs | United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value 105us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
137us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
152us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= country_US
External Programs | Non United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value 6us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
9us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
14us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_ExternalProgramsMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
Other      
Financing Receivable, Modifications [Line Items]      
Carrying Value 107us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
137us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
212us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
Other | Direct/Indirect Consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value 13us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
15us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
58us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_DirectandIndirectFinancingReceivableMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
Other | Other consumer      
Financing Receivable, Modifications [Line Items]      
Carrying Value   0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= bac_OtherFinancingReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
Other | United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value 0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= country_US
Other | Non United States | Credit Card Receivable      
Financing Receivable, Modifications [Line Items]      
Carrying Value $ 94us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
$ 122us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember
$ 154us-gaap_FinancingReceivableModificationsPostModificationRecordedInvestment2
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableTroubledDebtRestructuringAxis
= us-gaap_CreditCardReceivablesMember
/ bac_LoanRestructuringModificationNameAxis
= bac_OtherProgramMember
/ us-gaap_StatementGeographicalAxis
= bac_NonUnitedStatesMember