List the caller's accounts
Lists the caller's loan, credit, current, and Flex Credit accounts. Returns the SUMMARY view (the latest account per type) by default. Returns every account (the ALL view) when a status filter or an account number filter is set, or when the view parameter requests ALL. Requires an authenticated, active user.
Authorization
oauth2 Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.
In: header
Query Parameters
Filter by account type
Value in
- "CURRENT"
- "CREDIT"
- "LOAN"
- "FLEX_CREDIT"
Filter by account status. Supports base statuses (ACTIVE, PENDING, SUSPENDED, CLOSED) and lending-specific statuses (OVERDUE, PAID_FROZEN, PAID_RENEWABLE). Multiple statuses can be provided.
Filter by 8-digit account number with Luhn check digit
SUMMARY returns the latest account per type, ALL returns every account. Defaults to SUMMARY
Value in
- "SUMMARY"
- "ALL"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/accounts?type=CREDIT&statuses=ACTIVE&account_number=00123458&view=SUMMARY"{ "accounts": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "resource_id": "acc_2n1t201rmv87aae5j4csam8000", "account_number": "29384756", "user_id": "660e8400-e29b-41d4-a716-446655440111", "type": "CREDIT", "credit_limit": -5000000, "available_limit": -2000000, "available_balance": -3000000, "balance": { "total_charged": -3000000, "principal_used": -2500000, "total_outstanding": -3000000, "total_paid": 0, "breakdown": { "principal_outstanding": -2500000, "interest_outstanding": -500000, "arrears_outstanding": 0, "penalty_outstanding": 0 } }, "currency": "KES", "due_date": "2025-10-31", "final_payment_due_date": "2025-10-31", "status": "ACTIVE", "fee_basis_points": 300, "interest_rate": { "basis_points": 300, "period_value": 1, "period_unit": "WEEKS" }, "tenure": { "duration": 4, "unit": "WEEKS" }, "billing_period": { "value": 1, "unit": "WEEKS" }, "limits": { "overdraft_limit": 500000, "minimum_transfer_amount": 1000, "maximum_transfer_amount": 5000000, "daily_transfer_limit": 10000000 }, "auto_renews": true, "paid_at": "2025-10-31T14:30:00", "can_transact": true, "created_at": "2025-09-01T10:15:30Z", "updated_at": "2025-10-15T14:22:00Z" } ]}{ "code": "BAD_REQUEST", "description": "Bad Request"}{ "code": "UNAUTHORISED", "description": "Unauthorised"}{ "code": "FORBIDDEN", "description": "Forbidden"}{ "code": "RATE_LIMIT_EXCEEDED", "description": "Too Many Requests"}{ "code": "INTERNAL_ERROR", "description": "Internal Server Error"}Preview a legal document for an offer POST
Returns the current version of a legal document as Markdown, filled with the values of the caller's offer: the amount, the tenure, the fee, the payment plan and the account terms. The app shows this text before the customer accepts the offer. The preview creates nothing, so a client can repeat it. Requires an active user who owns the account. An offer that the account cannot draw fails with the error of the payment preview.
Get the caller's account GET
Returns one of the caller's accounts by its account ID. The response is a current, credit, Flex Credit, or loan account, discriminated by the `type` field. Requires an authenticated, active user. Returns 404 when the account does not exist or does not belong to the caller.