Credit
Can this customer carry a new obligation? Ward reads their statements month by month (income and its regularity, recurring obligations, balances and buffers, loan stacking) and returns an affordability band with every factor.
Type: credit · Endpoint: POST /api/v1/credit/analyze · File
Ward reads risk from the statements it is given. It is not a credit score and not a lending decision: debts in other accounts are invisible to it.
Request
curl https://api.mandatelabs.ai/api/v1/decide \
-H "X-API-Key: $WARD_API_KEY" -H "Content-Type: application/json" \
-d '{"type": "credit", "input": {"files": [{"file_base64": "...", "file_name": "jul.csv"}, {"file_base64": "...", "file_name": "aug.csv"}, {"file_base64": "...", "file_name": "sep.csv"}],
"profile": {"monthly_income": 4100}, "requested_instalment": 420}}'
d = client.credit(["jul.csv", "aug.csv", "sep.csv"], profile={"monthly_income": 4100}, requested_instalment=420)
const d = await client.credit(["jul.csv", "aug.csv", "sep.csv"], { profile: { monthly_income: 4100 }, requested_instalment: 420 });
Same file input as Statement, plus requested_instalment (the new loan's monthly instalment) and optional thresholds.
Factors
| Factor | Weight |
|---|---|
| No income in full months / no regular payer | 0.35 / 0.15 |
| Irregular income (monthly variation > 50%, > 100%) | 0.25 / 0.35 |
| Obligations + requested instalment ≥ 43% / ≥ 60% of income | 0.35 / 0.50 |
| Loan disbursements from 2 / 3+ lenders (stacking) | 0.45 / 0.60 |
| Overdraft or returned items (1–2 / 3+) | 0.25 / 0.40 |
| Lowest balance below the instalment / below a third of it | 0.35 / 0.45 |
| Declared income above 1.5x / 2x observed | 0.30 / 0.50 |
| Gambling above 5% / 15% of spending | 0.25 / 0.40 |
Result and decision
band, score, factors[], metrics (monthly income and its basis, regular payers, obligations and the top ten, burden, lowest and average balance, instalments covered), and coverage (fewer than 3 months, no balance column, no payroll, no instalment given).
Decision: low < 0.30 → APPROVE; medium → STEP_UP; high ≥ 0.60 → DECLINE. Store your own lines with PUT /api/v1/ward/thresholds ({"credit": {...}}).
Calibration: report outcomes as feedback labels defaulted, delinquent (bad) or repaid, performing (good); POST /api/v1/credit/calibrate fits the probability to your own loans.