Skip to main content

Savings Account - V2 Configuration

Product Type: Interest-Bearing Deposit Account
Use Case: Personal savings, emergency fund, goal-based saving
Minimum Balance: ₦1,000 - ₦10,000
Interest Rate: 2% - 6.5% per annum (tiered)
Transaction Limits: 4-10 free withdrawals/month


Overview​

Savings accounts are interest-bearing deposit accounts designed for personal savings with tiered interest rates based on account balance. They offer limited withdrawal transactions to encourage saving behavior.

Key Features​

  • Tiered Interest Rates: Higher balances earn better rates
  • Transaction Limits: Free withdrawals up to monthly limit
  • Dormancy Tracking: Auto-dormancy after inactivity period
  • Minimum Balance Requirements: Penalties for falling below threshold
  • Daily Balance Interest: Interest calculated on daily balances
  • Mobile & Online Banking: Digital-first access
  • Auto-Savings: Standing order and round-up features

YAML Field Reference​

Basic Information Section​

Field NameData TypeRequiredDescriptionExample
productCodeString✅ YesUnique product code"SA-REGULAR-001"
productNameString✅ YesDisplay name"Regular Savings Account"
descriptionStringNoProduct description"Standard savings account"
isActiveBooleanNoProduct statustrue
depositAccountTypeString✅ YesAccount type"Savings"
lineOfBusinessEnumNoBusiness classification"Retail"

Minimum Balance Configuration​

Field NameData TypeRequiredDescriptionExample
minimumOpeningBalanceDecimal✅ YesRequired to open account5000
minimumOperatingBalanceDecimal✅ YesOngoing minimum1000
penaltyForBelowMinimumDecimalNoMonthly penalty fee100
allowZeroBalanceBooleanNoPermit ₦0 balancefalse

Interest Configuration Section​

Field NameData TypeRequiredDescriptionExample
isEnabledBoolean✅ YesWhether interest is paidtrue
calculationMethodEnum✅ YesCalculation approach"DailyBalance"
compoundingFrequencyEnumNoInterest compounding"Monthly"
creditFrequencyEnum✅ YesWhen interest is paid"Monthly" or "Quarterly"
minimumBalanceForInterestDecimalNoMin balance to earn interest1000

Tiered Interest Rates Section​

Field NameData TypeRequiredDescriptionExample
tiers[]Array✅ YesInterest rate tiersSee below
tiers[].fromDecimal✅ YesTier start amount0
tiers[].toDecimalNoTier end amount (null = unlimited)100000
tiers[].rateDecimal✅ YesInterest rate (%)2.0
tierCalculationMethodEnumNoHow to apply tiers"Blended" or "Marginal"

Example Tiered Structure:

tiers:
- from: 0
to: 100000
rate: 2.0
- from: 100000
to: 1000000
rate: 4.0
- from: 1000000
to: null # No upper limit
rate: 6.5

Transaction Limits Section​

Field NameData TypeRequiredDescriptionExample
maxFreeWithdrawalsPerMonthInteger✅ YesFree transactions allowed4
excessWithdrawalFeeDecimal✅ YesFee per excess withdrawal100
maxWithdrawalsPerDayIntegerNoDaily limit3
maxWithdrawalAmountDecimalNoMax single withdrawal100000
dailyWithdrawalLimitDecimalNoTotal daily withdrawal500000

Dormancy Configuration Section​

Field NameData TypeRequiredDescriptionExample
automaticallySetAccountAsDormantBoolean✅ YesAuto-dormancy enabledtrue
dormancyAfterXDaysInteger✅ YesDays of inactivity180
reactivationFeeDecimalNoFee to reactivate500
notifyBeforeDormancyBooleanNoSend warningtrue
warningDaysBeforeIntegerNoDays before dormancy30

Fees Configuration Section​

