Get credit scorecard
Credit Scoring
Get credit scorecard
Fetch the current credit profile for a customer by externalId.
GET
Get credit scorecard
Returns the customer’s current credit grade, score, and pre-approved loan limit as held by the HaloPesa credit scoring engine. The lookup key is the sameDocumentation Index
Fetch the complete documentation index at: https://docs.lms.bsa.ai/llms.txt
Use this file to discover all available pages before exploring further.
externalId you set on the customer record — so
once you’ve created a customer, scoring and lending share one
identifier.
This endpoint is read-only — it has no side effects (no SMS, no
database write).
Path parameters
The customer’s partner-supplied
externalId (the same value you sent
on POST /v1/customers). 1–128 characters; URL-encode if it contains
special characters.Example
Response
200 OK
Fields
Echoes the queried externalId.
Credit grade band. Common values:
A, B, C. Unscored customers
receive XX (see below).Numeric credit score on the HaloPesa scale.
Pre-approved ceiling in TZS as set by the scoring engine.
0 for
unscored customers. This is the raw upstream value — it doesn’t
account for any current debt.Sum of
summary.totalOutstanding across every loan the customer
holds in the LMS. 0 if the customer has no loans or doesn’t exist
in the LMS yet. This is a best-effort join — if the LMS is
momentarily unreachable, the field comes back as 0 rather than
failing the whole scorecard call.Sum of
summary.totalRepayment across every loan the customer
holds — total amount paid in over the lifetime of the customer’s
loans (principal + interest + fees + penalty). Same best-effort
semantics as totalOutstanding.Computed. What the customer can borrow right now:
finalCreditLimit when totalOutstanding == 0, otherwise 0. The
binary rule means any active obligation locks the customer out of
new credit — partial top-ups against existing debt aren’t allowed.Upstream processing time. Diagnostic only — partners typically ignore it.
Unscored customers
A customer with no scoring record yet is not an error. The upstream returns200 OK with sentinel values so the USSD layer always has
something to render:
halopesaGrade == "XX" to detect “unscored”. Use
availableCreditLimit > 0 to decide whether a new loan can be
offered — that folds in both the scoring result and the LMS debt
state in one check.
Errors
| Code | When |
|---|---|
invalid_argument | external_id path segment is empty |
unauthenticated | Token missing/invalid |
internal | Upstream credit service unavailable or returned an unhandled error |

