What are different interest calcualtion options in Factech Billing System?
Common terms (used below)
- Bill Date: The date the bill is generated.
- Due Date: Last date to pay without interest.
- Current Amount: This bill’s charges/taxes.
- Previous Due (Arrears): Unpaid from older bills.
- Outstanding/Balance: What’s still unpaid at a point in time.
- Rate: Interest % you set (e.g., 18% p.a.).
- Factor: How time is counted
- By Days: prorated by number of days.
- By Cycle/Month: as full cycle/month (no day-wise split).
- Minimum Amount: If set, interest applies only when balance > this.
1) Interest on Unpaid Amount (from bill date)
What it does: Charges interest on the total unpaid amount (previous balance adjusted for advance) starting from the new bill date.
When to use: You want interest for the whole cycle regardless of the due date.
How it works (short):
Interest = (Unpaid amount) × (Rate) × (time factor).
Example: Bill date 1 Aug; unpaid ₹10,000; rate 18% p.a.; time = 30 days → approx ₹10,000 × 18% × (30/365) ≈ ₹148.
Code paths:
int_on_unpaid_amount
,due_on_unpaid_amount
2) Interest after Due Date (credit on bill due date)
What it does: Considers payments before/after due date and charges interest only after the due date on whatever remains unpaid.
When to use: You allow a grace period till due date.
How it works:
- Payments before due reduce principal; no interest for that period.
- From Due Date to payment/next milestone, interest accrues on remaining balance.
Example: Due 15 Aug; balance ₹10,000. Paid ₹6,000 on 10 Aug (before due) → no interest on that part. From 16–31 Aug, interest on ₹4,000 → ₹4,000 × 18% × (16/365) ≈ ₹31.
Code paths:
int_credit_bill_date
,int_credit_bill_due_date
(variants)
3) Split Interest: Current vs Previous Due (before/after due date)
What it does: Splits the last bill into Current Amount and Previous Due and applies interest separately, respecting payments before/after due.
When to use: You want precise, fair interest allocation between new charges and arrears.
How it works:
- Track payments before due → first knock off arrears, then current.
- Accrue day-wise interest between transaction points.
Example: Current ₹5,000; Previous Due ₹3,000; Paid ₹2,000 on 12 Aug (before due 15 Aug). The ₹2,000 reduces Previous Due first (to ₹1,000). After due, interest applies on the remaining buckets day-wise.
Code paths:
- From bill date:
int_on_prev_bill_curamt_and_dueamt_from_bill_date
- Split principal focus:
int_on_prev_bill_cur_and_due_principal_amount_from_bill_date
- Standard split:
int_on_prev_bill_curamt_and_dueamt
4) Interest on Outstanding (Simple)
What it does: Applies interest on the net outstanding for the cycle (can also consider another bill type if configured).
When to use: You want a clean “one number” basis for a cycle (simple, not day-wise).
How it works:
Outstanding (including tax, optionally adding fetched payments) → Interest by cycle/day factor.
Respects Minimum Amount (no interest if outstanding ≤ min).
Example: Outstanding ₹12,000; min ₹500; 1 full month assumed → ₹12,000 × 18% ÷ 12 = ₹180.
Code paths:
int_on_outstanding_simple
5) Interest on Outstanding (During Cycle)
What it does: Similar to (4) but uses the cycle’s actual dates and movements, meant for “within the billing cycle” interest.
When to use: You need interest to reflect in-cycle changes.
How it works: Uses cycle start/end, fetched bills/payments if configured; applies factor/day count accordingly.
Example: Balance fluctuates in Aug; final computed interest reflects partial periods rather than a flat month.
Code paths:
int_on_outstanding_during_cycle
6) Latest Due from Last Bill (Selected Plan)
What it does: Applies interest only on the last bill’s latest due between cycle end and the next bill date.
When to use: You want to target just the most recent due amount for the interim period.
How it works:
Interest = (Last due amount) × (Rate) × (days from cycle end → bill date).
Example: Due ₹3,000; from 31 Aug to 5 Sep (5 days) → ₹3,000 × 18% × (5/365) ≈ ₹7.
Code path:
int_latest_due_from_last_bill
7) Compounded Month-on-Month
What it does: Adds monthly interest to the balance and compounds it each month (until cleared or paid).
When to use: You want stronger deterrence for long non-payment.
How it works:
Each month: Interest = (Current balance) × (Monthly rate). New balance = balance + interest − payments (of that month).
Example: Start ₹10,000, 18% p.a. → 1.5% per month.
- Month 1: ₹150 → balance ₹10,150
- Month 2: interest on ₹10,150, and so on.
Code path:
int_cmpnd_mon_on_mon
8) One-Time Interest if Balance Exceeds Minimum
What it does: Looks at the latest balance; if it’s above the configured Minimum Amount, charges one-time interest for the cycle.
When to use: Light-touch policy—charge once if dues are notable.
How it works:
Interest = (Last balance) × (Rate) × (cycle factor).
Example: Last balance ₹8,000; min ₹500; 1 cycle → interest ≈ ₹120 (at 18% p.a. month basis).
Code path:
int_one_time_exceed_due
9) “Due on Previous + Current Bill” (builder)
What it does: Prepares the principal components (previous vs current, minus advances/own interest line) for interest calculation; used by other methods.
When to use: Internal step; explains why interest sees those amounts.
Example: If advance ₹500 existed, the “amount for interest” is adjusted downward before interest is applied.
Code paths:
due_on_prev_cur_bill
,due_on_prev_cur_bill_new
10) “Delay Due on Previous Current Bill” (specialized)
What it does: For special setups: builds amount from prior bill’s unpaid (net of advances/that interest line) up to last due date and tracks matching payments.
When to use: For specific societies/plans needing this exact behavior.
Example: If your society plan expects “carry last bill’s net due until its due date”, this is the one.
Code path:
delay_due_1
Notes on Configuration that affect results
- Factor:
- By Days → proportional to actual days between events.
- By Cycle → full period; doesn’t prorate by days.
- Minimum Amount: If set, balances at/below this won’t attract interest in some modes.
- Debits/Adjustments: Some modes can include debit entries as part of outstanding before applying interest.
- Other Bill Type: Certain modes can fetch another bill type (e.g., maintenance vs some custom bill) to use its due/outstanding for interest.
- Rounding: Internally, amounts may be rounded (e.g., to 2–3 decimals).
Quick picker (which option should I choose?)
- Simple & fair post-due: Interest after Due Date.
- Strict split (current vs arrears): Split Interest: Current vs Previous Due.
- Just charge on cycle’s net amount: Outstanding (Simple).
- Reflect mid-cycle changes: Outstanding (During Cycle).
- Tough policy on long dues: Compounded Month-on-Month.
- Light-touch once per cycle: One-Time if Balance Exceeds Minimum.
- Target only latest due: Latest Due from Last Bill.
Tiny end-to-end example (day-wise mode)
- Rate: 18% p.a.
- Bill: 1 Aug; Due: 15 Aug
- Amounts: Current ₹5,000; Previous Due ₹3,000
- Payments: ₹2,000 on 10 Aug (before due), ₹1,000 on 20 Aug (after due)
- After-Due interest will apply on what’s still unpaid after 15 Aug:
- Before due, ₹2,000 reduces previous due → arrears become ₹1,000.
- On 16 Aug, outstanding = ₹1,000 (arrears) + ₹5,000 (current) = ₹6,000.
- Paid ₹1,000 on 20 Aug → interest window is 16–20 Aug on ₹6,000:
₹6,000 × 18% × (5/365) ≈ ₹15.