Combined Credit Snapshot

The single source of truth for the landing page UI. One request returns the user's identity, all loans, journey states, eligibility per asset class, and any in-progress top-up references.


📘

Render your landing page UI from the API response

Do not attempt to re-build/derive complex logic like loan lifecycles on your backend. The Combined Credit Snapshot API does the heavy-lifting for you. Your primary responsibility is to integrate.

What is the Combined Credit Snapshot API?

This API is a wrapper over 4 independent APIs - and was build for you to simplify building landing pages/ credit widgets and re-usage credit sections on your UI.

The API wraps over 4 commonly used Unity APIs (so you only have to integrate once) and enables these common user states and use cases.

Scenario 1 - Credit limit simulation

If you have the user's holdings (mutual funds/stocks), you can use the API to fetch the user's potential credit limit. If multiple lenders are available, the API evaluates the credit limit offered by each lender and returns the offer with the maximum loan amount.

If you provide a user identifier (PAN/Unity user ID) - it takes into account the user context and returns the credit limit offered by the lender selected by the user.

Scenario 2 - Loan application states

If a user ID is provided, the API returns the loan application states for all in progress/disbursed loans of the user. You can use this information to nudge the user to either resume the loan application, or view the active loan dashboard.

The API response also helps you with context if a user has multiple active loan applications/loans.

Response structure

The response stitches together the outputs of the four APIs this endpoint wraps — each linked value below points to that API's reference.

Expected output:

{
    user: response from get Unity user,
    creditLimit: [
        {
            lender: "bajaj_finserv",
            product: "lamf",   // only if MF holdings input is provided
            data: response from Credit simulation for MFs
        },
        {
            lender: "bajaj_finserv",
            product: "lamf",   // only if stock holdings are provided
            data: response from Credit simulation for STOCKs
        }
    ],
    loanDetails: [   // only if there are one or more lids in the get user response
        {
            lid: <lid from user.data.loans list>,
            journeyStatus: response from application status API,
            loanSummary: response from loan summary API   // call the right API based on lender + product
        }
    ]
}

One request returns the complete landing-page state for a user.

Top-level fieldWhat it carries
userUnity user identity, lender, all loans (LAMF + LAS), flags, top-up nudges. null if no unityUserId is provided.
creditLimit[]Eligibility per asset class. One entry per (product, assetType) — MUTUALFUND, STOCKS.
loanDetails[]One entry per loan in user.loans. Each carries journeyStatus plus a loanSummary (servicing dashboard payload) once the loan is past disbursement. Child LIDs surface only inside the parent's loanSummary.topUpLoans[].

Use it for:

  • Pre-onboarding pure eligibility (omit unityUserId).
  • Connected-user LP UI render — what loans the user has, their journey state, and what they can top up.

Request fields

