Overdraft - V2 Configuration
Product Type: Revolving Credit Facility
Use Case: Short-term working capital, cash flow management
Typical Amount: ₦500,000 - ₦50,000,000
Typical Tenor: 12 months (revolving)
Interest Rate: 18% - 32% per annum (on utilized amount)
Overview
Overdraft is a revolving credit facility linked to a current account, allowing customers to withdraw beyond their account balance up to an approved limit. Interest is charged only on the utilized amount on a daily balance basis.
Key Features
- Revolving Credit: Borrow, repay, and re-borrow up to limit
- Daily Balance Interest: Only pay for what you use
- Current Account Linked: Integrated with operating account
- Commitment Fee: Fee on unutilized portion
- Return-to-Zero: Periodic full repayment requirement
- Collateral Based: Security typically required
- Annual Review: Limit and terms reviewed yearly
YAML Field Reference
Basic Information Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
productCode | String | ✅ Yes | Unique product code | "OD-SME-001" |
productName | String | ✅ Yes | Display name | "SME Overdraft Facility" |
description | String | No | Product description | "Revolving credit for SMEs" |
isActive | Boolean | No | Product status | true |
loanProductType | String | No | Loan type | "Overdraft" |
lineOfBusiness | Enum | No | Business classification | "Commercial" |
Facility Limit Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumLimit | Decimal | No | Minimum facility limit | 500000 |
maximumLimit | Decimal | No | Maximum facility limit | 50000000 |
defaultLimit | Decimal | No | Default offered limit | 5000000 |
limitCalculationBasis | Enum | No | How limit is determined | "AverageMonthlyTurnover" |
turnoverMultiplier | Decimal | No | Multiplier for turnover-based | 0.25 |
Limit Calculation Basis: AverageMonthlyTurnover, NetMonthlyIncome, Collateral Value, FixedAmount
Facility Tenor Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumTenor | Integer | No | Minimum months | 6 |
maximumTenor | Integer | No | Maximum months | 12 |
defaultTenor | Integer | No | Default tenor | 12 |
autoRenewal | Boolean | No | Auto-renew at maturity | false |
reviewFrequency | Enum | No | Review period | "Annual" |
Interest Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
isEnabled | Boolean | ✅ Yes | Whether interest is charged | true |
rate.default | Decimal | ✅ Yes | Default interest rate (%) | 24.0 |
rate.minimum | Decimal | No | Minimum rate (%) | 18.0 |
rate.maximum | Decimal | No | Maximum rate (%) | 32.0 |
calculationMethod | Enum | ✅ Yes | Calculation method | "DailyBalance" |
rateTerms | Enum | No | Rate period | "PerYear" |
compoundingFrequency | Enum | No | Interest compounding | "Monthly" |
Daily Balance Interest Calculation
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
dailyBalanceMethod | Enum | ✅ Yes | Calculation approach | "AverageDailyBalance" or "DailyProduct" |
yearBasis | Enum | No | Days in year | "365" or "360" |
interestApplicationFrequency | Enum | No | When to post interest | "Monthly" |
minimumChargeAmount | Decimal | No | Min monthly interest | 1000 |
Daily Interest Formula:
Daily Interest = (Utilized Amount × Annual Rate) / Year Basis
Monthly Interest = Sum of all daily interests
Commitment Fee Configuration
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
chargeCommitmentFee | Boolean | No | Fee on unutilized portion | true |
commitmentFeeRate | Decimal | No | Fee rate (% per quarter) | 1.0 |
commitmentFeeFrequency | Enum | No | Fee collection period | "Quarterly" |
feeOnUnutilizedOnly | Boolean | No | Only charge unutilized | true |
Commitment Fee Formula:
Quarterly Fee = (Limit - Average Utilized) × Fee Rate
Return-to-Zero Requirements
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
requireReturnToZero | Boolean | No | Mandate full repayment | true |
returnToZeroFrequency | Enum | No | How often | "Quarterly" |
returnToZeroDays | Integer | No | Days to maintain zero balance | 7 |
allowedRTZDeviations | Integer | No | Permitted missed periods | 1 |
Return-to-Zero Purpose: Ensures facility is truly short-term and prevents evergreen debt.
Collateral Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
isRequired | Boolean | ✅ Yes | Collateral mandatory | true |
types[] | Array | ✅ Yes | Accepted collateral types | ["Property", "Shares", "CashDeposit"] |
coverageRatio | Decimal | ✅ Yes | Required coverage (%) | 150 |
minimumCoverageRatio | Decimal | No | Minimum acceptable (%) | 120 |
acceptUnsecured | Boolean | No | Allow without collateral | false |
unsecuredMaxLimit | Decimal | No | Max unsecured limit | 1000000 |
Eligibility Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
minimumAge | Integer | No | Minimum age | 25 |
maximumAge | Integer | No | Maximum age | 65 |
minimumMonthlyTurnover | Decimal | No | Min business turnover | 2000000 |
minimumAccountAge | Integer | No | Account age in months | 12 |
employmentStatus[] | Array | No | Accepted types | ["Business", "SelfEmployed"] |
requiredDocuments[] | Array | ✅ Yes | Mandatory documents | See below |
kycLevel | Enum | No | Required KYC tier | "Tier3" |
Required Documents:
requiredDocuments:
- "ValidID"
- "BankStatement12Months"
- "BusinessRegistration"
- "TaxClearance"
- "BoardResolution"
- "FinancialStatements"
- "CollateralDocuments"
Fees Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
fees[].code | String | ✅ Yes | Fee code | "MAN_FEE" |
fees[].name | String | ✅ Yes | Fee name | "Management Fee" |
fees[].feeType | Enum | ✅ Yes | Collection method | "Upfront" |
fees[].calculationType | Enum | ✅ Yes | Calculation type | "PercentOfLimit" |
fees[].value | Decimal | ✅ Yes | Fee amount/percentage | 1.0 |
fees[].frequency | Enum | No | Recurring frequency | "Annual" |
fees[].glAccountId | Integer | ✅ Yes | GL account | 40001 |
Utilization Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
allowFullUtilization | Boolean | No | Can utilize 100% of limit | true |
utilizationWarningThreshold | Decimal | No | Alert at % utilized | 80 |
restrictMultipleDrawdowns | Boolean | No | Limit number of withdrawals | false |
minimumDrawdownAmount | Decimal | No | Min withdrawal amount | 10000 |
Monitoring Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
requirePeriodicReview | Boolean | No | Mandatory facility review | true |
reviewFrequency | Enum | No | Review period | "Annual" |
requireFinancialStatements | Boolean | No | Annual financials required | true |
monitoConductAlert | Boolean | No | Alert on irregular conduct | true |
Notifications Configuration Section
| Field Name | Data Type | Required | Description | Example |
|---|---|---|---|---|
sendFacilityApprovalNotification | Boolean | No | Notify approval | true |
sendUtilizationAlerts | Boolean | No | Alert on usage | true |
sendReturnToZeroReminder | Boolean | No | RTZ reminder | true |
sendRenewalReminder | Boolean | No | Renewal notice | true |
reminderDaysBefore | Integer | No | Days before event | 30 |
channels.sms | Boolean | No | Enable SMS | true |
channels.email | Boolean | No | Enable email | true |
Complete Sample YAML Configuration
basicInfo:
productCode: "OD-SME-001"
productName: "SME Overdraft Facility"
description: "Revolving credit facility for small and medium enterprises"
isActive: true
loanProductType: "Overdraft"
repaymentAllocationOrder: "FEES_PENALTY_INTEREST_PRINCIPAL"
lineOfBusiness: "Commercial"
currencyCode: "NGN"
facilityLimitConfig:
minimumLimit: 500000
maximumLimit: 50000000
defaultLimit: 5000000
limitCalculationBasis: "AverageMonthlyTurnover"
turnoverMultiplier: 0.25
facilityTenorConfig:
minimumTenor: 6
maximumTenor: 12
defaultTenor: 12
autoRenewal: false
reviewFrequency: "Annual"
interestConfig:
isEnabled: true
rate:
default: 24.0
minimum: 18.0
maximum: 32.0
calculationMethod: "DailyBalance"
rateTerms: "PerYear"
compoundingFrequency: "Monthly"
dailyBalanceConfig:
dailyBalanceMethod: "AverageDailyBalance"
yearBasis: "365"
interestApplicationFrequency: "Monthly"
minimumChargeAmount: 1000
commitmentFeeConfig:
chargeCommitmentFee: true
commitmentFeeRate: 1.0
commitmentFeeFrequency: "Quarterly"
feeOnUnutilizedOnly: true
returnToZeroConfig:
requireReturnToZero: true
returnToZeroFrequency: "Quarterly"
returnToZeroDays: 7
allowedRTZDeviations: 1
collateralConfig:
isRequired: true
types:
- "Property"
- "Shares"
- "CashDeposit"
- "Debenture"
coverageRatio: 150
minimumCoverageRatio: 120
acceptUnsecured: false
unsecuredMaxLimit: 0
eligibilityConfig:
minimumAge: 25
maximumAge: 65
minimumMonthlyTurnover: 2000000
minimumAccountAge: 12
employmentStatus:
- "Business"
- "SelfEmployed"
requiredDocuments:
- "ValidID"
- "BankStatement12Months"
- "BusinessRegistration"
- "TaxClearance"
- "BoardResolution"
- "FinancialStatements2Years"
- "CollateralDocuments"
kycLevel: "Tier3"
fees:
- code: "MAN_FEE"
name: "Management Fee"
feeType: "Upfront"
calculationType: "PercentOfLimit"
value: 1.0
frequency: "Annual"
glAccountId: 40001
- code: "PROC_FEE"
name: "Processing Fee"
feeType: "Upfront"
calculationType: "Flat"
value: 50000
glAccountId: 40002
utilizationConfig:
allowFullUtilization: true
utilizationWarningThreshold: 80
restrictMultipleDrawdowns: false
minimumDrawdownAmount: 10000
monitoringConfig:
requirePeriodicReview: true
reviewFrequency: "Annual"
requireFinancialStatements: true
monitorAccountConduct: true
notificationsConfig:
sendFacilityApprovalNotification: true
sendUtilizationAlerts: true
sendReturnToZeroReminder: true
sendRenewalReminder: true
reminderDaysBefore: 30
channels:
sms: true
email: true
push: false
penaltyConfig:
isEnabled: true
tolerancePeriod: 0
calculationMethod: "ExcessAmount_DaysLate_Rate"
rate:
default: 5.0
minimum: 3.0
maximum: 10.0
Use Cases & Examples
Example 1: SME Working Capital Overdraft
Scenario: Manufacturing business needs flexible working capital.
Business Profile:
- Average Monthly Turnover: ₦20,000,000
- Business Age: 5 years
- Account Age: 3 years
- Collateral: Property valued at ₦30M
Facility Limit Calculation:
limitCalculationBasis: "AverageMonthlyTurnover"
turnoverMultiplier: 0.25
Limit = ₦20M × 0.25 = ₦5,000,000
Collateral Verification:
Required Coverage: 150%
Required Collateral: ₦5M × 150% = ₦7.5M
Provided Collateral: ₦30M ✅
Coverage Ratio: ₦30M / ₦5M = 600% (Well covered)
Monthly Cost Example (Month 1):
Day 1-10: Utilized ₦0 (No cost)
Day 11-20: Utilized ₦3M
Day 21-31: Utilized ₦5M
Daily Rate = 24% / 365 = 0.0657% per day
Interest Calculation:
Days 1-10: ₦0 × 0.0657% × 10 days = ₦0
Days 11-20: ₦3M × 0.0657% × 10 days = ₦19,710
Days 21-31: ₦5M × 0.0657% × 11 days = ₦36,135
Total Monthly Interest: ₦55,845
Average Utilization: (₦3M × 10 + ₦5M × 11) / 31 = ₦2.74M
Unutilized: ₦5M - ₦2.74M = ₦2.26M
Quarterly Commitment Fee: ₦2.26M × 1% = ₦22,600
Example 2: Return-to-Zero Requirement
Scenario: Quarterly RTZ requirement with 7-day zero balance.
Configuration:
returnToZeroConfig:
requireReturnToZero: true
returnToZeroFrequency: "Quarterly"
returnToZeroDays: 7
Timeline:
Q1: Jan-Mar
Jan: Utilized ₦2M-₦5M (fluctuating)
Feb: Utilized ₦3M-₦4M
Mar 25: Full repayment → ₦0 balance
Mar 25-31: Zero balance maintained (7 days) ✅
Q2: Apr-Jun
Apr 1: Can utilize facility again
Apr-May: Utilized ₦1M-₦4M
Jun 25: Full repayment → ₦0 balance
Jun 25-Jul 1: Zero balance (7 days) ✅
Purpose: Confirms facility is temporary working capital, not permanent debt
Non-Compliance:
Q3: Jul-Sep
Jul-Sep: Continuous utilization
Sep 30: Did NOT return to zero âŒ
Consequences:
- Warning letter
- Penalty interest (additional 2-5%)
- Risk of facility suspension
- 2nd deviation: Facility cancellation
Example 3: Commitment Fee Calculation
Scenario: ₦10M facility with varying utilization.
Configuration:
commitmentFeeConfig:
chargeCommitmentFee: true
commitmentFeeRate: 1.0 # 1% per quarter
feeOnUnutilizedOnly: true
Q1 Calculation:
Facility Limit: ₦10,000,000
Monthly Average Utilization:
January: ₦2M
February: ₦3M
March: ₦4M
Average: ₦3M
Unutilized Portion: ₦10M - ₦3M = ₦7M
Commitment Fee: ₦7M × 1% = ₦70,000 (charged end of Q1)
Customer pays:
- Interest on ₦3M utilized (daily basis)
- Commitment fee on ₦7M unutilized (quarterly)
Daily Balance Interest Calculation
dailyBalanceConfig:
dailyBalanceMethod: "AverageDailyBalance"
yearBasis: "365"
Method 1: Average Daily Balance
Daily Balance × Number of Days × (Annual Rate / Year Basis)
Example (30-day month):
Days 1-15: ₦2,000,000
Days 16-30: ₦4,000,000
Interest Days 1-15: ₦2M × 15 × (24% / 365) = ₦19,726
Interest Days 16-30: ₦4M × 15 × (24% / 365) = ₦39,452
Total Monthly Interest: ₦59,178
Method 2: Daily Product (Exact)
Sum of (Daily Closing Balance × Daily Rate)
Example:
Day 1: ₦1M × 0.0657% = ₦657
Day 2: ₦1.5M × 0.0657% = ₦986
Day 3: ₦2M × 0.0657% = ₦1,315
...
Day 30: ₦3M × 0.0657% = ₦1,972
Sum all 30 days = Monthly Interest
Comparison to Fixed Loan:
Fixed Loan (₦5M, 24% p.a.):
Monthly Interest: ₦100,000 (always)
Overdraft (₦5M limit, 24% p.a.):
If utilized ₦5M full month: ₦100,000
If utilized ₦2.5M average: ₦50,000
If utilized ₦1M average: ₦20,000
If not utilized: ₦0 interest (only commitment fee)
Advantage: Pay only for what you use ✅
Facility Limit Determination
limitCalculationBasis: "AverageMonthlyTurnover"
turnoverMultiplier: 0.25
Common Calculation Methods:
1. Turnover-Based (Most Common for SMEs):
Limit = Average Monthly Turnover × Multiplier
Example:
Monthly Turnover: ₦20M
Multiplier: 0.25 (25%)
Limit: ₦5M
Rationale: 25% of turnover provides adequate working capital buffer
2. Income-Based (Salaried Individuals):
Limit = Net Monthly Income × Multiplier
Example:
Monthly Income: ₦500,000
Multiplier: 2.0 (200%)
Limit: ₦1M
3. Collateral-Based:
Limit = (Collateral Value / Required Coverage) × 100
Example:
Collateral: ₦30M property
Coverage Required: 150%
Limit: (₦30M / 150%) × 100 = ₦20M
4. Fixed Amount (Relationship-Based):
Limit determined by:
- Relationship history
- Banking conduct
- Credit bureau reports
- Management discretion
Return-to-Zero (RTZ) Enforcement
returnToZeroConfig:
requireReturnToZero: true
returnToZeroFrequency: "Quarterly"
returnToZeroDays: 7
Purpose:
- Prevent facility from becoming term loan
- Confirm business seasonality/cash flow
- Reduce credit risk
- Ensure facility is truly revolving
Monitoring:
Implementation details removed for security.
Contact support for implementation guidance.
Best Practices:
Quarter 1 (Jan-Mar):
✅ Plan RTZ for end of March
✅ Accumulate cash to clear balance
✅ Maintain zero for 7 days
✅ Resume utilization in April
Communication:
30 days before: Reminder notification
14 days before: Follow-up reminder
7 days before: Final reminder
Due date: Compliance check
Collateral Requirements
collateralConfig:
coverageRatio: 150
types:
- "Property"
- "Shares"
- "CashDeposit"
Coverage Levels by Limit Size:
Limit ≤ ₦5M:
Coverage: 120-150%
Accepted: Property, Shares, Cash
Limit ₦5M-₦20M:
Coverage: 150%
Preferred: Property, Debenture
Limit > ₦20M:
Coverage: 150-200%
Required: First-class collateral (property)
Example:
Facility: ₦10,000,000
Coverage Required: 150%
Minimum Collateral: ₦15,000,000
Provided Collateral:
- Property (₦20M professional valuation) ✅
- Shares (₦5M market value) ✅
Total: ₦25M (250% coverage) ✅✅
Why Higher Coverage?
- Overdraft is revolving (higher risk)
- No fixed repayment schedule
- Continuous exposure
- Market value fluctuation buffer
Validation Rules
Limit Validation
Implementation details removed for security.
Contact support for implementation guidance.
Collateral Coverage Validation
Implementation details removed for security.
Contact support for implementation guidance.
RTZ Compliance Check
Implementation details removed for security.
Contact support for implementation guidance.
Troubleshooting
Issue: "Limit exceeds turnover-based calculation"
Cause: Requested limit is higher than allowed multiple of turnover.
Solution:
Average Monthly Turnover: ₦10M
Multiplier: 0.25
Maximum Limit: ₦2.5M
Requested: ₦5M âŒ
Options:
1. Reduce limit to ₦2.5M
2. Provide evidence of higher turnover
3. Switch to collateral-based calculation
4. Combination approach (turnover + collateral)
Issue: "Return-to-Zero not met"
Cause: Failed to clear facility for required days.
Solutions:
Required: 7 consecutive days at zero balance
Actual: 4 days
Options:
1. Clear balance immediately and restart 7-day count
2. Request RTZ waiver (rare, management discretion)
3. Accept penalty interest
4. Risk facility suspension if repeated
Prevention:
- Plan RTZ 30 days in advance
- Build cash reserves
- Schedule supplier payments around RTZ
- Use alternative funding temporarily
Issue: "High commitment fee"
Cause: Low utilization resulting in high fee on unutilized portion.
Solutions:
Facility Limit: ₦10M
Average Utilization: ₦2M (20%)
Unutilized: ₦8M
Quarterly Fee: ₦80,000 (high relative to usage)
Option 1: Reduce Facility Limit
New Limit: ₦3M
Average Utilization: ₦2M (67%)
Unutilized: ₦1M
Quarterly Fee: ₦10,000 ✅
Option 2: Increase Utilization
Use facility more actively
Optimize working capital management
Option 3: Request Fee Waiver/Reduction
Negotiate with relationship manager
Based on overall relationship value
Migration from V1
V1 Overdraft Mapping
| V1 Field/Table | V2 YAML Path |
|---|---|
| OverdraftLimit | facilityLimitConfig.maximumLimit |
| DailyInterestRate | interestConfig.rate.default (converted) |
| CommitmentFee | commitmentFeeConfig.commitmentFeeRate |
| ReturnToZeroPeriod | returnToZeroConfig.returnToZeroFrequency |
| CollateralCoverage | collateralConfig.coverageRatio |
| ReviewFrequency | facilityTenorConfig.reviewFrequency |
Sample Migration Script
Implementation details removed for security.
Contact support for implementation guidance.
Last Updated: January 2, 2026
API Version: V2 (BPMCore)
Product Category: Loan Products
Complexity: ââââ (Complex - Revolving Facility)