Skip to main content
An investor is the person (or entity) who owns the mutual fund holdings. Creating one registers a Unique Client Code (UCC) with the exchange and any other backend providers enabled for your account.
Investor creation is asynchronous. POST returns 201 immediately with status: PENDING; registration with the exchange happens in the background. An investor must reach status: REGISTERED before you can place an order for them.

Scope of this guide

This guide covers the two most common holding / tax-status combinations: Joint / anyone-or-survivor holding and the other tax statuses (MINOR, HUF, COMPANY, TRUST) are planned and will be documented later.

Endpoint

Returns 201 with dto.InvestorData.

Example — resident individual, single holder

Response:
The id is a short, human-quotable code — I_<holding>_<tax status>_<6-digit sequence> (I_SI_IND_000042) — minted for your account. It is the primary key, the foreign key every child resource (investment account, mandate, order, payment) references, and it never changes even if the tax status is later amended. See friendly ID conventions.

Example — NRI single holder (NRE / NRO)

Same shape, with two differences:
  1. tax_status is NRI_REPATRIABLE (NRE) or NRI_NON_REPATRIABLE (NRO).
  2. At least one bank account must have account_type of NE (NRE) or NO (NRO) — otherwise the request is rejected with VALIDATION_FAILED (“NRI investors require an NRE (NE) or NRO (NO) account”).
address is the mandatory domestic Indian address and country is always sent to the exchange as India. A separate overseas address for NRIs isn’t exposed yet.

Field reference

Top level

primary_holder

contact

address

demat

bank_accounts[]

nominees[]

euin (optional)

{ "declaration": true, "euin": "E123456" } — the Employee Unique Identification Number of the advising employee.

Validation

Rejected synchronously with 400 VALIDATION_FAILED and a details[] array:
  • primary_holder.name, primary_holder.dob, contact.email, contact.mobile, address.city, address.pincode — required.
  • holding_type must be one of the three enum values.
  • SINGLE holding ⇒ joint_holders must be empty.
  • demat.mode CDSL/NSDLdp_id and client_id required.
  • nominees present ⇒ percentage sums to 100; a nominee with a guardian but no dob is rejected.
  • NRI tax status ⇒ at least one NE/NO bank account.

Registration lifecycle

  • PENDING — persisted locally, queued for the exchange.
  • PROCESSING — the exchange call is in flight.
  • REGISTERED — UCC registered. FATCA (if supplied) is submitted right after; a FATCA failure is recorded in provider_steps but does not block REGISTERED.
  • REJECTED — terminal and persisted (not discarded). The exchange’s reason is in provider_remark, with a full attempt history in provider_steps.

Track progress

Poll GET /api/investors/v1/:id:
GET always returns PII masked. See PII masking for how to reveal a single field.
Or listen for webhook events investor.registered / investor.rejected.

Retry after a rejection

PATCH /api/investors/v1/:id with the corrected fields (same schema). While the investor is not yet REGISTERED, PATCH updates the stored draft and re-queues it. Once REGISTERED, PATCH performs a synchronous UCC modification instead.