Skip to navigation

Eligibility and Dedupe are independently optional. Submit at least one of Bureau, Banking or GST, or any combination. Obtain borrower authorization for all supplied financial information. Eligibility is preliminary and does not guarantee an offer or approval.

Journey creation and reuse

Omit the optional journeyID query parameter when Eligibility is your first call. The response returns data.journeyID. If Dedupe has already returned an ID, supply it here. Pass the same ID to Create A Journey, offer polling and handoff. You can use Eligibility without completing Dedupe first.

All four examples below are also selectable in the Eligibility API Reference.

Input structure

  • Bureau: type is CIBIL, EXPERIAN, EQUIFAX, or CRIF. The existing consentReference is retained. data is a JSON object.
  • Banking: An array of records. Each record has a period with from and to date-times, a type of CURRENT, SAVINGS, or CC, and a data JSON object.
  • GST: An array of records. Each record has a period, a type of GSTR-1, GSTR-2A_GSTR-2B, or GSTR-3B, and a data JSON object.

Period timestamps include a timezone and from must not be later than to. Each data object can contain nested properties. Your data can retain its existing structure. Contact Aarthik Labs to confirm support for your financial data provider. The values below are synthetic and do not prescribe a provider’s schema.

The comments beside data below explain its free-form shape. They are documentation annotations; omit comments from JSON sent to the API. In the API Reference, select JavaScript to see the same inline notes in executable examples.

Bureau only

{
"bureau": {
"type": "EXPERIAN",
"consentReference": "CONSENT-001",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
}
}

Banking only

{
"banking": [
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-09-30T23:59:59Z"
},
"type": "CURRENT",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
},
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-09-30T23:59:59Z"
},
"type": "SAVINGS",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
}
]
}

GST only

{
"gst": [
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-06-30T23:59:59Z"
},
"type": "GSTR-1",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
},
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-06-30T23:59:59Z"
},
"type": "GSTR-3B",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
}
]
}

Bureau, Banking and GST

{
"bureau": {
"type": "EXPERIAN",
"consentReference": "CONSENT-001",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
},
"banking": [
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-09-30T23:59:59Z"
},
"type": "CURRENT",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
},
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-09-30T23:59:59Z"
},
"type": "SAVINGS",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
}
],
"gst": [
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-06-30T23:59:59Z"
},
"type": "GSTR-1",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
},
{
"period": {
"from": "2026-04-01T00:00:00Z",
"to": "2026-06-30T23:59:59Z"
},
"type": "GSTR-3B",
"data": {} // This is a free-form key-value pair. Please send any shape/structure.
}
]
}

Start, then read Eligibility

The Start Eligibility API accepts the financial inputs with POST and returns HTTP 202, data.journeyID, and a pending operation. The Start response has no polling object. Store the ID and make the first Fetch Eligibility Results GET after acceptance. Follow the polling guidance in that GET response for later reads; do not resend financial information to poll.

GET /api/v1/hybrid/business-loan/borrowers/{borrowerProviderID}/journey/eligibility?journeyID=<returned-journey-id>
Authorization: Bearer <PLATFORM_API_KEY>

The Fetch Eligibility Results API returns HTTP 200 for a successful read. data.status is the journey-level status; each lender has its own decision retaining detailed lender-specific values, including SKIPPED and ERROR.

Lender resultsJourney status
Any lender is PENDING, regardless of other resultsPENDING
No pending lenders; at least one is ELIGIBLE or SKIPPEDELIGIBLE
No pending lenders; all results are NOT_ELIGIBLE or ERRORNOT_ELIGIBLE

SKIPPED counts as positive and ERROR counts as negative when calculating the journey outcome. The journey can only be ELIGIBLE, NOT_ELIGIBLE, or PENDING; individual lender statuses are preserved.

Example lender resultsJourney outcome
ELIGIBLE + PENDINGPENDING
SKIPPED + PENDINGPENDING
ELIGIBLE + NOT_ELIGIBLEELIGIBLE
SKIPPED + NOT_ELIGIBLEELIGIBLE
SKIPPED + ERRORELIGIBLE
All SKIPPEDELIGIBLE
NOT_ELIGIBLE + ERRORNOT_ELIGIBLE
All ERRORNOT_ELIGIBLE

Lender decisions are ELIGIBLE, NOT_ELIGIBLE, SKIPPED, ERROR, or PENDING. An error is not a credit rejection. Eligibility does not guarantee an offer or approval. Follow data.polling.nextPoll while data.polling.shouldPoll is true; it is false for every non-pending journey status. Respect Retry-After on 429 and use backoff for transient failures. Do not restart the operation to poll.

Once the operation is terminal, use the same journeyID for Create A Journey and continue only where the lender result permits it. Retain the original borrower identity. Invalid, unknown or unauthorized journey IDs must not create replacement journeys.

Provisional terms per lender

Each entry in data.lenders includes the following fields alongside its eligibility decision. The terms are indicative, may change after further assessment, and are not a final offer or loan approval. They are populated when available for an eligible lender; otherwise the fields are null, including pending and ineligible results. Do not treat null as zero.

FieldFormatExample
annualPercentageRateAnnual percentage as a string"18.50"
interestRateAnnual interest percentage as a string"16.00"
amountPrincipalINR amount as a decimal string"500000.00"
offerTermRepayment duration with its unit"12 months"

The Fetch Eligibility Results API shows these in the eligible and pending-with-one-eligible-lender examples. No offer ID or handoff URL is created by this preliminary assessment. Continue with Create A Journey, display the resulting actual offers and terms, and request handoff only after offer selection.