Skip to main content

Personal Loan - V2 Configuration

Product Type: Unsecured Personal Lending
Use Case: General purpose loans for individuals
Typical Amount: ₦50,000 - ₦5,000,000
Typical Tenor: 6-60 months
Interest Rate: 15.5% - 35% per annum


Overview

Personal loans are unsecured general-purpose loans designed for individual customers. They offer flexible terms for various personal needs including education, home improvements, medical expenses, and debt consolidation.

Key Features

  • No collateral required
  • Fixed monthly repayments
  • Flexible loan amounts and tenors
  • Income verification required
  • Optional guarantor
  • Early repayment allowed

YAML Field Reference

Basic Information Section

Field NameData TypeRequiredDescriptionExample
productCodeString✅ YesUnique code identifying the loan product"PL-001"
productNameString✅ YesDisplay name of the product"Personal Loan"
descriptionStringNoDetailed product description"Unsecured personal loan for individuals"
isActiveBooleanNoWhether product is currently activetrue
loanProductTypeStringNoType of loan product (V1 compatibility)"FixedTermLoan"
repaymentAllocationOrderStringNoOrder of payment allocation"FEES_PENALTY_INTEREST_PRINCIPAL"
lineOfBusinessEnumNoBusiness line classification"Retail"
currencyCodeStringNoCurrency code (e.g., NGN, USD)"NGN"

Loan Tenure Section

Field NameData TypeRequiredDescriptionExample
minimumMonthsInteger✅ YesMinimum loan duration in months6
maximumMonthsInteger✅ YesMaximum loan duration in months60
defaultMonthsIntegerNoDefault tenure offered12

Principal Range Section

Field NameData TypeRequiredDescriptionExample
minimumAmountDecimalNoMinimum loan amount50000
maximumAmountDecimalNoMaximum loan amount5000000
defaultAmountDecimalNoDefault loan amount suggested500000

Interest Configuration Section

Field NameData TypeRequiredDescriptionExample
isEnabledBoolean✅ YesWhether interest is chargedtrue
rate.defaultDecimal✅ YesDefault interest rate (%)15.5
rate.minimumDecimalNoMinimum interest rate (%)12.0
rate.maximumDecimalNoMaximum interest rate (%)35.0
calculationMethodEnum✅ YesInterest calculation method"DecliningBalance"
deductionMethodEnumNoHow interest is collected"PaymentDueDate"
rateTermsEnumNoRate expression (per year/month)"PerYear"

Interest Calculation Methods:

  • DecliningBalance - Interest calculated on reducing balance (most common)
  • Flat - Interest calculated on original principal amount
  • DecliningBalanceEqualInstallments - Equal monthly payments with declining interest

Repayment Configuration Section

Field NameData TypeRequiredDescriptionExample
frequencyEnum✅ YesRepayment frequency"Monthly"
allocationOrderStringNoPayment allocation priority"FEES_PENALTY_INTEREST_PRINCIPAL"
principalCollectionIntervalIntegerNoCollect principal every X repayments1
firstDueDateOffsetIntegerNoDays until first repayment30

Repayment Frequencies: Daily, Weekly, Biweekly, Monthly, Quarterly, Annually

Fees Section

Field NameData TypeRequiredDescriptionExample
fees[].codeString✅ YesUnique fee code"PROC_FEE"
fees[].nameString✅ YesFee display name"Processing Fee"
fees[].feeTypeEnum✅ YesWhen fee is applied"DeductedDisbursement"
fees[].calculationTypeEnum✅ YesHow fee is calculated"PercentOfPrincipal"
fees[].valueDecimal✅ YesFee amount or percentage2.5
fees[].minimumDecimalNoMinimum fee amount5000
fees[].maximumDecimalNoMaximum fee amount50000
fees[].glAccountIdIntegerNoGL account for fee income40001

Fee Types:

  • Manual - Applied manually
  • DeductedDisbursement - Deducted from loan amount
  • CapitalizedDisbursement - Added to principal
  • UpfrontDisbursement - Paid before disbursement
  • LateRepayment - Charged on late payments

Penalty Configuration Section

Field NameData TypeRequiredDescriptionExample
isEnabledBooleanNoWhether penalties are chargedtrue
tolerancePeriodIntegerNoGrace period in days before penalty3
calculationMethodEnumNoPenalty calculation basis"OverduePrincipal_DaysLate_Rate"
rate.defaultDecimalNoDefault penalty rate (%)2.0
rate.minimumDecimalNoMinimum penalty rate (%)1.0
rate.maximumDecimalNoMaximum penalty rate (%)5.0

Collateral Configuration Section

