Quarterly report pursuant to Section 13 or 15(d)

Allowance for Credit Losses - Allowance by Portfolio Segment (Details)

v2.4.1.9
Allowance for Credit Losses - Allowance by Portfolio Segment (Details) (USD $)
3 Months Ended
Mar. 31, 2015
Mar. 31, 2014
Dec. 31, 2014
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for Loan and Lease Losses, beginning balance $ 14,419,000,000us-gaap_LoansAndLeasesReceivableAllowance $ 17,428,000,000us-gaap_LoansAndLeasesReceivableAllowance  
Loans and leases charged off (1,645,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs (1,868,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs  
Recoveries of loans and leases previously charged off 451,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts 480,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts  
Net charge-offs (1,194,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet (1,388,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet  
Provision for loan and lease losses 756,000,000us-gaap_ProvisionForLoanAndLeaseLosses 984,000,000us-gaap_ProvisionForLoanAndLeaseLosses  
Other (17,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet (15,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet  
Allowance for Loan and Lease Losses, ending balance 13,676,000,000us-gaap_LoansAndLeasesReceivableAllowance 16,618,000,000us-gaap_LoansAndLeasesReceivableAllowance  
Provision for unfunded lending commitments 765,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses 1,009,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses  
Reserve for unfunded lending commitments, ending balance 14,213,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses 17,127,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses  
Allowance for credit losses 14,213,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses 17,127,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses  
Consumer Real Estate      
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for Loan and Lease Losses, beginning balance 5,935,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
8,518,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Loans and leases charged off (552,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(596,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Recoveries of loans and leases previously charged off 183,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
167,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Net charge-offs (369,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(429,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Provision for loan and lease losses (28,000,000)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(141,000,000)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Other 0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(1,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Allowance for Loan and Lease Losses, ending balance 5,250,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
7,556,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Reserve for unfunded lending commitments, ending balance 5,250,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
7,556,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Allowance for credit losses 5,250,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
7,556,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Valuation allowance 1,314,000,000us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
  1,652,000,000us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Credit card and other consumer      
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for Loan and Lease Losses, beginning balance 4,047,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
4,905,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Loans and leases charged off (964,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
(1,128,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Recoveries of loans and leases previously charged off 216,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
218,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Net charge-offs (748,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
(910,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Provision for loan and lease losses 647,000,000us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
791,000,000us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Other (17,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
(11,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Allowance for Loan and Lease Losses, ending balance 3,929,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
4,775,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Reserve for unfunded lending commitments, ending balance 3,929,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
4,775,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Allowance for credit losses 3,929,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
4,775,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
 
Commercial      
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for Loan and Lease Losses, beginning balance 4,437,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,005,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Loans and leases charged off (129,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(144,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Recoveries of loans and leases previously charged off 52,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
95,000,000us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Net charge-offs (77,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(49,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Provision for loan and lease losses 137,000,000us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
334,000,000us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Other 0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(3,000,000)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Allowance for Loan and Lease Losses, ending balance 4,497,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,287,000,000us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Reserve for unfunded lending commitments, ending balance 5,034,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,796,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Allowance for credit losses 5,034,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,796,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Receivables Acquired with Deteriorated Credit Quality      
Allowance for Loan and Lease Losses [Roll Forward]      
Loans and leases charged off (288,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(391,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Provision for loan and lease losses (50,000,000)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
0us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Financing receivable allowance sold 110,000,000us-gaap_AllowanceForLoanAndLeaseLossesLoansSold
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
158,000,000us-gaap_AllowanceForLoanAndLeaseLossesLoansSold
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Valuation allowance 1,314,000,000us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
  1,652,000,000us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
Receivables Acquired with Deteriorated Credit Quality | Consumer Real Estate      
Allowance for Loan and Lease Losses [Roll Forward]      
Loans and leases charged off (288,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(391,000,000)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Receivables Acquired with Deteriorated Credit Quality | Credit card and other consumer      
Allowance for Loan and Lease Losses [Roll Forward]      
Loans and leases charged off 0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Receivables Acquired with Deteriorated Credit Quality | Commercial      
Allowance for Loan and Lease Losses [Roll Forward]      
Loans and leases charged off 0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
 
Unfunded loan commitments      
Allowance for Loan and Lease Losses [Roll Forward]      
Reserve for unfunded lending commitments, beginning balance 528,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
484,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Provision for unfunded lending commitments 9,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
25,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Reserve for unfunded lending commitments, ending balance 537,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
509,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Allowance for credit losses 537,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
509,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Unfunded loan commitments | Consumer Real Estate      
Allowance for Loan and Lease Losses [Roll Forward]      
Reserve for unfunded lending commitments, beginning balance 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Provision for unfunded lending commitments 0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Reserve for unfunded lending commitments, ending balance 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Allowance for credit losses 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Unfunded loan commitments | Credit card and other consumer      
Allowance for Loan and Lease Losses [Roll Forward]      
Reserve for unfunded lending commitments, beginning balance 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Provision for unfunded lending commitments 0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Reserve for unfunded lending commitments, ending balance 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Allowance for credit losses 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= bac_CreditCardandOtherConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Unfunded loan commitments | Commercial      
Allowance for Loan and Lease Losses [Roll Forward]      
Reserve for unfunded lending commitments, beginning balance 528,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
484,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Provision for unfunded lending commitments 9,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
25,000,000us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Reserve for unfunded lending commitments, ending balance 537,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
509,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
 
Allowance for credit losses $ 537,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
$ 509,000,000us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember