Product Guide 07
Fintech AI

Co-Lending: How to Build It

A step-by-step guide to building a co-lending arrangement in India. Eight stages, the options at each one, exactly how each step connects to the next, real costs, and what breaks. Written for someone who has not built this before.

Verified September 2026Free · No signupOfficial sources only
BeginnerStart here. No prior knowledge assumed.

How to use this page

This page walks you through building one product: two regulated lenders funding the same loan to the same borrower, at the same time. A bank brings cheap money, an NBFC brings reach and underwriting.

Watch out

Everything written about co-lending before August 2025 describes a repealed framework. The RBI (Co-Lending Arrangements) Directions, 2025 (issued 6 August 2025, refs RBI/DOR/2025-26/139 and DOR.STR.REC.44/13.07.010/2025-26) took effect 1 January 2026 and repealed the 2020 circular entirely. Three things changed that invalidate most existing designs: the bank can no longer reject loans after sourcing, the borrower must be charged a single blended rate, and both partners retain 10% rather than the NBFC retaining 20%.

What co-lending actually is

Co-lending exists because banks and NBFCs have opposite problems. A bank has cheap deposits and weak reach into small-ticket and rural lending. An NBFC has the reach and the underwriting but funds itself expensively. Put them on the same loan and the borrower gets a rate neither could offer alone.

Who may participateWho may not
Commercial banks · All-India Financial Institutions · NBFCs including housing finance companiesSmall finance banks, regional rural banks and local area banks are excluded

The 2025 Directions changed the shape of the product, not just its paperwork:

Item2020 model2025 Directions
ScopePriority sector onlyAll lending
RetentionNBFC 20%Each partner 10%, both sides
Bank's choiceCould reject loans after sourcingIrrevocable back-to-back commitment. Discretion abolished
PricingHurdle rate, each lender priced separatelyOne blended rate to the borrower
TransferLoosely specifiedWithin 15 calendar days
Note

The blended rate is the change with the most commercial consequence. Under the hurdle-rate model an NBFC could price the borrower above its own cost and keep the spread created by the bank's cheaper funds. A single weighted-average rate removes that margin entirely. If your co-lending business case was built on it, the business case is gone — and that is the point of the rule.

What it is not:

  • Not loan sale. Buying loans after origination is the Transfer of Loan Exposures regime — a different rulebook with different economics.
  • Not two loans. One borrower, one loan, one rate, one point of contact.
  • Not outside digital lending rules. A digital co-lending arrangement is governed by both these Directions and the Digital Lending Directions, 2025.

The whole journey, in one table

#StepIn plain words
1Find a partner, write the CLAA board-approved policy and a formal agreement. Before any code.
2Agree the commitmentIrrevocable, back-to-back. The bank cannot cherry-pick later.
3Compute the blended rateWeighted average. One number to the borrower.
4The KFSEach lender's share and rate, plus the blended APR.
5Disburse and transferEscrow, and 15 calendar days.
6Two books, one borrowerSeparate accounts, one common reference number.
7Service itOne customer interface. Rate changes ripple.
8Classify and discloseThe same borrower cannot be standard at one lender and NPA at the other.
Note

Steps 3 and 8 are the two that break integrations. Blended pricing has to recompute whenever either partner moves its rate, and unified asset classification requires two institutions with different internal norms to agree on one answer about one borrower, every day.

IntermediateBuild it. Pipelines, tools and working code.

Steps 1 to 3 — partner, commitment, pricing

Step 1 — The partner and the agreement

Both parties need a board-approved co-lending policy, and the arrangement needs a formal CLA covering, at minimum:

  • Terms and the funding split
  • Borrower selection criteria, agreed up front rather than applied case by case
  • Fee structure between the partners
  • Segregation of responsibilities — sourcing, underwriting, servicing, collections
  • Which lender is the customer interface

Step 2 — The commitment that changed the product

Watch out

Under the 2020 model the bank could look at each sourced loan and decline it. That discretion is abolished. The partner now gives an irrevocable commitment to fund its agreed share on a back-to-back basis, and selective or post-disbursement acquisition falls under the Transfer of Loan Exposures Directions instead — a different regime entirely. The consequence is architectural: your credit policy must be agreed BEFORE origination, in the CLA, because there is no second look. Every co-lending stack built on “source, then send to the bank for approval” needs rebuilding as “apply the agreed policy, then both fund automatically”.

