5.11 Worked data example — one borrower end-to-end
This page traces the same synthetic borrower from 6.13 through the platform’s data layer. Where the underwriting page focused on the business logic, this page focuses on the JSON shapes at each stage.
Borrower: Sundar Textiles & Apparel Pvt Ltd — garment manufacturer, Bengaluru, requesting ₹35 lakh revolving WC line.
Stage 1 — Lead
Section titled “Stage 1 — Lead”{ "lead_id": 10042, "created_at": "2026-04-12T09:21:14Z", "borrower_pan_token": "tok_pan_a1b2c3", "mobile_token": "tok_mob_d4e5f6", "channel_id": 7, "partner_id": 73, "sub_agent_id": 218, "campaign_id": null, "utm_source": "ca-portal", "utm_medium": "referral", "utm_campaign": null, "status": "qualified", "stage": "applied"}Stage 2 — Application
Section titled “Stage 2 — Application”application row
Section titled “application row”{ "application_id": 10042001, "borrower_id": 50221, "lead_id": 10042, "status": "submitted", "channel_id": 7, "partner_id": 73, "sub_agent_id": 218, "loan_product_id": 11, "loan_amount_sought": 3500000.00, "tenure_sought": 90, "purpose_code": "WC_RAW_MATERIAL_PURCHASE", "application_version": 3, "created_at": "2026-04-12T09:23:51Z", "submitted_at": "2026-04-12T10:48:02Z"}application_section_data (excerpt — business profile)
Section titled “application_section_data (excerpt — business profile)”{ "application_id": 10042001, "section_name": "business_profile", "data_json": { "trade_name": "Sundar Textiles", "gstin_declared": "29ABCDE1234F1Z5", "udyam": "UDYAM-KA-29-0001234", "annual_turnover_declared": 4200000.00, "num_employees": 25, "industry_nic_code": "14101", "operational_locations": [ { "city": "Bengaluru", "state": "Karnataka", "type": "factory" }, { "city": "Bengaluru", "state": "Karnataka", "type": "warehouse" } ] }, "last_saved_at": "2026-04-12T09:42:30Z"}business_entity
Section titled “business_entity”{ "id": 33112, "borrower_id": 50221, "legal_name": "Sundar Textiles & Apparel Private Limited", "trade_name": "Sundar Textiles", "gstin_token": "tok_gst_aa11bb22", "udyam_no": "UDYAM-KA-29-0001234", "cin_or_llpin": "U18101KA2020PTC133421", "pan_token": "tok_pan_e5f6g7", "date_of_incorporation": "2020-03-18", "date_of_commencement": "2020-04-01", "industry_nic_code": "14101", "business_sub_category": "garment_manufacturing_and_distribution", "annual_turnover_self_declared": 4200000.00, "turnover_validated_from_gst": 41500000.00, "business_vintage_years": 6.1, "working_capital_cycle_days_estimated": 105}promoter entries
Section titled “promoter entries”[ { "id": 88141, "business_entity_id": 33112, "name": "Sundari Murthy", "dob": "1980-04-15", "gender": "F", "pan_token": "tok_pan_pr_sm", "aadhaar_ref_token": "tok_aad_sm", "role": "director", "shareholding_pct": 60.00, "din_or_pin": "08123456", "kyc_status": "verified", "kyc_method": "vcip" }, { "id": 88142, "business_entity_id": 33112, "name": "Rakesh Murthy", "dob": "1978-08-22", "gender": "M", "pan_token": "tok_pan_pr_rm", "aadhaar_ref_token": "tok_aad_rm", "role": "director", "shareholding_pct": 40.00, "din_or_pin": "08123789", "kyc_status": "verified", "kyc_method": "vcip" }]consent entries (recorded during application)
Section titled “consent entries (recorded during application)”[ { "id": 90001, "borrower_id": 50221, "purpose": "bureau_pull_consumer_commercial", "data_categories": ["consumer_bureau","commercial_bureau"], "granted_at": "2026-04-12T09:45:18Z", "expires_at": "2026-04-12T09:45:18Z", "version_of_policy": "consent_v3", "ip": "203.0.113.42", "device_fingerprint": "df_x9k1m" }, { "id": 90002, "borrower_id": 50221, "purpose": "aa_bank_statement", "data_categories": ["deposit_account_statement"], "granted_at": "2026-04-12T10:01:42Z", "expires_at": "2027-04-12T10:01:42Z", "version_of_policy": "consent_v3", "vendor": "setu", "vendor_consent_ref": "setu_consent_ab12cd34" }, { "id": 90003, "borrower_id": 50221, "purpose": "gst_data_pull", "data_categories": ["gstr1","gstr3b","gstr2a"], "granted_at": "2026-04-12T10:09:51Z", "expires_at": null, "version_of_policy": "consent_v3" }]Stage 3 — KYC
Section titled “Stage 3 — KYC”kyc_record for Sundari
Section titled “kyc_record for Sundari”{ "id": 71001, "promoter_id": 88141, "method": "vcip", "ovd_type": "aadhaar_offline_xml", "ckyc_kin": "12345600000000", "ckyc_uploaded_at": "2026-04-12T11:08:33Z", "ckyc_status": "uploaded", "verified_at": "2026-04-12T11:05:11Z", "next_refresh_due_at": "2034-04-12T11:05:11Z"}vcip_session
Section titled “vcip_session”{ "id": 71101, "kyc_record_id": 71001, "vendor": "idfy", "started_at": "2026-04-12T10:48:22Z", "completed_at": "2026-04-12T11:05:11Z", "outcome": "success", "recording_uri": "s3://platform-prod-evidence/vcip/2026/04/71101.mp4", "geo_tag_lat": 12.97160, "geo_tag_lon": 77.59456}sanctions_screen for Sundari
Section titled “sanctions_screen for Sundari”{ "id": 65001, "subject_type": "person", "subject_id": 88141, "vendor": "amlwatcher", "screened_at": "2026-04-12T11:09:14Z", "hits": [], "disposition": "clear"}Stage 4 — Data ingestion
Section titled “Stage 4 — Data ingestion”data_pull entries (excerpt)
Section titled “data_pull entries (excerpt)”[ { "id": 200441, "borrower_id": 50221, "data_type": "aa", "vendor": "setu", "consent_ref": "setu_consent_ab12cd34", "requested_at": "2026-04-12T10:05:30Z", "completed_at": "2026-04-12T10:11:12Z", "status": "completed", "raw_object_uri": "s3://platform-prod-ingest/aa/raw/200441.json.gpg", "parsed_object_uri": "s3://platform-prod-ingest/aa/parsed/200441.json" }, { "id": 200442, "borrower_id": 50221, "data_type": "gst", "vendor": "cygnet", "requested_at": "2026-04-12T10:09:55Z", "completed_at": "2026-04-12T10:14:38Z", "status": "completed", "raw_object_uri": "s3://platform-prod-ingest/gst/raw/200442.xml.gpg", "parsed_object_uri": "s3://platform-prod-ingest/gst/parsed/200442.json" }]bank_statement (excerpt of parsed_metrics_json)
Section titled “bank_statement (excerpt of parsed_metrics_json)”{ "account_holder_name": "SUNDAR TEXTILES AND APPAREL PVT LTD", "bank_name": "HDFC Bank", "account_type": "Current", "ifsc": "HDFC0001234", "period_start": "2024-05-01", "period_end": "2026-05-01", "aggregates": { "abb_12_months": 185000.00, "monthly_credit_avg": 3850000.00, "monthly_debit_avg": 3780000.00, "max_eod_balance": 924500.00, "min_eod_balance": -12300.00, "negative_balance_days_last_6_months": 2 }, "behaviour": { "nach_bounces_12_months": 1, "cheque_returns_12_months": 0, "cash_deposit_ratio": 0.08, "circular_transactions_flag": false, "tampering_flag": null }, "recurring_emi": [ { "lender_guess": "HDFC Bank", "amount": 45000.00, "frequency": "monthly", "detected_from": "2023-08" } ]}gst_report (excerpt of gstr3b_metrics_json)
Section titled “gst_report (excerpt of gstr3b_metrics_json)”{ "annual_turnover_last_12_months": 41500000.00, "annual_turnover_prior_12_months": 35200000.00, "yoy_growth_pct": 17.9, "monthly_filings_in_24_months": 24, "monthly_on_time_filings": 22, "late_filings_last_6_months": 0, "monthly_volatility_cv": 0.42, "top_buyer_share_pct": 28.0, "top_3_buyers_share_pct": 55.0, "unique_buyers_12_months": 73, "gst_status_changes_12_months": []}bureau_report for Sundari (excerpt)
Section titled “bureau_report for Sundari (excerpt)”{ "id": 88801, "subject_type": "person", "subject_id": 88141, "cic": "cibil", "report_type": "consumer", "pulled_at": "2026-04-12T10:25:33Z", "score": 782, "summary": { "active_accounts": 2, "closed_accounts": 4, "writeoff_accounts": 0, "30plus_dpd_24m": 0, "90plus_dpd_24m": 0, "enquiries_6m": 1, "wilful_defaulter": false, "active_accounts_detail": [ { "type": "credit_card", "lender": "HDFC Bank", "limit": 200000, "outstanding": 70000, "utilisation_pct": 35.0, "dpd_24m_max": 0 }, { "type": "home_loan", "lender": "HDFC Bank", "sanction": 5500000, "outstanding": 4000000, "emi": 45000, "dpd_24m_max": 0, "remaining_tenure_months": 168 } ] }}Stage 5 — Decision run
Section titled “Stage 5 — Decision run”decision_run row
Section titled “decision_run row”{ "id": 9020415, "application_id": 10042001, "policy_id": 4711, "inputs_snapshot_uri": "s3://platform-prod-decisioning/inputs/9020415.json", "trace_uri": "s3://platform-prod-decisioning/trace/9020415.json", "outputs_json": { "decision": "APPROVE", "risk_grade": "A2", "scorecards": { "bureau": { "grade": "A2", "reason": "worst-of promoters" }, "gst": { "grade": "A1", "reason": "turnover, filing, concentration all A" }, "bank_statement": { "grade": "A1" }, "cash_flow": { "grade": "A1", "dsc_x": 4.5 }, "tally": { "grade": "A1" }, "manufacturing_overlay": { "outcome": "all_pass" }, "fraud": { "grade": "clear" } }, "consolidated_grade": "A2", "recommended_sanction_amount": 3500000, "recommended_tenure_days": 180, "recommended_rate": 0.1950, "recommended_processing_fee_pct": 0.0125, "recommended_servicing_fee_pa": 0.0025, "conditions": [ "Disbursement to HDFC current account verified by penny drop", "NACH mandate on HDFC account active before drawdown", "Quarterly Tally export submission" ] }, "decision": "approve", "reason_codes": [ "BUREAU_A2", "GST_TURNOVER_A1", "BANK_STMT_A1", "CASHFLOW_DSC_HIGH", "MANUFACTURING_OVERLAY_PASS" ], "recommended_sanction_amount": 3500000.00, "recommended_tenure": 180, "recommended_rate": 0.1950, "risk_grade": "A2", "started_at": "2026-04-12T10:30:01Z", "completed_at": "2026-04-12T10:30:43Z"}Decision trace (excerpt — first 5 of 45 rules; full trace in trace_uri)
Section titled “Decision trace (excerpt — first 5 of 45 rules; full trace in trace_uri)”{ "policy_version": 4711, "rules": [ { "rule": "GSTIN_ACTIVE_REQUIRED", "input": { "gstin_status": "Active" }, "output": "PASS", "contribution": "+eligibility" }, { "rule": "BUSINESS_VINTAGE_MIN_24_MONTHS", "input": { "vintage_months": 73 }, "output": "PASS", "contribution": "+eligibility" }, { "rule": "INDUSTRY_NOT_RESTRICTED", "input": { "nic_code": "14101" }, "output": "PASS", "contribution": "+eligibility" }, { "rule": "BUREAU_SCORE_MIN_650_PROMOTER", "input": { "score_worst_of": 768 }, "output": "PASS", "contribution": "+bureau A2" }, { "rule": "GST_TURNOVER_MIN_20L_ANNUAL", "input": { "turnover_12m": 41500000 }, "output": "PASS", "contribution": "+gst A" } ]}Stage 6 — Sanction
Section titled “Stage 6 — Sanction”sanction
Section titled “sanction”{ "id": 6800212, "application_id": 10042001, "decision_run_id": 9020415, "sanctioned_at": "2026-04-12T11:48:30Z", "sanctioned_by_user_id": 401, "amount": 3500000.00, "tenure_days": 180, "rate": 0.1950, "fees_json": { "processing": 43750.00, "processing_gst": 7875.00, "servicing_pa": 0.0025 }, "conditions_json": [ "Disbursement to HDFC current account", "NACH mandate active before drawdown", "Quarterly Tally export" ], "valid_until": "2026-05-12T23:59:59Z"}Stage 7 — Documentation
Section titled “Stage 7 — Documentation”issued_document entries
Section titled “issued_document entries”[ { "id": 730412, "type": "kfs", "sanction_id": 6800212, "template_version_id": 312, "language": "en", "generated_at": "2026-04-12T11:52:04Z", "object_uri": "s3://platform-prod-docs/kfs/2026/04/730412_en.pdf" }, { "id": 730413, "type": "kfs", "sanction_id": 6800212, "template_version_id": 313, "language": "kn", "generated_at": "2026-04-12T11:52:05Z", "object_uri": "s3://platform-prod-docs/kfs/2026/04/730413_kn.pdf" }, { "id": 730414, "type": "loan_agreement", "sanction_id": 6800212, "template_version_id": 78, "language": "en", "generated_at": "2026-04-12T12:01:18Z", "object_uri": "s3://platform-prod-docs/agreement/2026/04/730414.pdf" }]esign_session for the loan agreement
Section titled “esign_session for the loan agreement”{ "id": 540118, "document_id": 730414, "vendor": "leegality", "signers": [ { "promoter_id": 88141, "status": "signed", "aadhaar_esign_txn_ref": "UIDAI-ESIGN-X1Y2Z3-1", "signed_at": "2026-04-12T13:14:48Z" }, { "promoter_id": 88142, "status": "signed", "aadhaar_esign_txn_ref": "UIDAI-ESIGN-X1Y2Z3-2", "signed_at": "2026-04-12T13:42:11Z" } ], "completed_at": "2026-04-12T13:42:11Z", "audit_uri": "s3://platform-prod-evidence/esign/540118-audit.pdf"}mandate
Section titled “mandate”{ "id": 88712, "application_id": 10042001, "type": "enach", "vendor": "digio", "npci_ref": "NM00002301122", "status": "active", "borrower_account_id": "tok_acc_hdfc_xyz", "max_debit_amount": 5000000, "frequency": "as_per_demand", "valid_from": "2026-04-12", "valid_to": "2030-04-12"}Stage 8 — Disbursement (first drawdown of ₹15 lakh)
Section titled “Stage 8 — Disbursement (first drawdown of ₹15 lakh)”disbursement_instruction
Section titled “disbursement_instruction”{ "id": 920441, "loan_account_id": null, "sanction_id": 6800212, "draw_sequence": 1, "created_at": "2026-04-12T14:35:12Z", "approved_at": "2026-04-12T14:38:55Z", "approved_by_user_id": 401, "executed_at": "2026-04-12T14:42:01Z", "amount": 1500000.00, "to_account_token": "tok_acc_hdfc_xyz", "to_ifsc": "HDFC0001234", "to_account_name_match": "SUNDAR TEXTILES AND APPAREL PVT LTD", "purpose": "wc_raw_material", "utr": "SBINH26041214500003", "status": "completed"}Stage 9 — LMS
Section titled “Stage 9 — LMS”loan_account
Section titled “loan_account”{ "id": 1234560, "borrower_id": 50221, "sanction_id": 6800212, "product_id": 11, "activated_at": "2026-04-12T14:42:30Z", "current_outstanding": 1500000.00, "current_classification": "standard", "current_dpd_days": 0, "last_event_at": "2026-04-12T14:42:30Z"}loan_event entries (chronological)
Section titled “loan_event entries (chronological)”[ { "id": 100000001, "loan_id": 1234560, "event_type": "activate", "event_at": "2026-04-12T14:42:30Z", "event_payload_json": { "sanction_id": 6800212, "disbursement_id": 920441, "initial_principal": 1500000.00 }, "idempotency_key": "act_1234560_1" }, { "id": 100000002, "loan_id": 1234560, "event_type": "disburse", "event_at": "2026-04-12T14:42:01Z", "event_payload_json": { "amount": 1500000.00, "utr": "SBINH26041214500003" }, "idempotency_key": "dis_920441" }, { "id": 100000003, "loan_id": 1234560, "event_type": "accrual", "event_at": "2026-04-13T23:30:00Z", "event_payload_json": { "rate": 0.1950, "days": 1, "interest_accrued": 800.55 }, "idempotency_key": "acc_1234560_20260413" }]schedule_line for the ₹15 lakh / 90-day draw
Section titled “schedule_line for the ₹15 lakh / 90-day draw”[ { "id": 200012, "loan_id": 1234560, "due_date": "2026-07-11", "principal_due": 1500000.00, "interest_due": 72090.41, "total_due": 1572090.41, "paid_principal": 0, "paid_interest": 0 }](For a bullet-repayment drawdown like this, a single schedule line at maturity. Interest is 1500000 × 19.5% × 90/365 = ₹72,090.41.)
classification_snapshot (Day 1)
Section titled “classification_snapshot (Day 1)”{ "id": 5000001, "loan_id": 1234560, "snapshot_date": "2026-04-12", "class": "standard", "dpd_days": 0, "principal_overdue": 0, "interest_overdue": 0}Stage 10 — Audit log (sample entries)
Section titled “Stage 10 — Audit log (sample entries)”[ { "id": 88000123, "actor_user_id": 401, "action": "sanction.approved", "resource_type": "sanction", "resource_id": "6800212", "before_state_json": { "status": "proposed" }, "after_state_json": { "status": "approved", "approved_by_user_id": 401 }, "request_ip": "10.42.7.18", "timestamp": "2026-04-12T11:48:30Z", "prev_hash": "9af7c1...", "this_hash": "82bd44..." }, { "id": 88000124, "actor_user_id": 50221, "actor_service_id": "borrower-bff", "action": "kfs.acknowledged", "resource_type": "issued_document", "resource_id": "730412", "before_state_json": { "acknowledged": false }, "after_state_json": { "acknowledged": true, "ack_timestamp": "2026-04-12T12:10:25Z" }, "request_ip": "203.0.113.42", "timestamp": "2026-04-12T12:10:25Z", "prev_hash": "82bd44...", "this_hash": "b1c45e..." }]Stage 11 — Co-lending (illustrative if this loan were co-lent at 80:20)
Section titled “Stage 11 — Co-lending (illustrative if this loan were co-lent at 80:20)”loan_allocation
Section titled “loan_allocation”{ "id": 60001, "loan_id": 1234560, "partner_lender_id": 7, "originator_share_pct": 20.00, "partner_share_pct": 80.00, "originator_share_outstanding": 300000.00, "partner_share_outstanding": 1200000.00, "booked_at": "2026-04-12T14:42:30Z"}(In this synthetic example the loan is own-book, so no allocation row exists.)
Stage 12 — Accounting (GL postings for activation)
Section titled “Stage 12 — Accounting (GL postings for activation)”{ "id": 4000456, "transaction_date": "2026-04-12", "description": "Loan disbursement — Sundar Textiles WC line draw 1", "source_module": "lms", "source_ref": 100000002, "entries_json": [ { "account_code": "1201", "account_name": "Loans and Advances — WC Lines", "debit": 1500000.00, "credit": 0 }, { "account_code": "1101", "account_name": "Disbursement Bank Account", "debit": 0, "credit": 1500000.00 } ]}GST invoice for processing fee
Section titled “GST invoice for processing fee”{ "id": 7800022, "loan_id": 1234560, "borrower_id": 50221, "invoice_no": "INV-2026-04-7800022", "invoice_date": "2026-04-12", "taxable_value": 43750.00, "cgst": 3937.50, "sgst": 3937.50, "igst": 0, "total": 51625.00, "hsn_code": "997199"}(Karnataka borrower → CGST + SGST split, not IGST.)
What this shows
Section titled “What this shows”- Every entity has a concrete shape engineers can prototype against.
- Every state transition is captured in
loan_eventfor audit. - Tokenised PII flows everywhere; clear text only in the PII vault.
- Cross-references (sanction → disbursement → loan → events → classification) connect cleanly.
- Audit chain spans every action.
- GL postings reflect operational events in real time.
The same shape applies to every loan; the wedge difference between this happy-path example and edge cases (refer, deviation, NPA, restructuring, write-off, co-lending) shows up in the events the loan emits, not in fundamentally different table structure.
Related
Section titled “Related”- 5.3 Core data model — conceptual catalogue.
- 5.9 Schema reference — DDL.
- 5.8 Sequence diagrams — flows.
- 6.13 Underwriting walkthrough — same borrower from the credit lens.