XML 264 R128.htm IDEA: XBRL DOCUMENT v2.4.1.9
Loans in non-performing status and accruing loans past-due 90 days or more by loan class (Detail) (USD $)
In Thousands, unless otherwise specified
Dec. 31, 2014
Dec. 31, 2013
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans $ 18,899us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus $ 1,092us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
Mortgages [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 14,041us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
489us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
Consumer [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 4,549us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
Non Covered Loans [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 630,483us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[1] 597,948us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[2]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 447,962us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[1] 417,300us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[2]
Non Covered Loans [Member] | Commercial Multi Family [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 2,199us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
25,838us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Commercial Real Estate Non Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 33,452us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
84,372us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Commercial Real Estate Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 93,453us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
106,948us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Commercial And Industrial Loans [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 131,121us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
61,895us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 494us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
556us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Commercial Real Estate Construction Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 13,812us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
23,771us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Mortgages [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 304,913us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[3],[4] 232,681us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[5],[6]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 426,387us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[3],[4] 395,645us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
[5],[6]
Non Covered Loans [Member] | Finance Leases Portfolio Segment Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 3,102us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
3,495us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Legacy [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 1,545us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
15,050us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Non Covered Loans [Member] | Consumer [Member] | Consumer Credit Card Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 449us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
486us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 20,368us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
20,313us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Non Covered Loans [Member] | Consumer [Member] | Home Equity Line of Credit [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 4,090us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
8,632us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 21us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
147us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Non Covered Loans [Member] | Consumer [Member] | Personal [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 27,088us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
18,645us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 10us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
54us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Non Covered Loans [Member] | Consumer [Member] | Consumer Loans Auto Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 11,387us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
10,564us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Non Covered Loans [Member] | Consumer [Member] | Consumer Other Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 3,872us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
5,571us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 682us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
585us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Non Covered Loans [Member] | PUERTO RICO    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 611,383us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[1] 447,255us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[2]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 447,962us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[1] 417,300us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[2]
Non Covered Loans [Member] | PUERTO RICO | Commercial Multi Family [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 2,199us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
4,944us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Commercial Real Estate Non Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 33,452us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
41,959us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Commercial Real Estate Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 92,648us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
83,441us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Commercial And Industrial Loans [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 129,611us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
55,753us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 494us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
556us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Commercial Real Estate Construction Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 13,812us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
18,108us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Mortgages [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 295,629us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[3],[4] 206,389us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[5],[6]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 426,387us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[3],[4] 395,645us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
[5],[6]
Non Covered Loans [Member] | PUERTO RICO | Finance Leases Portfolio Segment Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 3,102us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
3,495us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Legacy [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Consumer [Member] | Consumer Credit Card Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 20,368us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
20,313us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Consumer [Member] | Home Equity Line of Credit [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 21us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
147us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Consumer [Member] | Personal [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 25,678us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
17,054us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 10us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
54us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Consumer [Member] | Consumer Loans Auto Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 11,387us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
10,562us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | PUERTO RICO | Consumer [Member] | Consumer Other Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 3,865us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
5,550us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 682us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
585us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Non Covered Loans [Member] | UNITED STATES    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 19,100us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 150,693us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[2]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[2]
Non Covered Loans [Member] | UNITED STATES | Commercial Multi Family [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
20,894us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Commercial Real Estate Non Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
42,413us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Commercial Real Estate Owner Occupied [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 805us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
23,507us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Commercial And Industrial Loans [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 1,510us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
6,142us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Commercial Real Estate Construction Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
5,663us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Mortgages [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 9,284us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[3],[4] 26,292us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[5],[6]
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[3],[4] 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[5],[6]
Non Covered Loans [Member] | UNITED STATES | Finance Leases Portfolio Segment Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Legacy [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 1,545us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
15,050us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Consumer [Member] | Consumer Credit Card Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 449us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
486us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Consumer [Member] | Home Equity Line of Credit [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 4,090us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
8,632us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Consumer [Member] | Personal [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 1,410us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
1,591us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Consumer [Member] | Consumer Loans Auto Financing Receivable [Member]    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 0us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
2us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Non Covered Loans [Member] | UNITED STATES | Consumer [Member] | Consumer Other Financing Receivable Member    
Financing Receivable, Recorded Investment, Past Due [Line Items]    
Non-accrual loans 7us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
21us-gaap_FinancingReceivableRecordedInvestmentNonaccrualStatus
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Financing Receivable Recorded Investment 90 Days Past Due And Still Accruing $ 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
$ 0us-gaap_FinancingReceivableRecordedInvestment90DaysPastDueAndStillAccruing
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] For purposes of this table non-performing loans exclude $ 19 million in non-performing loans held-for-sale.
[2] For purposes of this table non-performing loans exclude $ 1 million in non-performing loans held-for-sale.
[3] Non-covered loans of $59 million accounted for under ASC Subtopic 310-30 are excluded from the above table as they are considered to be performing due to the application of the accretion method, in which these loans will accrete interest income over the remaining life of the loans using estimated cash flow analysis.
[4] It is the Corporation’s policy to report delinquent residential mortgage loans insured by FHA or guaranteed by the VA as accruing loans past due 90 days or more as opposed to non-performing since the principal repayment is insured. These balances include $125 million of residential mortgage loans in Puerto Rico insured by FHA or guaranteed by the VA that are no longer accruing interest as of December 31, 2014. Furthermore, the Corporation has approximately $66 million in reverse mortgage loans in Puerto Rico which are guaranteed by FHA, but which are currently not accruing interest. Due to the guaranteed nature of the loans, it is the Corporation’s policy to exclude these balances from non-performing assets.
[5] Non-covered loans by $43 million accounted for under ASC Subtopic 310-30 are excluded from the above table as they are considered to be performing due to the application of the accretion method, in which these loans will accrete interest income over the remaining life of the loans using estimated cash flow analysis.
[6] It is the Corporation’s policy to report delinquent residential mortgage loans insured by FHA or guaranteed by the VA as accruing loans past due 90 days or more as opposed to non-performing since the principal repayment is insured. These balances include $115 million of residential mortgage loans in Puerto Rico insured by FHA or guaranteed by the VA that are no longer accruing interest as of December 31, 2013. Furthermore, the Corporation has approximately $50 million in reverse mortgage loans in Puerto Rico which are guaranteed by FHA, but which are currently not accruing interest. Due to the guaranteed nature of the loans, it is the Corporation’s policy to exclude these balances from non-performing assets.