Step 3 — The blended rate

Python — step 3, the blended rate, recomputed whenever either side moves
from decimal import Decimal, ROUND_HALF_UP

# ONE rate to the borrower: the weighted average of the partners' rates,
# weighted by their funding share. The hurdle-rate model -- where each lender
# priced separately and the originator kept the difference -- is gone.

def blended_rate(legs) -> Decimal:
    """legs = [{'re':'BANK','share':Decimal('0.80'),'rate':Decimal('9.50')}, ...]"""
    total = sum(l["share"] for l in legs)
    assert total == Decimal("1"), f"shares must sum to 1, got {total}"
    for l in legs:
        # Each partner retains a minimum 10% of EVERY individual loan.
        # 2025 Directions: applies to BOTH sides, not just the NBFC.
        assert l["share"] >= Decimal("0.10"), f"{l['re']} below the 10% floor"
    r = sum(l["share"] * l["rate"] for l in legs)
    return r.quantize(Decimal("0.01"), ROUND_HALF_UP)

def borrower_apr(legs, fees_paise, principal_paise, tenure_months) -> Decimal:
    # Any charge the borrower pays on top of blended interest goes into the APR.
    # A fee that exists anywhere in the journey and is not in the APR makes the
    # APR wrong, and the APR is the binding number.
    return apr_from(principal_paise, fees_paise, blended_rate(legs), tenure_months)

def on_partner_rate_change(loan, re_id, new_rate):
    # A rate move by EITHER partner changes what the borrower pays. Servicing
    # must recompute, reschedule and re-disclose -- this is not a back-office
    # adjustment, it is a change to the customer's contract terms.
    legs = [dict(l, rate=new_rate) if l["re"] == re_id else l for l in loan["legs"]]
    new = blended_rate(legs)
    return {"old_blended": loan["blended_rate"], "new_blended": new,
            "reschedule": new != loan["blended_rate"],
            "fresh_kfs_required": new != loan["blended_rate"],
            "notify_borrower": True}

# WHAT TO CHECK
# [ ] the 10% floor is asserted PER LOAN, not per portfolio. A portfolio at 12%
#     containing individual loans at 4% does not comply
# [ ] shares sum to exactly 1. Use Decimal; a float rounding error here is a
#     mispriced loan
# [ ] blended rate recomputes on ANY partner rate change, and triggers a fresh
#     KFS. Teams build the rate once at origination and never revisit it
# [ ] every borrower charge is in the APR, not just the interest
# [ ] store the LEGS with the loan -- share and rate per partner, at that date.
#     Recomputing from today's rates cannot reproduce a historical instalment
# [ ] the borrower sees ONE rate. Showing two lenders' rates is the model the
#     Directions replaced

The gotcha nobody documents: the blended rate is not a number you compute once. If either partner changes its rate during the loan's life — and over a multi-year tenure one of them will — the borrower's rate changes, the schedule changes, and a fresh Key Fact Statement is owed. Most co-lending implementations compute the blend at origination and store it as a constant. That is a defect that only surfaces at the first repricing, by which time there are thousands of loans carrying a stale rate.

Steps 4 to 8 — the KFS, the money, the books

Step 4 — The Key Fact Statement

The KFS carries more than an ordinary loan's does. It must show each lender's share and rate as well as the single blended figure:

Bank — 80% @ 9.50%  ·  NBFC — 20% @ 16.00%  ·  Blended — 10.80%  ·  APR including all charges — 11.4%

Everything in Product Guide 03 about the KFS applies here too: it is shown before sanction, the APR includes every fee, and you store the rendered document rather than the inputs.

Steps 5 to 8 — Escrow, books, servicing, classification

Python — steps 5 to 8: escrow, two books, one answer about the borrower
from datetime import timedelta

TRANSFER_WINDOW = timedelta(days=15)      # calendar days, not business days

def disburse(loan, escrow, legs):
    # All transactions between the REs and the borrower route through an escrow
    # maintained for the arrangement. Neither lender's own account touches
    # borrower money directly.
    for l in legs:
        escrow.credit(source=l["re"], amount=l["share"] * loan["principal_paise"],
                      ref=loan["common_ref"])
    escrow.debit(to=loan["borrower_account"], amount=loan["principal_paise"],
                 ref=loan["common_ref"])
    return {"transfer_due_by": loan["origination_date"] + TRANSFER_WINDOW}