FieldTypeWhen to send
unityUserIdstringOptional. Omit for pre-onboarding pure eligibility (you'll get user: null). Include once Create User has returned an ID — required to fetch user state + loans.
stockHoldingsarrayOptional. Pass to compute STOCKS eligibility. Each entry must include dpId.
mfHoldingsarrayOptional. Pass to compute MUTUALFUND eligibility.
brokerHoldingsarrayOptional. Broker raw holdings (currently kite) for cross-validation against stockHoldings.
aggregateFundsbooleanOptional. When true, MF distribution response is aggregated by ISIN. No effect on STOCKS.
referrerstringOptional. Defaults to your partner name.
panstringOptional.
agenumberOptional. Validated against the lender's allowed age range when provided. Helps with lender eligibility checks.
isNribooleanOptional. Use isNriisNRI is deprecated. NRI users are rejected with not_eligible_wrt_nri_status (4407).
namestringOptional.

Holding entry shapes

stockHoldings[]:

{
  "assetType": "STOCKS",
  "isin": "INE467B01029",
  "quantity": 50,
  "isDemat": true,
  "dpId": "1208160075231086",
  "iscid": "",
  "lockInQuantity": 0
}
Sub-fieldRequiredDescription
assetTypeyesConstant STOCKS.
isinyesThe same ISIN can appear multiple times if the stock is a constituent in multiple smallcases.
quantityyesTotal quantity held.
isDematyesAlways true for STOCKS.
dpIdyesThe DP ID for the demat account.
iscidnoEmpty for externally held; populated when the holding is part of a smallcase.
lockInQuantitynoDeducted from quantity for eligibility math.

mfHoldings[]:

{
  "assetType": "MUTUALFUND",
  "isin": "INF209K01VA3",
  "quantity": 1375.823,
  "isDemat": false,
  "lockInQuantity": 0
}

Loan relationships (response.data.user.loans) for your landing page

📘

Read this first

Before working with user.loans[] and loanDetails[], go through Loan lifecycle & loan relationships. This page assumes that model.

LID lifecycle

A loan moves through a single journey, surfaced as loanStatus:

{
  "lid": "67f0aa11ce42e3a9b7c40012",
  "status": "ACTIVE",
  "productType": "lamf",
  "assetType": "MUTUALFUND",
  "lender": "bajaj_finserv",
  "flowId": "67f0aa11ce42e3a9b7c40010",
  "createdAt": "2026-04-28T14:00:00.000Z",
  "purpose": "LOAN_APPLICATION",
  "isDefault": true,
  "loanStatus": "PRE_SUBMITTED"
}
(no LID yet)
   │  user starts journey
   ▼
PRE_SUBMITTED
   │  user submits to lender
   ▼
SUBMITTED
   │  lender approves & disburses
   ▼
DISBURSED   ◀── servicing dashboard active
   │  user closes loan
   ▼
CLOSED
📘

Where loanStatus and status differ:

loanStatus is the journey status (PRE_SUBMITTED / SUBMITTED / DISBURSED / CLOSED) — this is what you use to render the landing page state/nudges.

  • PRE_SUBMITTED - display the "resume loan application" messaging.
  • SUBMITTED - show the "please wait, application under processing/review" state
  • DISBURSED - show the servicing dashboard/state
  • CLOSED - do not show/use for user's archival reference


status is an internal book-keeping flag (ACTIVE / INACTIVE / CLOSED / ARCHIVED) — you can mostly ignore it!

Sibling vs parent-child

There are two distinct patterns. Both are server-managed; the snapshot reflects whichever applies right now.

Same-asset top-up (e.g. LAMF over LAMF). The parent-child link is established at top-up creation, before submission. The child appears in the parent's loanSummary.topUpLoans[] immediately with topUpStatus: IN_PROGRESS. When the child gets DISBURSED, it becomes the new servicing dashboard owner; the old parent flips to status: INACTIVE and topUpStatus: APPLIED.

Cross-asset (LAMF + LAS, same lender). When a user has a LAMF and starts a LAS application (or vice versa), the two loans are siblings while both are PRE_SUBMITTED — not parent-child. When one of the two is SUBMITTED, the server flips the relationship to parent-child, and the child shows up in the parent's loanSummary.topUpLoans[] once the parent is DISBURSED.

How to detect each pattern from the snapshot:

PatternDetection rule
SiblingTwo loans, same lender, both loanStatus: PRE_SUBMITTED, different assetType, both purpose: LOAN_APPLICATION.
Parent-childParent is in topUpLoans[] of the other loan's loanSummary, OR the child has purpose: LOAN_APPLICATION:TOP_UP while a same-lender DISBURSED loan exists.
🚧

EIMPL loans are lender-selection only

Any loan with lender eimpl exists only for the lender-selection journey. It will never reach the SUBMITTED state, and so it will never carry a loanSummary object.

Scenario matrix

What to expect in each end-state, and what to render.

Scenariouser.loansloanDetails[].loanSummary.topUpLoans[]Partner UI
LAMF only (DISBURSED)1 entry: ACTIVE, MUTUALFUND, DISBURSED, isDefault: trueOn the LAMF: STOCKS + MUTUALFUND placeholders, both NOT_INITIATEDLAMF servicing card. Optionally surface "Add LAS" if nudges.topup includes "las".
LAMF over LAMF2 entries: parent ACTIVE/DISBURSED + child ACTIVE/PRE_SUBMITTED, child has purpose: LOAN_APPLICATION:TOP_UPOn parent: MUTUALFUND child with topUpStatus: IN_PROGRESS, STOCKS placeholderLAMF servicing card with a "Top-up in progress" badge.
LAS only (DISBURSED)1 entry: ACTIVE, STOCKS, DISBURSED, isDefault: trueOn the LAS: STOCKS + MUTUALFUND placeholdersLAS servicing card. Surface "Add LAMF" if the nudge says so.
LAS over LAMF (cross-asset child)2 entries: LAMF DISBURSED parent + LAS PRE_SUBMITTED/SUBMITTED childAfter LAS submission: LAS appears in LAMF's topUpLoans with topUpStatus: APPLIED. While LAS is still PRE_SUBMITTED they are siblings.LAMF servicing + a "LAS application in progress" card linked from topUpLoans.
LAMF over LAS (cross-asset child)Mirror of LAS over LAMFAfter LAMF submission: LAMF appears in LAS's topUpLoansLAS servicing + LAMF in-progress card.
LAS over LASComing soon. Not yet supported.Not yet applicable.
LAS + LAMF in parallel (siblings)2 entries: both PRE_SUBMITTED, different assetType, same lender, both purpose: LOAN_APPLICATIONBoth loanDetails entries have only journeyStatus (no loanSummary, since neither is disbursed)Two in-progress application cards. Detect via the rule in Loan relationships.

Known limitations

  • The child loan does not carry a back-pointer (parentLid) to its parent. Derive the relationship from the parent's topUpLoans[] or from the child's purpose: LOAN_APPLICATION:TOP_UP marker.
  • Sibling loans are not annotated with siblingLid in the response. Detect them from shape (see Loan relationships).
  • For EIMPL loans, loanDetails[].loanSummary will be null because EIMPL has no servicing dashboard endpoint exposed today.

Path Params
string
required

Your gateway partner name.

Body Params
string

Omit for pre-onboarding pure eligibility (user will be null). Include once Create User has returned an ID — required to fetch user state + loans

stockHoldings
array of objects

Pass to compute STOCKS eligibility. Each entry must include dpId. See holding shape below.

stockHoldings
mfHoldings
array of objects

Pass to compute MUTUAL FUND eligibility. See holding shape below.

mfHoldings
brokerHoldings
array

Broker raw holdings (currently kite) for cross-validation against stockHoldings.

brokerHoldings
boolean
Defaults to false

When true, MF distribution is aggregated by ISIN. No effect on STOCKS.

string

User's PAN

number

Validated against the lender's allowed age range when provided.

boolean

Use isNri — isNRI is deprecated. NRI users rejected with not_eligible_wrt_nri_status (4407).

string

User's name.

string

Defaults to your partner name.

Headers
string
required
Defaults to gatewayDemo_secret

apiSecret shared for authentication.

string
required
Defaults to eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJndWVzdCI6dHJ1ZSwiaWF0IjoxNjU0MzIxMDAwfQ.qiZ_w1yFYXhkdLMlqI28XJOXitfZwr64e2oL-lMEHZU

JWT created with payload {"iss":"<your_gateway_name>"}, signed with the shared secret.

Response

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json