Annual report pursuant to Section 13 and 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 $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for loan and lease losses, January 1 $ 17,428us-gaap_LoansAndLeasesReceivableAllowance $ 24,179us-gaap_LoansAndLeasesReceivableAllowance $ 33,783us-gaap_LoansAndLeasesReceivableAllowance
Loans and leases charged off (7,026)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs (10,369)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs (17,672)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
Recoveries of loans and leases previously charged off 2,643us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts 2,472us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts 2,764us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
Net charge-offs (4,383)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet (7,897)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet (14,908)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
Provision for loan and lease losses 2,231us-gaap_ProvisionForLoanAndLeaseLosses 3,574us-gaap_ProvisionForLoanAndLeaseLosses 8,310us-gaap_ProvisionForLoanAndLeaseLosses
Other (47)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet (92)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet (186)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
Allowance for loan and lease losses, December 31 14,419us-gaap_LoansAndLeasesReceivableAllowance 17,428us-gaap_LoansAndLeasesReceivableAllowance 24,179us-gaap_LoansAndLeasesReceivableAllowance
Reserve for unfunded lending commitments, January 1 17,912us-gaap_FinancingReceivableAllowanceForCreditLosses 24,692us-gaap_FinancingReceivableAllowanceForCreditLosses  
Provision for unfunded lending commitments 2,275us-gaap_ProvisionForLoanLeaseAndOtherLosses 3,556us-gaap_ProvisionForLoanLeaseAndOtherLosses 8,169us-gaap_ProvisionForLoanLeaseAndOtherLosses
Reserve for unfunded lending commitments, December 31 14,947us-gaap_FinancingReceivableAllowanceForCreditLosses 17,912us-gaap_FinancingReceivableAllowanceForCreditLosses 24,692us-gaap_FinancingReceivableAllowanceForCreditLosses
Allowance for credit losses 14,947us-gaap_FinancingReceivableAllowanceForCreditLosses 17,912us-gaap_FinancingReceivableAllowanceForCreditLosses 24,692us-gaap_FinancingReceivableAllowanceForCreditLosses
Home Loans      
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for loan and lease losses, January 1 8,518us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
14,933us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
21,079us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Loans and leases charged off (2,219)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(3,766)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(7,849)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Recoveries of loans and leases previously charged off 1,426us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
879us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
496us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Net charge-offs (793)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(2,887)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(7,353)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Provision for loan and lease losses (976)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(1,124)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
4,073us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Other (4)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(68)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
(46)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Allowance for loan and lease losses, December 31 5,935us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
8,518us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
14,933us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Reserve for unfunded lending commitments, January 1 8,518us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
14,933us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Reserve for unfunded lending commitments, December 31 5,935us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
8,518us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
14,933us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Allowance for credit losses 5,935us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
8,518us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
14,933us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
Valuation allowance 1,652us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
2,493us-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, January 1 4,905us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
6,140us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
8,569us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Loans and leases charged off (4,149)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(5,495)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(7,727)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Recoveries of loans and leases previously charged off 871us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
1,141us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
1,519us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Net charge-offs (3,278)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(4,354)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(6,208)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Provision for loan and lease losses 2,458us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
3,139us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
3,899us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Other (38)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(20)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
(120)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Allowance for loan and lease losses, December 31 4,047us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
4,905us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
6,140us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Reserve for unfunded lending commitments, January 1 4,905us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
6,140us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Reserve for unfunded lending commitments, December 31 4,047us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
4,905us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
6,140us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Allowance for credit losses 4,047us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
4,905us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
6,140us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
Commercial      
Allowance for Loan and Lease Losses [Roll Forward]      
Allowance for loan and lease losses, January 1 4,005us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
3,106us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,135us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Loans and leases charged off (658)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(1,108)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(2,096)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Recoveries of loans and leases previously charged off 346us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
452us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
749us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Net charge-offs (312)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(656)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(1,347)us-gaap_AllowanceForLoanAndLeaseLossesWriteoffsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Provision for loan and lease losses 749us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
1,559us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
338us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Other (5)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(4)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
(20)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Allowance for loan and lease losses, December 31 4,437us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,005us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
3,106us-gaap_LoansAndLeasesReceivableAllowance
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Reserve for unfunded lending commitments, January 1 4,489us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
3,619us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Reserve for unfunded lending commitments, December 31 4,965us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,489us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
3,619us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
Allowance for credit losses 4,965us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
4,489us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
3,619us-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 (810)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(2,336)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(2,820)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
Provision for loan and lease losses (31)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(707)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(103)us-gaap_ProvisionForLoanAndLeaseLosses
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
Valuation allowance 1,652us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
2,493us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
5,500us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
Receivables Acquired with Deteriorated Credit Quality | Home Loans      
Allowance for Loan and Lease Losses [Roll Forward]      
Loans and leases charged off (810)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(2,336)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
(2,820)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
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ 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
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ bac_ReceivablesAcquiredwithDeterioratedCreditQualityAxis
= bac_ReceivablesAcquiredwithDeterioratedCreditQualityMember
Unfunded loan commitments      
Allowance for Loan and Lease Losses [Roll Forward]      
Other   (11)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(60)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, January 1 484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
714us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Provision for unfunded lending commitments 44us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(18)us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(141)us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, December 31 528us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Allowance for credit losses 528us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Unfunded loan commitments | Home Loans      
Allowance for Loan and Lease Losses [Roll Forward]      
Other   0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, January 1 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
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
0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, December 31 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
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
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]      
Other   0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, January 1 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Provision for unfunded lending commitments 0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, December 31 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Allowance for credit losses 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Unfunded loan commitments | Commercial      
Allowance for Loan and Lease Losses [Roll Forward]      
Other   (11)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(60)us-gaap_AllowanceForLoanAndLeaseLossesAdjustmentsNet
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, January 1 484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
714us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Provision for unfunded lending commitments 44us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(18)us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
(141)us-gaap_ProvisionForLoanLeaseAndOtherLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Reserve for unfunded lending commitments, December 31 528us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
Allowance for credit losses $ 528us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
$ 484us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember
$ 513us-gaap_FinancingReceivableAllowanceForCreditLosses
/ bac_FinancingReceivablePortfolioSegmentAxis
= us-gaap_CommercialPortfolioSegmentMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bac_UnfundedLoanCommitmentMember