def book(loan, legs):
    # SEPARATE loan accounts per co-lender, joined by ONE common reference.
    # The common ref is what makes reconciliation and credit bureau reporting
    # possible; without it you have two unrelated loans to the same person.
    return [{"re": l["re"], "account_no": l["re"] + "-" + loan["common_ref"],
             "common_ref": loan["common_ref"], "share": l["share"],
             "rate": l["rate"], "outstanding": l["share"] * loan["principal_paise"]}
            for l in legs]

def classify(loan, views):
    """views = each partner's own SMA/NPA view of this borrower."""
    # UNIFIED BORROWER-LEVEL CLASSIFICATION. The same borrower cannot be
    # standard at the bank and NPA at the NBFC. The partners' internal norms
    # differ, so the CLA must say HOW the single answer is reached.
    worst = max(views.values(), key=lambda v: v["severity"])
    disagreement = len({v["stage"] for v in views.values()}) > 1
    return {"agreed_stage": worst["stage"],
            "partners_disagreed": disagreement,
            "resolution_rule": loan["cla"]["classification_rule"],
            "action": "escalate_to_cla_committee" if disagreement
                      and not loan["cla"].get("classification_rule") else "apply"}

# WHAT TO CHECK
# [ ] the transfer window is 15 CALENDAR days. A 15-business-day assumption is
#     wrong by up to five days in a month with holidays
# [ ] common_ref is generated ONCE, at origination, and used by both partners in
#     their own systems AND in credit bureau reporting
# [ ] the classification rule is written INTO the CLA, not resolved by email
#     each time. Two institutions with different SMA norms will disagree, and
#     the borrower's bureau record depends on the answer
# [ ] ONE customer interface, named in the loan agreement. If it changes during
#     the tenure the borrower is told IN ADVANCE
# [ ] escrow reconciles daily. Two funders, one disbursal, one repayment stream
#     -- see Build Sheet 05 for the control-total discipline
# [ ] DLG between the partners is capped at 5% and disclosed

The gotcha nobody documents: unified asset classification. Two institutions with different internal SMA and NPA norms must produce one answer about one borrower, every day, and that answer drives the borrower's credit bureau record. The Directions require the unified view but do not resolve the methodological difference for you. If your CLA does not state exactly how disagreement is settled, you will be settling it by email while a borrower's bureau file is wrong. Write the rule into the agreement, implement it as code, and log every time the partners disagreed — that log is the evidence the rule is being applied consistently.

Disclosure

  • NBFCs must list their co-lending partners publicly on their website.
  • Financial statements must disclose volumes, rates, fees, performance and guarantees for co-lending arrangements.
  • Any DLG between the partners is capped at 5% and disclosed.

What it costs

Co-lending — what it costs and what it earns

Verified September 2026
The retentiondirect
10% of every individual loan, on both sides. That is capital tied up per loan, not per portfolio, and it is the real cost of participating.
The margin you can no longer takedirect
The blended rate removes the hurdle-rate spread. If the business case depended on pricing the borrower above your own cost while funding at the bank's, that margin is gone by design.
The DLGdirect
Capped at 5%, and it is real capital posted, not a marketing term. See Product Guide 03 for the eligible forms.
Two-system integrationdirect
Separate loan accounts in two institutions joined by one reference, daily escrow reconciliation, and a blended rate that recomputes on either side's move. Budget this as an integration project, not a feature.
The 15-day clockdirect
Operational cost of hitting a calendar-day transfer window every time, including across holidays.
What you earndirect
Reach and volume the NBFC could not fund alone, and assets the bank could not originate alone. The economics now come from volume and cost of funds, not from pricing opacity — which is a harder but more durable business.
Where to buy these: Credit Underwriting Build Sheet names every tool with its unit cost. Getting Access covers which ones you can sign up for today, which need a sales call, and which are licensed.
Note

Model the arrangement, not the loan. A co-lending book's economics depend on the funding split, both partners' costs of funds, the retention on both sides, and the DLG posted. Change any one and the whole arrangement reprices. Build that as a model you can run before you sign the CLA, because the CLA is hard to renegotiate afterwards.

