Data AnalyticsIndustry analytics playbooks

NBFC collection efficiency: three ratios that disagree, and why

PK
Pankit Kumar
Sr. Data Scientist at Parexel (a Goldman Sachs–backed company) · 27 September 2026 · 6 min read
In this article (7 sections)

Related programme: the Data Analytics with Generative AI course (3–4 months; ₹90,000 (inclusive of GST) · EMI from ₹4,000/month).

The short answer

NBFC collection efficiency is collections divided by what was due, but "what was due" has at least three honest versions: this month's EMI demand only, current demand plus opening arrears, or current demand with prepayments counted in the cash. On the synthetic ten-loan book below the same month reads 101.5%, 43.8% and 281.1%. Report the overall ratio and the bucket movement to the collections head, and keep the EMI ratio for trend comparison with earlier reports.

Draft memo first, workings after

Collections reviews go better when the analyst writes the conclusion before the tables. This is the memo the numbers below support:

**August 2026 collections, two-wheeler portfolio (synthetic).** EMI collection efficiency was 101.5%, but ₹16,900 of the ₹33,900 received went to clearing arrears; only ₹17,000 met this month's EMIs. Against everything that was due — this month's ₹33,400 plus ₹44,000 of opening overdue — we collected 43.8%. One of two 1-30 accounts normalised; the 61-90 account paid nothing and has moved to NPA. A ₹60,000 foreclosure is excluded from efficiency and reported separately.

Every number in that memo comes from the code in this article. The rest of the page is about why each sentence is phrased the way it is.

The three ratios, written out

RatioNumeratorDenominatorWhat it answers
EMI collection efficiencyEMI cash received in the monthEMI demand for the monthDid we collect roughly a month's worth of instalments?
Overall efficiencyReceipts appropriated to overdue + to current demandCurrent demand + opening overdueHow much of the total amount due did we clear?
Cash including prepaymentAll cash, including foreclosures and part-prepaymentsEMI demand for the monthHow much money came in? (a treasury number, not a collections number)

The first ratio is popular because it is simple and stable, but it rewards collecting arrears without saying so. The second is harder to game. The third should never be labelled "efficiency".

The collections file an NBFC analyst gets

A month-end extract from the loan management system typically has, per loan: loan_id, product, branch, opening_bucket, opening_overdue, demand (EMI due this month), cash_received (EMI receipts, net of bounces), prepayment, plus mode (NACH, cash, UPI, field collection) and agency_id for outsourced collections. The data below is synthetic.

python
import pandas as pd

# Synthetic August 2026 collections file for ten two-wheeler loans (amounts in ₹)
loans = pd.DataFrame({
    "loan_id":         ["T01","T02","T03","T04","T05","T06","T07","T08","T09","T10"],
    "opening_bucket":  ["0","0","0","0","1-30","1-30","31-60","61-90","NPA","0"],
    "opening_overdue": [0, 0, 0, 0, 3200, 3500, 6400, 9900, 21000, 0],
    "demand":          [3200, 3500, 2900, 4100, 3200, 3500, 3200, 3300, 3500, 3000],
    "cash_received":   [3200, 3500, 0, 4100, 6400, 3500, 3200, 0, 7000, 3000],
    "prepayment":      [0, 0, 0, 0, 0, 0, 0, 0, 0, 60000],
})

# Appropriate regular receipts to the oldest dues first: overdue, then this month's EMI
regular = loans["cash_received"]
loans["to_overdue"] = regular.clip(upper=loans["opening_overdue"])
loans["to_current"] = (regular - loans["to_overdue"]).clip(upper=loans["demand"])
loans["closing_overdue"] = (loans["opening_overdue"] + loans["demand"]
                            - loans["to_overdue"] - loans["to_current"])

demand = loans["demand"].sum()
opening = loans["opening_overdue"].sum()
emi_ce = loans["cash_received"].sum() / demand                     # ratio 1
overall_ce = (loans["to_overdue"].sum() + loans["to_current"].sum()) / (demand + opening)  # ratio 2
headline_ce = (loans["cash_received"].sum() + loans["prepayment"].sum()) / demand  # ratio 3

print(f"Demand Rs {demand:,}  opening overdue Rs {opening:,}")
print(f"1. EMI collection efficiency : {emi_ce:.1%}")
print(f"2. Overall efficiency        : {overall_ce:.1%}")
print(f"3. Cash incl. prepayment     : {headline_ce:.1%}")
print(loans[["loan_id","opening_bucket","to_overdue","to_current","closing_overdue"]])

