Once you have an access token (see Authentication), use it to list the investment plans (“funds”) your partner account is configured to offer.
GET /api/v3/partners/{shortName}/plans
Path parameters
| Parameter | Description |
|---|
shortName | Your partner short name, included in your onboarding email. |
You can only ever list your own plans — the API checks that shortName
matches the partner identified by your access token and returns 403 Forbidden if it doesn’t.
Request
curl https://be-dev-1.dev.ndovu.co/api/v3/partners/YOUR_SHORT_NAME/plans \
-H "Authorization: Bearer $ACCESS_TOKEN"
Query parameters
All filters are optional. Omit them to get every plan available to your partner account.
| Parameter | Type | Description |
|---|
categoryId | number | Filter to a single plan category. |
fundType | string | Filter by fund type. |
currency | string | Filter by currency, e.g. KES, USD. |
This endpoint is not paginated — it returns the full matching list in one response.
Response
{
"message": "Plans fetched successfully",
"data": {
"total": 2,
"plans": [
{
"id": 101,
"identifier": "ndovu-money-market",
"name": "Ndovu Money Market Fund",
"coolName": "Money Market",
"about": "A low-risk fund investing in short-term government securities.",
"hint": "Great for short-term savings goals.",
"imageUrl": "https://cdn.ndovu.co/plans/money-market.png",
"thumbnail": "https://cdn.ndovu.co/plans/money-market-thumb.png",
"sector": "Money Market",
"fundType": "MONEY_MARKET",
"profitType": "VARIABLE",
"profitTypeDescription": "Returns vary based on market performance.",
"performance1": 12.4,
"performance3": 11.8,
"performance5": 10.9,
"performance10": null,
"performanceDate": "2026-06-30",
"currency": "USD",
"minInvestableAmounts": { "USD": 10 },
"minTopUpAmounts": { "USD": 5 },
"tenor": "Open-ended",
"lockInPeriod": 0,
"partialWithdrawable": true,
"factSheet": "https://cdn.ndovu.co/plans/money-market-factsheet.pdf",
"prospectus": "https://cdn.ndovu.co/plans/money-market-prospectus.pdf",
"isInvestable": true,
"nonInvestableNote": null,
"category": { "id": 1, "name": "money_market", "displayName": "Money Market", "tagLine": "Low risk, steady returns" },
"planType": { "id": 1, "name": "Fund" },
"productRiskLevel": { "id": 1, "name": "Low" },
"fundManager": { "id": 3, "name": "Ndovu Asset Managers" },
"fundCurrency": { "currency": "USD" }
}
]
}
}
Fields
| Field | Type | Description |
|---|
id | number | Internal plan ID. |
identifier | string | Stable machine-readable identifier for the plan. |
name | string | Formal plan name. |
coolName | string | Short, friendly display name — prefer this in user-facing UI. |
about | string | Longer description of the plan. |
hint | string | Short marketing tagline. |
imageUrl / thumbnail | string | Plan artwork. |
sector | string | Sector the fund invests in. |
fundType | string | Fund type classification. |
profitType / profitTypeDescription | string | How returns are generated. |
performance1 / performance3 / performance5 / performance10 | number | null | Annualized returns over 1/3/5/10 years, where available. |
performanceDate | string | As-of date for the performance figures. |
currency | string | Plan’s base currency. |
minInvestableAmounts | object | Minimum initial investment, keyed by currency. |
minTopUpAmounts | object | Minimum top-up amount, keyed by currency. |
tenor | string | Investment term. |
lockInPeriod | number | Lock-in period in days (0 if none). |
partialWithdrawable | boolean | Whether partial withdrawals are allowed. |
factSheet / prospectus | string | Links to legal/informational documents. |
isInvestable | boolean | Whether the plan currently accepts new investment. |
nonInvestableNote | string | null | Explanation shown when isInvestable is false. |
category | object | null | Plan category (id, name, displayName, tagLine). |
planType | object | null | Plan type (id, name). |
productRiskLevel | object | null | Risk rating (id, name). |
fundManager | object | null | Managing entity (id, name). |
fundCurrency | object | null | Fund’s operating currency. |
Which plans show up here
The plans returned are scoped to the country configured on your partner account — every partner in the same country sees the same catalog. If you expect a plan to appear and it doesn’t, it likely isn’t marked viewable for your country yet; contact support@ndovu.co.
Errors
| Status | Cause |
|---|
401 Unauthorized | Missing, expired, or invalid access token. Re-authenticate via Authentication. |
403 Forbidden | shortName in the URL doesn’t match the partner identified by your access token. |