Annual report pursuant to Section 13 and 15(d)

Fair Value Option - Changes in FV of Assets and Liabilities (Details)

v2.4.1.9
Fair Value Option - Changes in FV of Assets and Liabilities (Details) (USD $)
In Millions, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option $ 2,395us-gaap_FairValueOptionChangesInFairValueGainLoss1 $ 1,385us-gaap_FairValueOptionChangesInFairValueGainLoss1 $ (1,756)us-gaap_FairValueOptionChangesInFairValueGainLoss1
Loans reported as trading account assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (87)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
83us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
232us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
Trading inventory – other      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 1,091us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
1,355us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
659us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
Loans and leases      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 45us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
174us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
559us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
Loans Held-for-Sale      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 825us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
1,048us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
3,313us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
Securities financing agreements      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (110)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
(80)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
(90)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
Other assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   (77)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
12us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
Long-term deposits      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (3)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
114us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
29us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
Asset-backed securities      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   (91)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
(180)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
Unfunded loan commitments      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (64)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
180us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
704us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
Short-term borrowings      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 52us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
(70)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
1us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
Long-term debt      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 646us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
(1,251)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
(6,995)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
Trading Account Profits (Losses)      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 1,128us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
695us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(994)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Loans reported as trading account assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (87)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
83us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
232us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Trading inventory – other      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 1,091us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
1,355us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
659us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Loans and leases      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (24)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(28)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
17us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Loans Held-for-Sale      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (56)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
7us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
75us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Securities financing agreements      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (110)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(80)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(90)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Other assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Long-term deposits      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 23us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
30us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Asset-backed securities      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Unfunded loan commitments      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Short-term borrowings      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 52us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(70)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
1us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Long-term debt      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 239us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(602)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(1,888)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Mortgage Banking Income (Loss)      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 798us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
837us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
2,868us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Loans reported as trading account assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Trading inventory – other      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Loans and leases      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(38)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Loans Held-for-Sale      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 798us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
966us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
3,048us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Securities financing agreements      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Other assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Long-term deposits      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Asset-backed securities      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   (91)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(180)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Unfunded loan commitments      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Short-term borrowings      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Long-term debt      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Other Income (Loss)      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 469us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(147)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(3,630)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Loans reported as trading account assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Trading inventory – other      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_TradingInventoryOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Loans and leases      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 69us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
240us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
542us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Loans Held-for-Sale      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 83us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
75us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
190us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Securities financing agreements      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_SecuritiesFinancingTransactionFairValueMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Other assets      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   (77)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
12us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Long-term deposits      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (26)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
84us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
29us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_LongTermDepositsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Asset-backed securities      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option   0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_AssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Unfunded loan commitments      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option (64)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
180us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
704us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= bac_UnfundedLoanCommitmentMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Short-term borrowings      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option 0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other Income (Loss) | Long-term debt      
Fair Value, Option, Quantitative Disclosures [Line Items]      
Gains (Losses) Relating to Assets and Liabilities Accounted for Under the Fair Value Option $ 407us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
$ (649)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
$ (5,107)us-gaap_FairValueOptionChangesInFairValueGainLoss1
/ us-gaap_EligibleItemOrGroupForFairValueOptionAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember