XML 408 R143.htm IDEA: XBRL DOCUMENT v2.4.1.9
Disclosures related to loans individually evaluated for impairment (Detail) (USD $)
In Thousands, unless otherwise specified
Dec. 31, 2014
Dec. 31, 2013
Financing Receivable, Impaired [Line Items]    
Related Allowance $ 140,146us-gaap_ImpairedFinancingReceivableRelatedAllowance $ 103,799us-gaap_ImpairedFinancingReceivableRelatedAllowance
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 99,960us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment 274,245us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
Impaired Financing Receivable, with Related Allowance, Recorded Investment 833,954us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment 655,416us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
Recorded Investment 933,914us-gaap_ImpairedFinancingReceivableRecordedInvestment 929,661us-gaap_ImpairedFinancingReceivableRecordedInvestment
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 131,837us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance 363,398us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 894,518us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance 710,837us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
Unpaid Principal Balance 1,026,355us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance 1,074,235us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
Covered Under Loss Sharing Agreements With F D I C [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 5us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
293us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 4,487us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
8,108us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 2,419us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
12,837us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Recorded Investment 6,906us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
20,945us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 4,487us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
10,063us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 7,500us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
17,538us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
Unpaid Principal Balance 11,987us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
27,601us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
PUERTO RICO    
Financing Receivable, Impaired [Line Items]    
Related Allowance 139,508us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_StatementGeographicalAxis
= country_PR
85,886us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 97,629us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
203,581us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 829,807us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
607,149us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 927,436us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
810,730us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 128,490us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
270,220us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 889,977us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
658,192us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 1,018,467us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
928,412us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_StatementGeographicalAxis
= country_PR
PUERTO RICO | Covered Under Loss Sharing Agreements With F D I C [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 5us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
293us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 4,487us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
8,108us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 2,419us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
12,837us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 6,906us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
20,945us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 4,487us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
10,063us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 7,500us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
17,538us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 11,987us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
27,601us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_CoveredUnderLossSharingAgreementsWithFDICMember
/ us-gaap_StatementGeographicalAxis
= country_PR
UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 638us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 17,913us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 2,331us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 70,664us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 4,147us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 48,267us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 6,478us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 118,931us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 3,347us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 93,178us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 4,541us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 52,645us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 7,888us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 145,823us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Multi Family [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
11,073us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
11,073us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
17,812us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
17,812us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Commercial Multi Family [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
3,405us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
3,405us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
6,942us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
6,942us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Commercial Multi Family [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 7,668us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 7,668us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 10,870us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 10,870us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialMultiFamilyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Real Estate Non Owner Occupied [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 5,182us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,368us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 7,929us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
74,261us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 50,324us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
19,120us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 58,253us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
93,381us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 7,929us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
92,790us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 53,154us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
19,407us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 61,083us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
112,197us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Commercial Real Estate Non Owner Occupied [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 5,182us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,368us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 7,929us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
47,245us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 50,324us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
19,120us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 58,253us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
66,365us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 7,929us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
55,397us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 53,154us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
19,407us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 61,083us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
74,804us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Commercial Real Estate Non Owner Occupied [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 27,016us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 27,016us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 37,393us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 37,393us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateNonOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Real Estate Owner Occupied [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 16,770us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
6,473us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 14,897us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
49,373us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 114,163us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
55,826us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 129,060us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
105,199us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 16,110us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
67,455us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 127,855us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
74,420us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 143,965us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
141,875us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Commercial Real Estate Owner Occupied [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 16,770us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
6,473us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 14,897us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
33,749us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 114,163us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
55,826us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 129,060us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
89,575us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 16,110us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
47,545us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 127,855us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
74,420us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 143,965us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
121,965us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Commercial Real Estate Owner Occupied [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 15,624us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 15,624us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 19,910us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 19,910us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialRealEstateOwnerOccupiedMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial And Industrial Loans [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 42,784us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
7,568us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 24,215us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
57,493us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 145,633us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
30,370us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 169,848us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
87,863us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 31,972us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
69,969us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 148,204us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
33,152us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 180,176us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
103,121us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Commercial And Industrial Loans [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 42,784us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
7,568us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 23,965us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
55,665us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 145,633us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
30,370us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 169,598us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
86,035us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 31,722us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
68,141us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 148,204us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
33,152us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 179,926us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
101,293us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Commercial And Industrial Loans [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 250us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 1,828us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 250us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 1,828us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 250us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 1,828us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 250us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 1,828us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_CommercialAndIndustrialLoansMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Commercial Real Estate Construction Financing Receivable Member | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 363us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
177us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 10,693us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
20,162us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 2,575us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,324us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 13,268us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
22,486us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 28,994us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
42,614us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 7,980us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
9,047us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 36,974us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
51,661us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Commercial Real Estate Construction Financing Receivable Member | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 363us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
177us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 10,693us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
14,499us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 2,575us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,324us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 13,268us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
16,823us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 28,994us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
36,951us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 7,980us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
9,047us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 36,974us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,998us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Commercial Real Estate Construction Financing Receivable Member | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 5,663us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 5,663us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 5,663us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 5,663us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_CommercialRealEstateConstructionFinancingReceivableMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Mortgages [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 46,111us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
55,667us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 36,864us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
47,444us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 398,960us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
404,629us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 435,824us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
452,073us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 41,554us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
53,694us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 429,945us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
426,963us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 471,499us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
480,657us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Mortgages [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 45,838us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
38,034us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 35,658us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
40,910us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 395,911us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
358,437us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 431,569us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
399,347us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 39,248us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,181us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 426,502us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
376,393us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 465,750us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
421,574us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Mortgages [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 273us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 17,633us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 1,206us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 6,534us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 3,049us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 46,192us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 4,255us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 52,726us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 2,306us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 8,513us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 3,443us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 50,570us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 5,749us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 59,083us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_MortgageReceivablesMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Legacy [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
6,045us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
6,045us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
8,715us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
8,715us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Legacy [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 6,045us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 6,045us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 8,715us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 8,715us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= bpop_LegacyMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Finance Leases Portfolio Segment Member | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 770us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
1,053us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 3,023us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,893us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Recorded Investment 3,023us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,893us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 3,023us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,893us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Unpaid Principal Balance 3,023us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
2,893us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
Finance Leases Portfolio Segment Member | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 770us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
1,053us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 3,023us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,893us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 3,023us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,893us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 3,023us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,893us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 3,023us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
2,893us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Finance Leases Portfolio Segment Member | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_FinanceLeasesPortfolioSegmentMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_StatementGeographicalAxis
= country_US
Consumer Loan [Member] | Consumer Credit Card Financing Receivable [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 8,023us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
8,344us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 41,477us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
45,015us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Recorded Investment 41,477us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
45,015us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 41,477us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
45,015us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Unpaid Principal Balance 41,477us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
45,015us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
Consumer Loan [Member] | Consumer Credit Card Financing Receivable [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 8,023us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
8,344us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 41,477us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,015us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 41,477us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,015us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 41,477us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,015us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 41,477us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
45,015us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Consumer Loan [Member] | Consumer Credit Card Financing Receivable [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerCreditCardFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Consumer Loan [Member] | Home Equity Line of Credit [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 362us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 791us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
198us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 1,095us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Recorded Investment 1,886us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
198us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 791us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
198us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 1,095us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Unpaid Principal Balance 1,886us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
198us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
Consumer Loan [Member] | Home Equity Line of Credit [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Consumer Loan [Member] | Home Equity Line of Credit [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 362us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 791us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 198us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 1,095us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 1,886us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 198us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 791us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 198us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 1,095us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 1,886us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 198us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_HomeEquityMember
/ us-gaap_StatementGeographicalAxis
= country_US
Consumer Loan [Member] | Personal [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 19,410us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
21,313us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 71,825us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
78,475us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Recorded Investment 71,825us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
78,475us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 71,825us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
78,475us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Unpaid Principal Balance 71,825us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
78,475us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
Consumer Loan [Member] | Personal [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 19,410us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
21,313us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 71,825us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
78,475us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 71,825us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
78,475us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 71,825us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
78,475us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 71,825us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
78,475us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Consumer Loan [Member] | Personal [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= bpop_PersonalMember
/ us-gaap_StatementGeographicalAxis
= country_US
Consumer Loan [Member] | Consumer Loans Auto Financing Receivable [Member] | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 262us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
171us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
88us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 1,932us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
1,354us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Recorded Investment 1,932us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
1,442us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
88us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 1,932us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
1,354us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Unpaid Principal Balance 1,932us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
1,442us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
Consumer Loan [Member] | Consumer Loans Auto Financing Receivable [Member] | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 262us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
171us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 1,932us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
1,354us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 1,932us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
1,354us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 1,932us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
1,354us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 1,932us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
1,354us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Consumer Loan [Member] | Consumer Loans Auto Financing Receivable [Member] | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 88us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 0us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 88us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 88us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 88us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Consumer Loan [Member] | Consumer Other Financing Receivable Member | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 104us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
372us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 84us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Recorded Investment 528us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
2,573us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Recorded Investment 612us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
2,573us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 528us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
2,573us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Unpaid Principal Balance 528us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
2,573us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
Consumer Loan [Member] | Consumer Other Financing Receivable Member | PUERTO RICO | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 101us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
92us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Recorded Investment 525us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
498us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Recorded Investment 525us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
498us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 525us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
498us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Unpaid Principal Balance 525us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
498us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_PR
Consumer Loan [Member] | Consumer Other Financing Receivable Member | UNITED STATES | Non Covered Loans [Member]    
Financing Receivable, Impaired [Line Items]    
Related Allowance 3us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 280us-gaap_ImpairedFinancingReceivableRelatedAllowance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Recorded Investment [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Recorded Investment 84us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Recorded Investment 3us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 2,075us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Recorded Investment 87us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 2,075us-gaap_ImpairedFinancingReceivableRecordedInvestment
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, Unpaid Principal Balance [Abstract]    
Impaired Financing Receivable, with No Related Allowance, Unpaid Principal Balance 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 0us-gaap_ImpairedFinancingReceivableWithNoRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Impaired Financing Receivable, with Related Allowance, Unpaid Principal Balance 3us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] 2,075us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
Unpaid Principal Balance $ 3us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] $ 2,075us-gaap_ImpairedFinancingReceivableUnpaidPrincipalBalance
/ us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis
= us-gaap_ConsumerLoanMember
/ bpop_BankingAgenciesAxis
= bpop_NonCoveredLoansMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerOtherFinancingReceivableMember
/ us-gaap_StatementGeographicalAxis
= country_US
[1] Excludes impaired loans from discontinued operations.