XML 162 R82.htm IDEA: XBRL DOCUMENT v2.4.1.9
Loans Receivable (Risk category of gross non-covered loans not subject to risk rating ) (Details) (USD $)
In Thousands, unless otherwise specified
Dec. 31, 2014
Dec. 31, 2013
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount $ 4,578,431us-gaap_LoansAndLeasesReceivableGrossCarryingAmount $ 4,669,192us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
Non Covered Loan, Not Subject To Risk Ratings [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 1,784,219us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
1,631,641us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
0 - 29 Days Past Due 1,459,699us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
1,362,392us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
30 - 59 Days Past Due 95,828us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
85,475us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
60 - 89 Days Past Due 40,626us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
28,939us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
90-119 Days Past Due 20,735ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
18,766ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
120 - 364 Days Past Due 40,053ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
31,979ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
365+ Days Past Due 32,374ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
19,161ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
Financing Receivable, Individually Evaluated for Impairment 94,904us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
84,929us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_NonCoveredLoanNotSubjectToRiskRatingsMember
Originated loans, not subject to risk rating [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 1,554,093us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,273,883us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 1,248,995us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,028,173us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 83,298us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
70,528us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 36,472us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
24,116us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 19,340ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
16,783ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 38,710ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30,193ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 32,374ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
19,161ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 94,904us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
84,929us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Mortgages [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 791,751us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
766,265us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 563,972us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
564,310us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 33,131us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
43,034us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 18,623us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
14,027us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 13,303ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12,943ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 36,166ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
28,316ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 32,371ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
19,141ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 94,185us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
84,494us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_MortgagesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Conventional Loan [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 619,348us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
602,188us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 521,657us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
520,782us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 30,659us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
38,441us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 16,916us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12,716us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 5,607ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
4,649ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 14,432ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12,129ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 13,931ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
4,441ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 16,146us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
9,030us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConventionalLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated Up To The Year 2002 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 65,744us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
76,512us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 53,432us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
64,743us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 3,963us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
6,594us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 3,083us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,634us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 1,044ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
868ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 1,360ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,082ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 1,975ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,458ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 887us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
133us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedUpToYear2002Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated In The Years 2003 And 2004 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 109,669us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
65,117us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 86,941us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
56,283us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 10,391us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
4,722us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 4,362us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,938us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 1,657ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
56ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 3,215ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,437ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 1,330ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
352ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 1,773us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
329us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2003And2004Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated In The Year 2005 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 60,472us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
89,541us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 49,275us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
74,016us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 3,824us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
8,414us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 2,205us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
2,119us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 389ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,198ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 1,673ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
3,037ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 1,893ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
573ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 1,213us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
184us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2005Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated In The Year 2006 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 85,550us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120,322us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 65,113us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
99,243us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 5,263us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12,055us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 2,967us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
4,312us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 1,242ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,148ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 2,801ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
2,755ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 4,624ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
515ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 3,540us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
294us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYear2006Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated In The Years 2007 2008 And 2009 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 93,489us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
101,150us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 76,246us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
91,920us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 4,230us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
3,464us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 1,809us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,104us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 337ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,264ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 3,986ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
2,844ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 2,813ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
554ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 4,068us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears20072008And2009Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Originated In The Years 2010 2011 2012 2013 And 2014 [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 204,424us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
149,546us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 190,650us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
134,577us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 2,988us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
3,192us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 2,490us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,609us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 938ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
115ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 1,397ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
974ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 1,296ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
989ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 4,665us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
8,090us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_OriginatedInYears2010201120122013And2014Member
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | NonTraditional Mortgage [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 36,200us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
42,102us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 30,916us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
35,168us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 1,477us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
3,217us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 584us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,162us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 478ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 600ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,324ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 2,096ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
833ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 49us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
398us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_NontraditionalMortgageMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Loss Mitigation Program Loan Exclude Individually Impairment Measure [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 93,443us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
86,318us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 10,882us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
7,762us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 995us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,376us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 1,123us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
149us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 802ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
624ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 405ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
312ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 1,246ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,029ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 77,990us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
75,066us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_LossMitigationProgramLoanExcludeIndividuallyImpairmentMeasureMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Home equity secured personal loans [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 517us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
736us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 517us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
598us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 0ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
126ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_HomeEquitySecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | GNMA's Buy Back Option related    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 42,243us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
34,921us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 6,416ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
7,670ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 20,729ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
14,425ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 15,098ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
12,826ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_OptionOnSecuritiesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Consumer Loan [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 186,760us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
127,744us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 181,435us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
124,046us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 2,509us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,962us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 933us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
652us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 841ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
443ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 320ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
186ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 3ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
20ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 719us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
435us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Credit Cards [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 19,071us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
15,241us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 18,198us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
14,555us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 360us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
287us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 139us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
168us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 171ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
118ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 203ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
113ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Overdrafts [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 307us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
372us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 287us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
322us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 20us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
46us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 0us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
4us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 0ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_BankOverdraftsMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Unsecured personal lines of credit [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 2,200us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,981us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 1,970us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,844us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 102us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
33us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 25us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
38us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 38ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
25ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 62ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
34ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 3ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
7ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLinesOfCreditMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Unsecured personal loans [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 147,939us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
94,560us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 144,060us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
92,102us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 1,752us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,272us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 730us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
399us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 623ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
300ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 55ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
39ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
13ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 719us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
435us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Cash collateral personal loans [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 17,243us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
15,590us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 16,920us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
15,223us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 275us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
324us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 39us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
43us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 9ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 0ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_CashCollateralPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Originated loans, not subject to risk rating [Member] | Auto and Leasing loans receivable    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 575,582us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
379,874us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0 - 29 Days Past Due 503,588us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
339,817us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
30 - 59 Days Past Due 47,658us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
25,532us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
60 - 89 Days Past Due 16,916us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
9,437us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
90-119 Days Past Due 5,196ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
3,397ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
120 - 364 Days Past Due 2,224ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
1,691ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_AutoAndLeasingLoansReceivableMember
/ ofg_ReceivableComponentsAxis
= ofg_OriginatedLoansNotSubjectToRiskRatingMember
Accounted For Under ASC 310-20, not subject to risk rating [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 230,126us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
357,758us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0 - 29 Days Past Due 210,704us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
334,219us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
30 - 59 Days Past Due 12,530us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
14,947us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60 - 89 Days Past Due 4,154us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
4,823us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
90-119 Days Past Due 1,395ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,983ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
120 - 364 Days Past Due 1,343ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,786ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Accounted For Under ASC 310-20, not subject to risk rating [Member] | Consumer Loan [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 45,344us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
56,174us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0 - 29 Days Past Due 41,640us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
50,394us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
30 - 59 Days Past Due 1,527us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
2,413us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60 - 89 Days Past Due 701us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,207us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
90-119 Days Past Due 628ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
888ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
120 - 364 Days Past Due 848ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,272ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_ConsumerLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Accounted For Under ASC 310-20, not subject to risk rating [Member] | Credit Cards [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 41,848us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
52,199us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0 - 29 Days Past Due 38,419us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
46,713us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
30 - 59 Days Past Due 1,376us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
2,217us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60 - 89 Days Past Due 654us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,200us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
90-119 Days Past Due 589ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
828ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
120 - 364 Days Past Due 810ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,241ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_CreditCardReceivablesMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Accounted For Under ASC 310-20, not subject to risk rating [Member] | Unsecured personal loans [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 3,496us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
3,975us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0 - 29 Days Past Due 3,221us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
3,681us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
30 - 59 Days Past Due 151us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
196us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60 - 89 Days Past Due 47us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
7us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
90-119 Days Past Due 39ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
120 - 364 Days Past Due 38ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
31ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= ofg_UnsecuredPersonalLoansMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Accounted For Under ASC 310-20, not subject to risk rating [Member] | Automobile Loan [Member]    
Not Subject To Risk Rating [Line Items]    
Loans and Leases Receivable, Gross, Carrying Amount 184,782us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
301,584us-gaap_LoansAndLeasesReceivableGrossCarryingAmount
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0 - 29 Days Past Due 169,064us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
283,825us-gaap_FinancingReceivableRecordedInvestment1To29DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
30 - 59 Days Past Due 11,003us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
12,534us-gaap_FinancingReceivableRecordedInvestment30To59DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
60 - 89 Days Past Due 3,453us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
3,616us-gaap_FinancingReceivableRecordedInvestment60To89DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
90-119 Days Past Due 767ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
1,095ofg_FinancingReceivableRecordedInvestment90To119DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
120 - 364 Days Past Due 495ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
514ofg_FinancingReceivableRecordedInvestment120To364DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
365+ Days Past Due 0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
0ofg_FinancingReceivableRecordedInvestmentEqualToGreaterThan365DaysPastDue
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
Financing Receivable, Individually Evaluated for Impairment $ 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember
$ 0us-gaap_FinancingReceivableIndividuallyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= us-gaap_AutomobileLoanMember
/ ofg_ReceivableComponentsAxis
= ofg_AccountedForUnderAsc31020NotSubjectToRiskRatingMember