Outstanding Loans and Leases - Past Due (Details) (USD $)
|
Dec. 31, 2014
|
Dec. 31, 2013
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
$ 5,918,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
|
$ 7,405,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
|
60-89 Days Past Due |
2,749,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
|
3,439,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
|
90 Days or More Past Due |
19,754,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
|
28,263,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue
|
Total Past Due 30 Days or More |
28,421,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
|
39,107,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue
|
Total Current or Less Than 30 Days Past Due |
823,520,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
|
853,819,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue
|
Carrying value gross of valuation allowance |
20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
|
25,265,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality
|
Loans and leases, measured at fair value |
8,681,000,000us-gaap_LoansReceivableFairValueDisclosure
|
10,042,000,000us-gaap_LoansReceivableFairValueDisclosure
|
Total Outstandings |
881,391,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
|
928,233,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome
|
Percentage outstanding, 30-59 days past due |
0.67%bac_FinancingReceivableRecordedInvestment30to59DaysPastDuePercentageofTotalOutstanding
|
0.80%bac_FinancingReceivableRecordedInvestment30to59DaysPastDuePercentageofTotalOutstanding
|
Percentage outstanding, 60-90 days past due |
0.31%bac_FinancingReceivableRecordedInvestment60to90DaysPastDuePercentageofTotalOutstanding
|
0.37%bac_FinancingReceivableRecordedInvestment60to90DaysPastDuePercentageofTotalOutstanding
|
Percentage outstanding, Equal to Greater than 90 days past due |
2.24%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding
|
3.04%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding
|
Percentage outstanding, 30 days or more past due |
3.22%bac_FinancingReceivableRecordedInvestment30DaysorMorePastDuePercentageofTotalOutstanding
|
4.21%bac_FinancingReceivableRecordedInvestment30DaysorMorePastDuePercentageofTotalOutstanding
|
Percentage outstanding, current or less than 30 days past due |
93.44%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
|
91.99%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding
|
Percentage outstanding, purchase credit-impaired |
2.36%bac_FinancingReceivableAcquiredwithDeterioratedCreditQualityPercentageofTotalOutstanding
|
2.72%bac_FinancingReceivableAcquiredwithDeterioratedCreditQualityPercentageofTotalOutstanding
|
Percentage outstanding, loans accounted for under the fair value option |
0.98%bac_LoansReceivableFairValueDisclosurePercentageofTotalOutstanding
|
1.08%bac_LoansReceivableFairValueDisclosurePercentageofTotalOutstanding
|
Percentage outstanding, total outstanding |
100.00%bac_LoansandLeasesReceivableNetofDeferredIncomePercentageofTotalOutstanding
|
100.00%bac_LoansandLeasesReceivableNetofDeferredIncomePercentageofTotalOutstanding
|
Other consumer | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
3,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
5,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Federal National Mortgage Association Certificates and Obligations (FNMA) and Federal Home Loan Mortgage Corporation Certificates and Obligations (FHLMC) | Residential Mortgage |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Unpaid Principal Balance of Loans Covered by Protection Agreements |
17,200,000,000bac_LongTermCreditProtectionAgreementsAmountCovered / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialMortgageMember / us-gaap_InvestmentTypeAxis = bac_FederalNationalMortgageAssociationCertificatesandObligationsFNMAandFederalHomeLoanMortgageCorporationCertificatesandObligationsFHLMCMember
|
28,200,000,000bac_LongTermCreditProtectionAgreementsAmountCovered / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialMortgageMember / us-gaap_InvestmentTypeAxis = bac_FederalNationalMortgageAssociationCertificatesandObligationsFNMAandFederalHomeLoanMortgageCorporationCertificatesandObligationsFHLMCMember
|
Pay option | Legacy Assets and Servicing Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
3,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_PayOptionMember
|
4,400,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_PayOptionMember
|
Dealer Financial Services Loans | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
37,700,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_DealerFinancialServicesLoansMember
|
38,500,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_DealerFinancialServicesLoansMember
|
Unsecured Consumed Lending Loans | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
1,500,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_UnsecuredConsumedLendingLoansMember
|
2,700,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_UnsecuredConsumedLendingLoansMember
|
Securities Based Lending Loans | Direct/Indirect Consumer | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
35,800,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_SecuritiesBasedLendingLoansMember / us-gaap_StatementGeographicalAxis = country_US
|
31,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_SecuritiesBasedLendingLoansMember / us-gaap_StatementGeographicalAxis = country_US
|
Securities Based Lending Loans | Direct/Indirect Consumer | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
4,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_SecuritiesBasedLendingLoansMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
4,700,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_SecuritiesBasedLendingLoansMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Student Loans | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
632,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_StudentLoansMember
|
4,100,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_StudentLoansMember
|
Other Loans | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
761,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_OtherLoansMember
|
1,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_ProductOrServiceAxis = bac_OtherLoansMember
|
Consumer Finance Loans | Other consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
676,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerFinanceLoansMember
|
1,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerFinanceLoansMember
|
Consumer Leases | Other consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
1,000,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerLeasesMember
|
606,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerLeasesMember
|
Consumer Overdrafts | Other consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
162,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerOverdraftsMember
|
176,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember / us-gaap_ProductOrServiceAxis = bac_ConsumerOverdraftsMember
|
Nonperforming Financing Receivable | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Current or Less Than 30 Days Past Due |
27,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
33,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
Residential Portfolio Segment |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Carrying value gross of valuation allowance |
20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember
|
25,265,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember
|
Residential Portfolio Segment | Core Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
1,847,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
2,151,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
60-89 Days Past Due |
700,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
754,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
90 Days or More Past Due |
5,561,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
7,188,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
Total Past Due 30 Days or More |
8,108,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
10,093,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
154,112,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
167,243,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
Residential Portfolio Segment | Core Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
218,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
243,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
60-89 Days Past Due |
105,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
113,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
90 Days or More Past Due |
744,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
693,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
Total Past Due 30 Days or More |
1,067,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
1,049,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
50,820,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
53,450,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
Residential Portfolio Segment | Legacy Assets and Servicing Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
2,008,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
2,758,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
60-89 Days Past Due |
1,060,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
1,412,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
90 Days or More Past Due |
10,513,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
16,746,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Total Past Due 30 Days or More |
13,581,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
20,916,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
25,244,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
31,142,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Carrying value gross of valuation allowance |
15,152,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
18,672,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Residential Portfolio Segment | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
374,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
444,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
60-89 Days Past Due |
174,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
221,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
90 Days or More Past Due |
1,166,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
1,292,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Total Past Due 30 Days or More |
1,714,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
1,957,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
26,507,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
30,623,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Carrying value gross of valuation allowance |
5,617,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
6,593,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Residential Portfolio Segment | Fully Insured Loans |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
2,100,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
2,500,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
60-89 Days Past Due |
1,100,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
1,200,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
90 Days or More Past Due |
11,400,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
17,000,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
Residential Portfolio Segment | Nonperforming Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
392,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
623,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
60-89 Days Past Due |
332,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
410,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
3,600,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
5,900,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_InternalCreditAssessmentAxis = us-gaap_NonperformingFinancingReceivableMember
|
Residential Portfolio Segment | Carrying Value | Core Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
162,220,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
177,336,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
Residential Portfolio Segment | Carrying Value | Core Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
51,887,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
54,499,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
Residential Portfolio Segment | Carrying Value | Legacy Assets and Servicing Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
53,977,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
70,730,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Residential Portfolio Segment | Carrying Value | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
33,838,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
39,173,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ResidentialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Consumer Portfolio Segment |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
5,246,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
6,712,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
60-89 Days Past Due |
2,492,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
3,159,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
90 Days or More Past Due |
19,012,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
27,533,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Total Past Due 30 Days or More |
26,750,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
37,404,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Total Current or Less Than 30 Days Past Due |
438,974,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
467,117,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Carrying value gross of valuation allowance |
20,769,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
25,265,000,000us-gaap_FinancingReceivableAcquiredWithDeterioratedCreditQuality / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Loans and leases, measured at fair value |
2,077,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
2,164,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Total Outstandings |
488,570,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
531,950,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Consumer Portfolio Segment | Core Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
162,220,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
177,336,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember
|
Consumer Portfolio Segment | Core Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
51,887,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
54,499,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember
|
Consumer Portfolio Segment | Legacy Assets and Servicing Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
38,825,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
52,058,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember
|
Consumer Portfolio Segment | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
28,221,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
32,580,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember
|
Consumer Portfolio Segment | Credit Card Receivable | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
494,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
598,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
60-89 Days Past Due |
341,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
422,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
90 Days or More Past Due |
866,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
1,053,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Past Due 30 Days or More |
1,701,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
2,073,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Current or Less Than 30 Days Past Due |
90,178,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
90,265,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Outstandings |
91,879,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
92,338,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
Consumer Portfolio Segment | Credit Card Receivable | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
49,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
63,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
60-89 Days Past Due |
39,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
54,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
90 Days or More Past Due |
95,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
131,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Past Due 30 Days or More |
183,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
248,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Current or Less Than 30 Days Past Due |
10,282,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
11,293,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Outstandings |
10,465,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
11,541,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Percentage outstanding, Equal to Greater than 90 days past due |
1.00%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
1.00%bac_FinancingReceivableRecordedInvestmentEqualtoGreaterthan90DaysPastDuePercentageofTotalOutstanding / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Percentage outstanding, current or less than 30 days past due |
98.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
98.00%bac_FinancingReceivableRecordedInvestmentCurrentand1to29DaysPastDuePercentageofTotalOutstanding / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Consumer Portfolio Segment | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
245,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
431,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
60-89 Days Past Due |
71,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
175,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
90 Days or More Past Due |
65,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
410,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
Total Past Due 30 Days or More |
381,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
1,016,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
80,000,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
81,176,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
Total Outstandings |
80,381,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
82,192,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
Consumer Portfolio Segment | Other consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
11,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
24,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
60-89 Days Past Due |
2,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
8,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
90 Days or More Past Due |
2,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
20,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
Total Past Due 30 Days or More |
15,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
52,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
Total Current or Less Than 30 Days Past Due |
1,831,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
1,925,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
Total Outstandings |
1,846,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
1,977,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
Consumer Portfolio Segment | Residential Mortgage |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Loans and leases, measured at fair value |
1,900,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialMortgageMember
|
2,000,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_ResidentialMortgageMember
|
Consumer Portfolio Segment | Home equity lines of credit |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Loans and leases, measured at fair value |
196,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_HomeEquityMember
|
147,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_HomeEquityMember
|
Consumer Portfolio Segment | Fully Insured Loans | Core Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
52,990,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
69,712,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioResidentialFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
Consumer Portfolio Segment | Fully Insured Loans | Core Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_CorePortfolioHomeEquityFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
Consumer Portfolio Segment | Fully Insured Loans | Legacy Assets and Servicing Portfolio, Residential Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
11,980,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
17,535,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioResidentialFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
Consumer Portfolio Segment | Fully Insured Loans | Legacy Assets and Servicing Portfolio, Home Equity Financing Receivable |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
0us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_LegacyAssetsandServicingPortfolioHomeEquityFinancingReceivableMember / us-gaap_InternalCreditAssessmentAxis = bac_FullyInsuredLoansMember
|
Consumer Portfolio Segment | Carrying Value |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
486,493,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
529,786,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Consumer Portfolio Segment | Carrying Value | Credit Card Receivable | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
91,879,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
92,338,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = country_US
|
Consumer Portfolio Segment | Carrying Value | Credit Card Receivable | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
10,465,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
11,541,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_CreditCardReceivablesMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Consumer Portfolio Segment | Carrying Value | Direct/Indirect Consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
80,381,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
82,192,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_DirectandIndirectFinancingReceivableMember
|
Consumer Portfolio Segment | Carrying Value | Other consumer |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
1,846,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
1,977,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_OtherFinancingReceivablesMember
|
Consumer Portfolio Segment | Estimate of Fair Value Measurement |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
2,077,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_EstimateOfFairValueFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
2,164,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_EstimateOfFairValueFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_ConsumerPortfolioSegmentMember
|
Commercial Portfolio Segment |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
672,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
693,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
60-89 Days Past Due |
257,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
280,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
90 Days or More Past Due |
742,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
730,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Total Past Due 30 Days or More |
1,671,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
1,703,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Total Current or Less Than 30 Days Past Due |
384,546,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
386,702,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Loans and leases, measured at fair value |
6,604,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
7,878,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Total Outstandings |
392,821,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
396,283,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Commercial Portfolio Segment | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
320,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
363,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
60-89 Days Past Due |
151,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
151,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
90 Days or More Past Due |
318,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
309,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Past Due 30 Days or More |
789,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
823,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Current or Less Than 30 Days Past Due |
219,504,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
211,734,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Loans and leases, measured at fair value |
1,900,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
1,500,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Total Outstandings |
220,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
212,557,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Commercial Portfolio Segment | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
5,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
103,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
60-89 Days Past Due |
4,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
8,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
90 Days or More Past Due |
|
17,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Past Due 30 Days or More |
9,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
128,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Current or Less Than 30 Days Past Due |
80,074,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
89,334,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Loans and leases, measured at fair value |
4,700,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
6,400,000,000us-gaap_LoansReceivableFairValueDisclosure / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Total Outstandings |
80,083,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
89,462,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Commercial Portfolio Segment | Commercial Real Estate |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
138,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
30,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
60-89 Days Past Due |
16,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
29,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
90 Days or More Past Due |
288,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
243,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
Total Past Due 30 Days or More |
442,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
302,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
Total Current or Less Than 30 Days Past Due |
47,240,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
47,591,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
Total Outstandings |
47,682,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
47,893,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
Commercial Portfolio Segment | Commercial Real Estate | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
45,200,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember / us-gaap_StatementGeographicalAxis = country_US
|
46,300,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember / us-gaap_StatementGeographicalAxis = country_US
|
Commercial Portfolio Segment | Commercial Real Estate | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
2,500,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
1,600,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Commercial Portfolio Segment | Commercial Lease Financing |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
121,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
110,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
60-89 Days Past Due |
41,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
37,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
90 Days or More Past Due |
42,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
48,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
Total Past Due 30 Days or More |
204,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
195,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
24,662,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
25,004,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
Total Outstandings |
24,866,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
25,199,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
Commercial Portfolio Segment | Small Business Commercial |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
30-59 Days Past Due |
88,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
87,000,000us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
60-89 Days Past Due |
45,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
55,000,000us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
90 Days or More Past Due |
94,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
113,000,000us-gaap_FinancingReceivableRecordedInvestmentEqualToGreaterThan90DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
Total Past Due 30 Days or More |
227,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
255,000,000bac_FinancingReceivableRecordedInvestment30DaysorMorePastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
Total Current or Less Than 30 Days Past Due |
13,066,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
13,039,000,000bac_FinancingReceivableRecordedInvestmentCurrentand1To29DaysPastDue / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
Commercial Portfolio Segment | Small Business Commercial | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
13,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember / us-gaap_StatementGeographicalAxis = country_US
|
13,294,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember / us-gaap_StatementGeographicalAxis = country_US
|
Commercial Portfolio Segment | Carrying Value |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
386,217,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
388,405,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
Commercial Portfolio Segment | Carrying Value | United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
220,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
212,557,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = country_US
|
Commercial Portfolio Segment | Carrying Value | Non United States |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
80,083,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
89,462,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_StatementGeographicalAxis = bac_NonUnitedStatesMember
|
Commercial Portfolio Segment | Carrying Value | Commercial Real Estate |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
47,682,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
47,893,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_RealEstateLoanMember
|
Commercial Portfolio Segment | Carrying Value | Commercial Lease Financing |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
24,866,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
25,199,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = us-gaap_FinanceLeasesFinancingReceivableMember
|
Commercial Portfolio Segment | Carrying Value | Small Business Commercial |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
13,293,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
13,294,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_CarryingReportedAmountFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember / us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis = bac_SmallBusinessFinancingReceivableMember
|
Commercial Portfolio Segment | Estimate of Fair Value Measurement |
|
|
Financing Receivable, Recorded Investment, Past Due [Line Items] |
|
|
Total Outstandings |
$ 6,604,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_EstimateOfFairValueFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|
$ 7,878,000,000us-gaap_LoansAndLeasesReceivableNetOfDeferredIncome / us-gaap_FairValueByMeasurementBasisAxis = us-gaap_EstimateOfFairValueFairValueDisclosureMember / bac_FinancingReceivablePortfolioSegmentAxis = us-gaap_CommercialPortfolioSegmentMember
|