Field NameData TypeRequiredDescriptionExample
isRequiredBooleanNoWhether collateral is mandatoryfalse
types[]ArrayNoAccepted collateral types["Property", "Vehicle"]
coverageRatioDecimalNoRequired collateral value ratio (%)120

Eligibility Configuration Section

Field NameData TypeRequiredDescriptionExample
minimumAgeIntegerNoMinimum customer age21
maximumAgeIntegerNoMaximum customer age60
minimumIncomeDecimalNoMinimum monthly income required50000
employmentStatus[]ArrayNoAccepted employment types["Employed", "SelfEmployed"]
requiredDocuments[]ArrayNoRequired documentation["NationalID", "ProofOfIncome"]
kycLevelEnumNoRequired KYC level"Tier2"

Notifications Configuration Section

Field NameData TypeRequiredDescriptionExample
sendApplicationConfirmationBooleanNoNotify on application submissiontrue
sendApprovalNotificationBooleanNoNotify on approvaltrue
sendDisbursementNotificationBooleanNoNotify on disbursementtrue
sendRepaymentRemindersBooleanNoSend repayment reminderstrue
reminderDaysBeforeIntegerNoDays before due date to remind3
channels.smsBooleanNoEnable SMS notificationstrue
channels.emailBooleanNoEnable email notificationstrue
channels.pushBooleanNoEnable push notificationsfalse

Complete Sample YAML Configuration

basicInfo:
productCode: "PL-STANDARD-001"
productName: "Standard Personal Loan"
description: "Unsecured personal loan for general purposes"
isActive: true
loanProductType: "FixedTermLoan"
repaymentAllocationOrder: "FEES_PENALTY_INTEREST_PRINCIPAL"
lineOfBusiness: "Retail"
currencyCode: "NGN"

loanTenure:
minimumMonths: 6
maximumMonths: 60
defaultMonths: 12

principalRange:
minimumAmount: 50000
maximumAmount: 5000000
defaultAmount: 500000

interestConfig:
isEnabled: true
rate:
default: 15.5
minimum: 12.0
maximum: 35.0
calculationMethod: "DecliningBalance"
deductionMethod: "PaymentDueDate"
rateTerms: "PerYear"

repaymentConfig:
frequency: "Monthly"
allocationOrder: "FEES_PENALTY_INTEREST_PRINCIPAL"
principalCollectionInterval: 1
firstDueDateOffset: 30

fees:
- code: "PROC_FEE"
name: "Processing Fee"
feeType: "DeductedDisbursement"
calculationType: "PercentOfPrincipal"
value: 2.5
minimum: 5000
maximum: 50000
glAccountId: 40001

- code: "MGMT_FEE"
name: "Management Fee"
feeType: "CapitalizedDisbursement"
calculationType: "Flat"
value: 10000
glAccountId: 40002

penaltyConfig:
isEnabled: true
tolerancePeriod: 3
calculationMethod: "OverduePrincipal_DaysLate_Rate"
rate:
default: 2.0
minimum: 1.0
maximum: 5.0

collateralConfig:
isRequired: false
types:
- "Property"
- "Vehicle"
- "Guarantor"
coverageRatio: 0 # Not required for personal loans

eligibilityConfig:
minimumAge: 21
maximumAge: 60
minimumIncome: 50000
employmentStatus:
- "Employed"
- "SelfEmployed"
requiredDocuments:
- "NationalID"
- "ProofOfIncome"
- "UtilityBill"
kycLevel: "Tier2"

notificationsConfig:
sendApplicationConfirmation: true
sendApprovalNotification: true
sendDisbursementNotification: true
sendRepaymentReminders: true
reminderDaysBefore: 3
channels:
sms: true
email: true
push: false

accountingConfig:
methodology: "Accrual"
glAccounts:
portfolioControlAccount: 10501
interestReceivableAccount: 10502
feeReceivableAccount: 10503
penaltyReceivableAccount: 10504
interestIncomeAccount: 40101
feeIncomeAccount: 40102
penaltyIncomeAccount: 40103

Use Cases & Examples

Example 1: Standard Personal Loan

Scenario: Customer needs ₦500,000 for home renovation over 12 months.

Configuration:

  • Principal: ₦500,000
  • Tenor: 12 months
  • Interest: 15.5% per annum (Declining Balance)
  • Processing Fee: 2.5% (₦12,500)

Monthly Repayment Calculation:

Using Declining Balance:
Monthly Interest Rate = 15.5% / 12 = 1.292%
Monthly Payment = ₦500,000 × [0.01292 × (1 + 0.01292)^12] / [(1 + 0.01292)^12 - 1]
Monthly Payment ≈ ₦44,859