AdvancedShip it. Failure modes, thresholds and evidence.

Three versions you could build

The starting version

Build: one bank partner → a CLA with the credit policy agreed up front → blended rate computed and stored with the legs → KFS showing both shares → escrow disbursal → separate books with a common reference → manual classification reconciliation.

It breaks when: either partner reprices, or the partners disagree on a borrower's stage.

The proper version

Build: everything above, plus — blended rate as a function that recomputes on any leg change and triggers a fresh KFS → the classification rule written into the CLA and implemented in code, with a disagreement log → daily escrow reconciliation with control totals → the 10% floor asserted per loan → common reference flowing into both bureau submissions → the public partner list and statutory disclosures automated.

Trade: you are operating inside another institution's release cycle. Their rate change is your reschedule.

Multiple partners

Build: several bank partners, routed by product and geography, with an arrangement-level economic model per partner.

It breaks when: you build it before one arrangement has run through a full cycle — an origination, a repricing, a delinquency and a recovery. Until then you do not know what you are scaling.

Note

If you take one thing from this page: the credit policy must be settled in the CLA, before origination. The bank's second look is gone. Every stack designed around “source, then get approval” has to become “apply the agreed policy, then both fund automatically” — and that is a rebuild, not a configuration change.

What goes wrong

What goes wrongWhyFix
The bank tries to decline a sourced loanDesigned against the 2020 discretionary model.Irrevocable back-to-back commitment. Agree policy in the CLA.
Blended rate goes staleComputed once at origination and stored as a constant.A function over the legs, recomputed on any change.
Retention below 10% on some loansThe floor was applied at portfolio level.Assert per individual loan.
Partners disagree on NPA stageDifferent internal norms, no rule in the CLA.Write the resolution rule into the agreement; log disagreements.
Two unrelated loans in the bureauNo common reference number.One ref, generated at origination, used by both.
Transfer misses the window15 business days assumed.Calendar days.
Borrower sees two ratesThe old model surfaced in the UI.One blended rate; shares disclosed in the KFS only.
The business case evaporatesIt rested on the hurdle-rate spread.It is gone by design. Rebuild on volume and cost of funds.

Where to go next

Watch out

This page is a guide, not a specification. Co-lending is a regulated arrangement between licensed entities and the CLA is a binding contract that is difficult to renegotiate. Nothing here is legal advice. Have your agreement, your pricing model and your classification rule reviewed by qualified counsel before the first loan is sourced.

Sources

Every figure, rule and date on this page, and where to check it. Entries are typed so you can see which are primary-sourced and which are industry reporting.

  1. officialRBI (Co-Lending Arrangements) Directions, 2025 — issued 6 August 2025 (RBI/DOR/2025-26/139 · DOR.STR.REC.44/13.07.010/2025-26), effective 1 January 2026. The 10% retention on both sides, the irrevocable back-to-back commitment, the blended rate, the 15-calendar-day transfer, escrow routing, unified borrower-level classification, the 5% DLG cap and the disclosure obligations. www.rbi.org.in
  2. officialRBI Co-Lending by Banks and NBFCs to Priority Sector (5 November 2020) — the repealed framework — retained here only to show what changed. www.rbi.org.in
  3. officialRBI (Transfer of Loan Exposures) Directions — the regime that now governs selective or post-disbursement loan acquisition, which co-lending no longer permits. www.rbi.org.in
  4. officialRBI (Digital Lending) Directions, 2025 — applies in addition to the Co-Lending Directions where the arrangement is digital. www.rbi.org.in
  5. industryLegal and practitioner analysis of the 2025 Directions — the comparison table against the 2020 model, and the observation that the blended rate removes the hurdle-rate margin. Verify any specific figure against the Directions before relying on it.
  6. industryCore lending platform implementation notes — the KFS share-disclosure format, common loan reference numbering, and dynamic rate recalculation. Vendor-sourced.

Checked September 2026. These Directions took effect on 1 January 2026; anything older describes a repealed framework.

Ask an AI about this page

Opens your assistant with this page as the source, and a question rather than a summary. It will ask what you are building before it answers.

Nothing is sent from here. The link carries only this page’s title and address.