Field NameData TypeRequiredDescriptionExample
fees[].codeString✅ YesFee code"MAINT_FEE"
fees[].nameString✅ YesFee name"Monthly Maintenance"
fees[].feeTypeEnum✅ YesCollection method"Monthly"
fees[].calculationTypeEnum✅ YesCalculation type"Flat"
fees[].valueDecimal✅ YesFee amount50
fees[].minimumDecimalNoMinimum fee50
fees[].maximumDecimalNoMaximum fee500
fees[].glAccountIdInteger✅ YesGL account50001

Statement Configuration Section​

Field NameData TypeRequiredDescriptionExample
statementFrequencyEnumNoHow often statements sent"Monthly"
electronicStatementFreeBooleanNoEmail statements freetrue
paperStatementFeeDecimalNoPrinted statement fee100
allowSMSAlertsBooleanNoTransaction SMS alertstrue
smsAlertFeeDecimalNoMonthly SMS fee50

Auto-Savings Configuration Section​

Field NameData TypeRequiredDescriptionExample
allowStandingOrdersBooleanNoEnable recurring transferstrue
allowRoundUpSavingsBooleanNoRound-up featuretrue
roundUpToDecimalNoRound to nearest100
minimumStandingOrderAmountDecimalNoMin SO amount1000

Eligibility Configuration Section​

Field NameData TypeRequiredDescriptionExample
minimumAgeIntegerNoMinimum age18
maximumAgeIntegerNoMaximum age (0 = no limit)0
allowMinorAccountsBooleanNoAllow under-18 accountstrue
minorAccountMaxBalanceDecimalNoMax balance for minors100000
requiredDocuments[]Array✅ YesMandatory documents["ValidID", "ProofOfAddress", "PassportPhoto"]
kycLevelEnumNoRequired KYC tier"Tier2"

Notifications Configuration Section​

Field NameData TypeRequiredDescriptionExample
sendWelcomeEmailBooleanNoWelcome messagetrue
sendMonthlyStatementBooleanNoMonthly statementstrue
sendLowBalanceAlertBooleanNoAlert low balancetrue
lowBalanceThresholdDecimalNoAlert threshold5000
sendDormancyWarningBooleanNoDormancy notificationtrue
channels.smsBooleanNoEnable SMStrue
channels.emailBooleanNoEnable emailtrue
channels.pushBooleanNoEnable pushtrue

Complete Sample YAML Configuration​

basicInfo:
productCode: "SA-REGULAR-001"
productName: "Regular Savings Account"
description: "Standard savings account with tiered interest rates"
isActive: true
depositAccountType: "Savings"
lineOfBusiness: "Retail"
currencyCode: "NGN"

minimumBalanceConfig:
minimumOpeningBalance: 5000
minimumOperatingBalance: 1000
penaltyForBelowMinimum: 100
allowZeroBalance: false

interestConfig:
isEnabled: true
calculationMethod: "DailyBalance"
compoundingFrequency: "Monthly"
creditFrequency: "Monthly"
minimumBalanceForInterest: 1000

tieredInterestRates:
tiers:
- from: 0
to: 100000
rate: 2.0
- from: 100000
to: 1000000
rate: 4.0
- from: 1000000
to: null
rate: 6.5
tierCalculationMethod: "Blended"

transactionLimitsConfig:
maxFreeWithdrawalsPerMonth: 4
excessWithdrawalFee: 100
maxWithdrawalsPerDay: 3
maxWithdrawalAmount: 100000
dailyWithdrawalLimit: 500000

dormancyConfig:
automaticallySetAccountAsDormant: true
dormancyAfterXDays: 180
reactivationFee: 500
notifyBeforeDormancy: true
warningDaysBefore: 30

fees:
- code: "MAINT_FEE"
name: "Monthly Maintenance Fee"
feeType: "Monthly"
calculationType: "Flat"
value: 50
glAccountId: 50001
waiveIfMinimumBalance: true
waiveThreshold: 10000

- code: "EXCESS_WD"
name: "Excess Withdrawal Fee"
feeType: "Transaction"
calculationType: "Flat"
value: 100
glAccountId: 50002

- code: "BELOW_MIN"
name: "Below Minimum Balance Fee"
feeType: "Monthly"
calculationType: "Flat"
value: 100
glAccountId: 50003

