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.

 

Related posts

Latest posts