Appearance
Fixed Deposits & Recurring Deposits
Apache Fineract supports three distinct deposit product types. Understanding the differences is essential before configuring products:
| Product type | Description |
|---|---|
| Savings Account | Flexible deposit - clients can deposit and withdraw freely within configured limits |
| Fixed Deposit (FD) | Lump-sum deposit held for a fixed term at a fixed interest rate; early withdrawal incurs a penalty |
| Recurring Deposit (RD) | Clients make regular scheduled deposits over a term; interest accrues on the growing balance |
This guide covers Fixed Deposits and Recurring Deposits. See the Savings & Deposit Management feature page for savings accounts.
Fixed Deposit Products
Key configuration fields
bash
POST /fineract-provider/api/v1/fixeddepositproducts
Authorization: Basic <base64>
Fineract-Platform-TenantId: default
Content-Type: application/jsonjson
{
"name": "6-Month Fixed Deposit",
"shortName": "FD6M",
"description": "Term deposit for 6 months at 8% per annum",
"currencyCode": "USD",
"digitsAfterDecimal": 2,
"inMultiplesOf": 0,
"nominalAnnualInterestRate": 8.0,
"interestCompoundingPeriodType": 4,
"interestPostingPeriodType": 4,
"interestCalculationType": 1,
"interestCalculationDaysInYearType": 365,
"lockinPeriodFrequency": 6,
"lockinPeriodFrequencyType": 2,
"minDepositTerm": 6,
"maxDepositTerm": 6,
"minDepositTermTypeId": 2,
"maxDepositTermTypeId": 2,
"depositAmount": 1000,
"minDepositAmount": 500,
"maxDepositAmount": 1000000,
"preClosurePenalApplicable": true,
"preClosurePenalInterest": 2.0,
"preClosurePenalInterestOnTypeId": 1,
"withHoldTax": false,
"accountingRule": 1,
"locale": "en"
}Interest compounding period types
| Code | Period |
|---|---|
1 | Daily |
2 | Monthly |
3 | Quarterly |
4 | Semi-annual |
5 | Annual |
Interest posting period types
Same codes as compounding period. Posting frequency controls when interest is credited to the account. A common setup is monthly posting with semi-annual compounding.
Lock-in period
lockinPeriodFrequency + lockinPeriodFrequencyType define the minimum holding period before a withdrawal (full or partial) is allowed without penalty. Frequency type codes: 0=days, 1=weeks, 2=months, 3=years.
Pre-closure penalty
When preClosurePenalApplicable: true, withdrawing before the maturity date triggers a penalty. preClosurePenalInterest is the penalty rate. preClosurePenalInterestOnTypeId:
| Code | Basis |
|---|---|
1 | Whole term (penalty applies to the total interest earned) |
2 | Post maturity interest (penalty applies only to interest earned after the deposit term) |
Fixed Deposit Account Lifecycle
Create account → Approve → Activate (deposit funds) → [Hold until maturity] → Close on maturity
↘ Pre-close (with penalty) →1. Create account
bash
POST /fineract-provider/api/v1/fixeddepositaccountsjson
{
"clientId": 1,
"productId": 3,
"depositAmount": 5000,
"depositPeriod": 6,
"depositPeriodFrequencyId": 2,
"expectedFirstDepositOnDate": "01 March 2025",
"dateFormat": "dd MMMM yyyy",
"locale": "en",
"submittedOnDate": "01 March 2025"
}2. Approve
bash
POST /fineract-provider/api/v1/fixeddepositaccounts/{accountId}?command=approvejson
{
"approvedOnDate": "01 March 2025",
"dateFormat": "dd MMMM yyyy",
"locale": "en"
}3. Activate (deposit the funds)
bash
POST /fineract-provider/api/v1/fixeddepositaccounts/{accountId}?command=activatejson
{
"activatedOnDate": "01 March 2025",
"dateFormat": "dd MMMM yyyy",
"locale": "en"
}4. Close on maturity
bash
POST /fineract-provider/api/v1/fixeddepositaccounts/{accountId}?command=closejson
{
"closedOnDate": "01 September 2025",
"onAccountClosure": 100,
"transferDescription": "FD maturity proceeds",
"toSavingsAccountId": 12,
"dateFormat": "dd MMMM yyyy",
"locale": "en"
}onAccountClosure determines where the proceeds go: 100 = transfer to a linked savings account, 200 = withdraw as cash.
Pre-mature closure
bash
POST /fineract-provider/api/v1/fixeddepositaccounts/{accountId}?command=prematureCloseSame body as a regular close. Fineract automatically applies the pre-closure penalty if configured.
Recurring Deposit Products
Recurring deposits require clients to make regular contributions (weekly, monthly) over a defined term. Interest accrues on the accumulated balance.
Key configuration differences from Fixed Deposits
json
{
"name": "Monthly Savings Plan - 12 months",
"shortName": "RD12M",
"mandatoryRecommendedDepositAmount": 200,
"minMandatoryRecommendedDepositAmount": 100,
"maxMandatoryRecommendedDepositAmount": 10000,
"isCalendarInherited": false,
"recurringFrequency": 1,
"recurringFrequencyType": 2,
"minDepositTerm": 12,
"maxDepositTerm": 60,
"minDepositTermTypeId": 2,
"maxDepositTermTypeId": 2
}| Field | Meaning |
|---|---|
mandatoryRecommendedDepositAmount | The standard deposit amount per instalment |
recurringFrequency + recurringFrequencyType | How often deposits are due (e.g., 1 + 2 = every 1 month) |
isCalendarInherited | If true, uses the group meeting schedule as the deposit schedule |
Recurring Deposit Account Lifecycle
Create → Approve → Activate → [Regular deposits at each due date] → Close on maturityCreating and activating a recurring deposit account follows the same pattern as fixed deposits, using the /recurringdepositaccounts endpoints instead.
Recording a recurring deposit
bash
POST /fineract-provider/api/v1/recurringdepositaccounts/{accountId}/transactions?command=depositjson
{
"transactionDate": "01 April 2025",
"transactionAmount": 200,
"paymentTypeId": 1,
"dateFormat": "dd MMMM yyyy",
"locale": "en"
}Interest Calculation
Both Fixed and Recurring Deposits calculate interest using the daily balance method by default:
Daily interest = Outstanding balance × (Annual rate / Days in year)Interest is accrued daily and posted to the account at the configured posting frequency (monthly, quarterly, etc.). Posted interest increases the balance on which future interest accrues (compounding effect).
interestCalculationDaysInYearType controls the denominator: 360 (banking convention) or 365 (exact days).
Accounting for Deposits
Fixed and Recurring Deposits require dedicated GL account mappings, separate from savings accounts:
| Mapping | GL account type | Description |
|---|---|---|
| Savings reference | Liability | The deposit principal held on behalf of the client |
| Income from interest | Income | Interest expense paid to depositors |
| Interest payable | Liability | Accrued interest not yet posted to client |
| Transfers in suspense | Asset | Intermediate account for fund transfers |
Retrieving Maturity Details
Check when a fixed deposit matures and how much interest has been accrued:
bash
GET /fineract-provider/api/v1/fixeddepositaccounts/{accountId}?associations=allThe response includes maturityDate, maturityAmount, and interestEarned in the summary section.
Common Mistakes
| Mistake | Effect | Fix |
|---|---|---|
| Not configuring pre-closure penalty | Clients can withdraw early at full interest | Set preClosurePenalApplicable: true and configure the rate |
| Using the wrong deposit period type code | Term does not match the product | Use 2 for months, 3 for years |
| Trying to close before maturity without the premature close command | 400 error | Use command=prematureClose for early withdrawal |
| Missing interest posting period setup | Interest never posts to client account | Ensure interestPostingPeriodType is set on the product |