Total Repayment: ₦538,308
Total Interest: ₦38,308

Example 2: Low-Income Personal Loan

principalRange:
minimumAmount: 50000
maximumAmount: 500000 # Lower max
defaultAmount: 200000

interestConfig:
rate:
default: 18.0 # Slightly higher risk
minimum: 15.0
maximum: 25.0

eligibilityConfig:
minimumIncome: 30000 # Lower income threshold
maximumAge: 55 # Lower age limit

Example 3: High-Value Personal Loan

principalRange:
minimumAmount: 1000000
maximumAmount: 10000000 # Higher max

interestConfig:
rate:
default: 12.5 # Better rate for higher amounts
minimum: 10.0
maximum: 18.0

eligibilityConfig:
minimumIncome: 300000 # Higher income requirement
requiredDocuments:
- "NationalID"
- "ProofOfIncome"
- "BankStatements6Months"
- "TaxClearance"

Common Configurations

Quick Approval Personal Loan

eligibilityConfig:
minimumAge: 25
minimumIncome: 100000
requiredDocuments:
- "NationalID"
- "BankStatement3Months"

collateralConfig:
isRequired: false

notificationsConfig:
sendApplicationConfirmation: true
channels:
sms: true
email: true

Secured Personal Loan (Lower Rate)

interestConfig:
rate:
default: 12.0 # Lower due to collateral
minimum: 10.0
maximum: 18.0

collateralConfig:
isRequired: true
types:
- "Property"
- "Vehicle"
coverageRatio: 120

Interest Calculation Examples

Declining Balance (Reducing Balance)

Most Common Method - Interest calculated on remaining principal.

Loan Amount: ₦500,000
Interest Rate: 15.5% p.a. (1.292% monthly)
Tenor: 12 months

Month 1:
Opening Balance: ₦500,000
Interest: ₦500,000 × 1.292% = ₦6,458
Principal: ₦44,859 - ₦6,458 = ₦38,401
Closing Balance: ₦461,599

Month 2:
Opening Balance: ₦461,599
Interest: ₦461,599 × 1.292% = ₦5,963
Principal: ₦44,859 - ₦5,963 = ₦38,896
Closing Balance: ₦422,703

...continues until paid off

Flat Rate (Less Common)

Interest calculated on original principal throughout.

Loan Amount: ₦500,000
Interest Rate: 15.5% p.a. flat
Tenor: 12 months

Total Interest: ₦500,000 × 15.5% = ₦77,500
Total Repayment: ₦577,500
Monthly Payment: ₦577,500 / 12 = ₦48,125 (fixed)

Validation Rules

Built-in Validations

  1. Tenure Validation:

    • minimumMonths must be > 0
    • maximumMonths must be >= minimumMonths
  2. Principal Validation:

    • minimumAmount must be > 0
    • maximumAmount must be >= minimumAmount
  3. Interest Rate Validation:

    • default must be between minimum and maximum
    • All rates must be > 0
  4. Fee Validation:

    • Each fee must have unique code
    • value must be > 0
    • If minimum/maximum specified, value must be within range

Business Rule Validations

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.


Troubleshooting

Issue: "Interest rate out of range"

Cause: Requested rate not within configured min/max.

Solution: Check interestConfig.rate bounds:

interestConfig:
rate:
default: 15.5
minimum: 12.0 # Must be <= default
maximum: 35.0 # Must be >= default

Issue: "Tenure not allowed"

Cause: Requested months outside configured range.

Solution: Verify loanTenure settings:

loanTenure:
minimumMonths: 6
maximumMonths: 60 # Must accommodate request

Issue: "Fee calculation error"

Cause: Fee configuration mismatch.

Solution: Ensure fee calculation type matches value:

fees:
- calculationType: "PercentOfPrincipal"
value: 2.5 # Percentage (not 0.025)
- calculationType: "Flat"
value: 10000 # Fixed amount

Migration from V1

V1 Field Mapping

V1 Field/TableV2 YAML Path
LoanProduct.LoanProductTypebasicInfo.loanProductType
LoanProduct.RepaymentAllocationOrderbasicInfo.repaymentAllocationOrder
LoanProductInterestSetting.*interestConfig.*
RepaymentReschedulingSetting.*repaymentConfig.*
LoanAmountSetting.*principalRange.*
LoanProductPenaltySetting.*penaltyConfig.*
LoanProductFee recordsfees[] array

Migration Script Example

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.


Last Updated: January 2, 2026
API Version: V2 (BPMCore)
Product Category: Loan Products
Complexity: ⭐⭐ (Moderate)