statementConfig:
statementFrequency: "Monthly"
electronicStatementFree: true
paperStatementFee: 100
allowSMSAlerts: true
smsAlertFee: 50

autoSavingsConfig:
allowStandingOrders: true
allowRoundUpSavings: true
roundUpTo: 100
minimumStandingOrderAmount: 1000

eligibilityConfig:
minimumAge: 18
maximumAge: 0
allowMinorAccounts: true
minorAccountMaxBalance: 100000
requiredDocuments:
- "ValidID"
- "ProofOfAddress"
- "PassportPhoto"
- "BVN"
kycLevel: "Tier2"

notificationsConfig:
sendWelcomeEmail: true
sendMonthlyStatement: true
sendLowBalanceAlert: true
lowBalanceThreshold: 5000
sendDormancyWarning: true
channels:
sms: true
email: true
push: true

Use Cases & Examples​

Example 1: Standard Savings Account​

Scenario: Young professional opening first savings account.

Customer Profile:

  • Age: 25 years
  • Employment: Salaried (₦150k/month)
  • Savings Goal: Emergency fund

Account Opening:

minimumOpeningBalance: ₦5,000

Opening Deposit: ₦10,000 ✅
Documents: ID, Utility Bill, BVN ✅
KYC Level: Tier 2 ✅

Monthly Activity:

Month 1:
Opening Balance: ₦10,000
Deposits: ₦20,000 (salary savings)
Withdrawals: 2 (₦5,000 each) - FREE
Closing Balance: ₦20,000

Interest Earned:
Tier 1 (₦0-₦100k): ₦20,000 × 2% / 12 = ₦33

Fees:
Maintenance: ₦50

Net: +₦20,000 deposits +₦33 interest -₦50 fee = ₦20,033

Example 2: Tiered Interest Calculation (Blended)​

Scenario: Account with ₦500,000 balance.

Configuration:

tierCalculationMethod: "Blended"

tiers:
- from: 0
to: 100000
rate: 2.0
- from: 100000
to: 1000000
rate: 4.0

Interest Calculation (Blended Method):

Balance: ₦500,000

Since balance falls in Tier 2 (₦100k-₦1M), entire balance earns Tier 2 rate:
Monthly Interest = ₦500,000 × 4% / 12 = ₦1,667
Annual Interest = ₦500,000 × 4% = ₦20,000

Example 3: Transaction Limits and Fees​

Scenario: Customer exceeds free withdrawal limit.

Configuration:

maxFreeWithdrawalsPerMonth: 4
excessWithdrawalFee: ₦100

Monthly Transactions:

Withdrawal 1: ₦10,000 (FREE - 1/4)
Withdrawal 2: ₦15,000 (FREE - 2/4)
Withdrawal 3: ₦20,000 (FREE - 3/4)
Withdrawal 4: ₦5,000 (FREE - 4/4)
Withdrawal 5: ₦8,000 (CHARGED ₦100)
Withdrawal 6: ₦12,000 (CHARGED ₦100)

Total Excess Fees: ₦200

Optimization:

Strategy 1: Consolidate Withdrawals
Instead of 6 withdrawals, make 3 larger ones
Savings: ₦200

Strategy 2: Plan Ahead
Withdraw at month-end for next month needs
Stay within 4-withdrawal limit

Strategy 3: Use Multiple Channels
Some banks offer free ATM but charge teller
Check fee schedule

Tiered Interest Calculation Deep Dive​

Blended Method (Simpler)​

tierCalculationMethod: "Blended"

How It Works: Entire balance earns the rate of the tier it falls into.

Example:

Tiers:
Tier 1: ₦0-₦100k @ 2%
Tier 2: ₦100k-₦1M @ 4%
Tier 3: ₦1M+ @ 6.5%

Balance: ₦150,000 (falls in Tier 2)
Interest: ₦150,000 × 4% / 12 = ₦500/month

Balance: ₦1,500,000 (falls in Tier 3)
Interest: ₦1,500,000 × 6.5% / 12 = ₦8,125/month