Printed result:

MeasureValue
Demand₹33,400
Opening overdue₹44,000
EMI collection efficiency101.5%
Overall efficiency43.8%
Cash incl. prepayment281.1%

Receipts are appropriated to the oldest dues first. That is why T06, which paid exactly one EMI, clears its old overdue and leaves this month's EMI unpaid: the account is still one instalment behind.

Bucket movement tells the collections head where effort worked

Efficiency ratios hide which customers moved. A roll-back table does not. The helper below approximates the bucket from the number of EMIs overdue — a shortcut for this illustration; production reports should use dated days-past-due as described in NPA ageing and SMA buckets.

python
def bucket(overdue, emi):
    if overdue == 0:
        return "0"
    months = round(overdue / emi)
    return {1: "1-30", 2: "31-60", 3: "61-90"}.get(months, "NPA")

loans["closing_bucket"] = [bucket(o, e) for o, e in zip(loans["closing_overdue"], loans["demand"])]
moves = pd.crosstab(loans["opening_bucket"], loans["closing_bucket"])
print(moves)
Opening (rows) vs closing (columns)01-3031-60NPA
04100
1-301100
31-600010
61-900001
NPA0001

One current account (T03) slipped, one 1-30 account normalised, the 31-60 account held its bucket by paying one EMI, and the 61-90 account rolled into NPA. That last line is the sentence the business head needs.

Regulation that changes the denominator of your NPA line

RBI's Scale Based Regulation framework for NBFCs (22 October 2021) moved all NBFC categories to a 90-day overdue NPA norm, with a glide path for Base Layer NBFCs: more than 150 days by 31 March 2024, 120 days by 31 March 2025 and 90 days by 31 March 2026. If you compare NPA-bucket collections across years for a Base Layer NBFC, the definition of that bucket changed under you. Restate old months on the current norm or footnote the break.

Where NBFC efficiency numbers get bent

  • Bounce and re-presentation. A NACH debit that bounces and is re-presented later in the month can appear twice in raw receipts and once as a reversal. Use net receipts.
  • Value date versus posting date. Field collections deposited on the 2nd of the next month may carry the collection date or the deposit date. A three-day shift at month-end moves efficiency by several points.
  • Advance EMIs. Customers paying next month's EMI early inflate this month's EMI ratio and deflate next month's. Hold advances in a separate column.
  • Settlements and write-offs. A one-time settlement collects less than the overdue. Treat the waived part as a write-off, not as collected, or overall efficiency looks better than the recovery really was.
  • Averages of branch ratios. Compute portfolio efficiency from summed numerators and denominators. Averaging branch percentages gives a small branch the same weight as a large one.

Handing the numbers to a collections head

Lead with overall efficiency and the roll-back table, by branch or agency, for the last three months. Put the EMI ratio beside it with its definition so people can compare with older reports. Report foreclosures and prepayments in their own line. And when efficiency is above 100%, say in the same sentence what was collected that was not due this month.

Allocation logic, pandas clip, and a memo that leads with the conclusion are all part of what our 3–4 month DA course practises. If you want to see how much of your current skill set this already covers, try the free skill check.

Frequently asked questions

How is collection efficiency calculated for an NBFC?

The most common version divides the EMI cash collected in a month by that month's EMI demand. A stricter version divides everything applied to dues, both arrears and current EMIs, by the current demand plus the opening overdue. State which one you use, because the two can differ by more than fifty points on the same book.

Why is my NBFC collection efficiency above 100%?

Because arrears or prepayments collected this month are being divided by this month's demand only. Collecting last month's missed EMIs, or a foreclosure, adds cash without adding demand, so the ratio can exceed 100% even while overdue customers stay overdue.

PK
Pankit Kumar
Lead Instructor, NeuraPath Academy

Pankit Kumar has 10 years in Data Science & AI, building and shipping production systems in regulated pharma and clinical environments. He is a freelance trainer at Boston Institute of Analytics, AnalytixLabs and Scaler, and has taught this material to thousands of working professionals.

This article is part of our Data Analytics with Generative AI programme — 3–4 months. The full analyst stack — Excel, SQL, Power BI and Python pipelines — then a generative-AI layer you can prove is right.

Explore Data Analytics with Generative AI
Counselling is free · no obligation

Not sure which programme fits?

Tell us your background and we will map it to the right entry point — including saying so when a cheaper programme is the better fit. A counsellor replies within one working day.