Skip to main content
The Mutual Fund API is a whitelabelled service for transacting in Indian mutual funds. This guide covers what you need before your first call, how authentication works, and the conventions (envelopes, errors, idempotency, pagination) that apply to every endpoint.

What you get

When your account is provisioned you receive:
Account provisioning (member code, exchange credentials, callback URL, scopes) is handled by your onboarding contact. This guide assumes you already have an active account.

Base URL

Every resource group is versioned independently (/api/investors/v1, /api/orders/v1, …). Examples in this documentation use https://api.example.com as a placeholder.

Step 1 — Get a bearer token

  • expires_in is in seconds. Request a fresh token before it expires; there is no refresh token — call /token again with your credentials.
  • scope is the space-separated list of permissions your account holds. Calls that need a scope you don’t have return 403 FORBIDDEN.
POST /api/auth/v1/token is rate limited to 8 failed attempts per client_id per 15-minute window. Exceeding it returns 429 RATE_LIMITED with a Retry-After header. A failed attempt means bad credentials — successful calls don’t count.

Auth failures

Step 2 — Call the API

Send the token as a bearer header on every other endpoint:
GET /api/auth/v1/me echoes back what your token can do:
nse_credentials_configured: false means the exchange credentials behind your account are incomplete — orders and payments will fail until that is resolved with your onboarding contact. Credential values are never returned, in any form.

Revoking a token

Returns 204. The presented token is invalidated immediately.

Request conventions

Every endpoint in this API shares the following conventions.

Response envelope

Success:
Errors:
provider_remark is informational only. Never parse it — branch on code. Its wording can change without notice.

Error codes

Request ID

Send X-Request-Id: <your-uuid> and it is echoed back on the response and in every error envelope’s request_id. Omit it and the server generates one. Quote this value in support requests.

Idempotency

Send Idempotency-Key: <uuid> on unsafe (write) calls.
  • First call: the response is stored against (account, key, body fingerprint) for 24 hours.
  • Replay with the same body: the stored response is returned verbatim with Idempotency-Replayed: true.
  • Same key, different body: 409 IDEMPOTENCY_KEY_REUSED.
Idempotency is currently enforced on POST /api/orders/v1/ — the call where it matters most. Sending the header on other writes is harmless and forward-compatible.

Pagination

List endpoints take ?limit=<n>&cursor=<opaque> (max limit 200) and return:
Pass next_cursor back as cursor for the next page. Absence of next_cursor means the last page.

Types

  • Amounts are JSON numbers, never strings.
  • Dates are YYYY-MM-DD.
  • Timestamps are RFC3339 UTC.
  • Enums are SCREAMING_SNAKE.

Next steps

1

Create an investor

Create an investor and wait for status: REGISTERED.
2

Create an investment account

Create an investment account to group the investor’s products.
3

Register a mandate (optional)

Create a mandate for auto-debit payments.
4

Place and pay for an order