Marginal Method (More Complex)​

tierCalculationMethod: "Marginal"

How It Works: Each portion of balance earns its respective tier rate.

Example:

Balance: ₦1,500,000

Tier 1: First ₦100,000 @ 2%
= ₦100,000 × 2% / 12 = ₦167

Tier 2: Next ₦900,000 (₦100k to ₦1M) @ 4%
= ₦900,000 × 4% / 12 = ₦3,000

Tier 3: Remaining ₦500,000 (above ₦1M) @ 6.5%
= ₦500,000 × 6.5% / 12 = ₦2,708

Total Monthly Interest: ₦167 + ₦3,000 + ₦2,708 = ₦5,875

Comparison:

₦1,500,000 Balance:

Blended Method: ₦8,125/month (6.5% on all)
Marginal Method: ₦5,875/month (tiered calculation)

Difference: ₦2,250/month in favor of Blended

Why? Blended rewards higher balances more aggressively.

Dormancy Management​

dormancyConfig:
automaticallySetAccountAsDormant: true
dormancyAfterXDays: 180

Dormancy Timeline:

Day 0: Last transaction
Day 30: No activity (Normal)
Day 60: No activity (Normal)
Day 90: No activity (Normal)
Day 150: Warning notification sent
Day 180: Account marked DORMANT ❌

What Changes:
- Cannot make withdrawals
- Cannot make deposits via ATM
- Online banking disabled
- Interest may stop accruing
- Requires reactivation

Reactivation Process:

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.

Preventing Dormancy:

ANY customer-initiated transaction resets the clock:
- Deposit (branch, ATM, transfer-in)
- Withdrawal
- Transfer-out
- Balance inquiry (some banks count this)
- Standing order execution

Transactions that DON'T count:
- Bank charges
- Interest credit
- System reversals
- Automated fees

Daily Balance Interest Calculation​

interestConfig:
calculationMethod: "DailyBalance"
compoundingFrequency: "Monthly"
creditFrequency: "Monthly"

Daily Calculation:

Daily Interest = (Closing Balance × Annual Rate) / 365

Example (30-day month):
Day 1: ₦10,000 × 2% / 365 = ₦0.55
Day 2: ₦15,000 × 2% / 365 = ₦0.82
Day 3: ₦20,000 × 2% / 365 = ₦1.10
...
Day 30: ₦25,000 × 2% / 365 = ₦1.37

Sum all 30 days = Monthly Interest

With Deposits & Withdrawals:

Opening Balance: ₦50,000

Day 1-10: ₦50,000
Interest: ₦50,000 × 4% / 365 × 10 days = ₦54.79

Day 11: Deposit ₦30,000 → Balance ₦80,000
Day 11-20: ₦80,000
Interest: ₦80,000 × 4% / 365 × 10 days = ₦87.67

Day 21: Withdrawal ₦40,000 → Balance ₦40,000
Day 21-30: ₦40,000
Interest: ₦40,000 × 4% / 365 × 10 days = ₦43.84

Total Month Interest: ₦54.79 + ₦87.67 + ₦43.84 = ₦186.30

Compounding:

Month 1: Principal ₦100,000
Interest: ₦333
New Balance: ₦100,333

Month 2: Principal ₦100,333 (includes Month 1 interest)
Interest: ₦334
New Balance: ₦100,667

Effect: Interest earns interest (compound growth)

Minimum Balance Penalties​

minimumBalanceConfig:
minimumOperatingBalance: ₦1,000
penaltyForBelowMinimum: ₦100

Monthly Check:

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.

Example:

Month of January:
Day 1-20: Balance ₦5,000 (Above minimum ✅)
Day 21: Withdrawal ₦4,500 → Balance ₦500 (Below minimum ❌)
Day 22-31: Balance ₦500

Minimum Balance for Month: ₦500

Result: ❌ Below ₦1,000 minimum
Penalty: ₦100 charged at month-end
New Balance: ₦500 - ₦100 = ₦400

Fee Waiver:

