XML 130 R84.htm IDEA: XBRL DOCUMENT v2.4.1.9
Allowance for Loan and Lease Losses (Allowance for loan and lease losses) (Details) (USD $)
In Thousands, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Provision for Non Covered Loan and Lease Losses $ 54,960ofg_ProvisionForNonCoveredLoanAndLeaseLosses $ 67,559ofg_ProvisionForNonCoveredLoanAndLeaseLosses $ 13,854ofg_ProvisionForNonCoveredLoanAndLeaseLosses
Non-covered acquired loans accounted under ASC 310-20      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 2,354us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
 
Charge-offs (13,445)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
(11,205)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
 
Recoveries 2,773us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
4,442us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
 
Provision for Non Covered Loan and Lease Losses 12,915ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
9,117ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
 
Balance at end of period 4,597us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
2,354us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
 
Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 2,863us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
 
Provision for Non Covered Loan and Lease Losses 10,618ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
2,863ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
 
Balance at end of period 13,481us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
2,863us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
 
Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 49,081us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
39,921us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
37,010us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs (39,258)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(48,541)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(11,451)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 10,189us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
2,122us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
508us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses 31,427ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
55,579ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
13,854ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 51,439us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
49,081us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
39,921us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Residential Portfolio Segment | Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Provision for Non Covered Loan and Lease Losses 0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Balance at end of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
 
Residential Portfolio Segment | Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 19,937us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
21,092us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
21,652us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs (5,011)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(36,566)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(6,492)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 428us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
6us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
131us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses 4,325ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
35,405ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
5,801ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 19,679us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
19,937us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
21,092us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ResidentialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Commercial Portfolio Segment | Non-covered acquired loans accounted under ASC 310-20      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 926us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Charge-offs (532)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
(25)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Recoveries 73us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
9us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Provision for Non Covered Loan and Lease Losses (402)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
942ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Balance at end of period 65us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
926us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Commercial Portfolio Segment | Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 1,713us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Provision for Non Covered Loan and Lease Losses 11,763ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
1,713ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Balance at end of period 13,476us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
1,713us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
 
Commercial Portfolio Segment | Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 14,897us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
17,072us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
12,548us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs (2,424)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(5,889)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(4,081)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 333us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
383us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
156us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses (4,374)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
3,331ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
8,449ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 8,432us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
14,897us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
17,072us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CommercialPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Consumer Portfolio Segment      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at end of period   0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Consumer Portfolio Segment | Non-covered acquired loans accounted under ASC 310-20      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Charge-offs (6,902)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
(5,530)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Recoveries 531us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
1,035us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Provision for Non Covered Loan and Lease Losses 7,582ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
4,495ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Balance at end of period 1,211us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Consumer Portfolio Segment | Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 418us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Provision for Non Covered Loan and Lease Losses (413)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
418ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Balance at end of period 5us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
418us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
 
Consumer Portfolio Segment | Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 6,006us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
856us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
1,423us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs (5,782)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(1,485)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(739)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 570us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
165us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
194us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses 8,278ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
6,470ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(22)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 9,072us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
6,006us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
856us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerPortfolioSegmentMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Auto Portfolio Segment | Non-covered acquired loans accounted under ASC 310-20      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 1,428us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Charge-offs (6,011)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
(5,650)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Recoveries 2,169us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
3,398us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Provision for Non Covered Loan and Lease Losses 5,735ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
3,680ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Balance at end of period 3,321us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
1,428us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Auto Portfolio Segment | Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 732us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Provision for Non Covered Loan and Lease Losses (732)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
732ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Balance at end of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
732us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoansAutoFinancingReceivableMember
 
Auto and Leasing Portfolio Segment      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at end of period   7,866us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
 
Auto and Leasing Portfolio Segment | Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 7,866us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
533us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
845us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs (26,041)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(4,601)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(139)us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 8,858us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
1,568us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
27us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses 23,572ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
10,366ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(200)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 14,255us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
7,866us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
533us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Unallocated Financing Receivables      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at end of period   0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Unallocated Financing Receivables | Non-covered acquired loans accounted under ASC 310-20      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Charge-offs 0us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Recoveries 0us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Provision for Non Covered Loan and Lease Losses 0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Balance at end of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_LoansReceivableAcquiredMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
 
Unallocated Financing Receivables | Non-covered originated loans [Member]      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 375us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
368us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
542us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Charge-offs 0us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Recoveries 0us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesRecovery
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Provision for Non Covered Loan and Lease Losses (374)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
7ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
(174)ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Balance at end of period 1us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
375us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
368us-gaap_FinancingReceivableAllowanceForCreditLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_UnallocatedFinancingReceivablesMember
/ ofg_NonCoveredLoansByInstitutionAxis
= ofg_NonCoveredOriginatedLoansMember
Construction Portfolio Segment | Most recent acquired loans accounted under ASC 310-30      
Financing Receivable, Allowance for Credit Losses [Roll Forward]      
Balance at beginning of period 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember
0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember
 
Provision for Non Covered Loan and Lease Losses 0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember
0ofg_ProvisionForNonCoveredLoanAndLeaseLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember
 
Balance at end of period $ 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember
$ 0us-gaap_FinancingReceivableAllowanceForCreditLosses
/ ofg_CertainLoansAcquiredInTransferNotAccountedForAsDebtSecuritiesAcquiredDuringPeriodAxis
= ofg_MostRecentAcquiredLoansAccountedUnderSC31030Member
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConstructionLoansMember