For each month in the analysis window, compute:
gross_inflows = sum of credits (excluding loan disbursements, transfers between own accounts).
gross_outflows = sum of debits (excluding transfers between own accounts).
net_cash_flow = gross_inflows - gross_outflows.
available_for_debt_service = net_cash_flow + interest_expense + tax_paid.
| Rule | Threshold | Action |
|---|
| Average available_for_debt_service / proposed EMI (or interest) | >= 2.5× A; >= 1.5× B; < 1.0× DECLINE | Per |
| Worst 3 months coverage / proposed EMI | >= 1.0× | REFER below |
| Volatility of monthly cash flow | low / moderate; high → REFER | |
Estimated from bank patterns + GST (and refined from Tally where available):
receivable_days = (avg receivables) × 365 / annual_sales.
inventory_days = (avg inventory) × 365 / annual_cogs.
payable_days = (avg payables) × 365 / annual_purchases.
cash_conversion_cycle = receivable_days + inventory_days - payable_days.
| Rule | Threshold | Action |
|---|
| Cash conversion cycle | <= 60 days A; <= 120 days B; <= 180 days C; > 180 REFER | Per |
Stretching payables (payable_days > 90) | flag | REFER |
| Rule | Threshold | Action |
|---|
| Revenue (last FY) vs GST sales (last 12 months) | within 15% | REFER above |
| Gross margin (revenue - COGS) / revenue | >= 10% for traders; varies by industry | REFER below |
| EBITDA / revenue | >= 5% traders; higher for services | REFER below |
| Net profit (positive) | >= 0 in last FY | REFER on loss |
| Rule | Threshold | Action |
|---|
Receivables > 90 days / total receivables | <= 20% A; <= 40% B; > 40% REFER | Per |
| Top-3-debtor concentration | <= 60% | REFER above |
| Specific debtor in dispute (large) | flag | REFER on detection |
| Rule | Threshold | Action |
|---|
Payables > 90 days / total payables | <= 25% A; <= 50% B; > 50% REFER (stretching suppliers signals stress) | Per |
| Statutory payables overdue (GST, TDS, PF, ESI) | none material | DECLINE on material overdue |
| Rule | Threshold | Action |
|---|
| Inventory turn (annual COGS / avg inventory) | >= 6 for traders; >= 3 for manufacturers | REFER below |
Inventory write-down trend (reduces YoY by > 20%) | flag | REFER |
| Rule | Threshold | Action |
|---|
| ROCE (EBIT / capital employed) | >= 15% | REFER below 10% |
| Rule | Threshold | Action |
|---|
| Bank inflows in Tally vs bank-statement inflows | divergence < 10% | REFER on large divergence |
| Tally sales vs GST sales | divergence < 10% | REFER on large divergence |
| Bank balance closing (last date) in Tally vs bank-statement | match within rounding | REFER on divergence |
For repeat borrowers, internal repayment behaviour overrides:
| Rule | Threshold | Action |
|---|
Previous loan paid on time (<= 30 DPD ever) | yes | enables faster renewal |
| Limit utilisation (last cycle) | > 60% and < 95% is healthy | REFER on extremes |
| Top-up eligibility | only if previous loan >= 50% paid and no DPD in last 90 days | Per |
| Renewal limit step-up | up to +25% of previous if no flags; subject to fresh data | Per |
For specific sub-segments, add overlays:
- Pharma distributors: anchor-confirmation strongly weighted.
- FMCG distributors: cycle-aligned (monthly turn).
- Service businesses: GST 1 quarterly; treat differently.
- E-commerce sellers: marketplace settlement data preferred to BSA.
These overlays sit as per-segment rule sets in the policy engine.