Asset Finance - V2 Configuration
Product Type: Secured Asset-Based Lending
Use Case: Vehicle purchase, equipment financing, machinery acquisition
Typical Amount: ₦1,000,000 - ₦50,000,000
Typical Tenor: 12-60 months
Interest Rate: 16% - 28% per annum
Overview
Asset Finance loans are designed for purchasing or financing specific assets (vehicles, equipment, machinery). The asset being financed serves as primary collateral, with Loan-to-Value (LTV) ratios determining the maximum loan amount.
Key Features
- Asset as Collateral: Financed asset is primary security
- LTV-Based Lending: 70-90% of asset value
- Supplier Payment: Direct payment to asset supplier
- GPS Tracking: Optional vehicle tracking
- Balloon Payments: Reduced monthly payments option
- Asset Insurance Mandatory: Comprehensive coverage required
- Depreciation Tracking: Asset revaluation over loan life
YAML Field Reference
Basic Information Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
productCode | String | ✅ Yes | Unique product code | "AF-VEHICLE-001" |
productName | String | ✅ Yes | Display name | "Vehicle Asset Finance" |
description | String | No | Product description | "Finance for vehicle purchase" |
isActive | Boolean | No | Product status | true |
loanProductType | String | No | Loan type | "AssetFinance" |
lineOfBusiness | Enum | No | Business classification | "Commercial" |
Loan Tenure Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumMonths | Integer | ✅ Yes | Minimum tenor | 12 |
maximumMonths | Integer | ✅ Yes | Maximum tenor | 60 |
defaultMonths | Integer | No | Default tenor | 48 |
Principal Range Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumAmount | Decimal | No | Minimum loan amount | 1000000 |
maximumAmount | Decimal | No | Maximum loan amount | 50000000 |
defaultAmount | Decimal | No | Default amount | 5000000 |
Asset Types Configuration
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
assetTypes[] | Array | ✅ Yes | Supported asset categories | See below |
assetTypes[].type | Enum | ✅ Yes | Asset type | "Vehicle" |
assetTypes[].maxLTV | Decimal | ✅ Yes | Max loan-to-value (%) | 80 |
assetTypes[].minAge | Integer | No | Min asset age | 0 |
assetTypes[].maxAge | Integer | No | Max asset age | 5 |
assetTypes[].depreciationRate | Decimal | No | Annual depreciation (%) | 20 |
assetTypes[].requireNewAsset | Boolean | No | Only new assets | false |
Asset Type Categories: Vehicle, Equipment, Machinery, Technology, Medical, Agricultural
LTV Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
ltvSettings.default | Decimal | ✅ Yes | Default LTV (%) | 80 |
ltvSettings.minimum | Decimal | No | Minimum LTV (%) | 70 |
ltvSettings.maximum | Decimal | No | Maximum LTV (%) | 90 |
ltvSettings.byAssetType | Object | No | LTV by asset category | See sample |
ltvSettings.newAssetBonus | Decimal | No | Extra LTV for new asset | 5 |
Interest Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
isEnabled | Boolean | ✅ Yes | Whether interest is charged | true |
rate.default | Decimal | ✅ Yes | Default rate (%) | 22.0 |
rate.minimum | Decimal | No | Minimum rate (%) | 16.0 |
rate.maximum | Decimal | No | Maximum rate (%) | 28.0 |
calculationMethod | Enum | ✅ Yes | Calculation method | "DecliningBalance" |
rateByAssetType | Object | No | Rates per asset type | See sample |
Balloon Payment Configuration
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
allowBalloonPayment | Boolean | No | Enable balloon structure | true |
balloonPercentage.minimum | Decimal | No | Min balloon (%) | 10 |
balloonPercentage.maximum | Decimal | No | Max balloon (%) | 40 |
balloonPercentage.default | Decimal | No | Default balloon (%) | 30 |
balloonDue | Enum | No | When balloon is due | "FinalPayment" |
Balloon Payment: Large final payment reducing monthly installments.
Supplier Payment Configuration
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
directSupplierPayment | Boolean | No | Pay supplier directly | true |
approvedSuppliers[] | Array | No | Whitelisted suppliers | [] |
requireSupplierInvoice | Boolean | No | Invoice mandatory | true |
requireProofOfDelivery | Boolean | No | Delivery proof mandatory | true |
allowCustomerDownpayment | Boolean | No | Customer can add equity | true |
GPS Tracking Configuration
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
requireGPSTracking | Boolean | No | Mandatory GPS for vehicles | true |
gpsProvider | String | No | Tracking provider | "IntelliTrack" |
gpsInstallationFee | Decimal | No | Installation cost | 50000 |
monthlyGPSFee | Decimal | No | Monthly monitoring fee | 2500 |
applyForVehiclesOnly | Boolean | No | Only for vehicle assets | true |
Insurance Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
requireInsurance | Boolean | ✅ Yes | Mandatory asset insurance | true |
insuranceTypes[] | Array | ✅ Yes | Required coverage types | ["Comprehensive", "ThirdParty"] |
bankAsBeneficiary | Boolean | ✅ Yes | Bank as loss payee | true |
minimumCoverage | Decimal | No | Min coverage amount | 100 |
renewalRequired | Boolean | No | Require annual renewal | true |
Insurance Types: Comprehensive, ThirdParty, Fire, Theft, AllRisk
Depreciation Tracking Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
trackDepreciation | Boolean | No | Monitor asset value | true |
depreciationMethod | Enum | No | Calculation method | "StraightLine" or "DecliningBalance" |
annualDepreciationRate | Decimal | No | Default rate (%) | 20 |
revaluationFrequency | Enum | No | Revaluation period | "Annual" |
requireRevaluationWhen | Decimal | No | LTV threshold for review | 100 |
Eligibility Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumAge | Integer | No | Minimum age | 25 |
maximumAge | Integer | No | Maximum age | 65 |
minimumIncome | Decimal | No | Minimum monthly income | 200000 |
employmentStatus[] | Array | No | Accepted employment | ["Salaried", "SelfEmployed", "Business"] |
requiredDocuments[] | Array | ✅ Yes | Mandatory documents | See below |
kycLevel | Enum | No | Required KYC tier | "Tier3" |
Required Documents for Asset Finance:
requiredDocuments:
- "ValidID"
- "ProofOfIncome"
- "BankStatement6Months"
- "UtilityBill"
- "AssetProformaInvoice"
- "SupplierQuotation"
- "AssetValuationReport"
Fees Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
fees[].code | String | ✅ Yes | Fee code | "PROC_FEE" |
fees[].name | String | ✅ Yes | Fee name | "Processing Fee" |
fees[].feeType | Enum | ✅ Yes | Collection method | "DeductedDisbursement" |
fees[].calculationType | Enum | ✅ Yes | Calculation type | "PercentOfPrincipal" |
fees[].value | Decimal | ✅ Yes | Fee amount/percentage | 1.5 |
fees[].minimum | Decimal | No | Minimum fee | 20000 |
fees[].maximum | Decimal | No | Maximum fee | 200000 |
fees[].glAccountId | Integer | ✅ Yes | GL account | 40001 |
Complete Sample YAML Configuration
basicInfo:
productCode: "AF-VEHICLE-001"
productName: "Vehicle Asset Finance"
description: "Financing for purchase of new and used vehicles"
isActive: true
loanProductType: "AssetFinance"
repaymentAllocationOrder: "FEES_PENALTY_INTEREST_PRINCIPAL"
lineOfBusiness: "Commercial"
currencyCode: "NGN"
loanTenure:
minimumMonths: 12
maximumMonths: 60
defaultMonths: 48
principalRange:
minimumAmount: 1000000
maximumAmount: 50000000
defaultAmount: 5000000
assetTypesConfig:
- type: "Vehicle"
maxLTV: 80
minAge: 0
maxAge: 5
depreciationRate: 20
requireNewAsset: false
- type: "Equipment"
maxLTV: 75
minAge: 0
maxAge: 10
depreciationRate: 15
requireNewAsset: false
- type: "Machinery"
maxLTV: 70
minAge: 0
maxAge: 15
depreciationRate: 10
requireNewAsset: false
ltvSettings:
default: 80
minimum: 70
maximum: 90
byAssetType:
Vehicle:
new: 85
used: 75
Equipment:
new: 80
used: 70
Machinery:
new: 75
used: 65
newAssetBonus: 5
interestConfig:
isEnabled: true
rate:
default: 22.0
minimum: 16.0
maximum: 28.0
calculationMethod: "DecliningBalance"
deductionMethod: "PaymentDueDate"
rateTerms: "PerYear"
rateByAssetType:
Vehicle: 22.0
Equipment: 20.0
Machinery: 18.0
balloonPaymentConfig:
allowBalloonPayment: true
balloonPercentage:
minimum: 10
maximum: 40
default: 30
balloonDue: "FinalPayment"
supplierPaymentConfig:
directSupplierPayment: true
approvedSuppliers: []
requireSupplierInvoice: true
requireProofOfDelivery: true
allowCustomerDownpayment: true
gpsTrackingConfig:
requireGPSTracking: true
gpsProvider: "IntelliTrack"
gpsInstallationFee: 50000
monthlyGPSFee: 2500
applyForVehiclesOnly: true
insuranceConfig:
requireInsurance: true
insuranceTypes:
- "Comprehensive"
- "ThirdParty"
bankAsBeneficiary: true
minimumCoverage: 100
renewalRequired: true
depreciationConfig:
trackDepreciation: true
depreciationMethod: "StraightLine"
annualDepreciationRate: 20
revaluationFrequency: "Annual"
requireRevaluationWhen: 100
eligibilityConfig:
minimumAge: 25
maximumAge: 65
minimumIncome: 200000
employmentStatus:
- "Salaried"
- "SelfEmployed"
- "Business"
requiredDocuments:
- "ValidID"
- "ProofOfIncome"
- "BankStatement6Months"
- "UtilityBill"
- "AssetProformaInvoice"
- "SupplierQuotation"
- "AssetValuationReport"
kycLevel: "Tier3"
fees:
- code: "PROC_FEE"
name: "Processing Fee"
feeType: "DeductedDisbursement"
calculationType: "PercentOfPrincipal"
value: 1.5
minimum: 20000
maximum: 200000
glAccountId: 40001
- code: "VAL_FEE"
name: "Asset Valuation Fee"
feeType: "UpfrontDisbursement"
calculationType: "Flat"
value: 25000
glAccountId: 40002
- code: "GPS_INSTALL"
name: "GPS Installation"
feeType: "DeductedDisbursement"
calculationType: "Flat"
value: 50000
glAccountId: 40003
repaymentConfig:
frequency: "Monthly"
allocationOrder: "FEES_PENALTY_INTEREST_PRINCIPAL"
principalCollectionInterval: 1
firstDueDateOffset: 30
penaltyConfig:
isEnabled: true
tolerancePeriod: 5
calculationMethod: "OverduePrincipal_DaysLate_Rate"
rate:
default: 3.0
minimum: 2.0
maximum: 5.0
notificationsConfig:
sendApplicationConfirmation: true
sendApprovalNotification: true
sendDisbursementNotification: true
sendRepaymentReminders: true
sendInsuranceRenewalReminder: true
reminderDaysBefore: 7
channels:
sms: true
email: true
push: false
Use Cases & Examples
Example 1: New Vehicle Purchase
Scenario: Customer wants to buy a brand new Toyota Hilux (₦15M).
Customer Profile:
- Age: 35 years
- Employment: Salaried (₦500k monthly)
- Income: ₦500,000/month
Asset Details:
- Vehicle: New Toyota Hilux
- Invoice Price: ₦15,000,000
- Asset Age: 0 years (brand new)
LTV Calculation:
ltvSettings:
byAssetType:
Vehicle:
new: 85 # New vehicle gets higher LTV
Maximum Loan = ₦15M × 85% = ₦12,750,000
Customer Equity = ₦15M - ₦12.75M = ₦2,250,000 (15%)
Loan Structure (48 months, 22% p.a.):
Principal: ₦12,750,000
Tenor: 48 months
Interest Rate: 22% p.a. (Declining Balance)
Monthly Payment ≈ ₦387,000
Total Repayment: ₦18.6M
Total Interest: ₦5.85M
Additional Costs:
Processing Fee (1.5%): ₦191,250
Valuation Fee: ₦25,000
GPS Installation: ₦50,000
Insurance (Annual): ₦300,000
Total Upfront: ₦2,816,250 (equity + fees)
Net to Supplier: ₦15,000,000
Example 2: Used Equipment with Balloon Payment
Scenario: Business needs to buy used printing equipment.
Asset Details:
- Equipment: Industrial Printer
- Market Value: ₦8,000,000
- Asset Age: 3 years
LTV Calculation:
ltvSettings:
byAssetType:
Equipment:
used: 70
Maximum Loan = ₦8M × 70% = ₦5,600,000
Customer Equity = ₦2,400,000 (30%)
Balloon Payment Structure:
balloonPaymentConfig:
balloonPercentage: 30 # 30% balloon
Principal: ₦5,600,000
Balloon Amount: ₦5.6M × 30% = ₦1,680,000
Financed Amount: ₦5.6M - ₦1.68M = ₦3,920,000
Tenor: 36 months
Interest Rate: 20%
Reduced Monthly Payment: ₦148,000 (vs ₦208,000 without balloon)
Month 1-35: ₦148,000
Month 36: ₦148,000 + ₦1,680,000 = ₦1,828,000 (Balloon due)
Benefits:
- Lower monthly payments: ✅
- Improved cash flow: ✅
- Large final payment: âš ï¸ (plan ahead)
Example 3: Asset with Depreciation Tracking
Scenario: Vehicle financed for 5 years with annual depreciation.
Configuration:
depreciationConfig:
trackDepreciation: true
depreciationMethod: "StraightLine"
annualDepreciationRate: 20
Asset Value Tracking:
Year 0: ₦10,000,000 (Purchase)
Year 1: ₦8,000,000 (20% depreciation)
Year 2: ₦6,000,000 (20% depreciation)
Year 3: ₦4,000,000 (20% depreciation)
Year 4: ₦2,000,000 (20% depreciation)
Year 5: ₦0 (Fully depreciated)
Loan Balance vs Asset Value:
Year 0: Loan ₦8M / Asset ₦10M = 80% LTV ✅
Year 2: Loan ₦4.8M / Asset ₦6M = 80% LTV ✅
Year 4: Loan ₦1.6M / Asset ₦2M = 80% LTV ✅
LTV remains healthy throughout loan life.
Revaluation Trigger:
If LTV exceeds 100% (loan > asset value):
→ Require asset revaluation
→ May need additional collateral
→ Risk of negative equity
LTV Calculation Deep Dive
Loan-to-Value (LTV) is the ratio of loan amount to asset value.
ltvSettings:
maximum: 90
Formula:
LTV = (Loan Amount / Asset Value) × 100
Example:
Asset Value: ₦10,000,000
Loan Amount: ₦8,000,000
LTV = (₦8M / ₦10M) × 100 = 80%
Risk Levels:
- LTV ≤ 70%: ✅✅ Low risk (high equity cushion)
- LTV 71-80%: ✅ Moderate risk (standard)
- LTV 81-90%: âš ï¸ Higher risk (low equity)
- LTV > 90%: ⌠Very high risk (underwater loan)
New vs Used Assets:
byAssetType:
Vehicle:
new: 85 # Higher LTV for new
used: 75 # Lower LTV for used
Rationale:
- New assets depreciate faster initially
- Used assets have established value
- More risk with new asset depreciation
Balloon Payment Calculation
balloonPaymentConfig:
allowBalloonPayment: true
balloonPercentage:
default: 30
Example:
Principal: ₦10,000,000
Tenor: 36 months
Interest: 20% p.a.
Balloon: 30%
Without Balloon:
Monthly Payment: ₦372,000
Total Repayment: ₦13.4M
With 30% Balloon:
Balloon Amount: ₦3,000,000
Financed: ₦7,000,000
Monthly Payment: ₦260,000 (30% reduction)
Month 36: ₦260,000 + ₦3,000,000 = ₦3,260,000
Total Repayment: ₦12.36M
Savings: Lower monthly burden, better cash flow
Risk: Must plan for large final payment
Balloon Payment Options at Maturity:
- Pay Full Balloon: Clear loan completely
- Refinance Balloon: Convert to new loan
- Sell Asset: Use proceeds to pay balloon
- Trade-In: Upgrade to new asset
GPS Tracking Requirements
gpsTrackingConfig:
requireGPSTracking: true
gpsProvider: "IntelliTrack"
applyForVehiclesOnly: true
Purpose:
- Asset location monitoring
- Theft prevention and recovery
- Usage pattern tracking
- Repossession assistance
Cost Structure:
GPS Installation: ₦50,000 (one-time)
Monthly Monitoring: ₦2,500
Over 48 months:
Installation: ₦50,000
Monitoring: ₦2,500 × 48 = ₦120,000
Total GPS Cost: ₦170,000
Features:
- Real-time location tracking
- Geo-fencing alerts
- Movement notifications
- Engine immobilization (remote)
- Tamper alerts
Insurance Requirements
insuranceConfig:
requireInsurance: true
insuranceTypes:
- "Comprehensive"
bankAsBeneficiary: true
Required Coverage:
Comprehensive Insurance:
- Collision damage
- Theft
- Fire
- Third-party liability
- Natural disasters
Minimum Coverage: 100% of asset value
Bank as Beneficiary:
- Bank is loss payee
- Claims paid to bank first
- Protects loan balance
Annual Insurance Cost (approx):
Asset Value: ₦10,000,000
Insurance Rate: 3-5% annually
Annual Premium: ₦300,000 - ₦500,000
Monthly Cost: ₦25,000 - ₦42,000
Total Monthly Obligation:
Loan Payment: ₦372,000
Insurance: ₦42,000
GPS Monitoring: ₦2,500
Total: ₦416,500
Supplier Payment Process
supplierPaymentConfig:
directSupplierPayment: true
requireSupplierInvoice: true
requireProofOfDelivery: true
Payment Flow:
1. Customer selects asset
├─> Supplier provides proforma invoice
└─> Customer applies for loan
2. Loan Approval
├─> Verify supplier credentials
├─> Confirm asset specifications
└─> Approve loan amount
3. Disbursement
├─> Customer pays equity (20%)
├─> Bank pays supplier directly (80%)
└─> Collect supplier invoice and receipt
4. Asset Delivery
├─> Supplier delivers asset to customer
├─> Customer signs proof of delivery
└─> Bank receives delivery confirmation
5. Post-Disbursement
├─> GPS installation (vehicles)
├─> Insurance activation
└─> Asset registration in bank's name
Why Direct Payment?
- Ensures fund utilization for intended asset
- Reduces risk of fund diversion
- Verifies asset purchase and delivery
- Simplifies documentation
Validation Rules
LTV Validation
Implementation details removed for security.
Contact support for implementation guidance.
Asset Age Validation
Implementation details removed for security.
Contact support for implementation guidance.
Insurance Validation
Implementation details removed for security.
Contact support for implementation guidance.
Troubleshooting
Issue: "LTV exceeds maximum"
Cause: Requested loan amount too high relative to asset value.
Solutions:
Asset Value: ₦10,000,000
Requested Loan: ₦9,000,000
LTV: 90%
Max LTV: 80%
Option 1: Reduce Loan Amount
New Loan: ₦8,000,000 (80% LTV) ✅
Customer Equity: ₦2,000,000
Option 2: Increase Asset Value
Choose higher-value asset: ₦11,250,000
Loan: ₦9,000,000 (80% LTV) ✅
Option 3: Provide Additional Collateral
Asset: ₦10M
Additional Collateral: ₦2M property
Combined: ₦12M
LTV: ₦9M / ₦12M = 75% ✅
Issue: "Asset too old"
Cause: Asset age exceeds maximum for asset type.
Solution:
assetTypesConfig:
- type: "Vehicle"
maxAge: 5
Asset: 2015 Vehicle (9 years old)
Max Age: 5 years
Status: ⌠REJECTED
Options:
1. Choose newer asset (≤ 5 years old)
2. Apply under different product (Personal Loan)
3. Request exception review (unlikely)
Issue: "Balloon payment too high"
Cause: Customer uncomfortable with large final payment.
Solutions:
Original Structure:
Principal: ₦10M
Balloon: 40% (₦4M)
Monthly: ₦223,000
Final Payment: ₦4,223,000 âš ï¸
Solution 1: Reduce Balloon Percentage
Balloon: 20% (₦2M)
Monthly: ₦298,000 (higher)
Final Payment: ₦2,298,000 ✅
Solution 2: Remove Balloon
Balloon: 0%
Monthly: ₦372,000 (highest)
Final Payment: ₦372,000 ✅
Solution 3: Refinance Plan at Maturity
Keep 40% balloon
At month 36: Refinance balloon over 12 months
New Monthly: ₦358,000
Migration from V1
V1 Asset Finance Mapping
| V1 Field/Table | V2 YAML Path |
|---|---|
| AssetType | assetTypesConfig[].type |
| LoanToValueRatio | ltvSettings.maximum |
| BalloonPaymentPercentage | balloonPaymentConfig.balloonPercentage |
| GPSRequired | gpsTrackingConfig.requireGPSTracking |
| InsuranceRequired | insuranceConfig.requireInsurance |
| DepreciationRate | depreciationConfig.annualDepreciationRate |
Last Updated: January 2, 2026
API Version: V2 (BPMCore)
Product Category: Loan Products
Complexity: ââââ (Complex - Asset Specific)