Skip to main content

API Reference

The Kora Digital Banking API is a RESTful JSON API served over HTTPS.

Base URL

EnvironmentBase URL
Productionhttps://api.korastratum.com/api/v1/banking
Sandboxhttps://api.korastratum.com/api/v1/banking
info

Both environments use the same base URL. Your API key prefix determines the environment.

All endpoint paths in this documentation are relative to the base URL. For example, POST /api/v1/auth/login means:

POST https://api.korastratum.com/api/v1/banking/auth/login

Required Headers

Every authenticated request must include:

HeaderRequiredDescription
AuthorizationYesBearer <access_token>
X-Tenant-IDYesTenant identifier (UUID or short name like fmfb)
Content-TypeFor POST/PUTapplication/json

A few endpoints are public (no Authorization required):

  • GET /api/v1/theme — Tenant branding
  • GET /api/v1/fx-rates — Exchange rates
  • GET /api/v1/geo — Country/state lists
  • GET /health — Health check

Response Format

All responses follow a consistent envelope:

Success

{
"success": true,
"data": {
// Response payload
}
}

Error

{
"success": false,
"error": "Human-readable error message",
"code": "ERROR_CODE",
"details": [],
"timestamp": "2026-02-27T14:22:00Z",
"path": "/api/v1/transfers",
"method": "POST"
}

See Error Codes for the full list.

Pagination

List endpoints accept page and limit query parameters:

GET /api/v1/transactions?page=1&limit=20

Paginated responses include metadata:

{
"success": true,
"data": {
"items": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 142,
"totalPages": 8
}
}
}

Rate Limit Headers

Every response includes standard rate limit headers:

HeaderDescription
RateLimit-LimitMax requests per window
RateLimit-RemainingRequests remaining
RateLimit-ResetUnix timestamp when the window resets

When you exceed the limit, the API returns 429 Too Many Requests with code RATE_LIMIT_EXCEEDED. See Rate Limits for per-tier quotas.

Security Headers

All responses include:

HeaderValue
X-Content-Type-Optionsnosniff
X-Frame-OptionsDENY
X-XSS-Protection1; mode=block

Endpoint Groups

GroupBase PathDescription
Auth/api/v1/authLogin, logout, refresh, 2FA, sessions
Registration/api/v1/registrationSign-up, email/phone verification, password reset
Accounts/api/v1/accountsList and view accounts/wallets
Wallets/api/v1/walletsCreate, freeze, unfreeze wallets
Transfers/api/v1/transfersInternal, external (NIBSS), international (SWIFT)
Bulk Transfers/api/v1/bulk-transfersBatch transfers
Transactions/api/v1/transactionsHistory, details, analytics, statements
Savings/api/v1/savingsFlexible, target, locked, group, SAYT
Loans/api/v1/loansApplications, repayment, documents
Loan Products/api/v1/loan-productsAvailable products and calculators
Bill Payment/api/v1/bill-paymentCategories, providers, payments
Mobile Money/api/v1/mobile-moneyAirtime, data, wallet transfers
KYC/api/v1/kycKYC levels, requirements, submissions
Notifications/api/v1/notificationsIn-app and push notifications
Analytics/api/v1/analyticsDashboard, spending, customer metrics
Recurring/api/v1/recurring-paymentsScheduled payments
Disputes/api/v1/disputesTransaction disputes
Rewards/api/v1/rewardsPoints, redemption, loyalty tiers
Referrals/api/v1/referralsReferral links and earnings

Next Steps