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)