fees:
- code: "MAINT_FEE"
waiveIfMinimumBalance: true
waiveThreshold: ₦10,000

Benefit:

If monthly average balance ≥ ₦10,000:
Maintenance Fee: WAIVED ✅

If monthly average balance < ₦10,000:
Maintenance Fee: ₦50 charged ❌

Auto-Savings Features​

Standing Orders (Recurring Transfers)​

autoSavingsConfig:
allowStandingOrders: true
minimumStandingOrderAmount: ₦1,000

Setup:

Source: Current Account
Destination: Savings Account
Amount: ₦10,000
Frequency: Monthly
Start Date: Every 5th of month
End Date: After 12 months

Execution:
Jan 5: ₦10,000 transferred ✅
Feb 5: ₦10,000 transferred ✅
Mar 5: ₦10,000 transferred ✅
...
Dec 5: ₦10,000 transferred ✅

Total Saved: ₦120,000 (automated)

Round-Up Savings​

autoSavingsConfig:
allowRoundUpSavings: true
roundUpTo: ₦100

How It Works:

Transaction 1: POS Payment ₦1,450
Rounded Up: ₦1,500
Round-Up Amount: ₦50 → Savings Account

Transaction 2: Transfer ₦3,780
Rounded Up: ₦3,800
Round-Up Amount: ₦20 → Savings Account

Transaction 3: Bill Payment ₦12,320
Rounded Up: ₦12,400
Round-Up Amount: ₦80 → Savings Account

Monthly Round-Ups: ₦50 + ₦20 + ₦80 = ₦150
Annual Round-Ups: ~₦1,800 (painless savings!)

Validation Rules​

Minimum Balance Validation​

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.

Transaction Limit Validation​

Code Removed

Implementation details removed for security.

Contact support for implementation guidance.


Troubleshooting​

Issue: "Below minimum balance penalty charged"​

Cause: Account balance fell below minimum during the month.

Solutions:

Minimum: ₦1,000
Current Balance: ₦500
Penalty: ₦100

Option 1: Deposit to Meet Minimum
Deposit ₦600 → Balance ₦1,100 ✅

Option 2: Close Account
If not actively using, consider closure

Option 3: Upgrade Account Type
Some accounts have lower/no minimum

Prevention:
- Set low balance alert
- Link overdraft protection
- Automatic transfer from another account

Issue: "Excess withdrawal fees accumulating"​

Cause: More than 4 withdrawals per month.

Solutions:

Monthly Withdrawals: 8
Free Limit: 4
Excess: 4 × ₦100 = ₦400 fees

Option 1: Reduce Withdrawal Frequency
Plan withdrawals, withdraw larger amounts
Reduce from 8 to 4 monthly
Save ₦400/month

Option 2: Upgrade Account
Consider current account (unlimited free)
Evaluate if benefit > cost

Option 3: Use Multiple Accounts
Spread transactions across accounts
Each account gets 4 free

Issue: "Account marked dormant"​

Cause: No transactions for 180 days.

Solutions:

Status: DORMANT
Reactivation Fee: ₦500

Steps:
1. Visit branch with valid ID
2. Update KYC if needed
3. Make deposit or withdrawal
4. Pay reactivation fee
5. Account becomes active

Prevention:
- Make transaction every 3-6 months
- Set up standing order (auto-activity)
- Enable balance inquiry SMS (may count as activity)

Migration from V1​

V1 Savings Account Mapping​

V1 Field/TableV2 YAML Path
MinimumBalanceminimumBalanceConfig.minimumOperatingBalance
InterestRatetieredInterestRates.tiers[].rate
WithdrawalLimittransactionLimitsConfig.maxFreeWithdrawalsPerMonth
DormancyPerioddormancyConfig.dormancyAfterXDays
MaintenanceFeefees[].value (where code = "MAINT_FEE")
InterestCalculationMethodinterestConfig.calculationMethod

Last Updated: January 2, 2026
API Version: V2 (BPMCore)
Product Category: Deposit Products
Complexity: ⭐⭐⭐ (Moderate - Interest Tiering)