Tarrakki Mutual Funds - API documentation (1.0.0)

Tarrakki offers seamless investment platform for Individuals, NRIs, Minors, HUFs, LLP, Partnerships, Private Limited Companies, and Trusts.

Note for partners: Payload encryption/decryption will be enabled by default in production for all V2 protected endpoints. Please contact us to get the encryption/decryption guide for these APIs before you go live.

Getting Started

Request API access

API credentials are required in order to invoke Tarrakki APIs. The API credentials are generated and shared with you once your registration is processed.

Write to us at gunjan.dudhrejiya@tarrakki.com if you have not yet received your API credentials.

Authenticate

Tarrakki APIs use OAuth 2.0 protocol for authentication and authorization. It is the de-facto industry-standard for auhorizing applications via internet.

Use following snippet to authenticate using the client id, and client secret provided.

PS: Replace {URL}, {YOUR CLIENT ID}, and {YOUR CLIENT SECRET}.

curl --request POST 'https://{URL}/access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
    "grant_type": "client_credentials",
    "client_id": "{YOUR CLIENT ID}",
    "client_secret": "{YOUR CLIENT SECRET}"
}'

A successful invocation returns HTTP 200 (success) with JSON response e.g.

{
"token_type":"Bearer",
"access_token":"eyJhbGci...",
"expires_in":3600
}

Invoking APIs

Tarrakki APIs use OpenAPI Specification (OAS) making it easier for humans and computers to understand, discover and use the APIs.

For instance, the GET /kyc API is used to check KYC status of a PAN card holder. The API requires OAuth2 authorization, meaning it is accessible with a valid access token. The API also requires "pan" and it is accepted as a query parameter.

Following example demonstrates GET /kyc API call. The access token is provided as bearer token in the authorization header, and the pan is provided as query parameter.

curl --request GET 'http://{URL}/kyc?pan=ABCDE1234X' \
--header 'Authorization: Bearer eyJhbGci...'

Handling API response

Tarrakki API uses HTTP status codes to communicate success or failure of an API request. For instance, HTTP 200 means that the API request is processed successfully. In general, HTTP status code between 200-299 range indicate success. Following is an example response of the GET /kyc request.

{
    "status": "pending", 
    "pan": "ABCDE1234X"
}

HTTP status codes between 400-499 range indicate client error. Following is an example response of the GET /kyc?pan=ABCD01234X API. The fifth character in the pan letter 'E' is replaced with '0' to make it invalid.

{
    "message": "Invalid PAN"
}

Status codes between 500-599 range indicate server error and these are rare.

Onboarding an Investor

This section will help you to understand the process of onboarding an investor.

Step 0: Authentication

Our APIs use OAuth 2.0 protocol for authentication and authorization. To start using our APIs, you need to authenticate yourself using the client_id, client_secret & base_url.

For more information regarding the same, check the "Getting Started" section.

Step 1: Check KYC Status

The first step is to run the KYC Status API. Enter PAN, if it’s KYC verified, then we move further. If the KYC is not verified, we need to register it first and then proceed further.

You may only proceed further if the Response status for this is “registered”

Step 2: Create Investor

The next step is to create an Investor. We need to fill in all the necessary details and use the Create Investor API, this API will create investor on our system.

As a response, we receive an ‘id’ and the status as “incomplete_details”. Store the id, and proceed further to Step 3.

Step 3: Add Bank Details

Once we have created our investor, we need to add all the necessary details. One of these details is Bank Details. Using the “Add Bank” API we add the bank details of the investor.

Remember, you need to pass the ‘id’ we have for the previously created investor.

This API has no success response. Now move to Step 4.

Step 4: Upload Documents

For Individuals, you need to Upload “Signature” using the Upload document API.

Refer below table to find the documents needed for each investor types.

Investor Type Required Documents
individual signature

Step 5: Add Nominee Details

The next step is to create the Nominee. You can add up to 3 nominees, and make sure that the total share adds up to no more or no less than 100.

You can store the response "nominee_id".

Status Check : Investor Status API You can use this API to know the current status of your investor. Until you have completed Steps upto Step 4, the status will be “incomplete_details”. After Step 4, the status should be “pending_nominee_verification” After Step 5, the status should be “under_review” Once the Investor’s Bank account gets verified, the status will change to “ready_to_invest”

Once the status is “ready_to_invest”, we can start placing orders and invest.

KYC

This collection provides set of APIs to check KYC status of an investor, and submit a request to initiate eKYC for an investor.

KYC status

Returns KYC status of the PAN holder

Authorizations:
OAuth2
query Parameters
pan
required
string = 10 characters

Permanent Account Number (PAN)

Responses

Response Schema: application/json
pan
string
status
string (kycStatus)
Enum: "pending" "registered" "initiated" "rejected" "validated"

Request samples

curl --request GET 'https://{URL}/kyc?pan={PAN}' \
--header 'Authorization: Bearer {TOKEN}'

Response samples

Content type
application/json
{
  • "pan": "ABCDE1234X",
  • "status": "pending"
}

Initiate KYC

Initiate e-KYC

Authorizations:
OAuth2
Request Body schema: application/json

Initiate KYC

name
required
string
pan
required
string
email
required
string
mobile
required
string
callback_url
string <uri>

Responses

Response Schema: application/json
web_redirect_url
string
mobile_redirect_url
string

Request samples

Content type
application/json
{
  • "name": "string",
  • "pan": "string",
  • "email": "string",
  • "mobile": "string",
  • "callback_url": "http://example.com"
}

Response samples

Content type
application/json
{}

Retrieve PAN Details (v2)

Retrieve demographic details (name parts, dob, structured address) for a PAN via a KYC provider (Decentro).

Authorizations:
OAuth2
Request Body schema: application/json
pan
required
string

Permanent Account Number (10 alphanumeric characters)

force_refresh
boolean
Default: false

When true, bypass the cache: fetch fresh from the provider and overwrite the stored value. Defaults to false so callers hit the 24h cache.

Responses

Response Schema: application/json
first_name
string or null
middle_name
string or null
last_name
string or null
full_name
string or null
dob
string or null <date>

Date of birth (YYYY-MM-DD)

object
full_address
string or null

Request samples

Content type
application/json
{
  • "pan": "ABCDE1234F",
  • "force_refresh": false
}

Response samples

Content type
application/json
{
  • "first_name": "John",
  • "middle_name": "D",
  • "last_name": "Doe",
  • "full_name": "John D Doe",
  • "dob": "1990-01-01",
  • "address": {
    },
  • "full_address": "Flat 101, building A, Main Street, Mumbai, Maharashtra, 400001, India"
}

Investor

Set of APIs to facilitate onboarding of an investor. It involves registering investor's personal, demographic and financial information with BSE.

This collection also provides set of APIs to retrieve details of an investor, and update the information.

Create an investor

This Api is used to create an investor.

Note: Only KYC registered investors can be created.

Authorizations:
OAuth2
Request Body schema: application/json
investor_type
required
string (investor_type)

Not modifiable after investor is created

first_name
required
string <= 30 characters

Must be alphabets

last_name
string <= 30 characters

Must be alphabets

dob
required
string <date>
gender
required
string (gender)
Enum: "male" "female" "transgender"
pan
required
string = 10 characters

Must be alphanumeric

email
required
string <= 50 characters
mobile
required
string = 10 characters

Must be numeric

required
object (address_v2)
email_declaration
required
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
required
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
required
object (base_fatca_individual)

Responses

Response Schema: application/json
id
string
status
string (investor_status)
Enum: "incomplete_detail" "incomplete_kyc_details" "pending_nominee_authentication" "under_review" "ready_to_invest"

Request samples

Content type
application/json
Example
{
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "address": {
    },
  • "email_declaration": "self",
  • "mobile_declaration": "self",
  • "fatca_detail": {
    }
}

Response samples

Content type
application/json
{
  • "id": "1",
  • "status": "under_review"
}

List investors

Get the list of investors registered by client

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

email
string

Email address of an investor

pan
string

PAN of an investor

Responses

Response Schema: application/json
Array
id
string
investor_type
string (investor_type)
Enum: "individual" "proprietor" "minor" "nri" "nro" "nre" "partnership" "llp" "private_limited" "limited" "huf" "trust"

Not modifiable after investor is created

name
string
pan
string
email
string
mobile
string
status
string (investor_status)
Enum: "incomplete_detail" "incomplete_kyc_details" "pending_nominee_authentication" "under_review" "ready_to_invest"

Response samples

Content type
application/json
[
  • {
    }
]

Create an investor (v2)

This Api is used to create an investor (v2).

Note: Only KYC registered investors can be created.

Authorizations:
OAuth2
Request Body schema: application/json
investor_type
required
string (investor_type)

Not modifiable after investor is created

first_name
required
string <= 70 characters

Must be alphabets

middle_name
string or null <= 70 characters
Default: null

Must be alphabets

last_name
string <= 70 characters

Must be alphabets

dob
required
string <date>
gender
required
string (gender)
Enum: "male" "female" "transgender"
pan
required
string = 10 characters

Must be alphanumeric

email
required
string <= 50 characters
mobile
required
string = 10 characters

Must be numeric

mobile_country_code
string

Optional country code for mobile number (v2 field)

sub_broker_code
string

Sub-broker code associated with the investor

Note: The value must/shall include ARN- prefix followed by the actual code (e.g., 'ARN-12345')

euin
string

Employee Unique Identification Number (EUIN)

Note: The value must/shall include E prefix followed by the actual number (e.g., 'E67890')

required
object (address_v2)
email_declaration
required
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
required
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
required
object (base_fatca_individual-2)

Responses

Response Schema: application/json
id
string
status
string (investor_status)
Enum: "incomplete_detail" "incomplete_kyc_details" "pending_nominee_authentication" "under_review" "ready_to_invest"

Request samples

Content type
application/json
Example
{
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "address": {
    },
  • "email_declaration": "self",
  • "mobile_declaration": "self",
  • "fatca_detail": {
    }
}

Response samples

Content type
application/json
{
  • "id": "1",
  • "status": "under_review"
}

List investors (v2)

List investors for the authenticated organization with pagination and optional filters.

Authorizations:
OAuth2
query Parameters
limit
integer [ 1 .. 100 ]
Default: 20
Example: limit=20

Number of items to return (1-100)

offset
integer >= 0
Default: 0

Number of items to skip before starting to collect the result set

email
string <email>
Example: email=example@domain.com

Filter investors by email (case-sensitive)

pan
string
Example: pan=ABCDE1234F

Filter investors by PAN number (exact match)

mobile
string
Example: mobile=9876543210

Filter investors by mobile number (exact match)

status
string
Enum: "incomplete_detail" "incomplete_kyc_details" "pending_nominee_authentication" "under_review" "ready_to_invest"
Example: status=ready_to_invest

Filter investors by status

Responses

Response Schema: application/json
count
required
integer

Total number of investors

required
Array of objects (InvestorSummaryResponse)

List of investors for current page

next
required
string or null

URL for the next page

previous
required
string or null

URL for the previous page

Response samples

Content type
application/json
{
  • "count": 1570,
  • "results": [
    ],
  • "previous": null
}

Retrieve investor detail (v2)

Retrieve investor detail associated with the id (v2 with additional fields)

Note: The ucc (Unique Client Code) is only returned when retrieving investor details and cannot be updated via PATCH.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
investor_type
string (investor_type)

Not modifiable after investor is created

ucc
string

Unique Client Code

Note: ucc is only for retrieve investor details and cannot be updated by patch

first_name
string <= 70 characters

Must be alphabets

middle_name
string or null <= 70 characters
Default: null

Must be alphabets

last_name
string <= 70 characters

Must be alphabets

dob
string <date>
gender
string (gender)
Enum: "male" "female" "transgender"
pan
string = 10 characters

Must be alphanumeric

email
string <= 50 characters
mobile
string = 10 characters

Must be numeric

mobile_country_code
string

Optional country code for mobile number (v2 field)

sub_broker_code
string

Sub-broker code associated with the investor

Note: The value must/shall include ARN- prefix followed by the actual code (e.g., 'ARN-12345')

euin
string

Employee Unique Identification Number (EUIN)

Note: The value must/shall include E prefix followed by the actual number (e.g., 'E67890')

object (address_v2)
email_declaration
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
object (base_fatca_individual-2)

Response samples

Content type
application/json
Example
{
  • "id": "2",
  • "investor_type": "individual",
  • "ucc": "inv_5484561545",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "mobile_country_code": "+91",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "address": {
    },
  • "email_declaration": "self",
  • "mobile_declaration": "self",
  • "fatca_detail": {
    }
}

Update investor partially (v2)

Updates investor detail partially associated with the id (v2 with additional fields support)

Provide only those fields which needs to be updated

NOTE:

  1. After the investor is registered with BSE, any updates to investor detail will be restricted.
  2. The address object must be provided as a whole; individual fields within address cannot be updated separately.
Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json
investor_type
string (investor_type)

Not modifiable after investor is created

first_name
string <= 70 characters

Must be alphabets

middle_name
string or null <= 70 characters
Default: null

Must be alphabets

last_name
string <= 70 characters

Must be alphabets

dob
string <date>
gender
string (gender)
Enum: "male" "female" "transgender"
object (address_v2)
object (base_fatca_individual_optional)

Responses

Request samples

Content type
application/json
Example
{
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "address": {
    },
  • "fatca_detail": {
    }
}

List banks (v2)

Get the list of all banks added to the investor (v2 with additional fields)

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
id
required
string

Bank account identifier

account_type
required
string
Enum: "savings" "current" "nre" "nro"

Type of bank account

account_number
required
string

Bank account number

ifsc
required
string

IFSC code of the bank

verification_document
required
string (bank_verification_document_type)
Enum: "cancelled_cheque" "bank_statement"
verification_document_type
string
Enum: "cancelled_cheque" "bank_statement" "passbook" "pay_slip" "utility_bill" "other"

Type of verification document used for bank verification

Request samples

curl --request GET '{BASE URL}/v2/investors/{INVESTOR ID}/banks' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Add bank (v2)

Add investor's bank account details (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data

Bank

account_type
required
string
Enum: "savings" "current" "nre" "nro"
account_number
required
string
ifsc
required
string
verification_document
string (bank_verification_document_type)
Enum: "cancelled_cheque" "bank_statement"
file
string <binary>

Responses

Response Schema: application/json
id
string

Bank ID

Request samples

curl --request POST '{BASE_URL}/v2/investors/{INVESTOR ID}/banks' \
--header 'Authorization: Bearer eyJhb...' \
--form 'account_type="savings"' \
--form 'account_number="123456789"' \
--form 'ifsc="HDFC0000001"' \
--form 'verification_document="cancelled_cheque"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/cancelled-cheque.png"'

Response samples

Content type
application/json
{
  • "id": "string"
}

Retrieve bank detail (v2)

Retrieve investor's bank-details associated with the given investor id and bank id (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

bank_id
required
string

Bank id

Responses

Response Schema: application/json
Array
id
string
investor_id
string
account_number
string
ifsc
string
status
string (BankAccountStatus)
Enum: "approved" "processing" "rejected"
status_remark
string

Request samples

curl --request GET '{BASE URL}/v2/investors/{INVESTOR ID}/banks/{BANK ID}' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve investor detail

Retrieve investor detail associated with the id

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
investor_type
string (investor_type)

Not modifiable after investor is created

first_name
string <= 30 characters

Must be alphabets

last_name
string <= 30 characters

Must be alphabets

dob
string <date>
gender
string (gender)
Enum: "male" "female" "transgender"
pan
string = 10 characters

Must be alphanumeric

email
string <= 50 characters
mobile
string = 10 characters

Must be numeric

object (address_v2)
email_declaration
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
object (base_fatca_individual)

Response samples

Content type
application/json
Example
{
  • "id": "2",
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "fatca_detail": {
    }
}

Update investor detail Deprecated

Updates investor detail associated with the id

Note: After the investor is registered with BSE, any updates to investor detail will be restricted.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json
investor_type
required
string (investor_type)

Not modifiable after investor is created

first_name
required
string <= 30 characters

Must be alphabets

last_name
string <= 30 characters

Must be alphabets

dob
required
string <date>
gender
required
string (gender)
Enum: "male" "female" "transgender"
pan
required
string = 10 characters

Must be alphanumeric

email
required
string <= 50 characters
mobile
required
string = 10 characters

Must be numeric

required
object (address_v2)
email_declaration
required
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
required
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
required
object (base_fatca_individual)

Responses

Request samples

Content type
application/json
Example
{
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "address": {
    },
  • "email_declaration": "self",
  • "mobile_declaration": "self",
  • "fatca_detail": {
    }
}

Update investor partially

Updates investor detail partially associated with the id

Provide only those fields which needs to be updated

Note: After the investor is registered with BSE, any updates to investor detail will be restricted.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json
investor_type
required
string (investor_type)

Not modifiable after investor is created

first_name
required
string <= 30 characters

Must be alphabets

last_name
string <= 30 characters

Must be alphabets

dob
required
string <date>
gender
required
string (gender)
Enum: "male" "female" "transgender"
pan
required
string = 10 characters

Must be alphanumeric

email
required
string <= 50 characters
mobile
required
string = 10 characters

Must be numeric

required
object (address_v2)
email_declaration
required
string (email_declaration)
Enum: "self" "spouse" "guardian"
mobile_declaration
required
string (mobile_declaration)
Enum: "self" "spouse" "guardian"
required
object (base_fatca_individual)

Responses

Request samples

Content type
application/json
Example
{
  • "investor_type": "individual",
  • "first_name": "Willium",
  • "last_name": "Green",
  • "dob": "2000-12-31",
  • "gender": "male",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com",
  • "mobile": "1234567890",
  • "address": {
    },
  • "email_declaration": "self",
  • "mobile_declaration": "self",
  • "fatca_detail": {
    }
}

Investor Status

Investor Status

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
status
string (investor_status)
Enum: "incomplete_detail" "incomplete_kyc_details" "pending_nominee_authentication" "under_review" "ready_to_invest"
message
Array of strings (investor_incomplete_detail)
Items Enum: "birth_certificate" "investor_signature" "guardian_signature" "cancelled_cheque" "pan_image" "pan" "name" "type" "address" "country" "state" "city" "pincode" "occ_code" "gender" "dob" "company_status" "residence_status" "bank_rejected"

Response samples

Content type
application/json
{
  • "status": "incomplete_detail",
  • "message": [
    ]
}

List banks

Get the list of all banks added to the investor

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
bank_id
string
account_type
string
Enum: "savings" "current" "nre" "nro"
account_number
string
ifsc
string
verification_document
string (bank_verification_document_type)
Enum: "cancelled_cheque" "bank_statement"

Request samples

curl --request GET '{BASE URL}/investors/{INVESTOR ID}/banks' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Add bank

Add investor's bank account details.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data

Bank

account_type
required
string
Enum: "savings" "current" "nre" "nro"
account_number
required
string
ifsc
required
string
verification_document
string (bank_verification_document_type)
Enum: "cancelled_cheque" "bank_statement"
file
string <binary>

Responses

Response Schema: application/json
bank_id
string

Bank ID

Request samples

curl --request POST '{BASE_URL}/investors/{INVESTOR ID}/banks' \
--header 'Authorization: Bearer eyJhb...' \
--form 'account_type="savings"' \
--form 'account_number="123456789"' \
--form 'ifsc="HDFC0000001"' \
--form 'verification_document="cancelled_cheque"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/cancelled-cheque.png"'

Response samples

Content type
application/json
{
  • "bank_id": "string"
}

Update bank

Update the bank of an investor

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

bank_id
required
string

Bank id

Responses

Request samples

curl --request PUT '{BASE_URL}/investors/{INVESTOR ID}/banks/{BANK ID}' \
--header 'Authorization: Bearer eyJhb...' \
--form 'account_type="savings"' \
--form 'account_number="123456789"' \
--form 'ifsc="HDFC0000001"' \
--form 'verification_document="cancelled_cheque"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/cancelled-cheque.png"'

Retrieve bank detail

Retrieve investor's bank-details associated with the given investor id and bank id.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

bank_id
required
string

Bank id

Responses

Response Schema: application/json
id
string
Deprecated
bank_id
string
investor_id
string
account_number
string
ifsc
string
status
string (BankAccountStatus)
Enum: "approved" "processing" "rejected"
status_remark
string

Request samples

curl --request GET '{BASE URL}/investors/{INVESTOR ID}/banks/{BANK ID}' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

List documents

Get the list of uploaded documents

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
document_type
string (document_type)
Enum: "birth_certificate" "signed_aof" "signed_fatca" "pan" "signature" "partnership_deed" "board_resolution" "authorised_signatory_list" "nomination_opt_out_declaration"

For Nominee Opt-Out Declaration document should in .pdf format and size must be less than 1 MB.

Request samples

curl --request GET '{BASE URL}/investors/{INVESTOR ID}/documents' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Upload document

Upload a document

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data

Investor document

document_type
string (document_type)
Enum: "birth_certificate" "signed_aof" "signed_fatca" "pan" "signature" "partnership_deed" "board_resolution" "authorised_signatory_list" "nomination_opt_out_declaration"

For Nominee Opt-Out Declaration document should in .pdf format and size must be less than 1 MB.

file
string <binary>

Responses

Request samples

curl --request POST '{BASE URL}/investors/{INVESTOR ID}/documents' \
--header 'Authorization: Bearer eyJh...' \
--form 'document_type="birth_certificate"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/birth-certificate.png"'

List documents (v2)

Get the list of uploaded documents

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
document_type
string
Enum: "birth_certificate" "signed_aof" "signed_fatca" "pan" "first_applicant_signature" "second_applicant_signature" "third_applicant_signature" "partnership_deed" "board_resolution" "authorised_signatory_list" "nomination_opt_out_declaration"
file_url
string <uri>
uploaded_at
string <date-time>

Request samples

curl --request GET '{BASE URL}/investors/{INVESTOR ID}/documents' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Upload document (v2)

Upload a document.

Allowed file extensions: .pdf, .png, .jpg, .jpeg, .doc. document_type does not restrict the extension — any of the allowed extensions may be used with any document_type.

Maximum file size is 5 MB. Files exceeding this limit are rejected with a 400 response:

{
    "errors": {
        "message": "File size exceeds 5MB limit"
    }
}
Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data
document_type
required
string
Enum: "birth_certificate" "signed_aof" "signed_fatca" "pan" "first_applicant_signature" "second_applicant_signature" "third_applicant_signature" "partnership_deed" "board_resolution" "authorised_signatory_list" "nomination_opt_out_declaration"
file
required
string <binary>

File to upload. Allowed extensions: .pdf, .png, .jpg, .jpeg, .doc. Max size 5 MB.

Responses

Response Schema: application/json
document_id
string
document_type
string
Enum: "birth_certificate" "signed_aof" "signed_fatca" "pan" "first_applicant_signature" "second_applicant_signature" "third_applicant_signature" "partnership_deed" "board_resolution" "authorised_signatory_list" "nomination_opt_out_declaration"
file_url
string <uri>

Request samples

curl --request POST '{BASE URL}/investors/{INVESTOR ID}/documents' \
--header 'Authorization: Bearer eyJh...' \
--form 'document_type="birth_certificate"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/birth-certificate.png"'

Response samples

Content type
application/json
{
  • "document_id": "string",
  • "document_type": "birth_certificate",
  • "file_url": "http://example.com"
}

Get virtual account details

Retrieve the virtual account details linked to the investor, which can be used for NEFT/RTGS transactions.

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
virtual_account_id
string

Virtual account id

beneficiary_name
string

Beneficiary name for the virtual account

ifsc
string

IFSC code for the virtual account

account_type
string
Value: "current"

Virtual account type

Request samples

curl --request GET '{BASE URL}/investors/{INVESTOR ID}/virtual-account' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
{
  • "virtual_account_id": "123456789",
  • "beneficiary_name": "Indian Clearing Corporation Ltd - MFD A/C",
  • "ifsc": "HDFC0000001",
  • "account_type": "current"
}

Nominee

Investor's nominations

List nominees

Get the list of all nominees for the investor

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
nomination_opt_in
boolean
Array of objects (nominee)

Request samples

curl --request GET '{BASE URL}/investors/9488/nominee' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
{
  • "count": 1,
  • "next": null,
  • "previous": null,
  • "results": [
    ]
}

Add nominee

Adds a nominee for the investor

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json

Nominee

nomination_opt_in
boolean
Default: true
required
Array of objects (base_nominee)
authenticator
required
string
Enum: "tarrakki" "partner"
auth_ref
required
string

Reference number used for 2FA verification using any type of authenticator.

email
string

Required when 2FA verification is done by the "partner"

mobile
string

Required when 2FA verification is done by the "partner"

Responses

Request samples

Content type
application/json
{
  • "authenticator": "tarrakki",
  • "auth_ref": "110",
  • "nominees": [
    ]
}

Update nominee detail

Update nominee detail

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json

Nominee

nomination_opt_in
boolean
Default: true
required
Array of objects (base_nominee)
authenticator
required
string
Enum: "tarrakki" "partner"
auth_ref
required
string

Reference number used for 2FA verification using any type of authenticator.

email
string

Required when 2FA verification is done by the "partner"

mobile
string

Required when 2FA verification is done by the "partner"

Responses

Request samples

Content type
application/json
{
  • "authenticator": "tarrakki",
  • "auth_ref": "110",
  • "nominees": [
    ]
}

List nominees (v2)

Get the list of all nominees for the investor (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
id
string

Nominee identifier

name
required
string

Name of the nominee

relation
required
string
Enum: "spouse" "son" "daughter" "mother" "father" "brother" "sister" "others"

Investor's relation with the nominee

other_relation
string

Required when relation is others

share
required
integer [ 1 .. 100 ]

Percentage of share to allocate

identity_type
required
string
Enum: "pan" "aadhar" "driving_license" "passport"

Type of identity document

identity_value
required
string

Value of the identity document

email
required
string

Nominee's email address

mobile_number
required
string

Nominee's mobile number

mobile_country_code
string

Country code for the nominee's mobile number (e.g., +91, +1)

dob
string <date>

Date of birth of the nominee (YYYY-MM-DD)

gender
required
string
Enum: "male" "female" "transgender"

Gender of the nominee

minor
required
boolean

Whether the nominee is a minor (under age 18)

object

Guardian details (required if nominee is a minor)

Request samples

curl --request GET '{BASE URL}/investors/9488/nominee' \
--header 'Authorization: Bearer eyJh...'

Response samples

Content type
application/json
[
  • {
    }
]

Add nominee (v2)

Adds a nominee for the investor with enhanced fields including guardian details and gender

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json

Nominee (v2)

nomination_opt_in
boolean
Default: true
required
Array of objects (base_nominee-2)
authenticator
required
string
Enum: "tarrakki" "partner"
auth_ref
required
string

Reference number used for 2FA verification using any type of authenticator.

email
string

Required when 2FA verification is done by the "partner"

mobile
string

Required when 2FA verification is done by the "partner"

Responses

Request samples

Content type
application/json
{
  • "authenticator": "email",
  • "auth_ref": "123456",
  • "nominees": [
    ]
}

Update nominee detail (v2)

Update nominee detail with enhanced fields including guardian details and gender

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: application/json

Nominee (v2)

nomination_opt_in
boolean
Default: true
required
Array of objects (base_nominee-2)
authenticator
required
string
Enum: "tarrakki" "partner"
auth_ref
required
string

Reference number used for 2FA verification using any type of authenticator.

email
string

Required when 2FA verification is done by the "partner"

mobile
string

Required when 2FA verification is done by the "partner"

Responses

Request samples

Content type
application/json
{
  • "authenticator": "email",
  • "auth_ref": "123456",
  • "nominees": [
    ]
}

Bank Mandate

Bank mandate

List bank mandates

Get the list of bank mandates

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

investor_id
string

Investor Id

Responses

Response Schema: application/json
count
number
next
string or null <uri>
previous
string or null <uri>
Array of objects (BankMandate)

Response samples

Content type
application/json
{
  • "count": 1,
  • "next": null,
  • "previous": null,
  • "results": [
    ]
}

Create a bank mandate

Create a bank mandate

Authorizations:
OAuth2
Request Body schema: application/json

Bank Mandate

investor_id
required
string
mandate_type
required
string (BankMandateType)
bank_id
required
string
auto_debit_limit
required
number

Responses

Response Schema: application/json
mandate_id
string

Request samples

Content type
application/json
Example
{
  • "investor_id": "1",
  • "mandate_type": "enach",
  • "bank_id": "12",
  • "auto_debit_limit": 100000,
  • "callback_url": "https://yourdomain.com"
}

Response samples

Content type
application/json
{
  • "mandate_id": "string"
}

Retrieve bank mandate detail

Retrieve bank mandate detail associated with the given id

Authorizations:
OAuth2
path Parameters
mandate_id
required
string

Bank mandate id

Responses

Response Schema: application/json
mandate_id
string
investor_id
string
mandate_type
string (BankMandateType)
bank_id
string
auto_debit_limit
number
status
string (BankMandateStatus)
Enum: "initiated" "failed" "pending" "processing" "requires-correction" "approved" "rejected"
status_remark
string

Response samples

Content type
application/json
Example
{
  • "investor_id": "string",
  • "mandate_type": "nach",
  • "bank_id": "string",
  • "auto_debit_limit": 0,
  • "status": "initiated",
  • "status_remark": "string"
}

Download bank mandate form (NACH)

Download bank mandate form (NACH) associated with the given mandate id

Authorizations:
OAuth2
path Parameters
mandate_id
required
string

Bank mandate id

Responses

Upload bank mandate form (NACH)

Upload bank mandate form (NACH) associated with the given mandate id

Authorizations:
OAuth2
path Parameters
mandate_id
required
string

Bank mandate id

Request Body schema: multipart/form-data

Bank mandate form (NACH)

file
string <binary>

Responses

List bank mandates (v2)

Get the list of bank mandates with updated field names:

  • mandate_type is now type
  • mandate_id is now id
Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

investor_id
string

Investor Id

Responses

Response Schema: application/json
count
number
next
string or null <uri>
previous
string or null <uri>
Array of objects (BankMandate-2)

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Create a bank mandate (v2)

Create a bank mandate (v2).

eNACH callback redirect

For mandate_type: enach, you may provide a callback_url. After the investor completes authentication on the bank's page, they will be redirected to your callback_url with the following query parameters appended:

Parameter Type Description
mandate_id integer The internal mandate ID
status string Current mandate status

Status values

Value Description
initiated Mandate created, not yet submitted
pending Submitted to exchange, awaiting processing or investor authentication
processing Received by exchange and under processing
approved Mandate approved and active
rejected Mandate rejected
revoked Mandate revoked by investor
failed Mandate registration failed
requires_correction Mandate requires correction before resubmission

Example redirect

https://your-app.com/mandate/callback?mandate_id=1234&status=approved
Authorizations:
OAuth2
Request Body schema: application/json

Bank Mandate

investor_id
required
string
mandate_type
required
string (BankMandateType)
bank_id
required
string
auto_debit_limit
required
number

Responses

Response Schema: application/json
id
string

The unique identifier for the mandate (previously mandate_id)

Request samples

Content type
application/json
Example
{
  • "investor_id": "1",
  • "mandate_type": "enach",
  • "bank_id": "12",
  • "auto_debit_limit": 100000,
  • "callback_url": "https://yourdomain.com"
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Bank

Utilities for bank account operations.

Verify bank account

Verify whether a bank account number and IFSC are valid.

When name is provided, Tarrakki computes a name match score (tarrakki_name_match) by comparing the provided name against the name returned by the bank. This is informational — the status field always reflects the actual account validity.

A status: success response means the account exists and is active. A status: failed response means the account is invalid, blocked, or the IFSC is unrecognised.

Authorizations:
OAuth2
Request Body schema: application/json
account_number
required
string [ 6 .. 40 ] characters

Bank account number

ifsc
required
string^[A-Z]{4}0[A-Z0-9]{6}$

IFSC code of the bank branch

name
string <= 100 characters

Account holder name. When provided, Tarrakki computes a name match score against the name returned by the bank.

mobile_number
string [ 8 .. 13 ] characters

Account holder mobile number

Responses

Response Schema: application/json
status
required
string
account_exists
required
boolean
Value: true
bank_name
string or null

Bank name from bank records

name_at_bank
string or null

Account holder name as per bank records

object or null

Name match computed by Tarrakki. Present only when name was provided in the request.

remarks
required
string

Verbose description of the verification outcome

Request samples

Content type
application/json
{
  • "account_number": "string",
  • "ifsc": "string",
  • "name": "string",
  • "mobile_number": "stringst"
}

Response samples

Content type
application/json
Example
{
  • "status": "success",
  • "account_exists": true,
  • "bank_name": "YES BANK",
  • "name_at_bank": "JOHN DOE",
  • "tarrakki_name_match": {
    },
  • "remarks": "Account is valid"
}

Holdings

Holdings

Portfolio

Portfolio

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
folio
required
string
fund_id
required
string
isin
string

International Securities Identification Number of the fund.

fund_name
required
string
nav_date
required
string <date>
nav
required
number

Last available NAV of the fund

units
required
number
total_investment
required
number
current_value
required
number
absolute_return
required
number
xirr
required
number
asset_class
required
string
Enum: "equity" "debt" "hybrid"
required
Array of objects (portfolio_broker)

Per-broker breakdown of remaining units in this folio, keyed by (ARN, sub-broker, EUIN). One entry per unique triplet.

object (portfolio_meta)

Extensible metadata about a folio. New flags are added here over time without breaking the response contract.

Response samples

Content type
application/json
[
  • {
    }
]

Mutual Fund

APIs for Mutual Fund scheme details.

List funds

Returns list of funds matching the specified criteria.

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

product_type
string (product_type)
Default: "MF"
Enum: "MF" "SIF"

Product type to list. Defaults to MF (Mutual Fund); pass SIF to list Specialized Investment Fund (SIF) schemes.

category
string

Fund category

sub_category
string

Fund sub-category

instant
boolean
Default: false

Instant redemption

nfo
boolean

New Fund Offerings

status
string (fund_status)
Enum: "active" "inactive"

Fund Status

option
string (fund_option)
Enum: "growth" "idcw" "bonus"

Fund Option

Responses

Response Schema: application/json
Array
id
string
name
string
category
string
sub_category
string
amc_id
string
amc
string

Asset management company

product_code
string

Product code of the fund

scheme_type
string
aum
number

Asset under management

return_6_mth
number
return_1_yr
number
return_3_yr
number
min_initial
number

Minimum amount for the first buy order

min_additional
number

Minimum amount for additional buy order

nav
number

Last available NAV of the fund

nav_date
string <date>

Last available NAV's date

isin
string
amfi_code
string
plan
string
nfo_start_date
string <date>

Opening date of the nfo

nfo_close_date
string <date>

Closing date of the nfo

status
string (fund_status)
Enum: "active" "inactive"
option
string (fund_option)
Enum: "growth" "idcw" "bonus"

Response samples

Content type
application/json
[
  • {
    }
]

List funds (v2)

Returns list of funds matching the specified criteria. (v2)

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

category
string

Fund category

sub_category
string

Fund sub-category

instant
boolean
Default: false

Instant redemption

nfo
boolean

New Fund Offerings

status
string (fund_status)
Enum: "active" "inactive"

Fund Status

option
string (fund_option)
Enum: "growth" "idcw" "bonus"

Fund Option

Responses

Response Schema: application/json
Array
id
string
name
string
category
string
sub_category
string
amc_id
string
amc
string

Asset management company

product_code
string

Product code of the fund

scheme_type
string
aum
number

Asset under management

return_6_mth
number
return_1_yr
number
return_3_yr
number
min_initial
number

Minimum amount for the first buy order

min_additional
number

Minimum amount for additional buy order

nav
number

Last available NAV of the fund

nav_date
string <date>

Last available NAV's date

isin
string
amfi_code
string
plan
string
nfo_start_date
string <date>

Opening date of the nfo

nfo_close_date
string <date>

Closing date of the nfo

status
string (fund_status)
Enum: "active" "inactive"
option
string (fund_option)
Enum: "growth" "idcw" "bonus"

Response samples

Content type
application/json
[
  • {
    }
]

List fund categories (v2)

Retrieve a list of all mutual fund categories. (v2)

Authorizations:
OAuth2

Responses

Response Schema: application/json
Array
id
required
integer
name
required
string

Response samples

Content type
application/json
[
  • {
    }
]

List fund sub-categories (v2)

Retrieve fund sub-categories, optionally filtered by category ID. Results are paginated. (v2)

A sub-category is not always unique to a single fund category. The same business sub-category can be mapped to multiple categories based on product classification. For example, ETF may appear under both Equity and Commodity.

For this reason, each sub-category in the response includes a category array containing all associated categories for that sub-category.

Authorizations:
OAuth2
query Parameters
category_id
integer >= 1

Filter sub-categories by fund category ID

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects (FundSubCategory)

Response samples

Content type
application/json
{}

Calculate portfolio overlap (v2)

Calculates the portfolio overlap between 2 to 5 equity mutual fund schemes.

Overlap calculation: For each pair of funds, the overlap is computed as the sum of the minimum weightage of each commonly held security (matched by ISIN). Securities without an ISIN are excluded from the calculation.

Constraints:

  • All funds must belong to the Equity broad category.
  • Minimum 2 funds, maximum 5 funds per request.
  • Duplicate fund IDs are not allowed.

Response: Returns per-pair overlap percentages and a portfolio-level average, along with the list of common holdings for each pair.

Authorizations:
OAuth2
Request Body schema: application/json
fund_ids
required
Array of integers [ 2 .. 5 ] items

List of unique equity fund IDs to compare. Minimum 2, maximum 5.

Responses

Response Schema: application/json
total_funds
integer

Number of funds in the comparison

total_pairs
integer

Number of fund pairs evaluated (n*(n-1)/2)

portfolio_overlap
number <float>

Average overlap percentage across all pairs

Array of objects

Overlap breakdown for each pair of funds

Request samples

Content type
application/json
{
  • "fund_ids": [
    ]
}

Response samples

Content type
application/json
{
  • "total_funds": 3,
  • "total_pairs": 3,
  • "portfolio_overlap": 18.45,
  • "pairwise_overlap": [
    ]
}

Query multiple funds (v2)

Multi-fund query endpoint with configurable fields.

Request Body:

  • fund_ids: List of fund IDs to query (max 100)
  • fields: List of field names to include in response (currently supports - nav, nav_date, nav_history)

Response:

  • data: List of fund details with only requested fields
  • Always includes - id, isin, amfi_code, name, plan
  • Other fields (nav, nav_date, nav_history) are included only if requested in the fields parameter
Authorizations:
OAuth2
Request Body schema: application/json
fund_ids
required
Array of integers [ 1 .. 100 ] items

List of fund IDs to query (max 100)

fields
required
Array of strings non-empty
Items Enum: "nav" "nav_date" "nav_history"

List of fund fields to fetch. Currently supported - nav, nav_date, nav_history

Responses

Response Schema: application/json
required
Array of objects

List of fund details with requested fields

Request samples

Content type
application/json
{
  • "fund_ids": [
    ],
  • "fields": [
    ]
}

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Retrieve fund detail

The API is used to retrieve fund detail associated with the id

Authorizations:
OAuth2
path Parameters
id
required
string

Fund id

Responses

Response Schema: application/json
isin
string
amfi_code
string
name
string
category
string
sub_category
string
amc_id
string
amc
string

Asset management company

product_code
string

Product code of the fund

object (amc_restrictions)

AMC Restrictions Details

scheme_type
string
scheme_document
string <URL>

Scheme document

aum
number

Asset under management

aum_date
string <date>
Array of objects (historical_return)
min_initial
number

Minimum Initial Investment

min_additional
number

Minimum Subsequence Investment

min_redemption
number

Minimum Redemption

nav
number

NAV

nav_date
string <date>

NAV date

fund_type
string
objective
string

Investment stratargy

philosophy
string

Investment philosophy

risk_level
string (risk)
Enum: "low" "low_to_moderate" "moderate" "moderately_high" "high" "very_high"

Risk level

object

Risk Measures

object

Relative Risk Measures

object

Category Returns

dividend_investment_plan
boolean
standard_deviation_5_yr
number
inception_date
string <date>

Inception date

expense_ratio
number
portfolio_turnover_ratio
number

Portfolio turnover ratio

Array of objects (historical_nav)

NAV historical data

exit_loads
string
Array of objects (fund_managers)
Array of objects (benchmarks)
Array of objects (holdings)
Array of objects (holdings)
nfo_start_date
string <date>

Opening date of the nfo

nfo_close_date
string <date>

Closing date of the nfo

status
string (fund_status)
Enum: "active" "inactive"

Response samples

Content type
application/json
{
  • "isin": "string",
  • "amfi_code": "string",
  • "name": "string",
  • "category": "string",
  • "sub_category": "string",
  • "amc_id": "string",
  • "amc": "string",
  • "product_code": "5451515",
  • "amc_restrictions": {
    },
  • "scheme_type": "string",
  • "scheme_document": "string",
  • "aum": 0,
  • "aum_date": "2019-08-24",
  • "historical_returns": [
    ],
  • "min_initial": 0,
  • "min_additional": 0,
  • "min_redemption": 0,
  • "nav": 0,
  • "nav_date": "2019-08-24",
  • "fund_type": "string",
  • "objective": "string",
  • "philosophy": "string",
  • "risk_level": "low",
  • "risk_measures": {
    },
  • "relative_risk_measures": {
    },
  • "category_returns": {
    },
  • "dividend_investment_plan": true,
  • "standard_deviation_5_yr": 0,
  • "inception_date": "2019-08-24",
  • "expense_ratio": 0,
  • "portfolio_turnover_ratio": 0,
  • "nav_history": [
    ],
  • "exit_loads": "string",
  • "managers": [
    ],
  • "benchmarks": [
    ],
  • "top_ten_holdings": [
    ],
  • "detailed_holdings": [
    ],
  • "nfo_start_date": "2019-08-24",
  • "nfo_close_date": "2019-08-24",
  • "status": "active"
}

Retrieve fund detail (v2)

The API is used to retrieve fund detail associated with the id (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Fund id

Responses

Response Schema: application/json
isin
string
amfi_code
string
name
string
category
string
sub_category
string
amc_id
string
amc
string

Asset management company

product_code
string

Product code of the fund

object (amc_restrictions)

AMC Restrictions Details

scheme_type
string
scheme_document
string <URL>

Scheme document

aum
number

Asset under management

aum_date
string <date>
Array of objects (historical_return)
min_initial
number

Minimum Initial Investment

min_additional
number

Minimum Subsequence Investment

min_redemption
number

Minimum Redemption

nav
number

NAV

nav_date
string <date>

NAV date

fund_type
string
objective
string

Investment stratargy

philosophy
string

Investment philosophy

risk_level
string (risk)
Enum: "low" "low_to_moderate" "moderate" "moderately_high" "high" "very_high"

Risk level

object

Risk Measures

object

Relative Risk Measures

object

Category Returns

dividend_investment_plan
boolean
standard_deviation_5_yr
number
inception_date
string <date>

Inception date

expense_ratio
number
portfolio_turnover_ratio
number

Portfolio turnover ratio

Array of objects (historical_nav)

NAV historical data

exit_loads
string
Array of objects (fund_managers)
Array of objects (benchmarks)
object or null (holdings-2)

Fund holdings with portfolio date and list of securities

object or null (holdings-2)

Fund holdings with portfolio date and list of securities

object or null (sector_holdings)

Sector-wise allocation of the fund's portfolio

nfo_start_date
string <date>

Opening date of the nfo

nfo_close_date
string <date>

Closing date of the nfo

status
string (fund_status)
Enum: "active" "inactive"

Response samples

Content type
application/json
{
  • "isin": "string",
  • "amfi_code": "string",
  • "name": "string",
  • "category": "string",
  • "sub_category": "string",
  • "amc_id": "string",
  • "amc": "string",
  • "product_code": "5451515",
  • "amc_restrictions": {
    },
  • "scheme_type": "string",
  • "scheme_document": "string",
  • "aum": 0,
  • "aum_date": "2019-08-24",
  • "historical_returns": [
    ],
  • "min_initial": 0,
  • "min_additional": 0,
  • "min_redemption": 0,
  • "nav": 0,
  • "nav_date": "2019-08-24",
  • "fund_type": "string",
  • "objective": "string",
  • "philosophy": "string",
  • "risk_level": "low",
  • "risk_measures": {
    },
  • "relative_risk_measures": {
    },
  • "category_returns": {
    },
  • "dividend_investment_plan": true,
  • "standard_deviation_5_yr": 0,
  • "inception_date": "2019-08-24",
  • "expense_ratio": 0,
  • "portfolio_turnover_ratio": 0,
  • "nav_history": [
    ],
  • "exit_loads": "string",
  • "managers": [
    ],
  • "benchmarks": [
    ],
  • "top_ten_holdings": {
    },
  • "detailed_holdings": {
    },
  • "sector_holdings": {
    },
  • "nfo_start_date": "2019-08-24",
  • "nfo_close_date": "2019-08-24",
  • "status": "active"
}

List AMCs

Returns list of asset management companies (AMCs) matching the specified criteria.

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

investor_type
string
Default: "individual"

Investor type

investor_country
string
Default: "India"

The investor_country parameter tells about the country of residence of the investor. The investor_country should be a standard country name. You can check a list of standard country names here.

Responses

Response Schema: application/json
Array
id
string
name
string

Response samples

Content type
application/json
[
  • {
    }
]

List AMCs (v2)

Returns list of asset management companies (AMCs) matching the specified criteria. (v2)

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

investor_type
string
Default: "individual"

Investor type

investor_country
string
Default: "India"

The investor_country parameter tells about the country of residence of the investor. The investor_country should be a standard country name. You can check a list of standard country names here.

Responses

Response Schema: application/json
Array
id
string
name
string

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve AMC detail

The API is used to retrieve asset management company (AMC) detail associated with the id

Authorizations:
OAuth2
path Parameters
id
required
string

AMC id

Responses

Response Schema: application/json
id
string
name
string
url
string <uri>
logo
string <uri>

Response samples

Content type
application/json
{}

Retrieve AMC detail (v2)

The API is used to retrieve asset management company (AMC) detail associated with the id (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

AMC id

Responses

Response Schema: application/json
id
string
name
string
url
string <uri>
logo
string <uri>

Response samples

Content type
application/json
{}

Retrieve ARN Data (v2)

Retrieves data for a specific ARN. (v2)

Authorizations:
OAuth2
path Parameters
arn_number
required
string

ARN number

Responses

Response Schema: application/json
arn
required
string

Authorized Representative Network identifier

holder_name
required
string

Name of the ARN holder

address
string

Residential or office address of the ARN holder

city
string <= 100 characters

City of residence or office location

pincode
string <= 6 characters

Postal code

is_active
required
boolean

Indicates if the ARN is currently active

is_kyc_compliant
required
boolean

Indicates if the ARN holder is KYC compliant

valid_from
required
string <date>

Date from which the ARN is valid

valid_to
required
string <date>

Date until which the ARN is valid

euin
string

EUIN (Employee Unique Identification Number) of the ARN holder

office_phone
string

Office contact phone number

residence_phone
string

Residence contact phone number

email
required
string <email>

Email address of the ARN holder

Response samples

Content type
application/json
{
  • "arn": "string",
  • "holder_name": "string",
  • "address": "string",
  • "city": "string",
  • "pincode": "string",
  • "is_active": true,
  • "is_kyc_compliant": true,
  • "valid_from": "2019-08-24",
  • "valid_to": "2019-08-24",
  • "euin": "string",
  • "office_phone": "string",
  • "residence_phone": "string",
  • "email": "user@example.com"
}

Invest / Redeem

Order

List orders

List orders

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

order_type
string (order_type)
Enum: "buy" "sell" "sip" "switch" "switch_in" "stp" "swp" "broker_transfer_in" "broker_transfer_out"

Order type

parent_order_id
string

Parent order id.

investor_id
string

Investor Id

fund_id
string

Fund Id

status
string (order_status)
Enum: "failed" "success" "cancelled" "payment_not_initiated" "awaiting_payment_confirmation" "payment_approved" "payment_rejected" "complete"

Order status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 2,
  • "next": null,
  • "previous": null,
  • "results": [
    ]
}

Place order

Place order

Authorizations:
OAuth2
Request Body schema: application/json
order_type
required
string (order_type)
investor_id
required
string
fund_id
required
string
folio
string
euin
string
investor_ip
string <IPv4>

IP address of investor

amount
required
number
mandate_id
string

Required when order's payment method is OTM.

authenticator
required
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

Responses

Response Schema: application/json
One of
order_id
string

Request samples

Content type
application/json
Example
{
  • "order_type": "buy",
  • "investor_id": "1",
  • "fund_id": "1001",
  • "folio": "1234567890",
  • "amount": 5000,
  • "authenticator": "tarrakki",
  • "auth_ref": "101"
}

Response samples

Content type
application/json
Example
{
  • "order_id": "string"
}

List orders (v2)

List orders with additional mandate_id field (v2)

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

order_type
string (order_type)
Enum: "buy" "sell" "sip" "switch" "switch_in" "stp" "swp" "broker_transfer_in" "broker_transfer_out"

Order type

parent_order_id
string

Parent order id.

investor_id
string

Investor Id

fund_id
string

Fund Id

status
string (order_status)
Enum: "failed" "success" "cancelled" "payment_not_initiated" "awaiting_payment_confirmation" "payment_approved" "payment_rejected" "complete"

Order status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Place order (v2)

Place order (v2)

Authorizations:
OAuth2
Request Body schema: application/json
order_type
required
string (order_type)
investor_id
required
string
fund_id
required
string
folio
string
euin
string
investor_ip
string <IPv4>

IP address of investor

amount
required
number
mandate_id
string

Required when order's payment method is OTM.

authenticator
required
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

sub_broker_code
string

Sub-broker code associated with the order

Note: The value must/shall include ARN- prefix followed by the actual code (e.g., 'ARN-12345')

Responses

Response Schema: application/json
One of
order_id
string

Request samples

Content type
application/json
Example
{
  • "order_type": "buy",
  • "investor_id": "1",
  • "fund_id": "1001",
  • "folio": "1234567890",
  • "amount": 5000,
  • "authenticator": "tarrakki",
  • "auth_ref": "101"
}

Response samples

Content type
application/json
Example
{
  • "order_id": "string"
}

Retrieve order detail

Retrieve order detail

Authorizations:
OAuth2
path Parameters
id
required
string

Order id

Responses

Response Schema: application/json
order_id
string
order_type
string
parent_order_id
string
date
string <date>
nav
number
nav_date
string <date>
investor_id
string
fund_id
string
folio
string
euin
string
investor_ip
string <IPv4>

IP address of investor

amount
number
mandate_id
string

Required when order's payment method is OTM.

authenticator
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

status
string (order_status)
Enum: "failed" "success" "cancelled" "payment_not_initiated" "awaiting_payment_confirmation" "payment_approved" "payment_rejected" "complete"
status_remark
string

Response samples

Content type
application/json
Example
{
  • "order_id": "1",
  • "date": "2019-08-24",
  • "status": "complete",
  • "order_type": "buy",
  • "investor_id": "1",
  • "fund_id": "1001",
  • "folio": "1234567890",
  • "amount": 5000,
  • "status_remark": "",
  • "nav": 3.81,
  • "nav_date": "2019-08-23"
}

Cancel order

Cancel order

Authorizations:
OAuth2
path Parameters
id
required
string

Order id

Responses

Retrieve order detail (v2)

Retrieve order detail (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Order id

Responses

Response Schema: application/json
One of
sub_broker_code
string

Sub-broker code associated with the order

Note: The value must/shall include ARN- prefix followed by the actual code (e.g., 'ARN-12345')

order_id
string
order_type
string
Enum: "buy" "sell" "sip" "switch" "switch_in" "stp" "swp" "broker_transfer_in" "broker_transfer_out"
parent_order_id
string
date
string <date>
nav
number
nav_date
string <date>
investor_id
string
fund_id
string
folio
string
euin
string
investor_ip
string <IPv4>

IP address of investor

amount
number
mandate_id
string

Required when order's payment method is OTM.

authenticator
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

status
string (order_status)
Enum: "failed" "success" "cancelled" "payment_not_initiated" "awaiting_payment_confirmation" "payment_approved" "payment_rejected" "complete"
status_remark
string

Response samples

Content type
application/json
Example
{
  • "order_id": "1",
  • "date": "2019-08-24",
  • "status": "complete",
  • "order_type": "buy",
  • "investor_id": "1",
  • "fund_id": "1001",
  • "folio": "1234567890",
  • "amount": 5000,
  • "sub_broker_code": "ARN-12345",
  • "status_remark": "",
  • "nav": 3.81,
  • "nav_date": "2019-08-23"
}

List Bulk Orders

Returns list of bulk orders

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

investor_id
string

Investor Id

status
string (bulk_order_status)
Enum: "processing" "processed"

Bulk order status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Create Bulk Order

Create order(s) in bulk

Authorizations:
OAuth2
Request Body schema: application/json
investor_id
required
string
euin
string
investor_ip
required
string <IPv4>

IP address of investor

authenticator
required
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

required
Array of any non-empty

Responses

Response Schema: application/json
bulk_order_id
string

Request samples

Content type
application/json
{
  • "investor_id": "string",
  • "euin": "string",
  • "investor_ip": "string",
  • "authenticator": "tarrakki",
  • "auth_ref": "string",
  • "mobile": "string",
  • "email": "string",
  • "detail": [
    ]
}

Response samples

Content type
application/json
{
  • "bulk_order_id": "string"
}

List Bulk Orders (v2)

Returns list of bulk orders (v2)

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

investor_id
string

Investor Id

status
string (bulk_order_status)
Enum: "processing" "processed"

Bulk order status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Create Bulk Order (v2)

Create order(s) in bulk (v2)

Authorizations:
OAuth2
Request Body schema: application/json
investor_id
required
string
sub_broker_code
string

Sub-broker code associated with the order

Note: The value must/shall include ARN- prefix followed by the actual code (e.g., 'ARN-12345')

euin
string
investor_ip
required
string <IPv4>

IP address of investor

authenticator
required
string (authenticator)
Enum: "tarrakki" "partner"
auth_ref
string (auth_ref)

Required when 2FA verification is done through "tarrakki"

mobile
string

Required when 2FA verification is done by the "partner"

email
string

Required when 2FA verification is done by the "partner"

required
Array of any [ 1 .. 10 ] items

Responses

Response Schema: application/json
bulk_order_id
string
processing_time
integer

Maximum time in seconds after which all orders will be processed.

Request samples

Content type
application/json
{
  • "investor_id": "string",
  • "sub_broker_code": "string",
  • "euin": "string",
  • "investor_ip": "string",
  • "authenticator": "tarrakki",
  • "auth_ref": "string",
  • "mobile": "string",
  • "email": "string",
  • "detail": [
    ]
}

Response samples

Content type
application/json
{
  • "bulk_order_id": "string",
  • "processing_time": 0
}

Retrieve Bulk Order Detail

Retrieve bulk order detail

Authorizations:
OAuth2
path Parameters
id
required
string

Bulk order id

Responses

Response Schema: application/json
bulk_order_id
string
date
string <date>
investor_id
string
euin
string
status
string (bulk_order_status)
Enum: "processing" "processed"
Array of any

Response samples

Content type
application/json
{
  • "bulk_order_id": "string",
  • "date": "2019-08-24",
  • "investor_id": "string",
  • "euin": "string",
  • "status": "processing",
  • "detail": [
    ]
}

Retrieve Bulk Order Detail (v2)

Retrieve bulk order detail (v2)

Note: Order records are deleted 24 hours after creation if they meet the following criteria, and will no longer be retrievable:

  • order_type = buy with status in new, failed, payment_not_initiated, payment_rejected
  • order_type = sip with status in failed, unknown
  • order_type = sell with status in new, failed
Authorizations:
OAuth2
path Parameters
id
required
string

Bulk order id

Responses

Response Schema: application/json
bulk_order_id
string
date
string <date>
investor_id
string
sub_broker_code
string
euin
string
status
string (bulk_order_status)
Enum: "processing" "processed"
Array of any

Response samples

Content type
application/json
Example
{
  • "bulk_order_id": "bulk_01",
  • "date": "2024-01-15",
  • "investor_id": "inv_01",
  • "sub_broker_code": "ARN-12345",
  • "euin": "E123456",
  • "status": "successful",
  • "detail": [
    ]
}

Systematic Orders

Systematic Orders

List SIP orders

List SIP orders

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

investor_id
string

Investor Id

status
string (sip_status)
Enum: "success" "pending" "cancelled" "failed"

SIP status

order_id
string

Order Id

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Cancel SIP order

Cancel SIP order

Authorizations:
OAuth2
path Parameters
id
required
string

SIP order id

Request Body schema: application/json
investor_id
required
string
fund_id
required
string
mandate_id
required
string
amount
required
number
state
required
string
Value: "cancel"

Responses

Response Schema: application/json
investor_id
string
fund_id
string
amount
number
mandate_id
string

Request samples

Content type
application/json
{
  • "investor_id": "string",
  • "fund_id": "string",
  • "mandate_id": "string",
  • "amount": 0,
  • "state": "cancel"
}

Response samples

Content type
application/json
{
  • "investor_id": "string",
  • "fund_id": "string",
  • "amount": 0,
  • "mandate_id": "string"
}

List STP orders

List STP orders

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

investor_id
string

Investor Id

status
string (stp_status)
Enum: "new" "registered" "cancelled"

STP status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

List SWP orders

List SWP orders

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Order date

to_date
string <date>

Order date

investor_id
string

Investor Id

status
string (swp_status)
Enum: "new" "registered" "cancelled"

SWP status

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Cancel Systematic order

Cancel Systematic order

Authorizations:
OAuth2
path Parameters
id
required
string

Systematic order id

Request Body schema: application/json
investor_id
required
string
order_type
required
string
Enum: "stp" "swp"
state
required
string
Value: "cancel"

Responses

Response Schema: application/json
id
string
investor_id
string

Request samples

Content type
application/json
{
  • "investor_id": "string",
  • "order_type": "stp",
  • "state": "cancel"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "investor_id": "string"
}

List systematic orders (v2)

List all types of systematic orders (SIP, STP, SWP). This endpoint combines the functionality of the previous separate SIP, STP, and SWP list endpoints.

Filtering constraints:

  • Valid status values depend on order_type: SIP accepts pending, success, failed, cancelled, unknown; STP/SWP accept new, registered, cancelled, completed.
Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Filter orders from this date (YYYY-MM-DD)

to_date
string <date>

Filter orders until this date (YYYY-MM-DD)

investor_id
string

Filter by investor ID

id
string

Filter by systematic order ID. Requires order_type.

status
string

Filter by order status. Requires order_type and must be valid for it. SIP: pending/success/failed/cancelled/unknown. STP/SWP: new/registered/cancelled/completed.

order_type
string (SystematicOrderTypeEnum)
Enum: "sip" "stp" "swp"

Filter by systematic order type

Responses

Response Schema: application/json
count
required
integer

Total number of results

next
string or null

URL to the next page of results

previous
string or null

URL to the previous page of results

required
Array of SipOrderListItem (object) or StpOrderListItem (object) or SwpOrderListItem (object)

Response samples

Content type
application/json
{
  • "count": 0,
  • "next": "string",
  • "previous": "string",
  • "results": [
    ]
}

Cancel Systematic order (v2)

Cancel an active systematic order (SIP, STP, or SWP).

Path Parameters:

  • id: Internal order ID of the systematic order to cancel

Request Body:

  • investor_id: Investor ID for validation
  • sxp_type: Type of systematic order (sip, stp, swp)
  • reason_for_cancellation: Reason for cancellation (enum text)
Authorizations:
OAuth2
path Parameters
id
required
string

Systematic order id

Request Body schema: application/json

Request body for cancelling a systematic order (SIP, STP, or SWP)

investor_id
required
integer

Investor ID for validation

sxp_type
required
string (SystematicOrderTypeEnum)
Enum: "sip" "stp" "swp"

Type of systematic order (sip, stp, swp)

reason_for_cancellation
string
Enum: "Non availability of Funds" "Scheme not performing" "Service issue" "Load Revised" "Wish to invest in other schemes" "Change in Fund Manager" "Goal Achieved" "Not comfortable with market volatility" "Will be restarting SIP after few months" "Modifications in bank/mandate/date etc" "I have decided to invest elsewhere" "This is not the right time to invest" "Others"

Reason for cancellation (enum text)

Responses

Response Schema: application/json
id
integer

Order ID of the cancelled systematic order

investor_id
integer

Investor ID

Request samples

Content type
application/json
{
  • "investor_id": 12345,
  • "sxp_type": "sip",
  • "reason_for_cancellation": "Service issue"
}

Response samples

Content type
application/json
{
  • "id": 12345,
  • "investor_id": 12345
}

Payments

Payments

List payments

List payments

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Payment date

to_date
string <date>

Payment date

status
string (payment_status)
Enum: "initiated" "processing" "success" "failed"

Payment status

payment_method
string (payment_method)
Enum: "upi" "neft_rtgs" "netbanking"
investor_id
string

Investor Id

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Initiate payment

Pay through UPI, Net-Banking and NEFT/RTGS. Payment for multiple order numbers is supported.

Authorizations:
OAuth2
Request Body schema: application/json

Payment detail

payment_method
required
string (payment_method)
investor_id
required
string
required
Array of objects

Orders

bank_id
required
string
amount
required
string
payment_mode
required
enum
Enum: "intent" "qr"
callback_url
string <uri>

Responses

Response Schema: application/json
payment_id
string
redirect_url
string

URL to which the user should be redirected to complete the payment. This field is returned only for non-UPI payment methods.

intent_url
string

URL to which the user should be redirected to complete the payment. This field is returned only for UPI intent payments.

qr_code
string <base64>

Base64 encoded string of the QR code image. This field is returned only for UPI QR payments.

Request samples

Content type
application/json
Example
{
  • "payment_method": "upi",
  • "investor_id": "string",
  • "orders": [
    ],
  • "bank_id": "string",
  • "amount": "string",
  • "payment_mode": "intent",
  • "callback_url": "http://example.com"
}

Response samples

Content type
application/json
{
  • "payment_id": "string",
  • "redirect_url": "string",
  • "intent_url": "string",
  • "qr_code": "string"
}

List payments (v2)

List payments (v2)

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

from_date
string <date>

Payment date

to_date
string <date>

Payment date

status
string (payment_status)
Enum: "initiated" "processing" "success" "failed"

Payment status

payment_method
string (payment_method)
Enum: "upi" "neft_rtgs" "netbanking"
investor_id
string

Investor Id

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects

Response samples

Content type
application/json
{
  • "count": 0,
  • "previous": "http://example.com",
  • "results": [
    ]
}

Initiate payment (v2)

Pay through UPI, Net-Banking. Payment for multiple order numbers is supported. (v2)

Payment callback redirect

You may provide a callback_url. After the payment flow completes, the investor will be redirected to your callback_url with the following query parameter appended:

Parameter Type Description
payment_id string The payment ID for this transaction

Example redirect

https://your-app.com/payment/callback?payment_id=PAY123456
Authorizations:
OAuth2
Request Body schema: application/json

Payment detail

payment_method
required
string (payment_method)
investor_id
required
string
required
Array of objects

Orders

bank_id
required
string
amount
required
string
upi_id
required
string
callback_url
string <uri>

Responses

Response Schema: application/json
payment_id
string
redirect_url
string

URL to which the user should be redirected to complete the payment. This field is returned only for non-UPI payment methods.

intent_url
string

URL to which the user should be redirected to complete the payment. This field is returned only for UPI intent payments.

qr_code
string <base64>

Base64 encoded string of the QR code image. This field is returned only for UPI QR payments.

Request samples

Content type
application/json
Example
{
  • "payment_method": "upi",
  • "investor_id": "string",
  • "orders": [
    ],
  • "bank_id": "string",
  • "amount": "string",
  • "upi_id": "string",
  • "callback_url": "http://example.com"
}

Response samples

Content type
application/json
{
  • "payment_id": "string",
  • "redirect_url": "string",
  • "intent_url": "string",
  • "qr_code": "string"
}

Retrieve payment detail

Retrieve payment detail

Authorizations:
OAuth2
path Parameters
id
required
string

Payment id

Responses

Response Schema: application/json
payment_id
string
date
string <date>
payment_method
string (payment_method)
investor_id
string
Array of objects

Orders

bank_id
string
amount
string
intent_url
string
qr_code
string <base64>
status
string (payment_status)
Enum: "initiated" "processing" "success" "failed"

Response samples

Content type
application/json
Example
{
  • "payment_method": "upi",
  • "investor_id": "string",
  • "orders": [
    ],
  • "bank_id": "string",
  • "amount": "string",
  • "intent_url": "string",
  • "qr_code": "string",
  • "status": "initiated"
}

Retrieve payment detail (v2)

Retrieve payment detail (v2)

Authorizations:
OAuth2
path Parameters
id
required
string

Payment id

Responses

Response Schema: application/json
payment_id
string
date
string <date>
payment_method
string (payment_method)
investor_id
string
Array of objects

Orders

bank_id
string
amount
string
status
string (payment_status)
Enum: "initiated" "processing" "success" "failed"

Response samples

Content type
application/json
Example
{
  • "payment_method": "upi",
  • "investor_id": "string",
  • "orders": [
    ],
  • "bank_id": "string",
  • "amount": "string",
  • "status": "initiated"
}

List banks

Returns list of banks details with specified payment mode.

Authorizations:
OAuth2
query Parameters
limit
number [ 1 .. 100 ]
Default: 20

Number of items to return

offset
number >= 0
Default: 0

Number of items to skip before starting to collect the result set

type
string (bank_type)
Enum: "direct" "nodal"
payment_method
string (payment_method)
Enum: "upi" "neft_rtgs" "netbanking"

Responses

Response Schema: application/json
count
integer
next
string or null <uri>
previous
string or null <uri>
Array of objects (bank_master)

Response samples

Content type
application/json
{}

Feeds

Feeds

Upload RTA Feed

Upload RTA Feed received from CAMS, and KARVY

Authorizations:
OAuth2
Request Body schema: multipart/form-data

Upload RTA feed request body

rta
required
string
Enum: "cams" "karvy"
file
required
string <binary>
from_date
required
string <date>

The date from which the RTA feed is applicable.

Full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21

to_date
required
string <date>

The date till which the RTA feed is applicable.

Full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21

Responses

Request samples

curl --request POST '{BASE URL}/rta_feeds' \
--header 'Authorization: Bearer eyJh...' \
--form 'rta="cams"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/cams.csv"'

Response samples

Content type
application/json
{
  • "id": "string"
}

RTA Feed's Status

Get the status of the uploaded RTA Feed.

Authorizations:
OAuth2
path Parameters
id
required
string

The unique identifier of the RTA Feed.

Responses

Response Schema: application/json
id
required
string
status
required
string
Enum: "processing" "success" "failed"
message
string

Reason for failure. Not available when status is success.

Response samples

Content type
application/json
{
  • "id": "string",
  • "status": "processing",
  • "message": "string"
}

Upload Report Feed

Upload a new report feed.

Authorizations:
OAuth2
Request Body schema: multipart/form-data

Upload Report feed request body

type
required
string
Enum: "client_master" "fatca" "mandate" "sip_registration" "stp_registration" "swp_registration"
file
required
string <binary>

Responses

Request samples

curl --request POST '{BASE URL}/report-feeds' \
--header 'Authorization: Bearer eyJh...' \
--form 'type="client_master"' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/client_master.csv"'

Response samples

Content type
application/json
{
  • "batch_id": "string"
}

Report Feed Status

Get the processing status of a report feed.

Authorizations:
OAuth2
query Parameters
batch_id
required
string

Responses

Response Schema: application/json
id
required
string <uuid>
status
required
string
Enum: "processing" "success" "failed"
message
string or null
required
mandate_metadata (object) or client_master_metadata (object) or fatca_metadata (object) or sip_registration_metadata (object) or stp_registration_metadata (object) or swp_registration_metadata (object)

Response samples

Content type
application/json
Example
{
  • "id": "de0539a5-05ac-4d41-bf1c-12efd84f86",
  • "status": "success",
  • "message": null,
  • "metadata": {
    }
}

Risk Assessment

List questions Deprecated

Provides questionaire for risk assessment

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
question_id
string
question
string
Array of objects (risk_assessment_question_option)
Array of objects (risk_assessment_input_field)

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve investor's risk assessment Deprecated

Retrieve investor's risk assessment

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
assessment_date
string <date>
observations
Array of strings
risk_profile
string
Enum: "conservative" "moderately_conservative" "balanced" "moderately_agressive" "aggressive"
risk_score
number

Response samples

Content type
application/json
{
  • "assessment_date": "2019-08-24",
  • "observations": [
    ],
  • "risk_profile": "balanced",
  • "risk_score": 54.5
}

Create investor's risk assessment Deprecated

Create investor's risk assessment

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data

Risk Profile Answers

required
Array of objects

Responses

Request samples

Content type
multipart/form-data
{
  "answers": [
    {
      "question_id": "1",
      "options": [
        {
          "option_id": "10"
        }
      ]
    },
    {
      "question_id": "2",
      "options": [
        {
          "option_id": "21"
        },
        {
          "option_id": "22"
        }
      ],
      "inputs": [
        {
          "name": "amount",
          "value": "5000000"
        }
      ]
    },
    {
      "question_id": "3",
      "options": [
        {
          "option_id": "20",
          "inputs": [
            {
              "name": "target_year",
              "value": "2025"
            },
            {
              "name": "amount",
              "value": "50000"
            }
          ]
        }
      ]
    }
  ]
}

Get risk assessment questionnaire

Use the question_id and option_id values from this response when submitting answers to POST /mf/v2/risk-assessment.

Authorizations:
OAuth2

Responses

Response Schema: application/json
Array
question_id
required
string
question
required
string
required
Array of objects (RiskAssessmentV2QuestionOption)

Response samples

Content type
application/json
[
  • {
    }
]

Submit risk assessment answers

Accepts answers to all risk assessment questions and returns a normalised risk score along with the investor's risk profile and qualitative observations.

Authorizations:
OAuth2
Request Body schema: application/json

Risk assessment answers

required
Array of objects

Must contain exactly one answer per question in the questionnaire.

Responses

Response Schema: application/json
risk_score
required
number
risk_profile
required
string
Enum: "low" "low_to_moderate" "moderate" "moderately_high" "high" "very_high"
required
object

Score range (min/max) for each risk profile. Keys match the possible values of risk_profile.

observations
required
Array of strings

Qualitative observations corresponding to the risk profile.

Request samples

Content type
application/json
{
  • "answers": [
    ]
}

Response samples

Content type
application/json
{
  • "risk_score": 52,
  • "risk_profile": "moderate",
  • "score_ranges": {
    },
  • "observations": [
    ]
}

CAS

Upload CAS

Upload CAS (Consolidated Account Statement).

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Request Body schema: multipart/form-data

Upload CAS

file
required
string <binary>
password
required
string

Responses

Response Schema: application/json
cas_id
string

Request samples

curl --request POST '{BASE URL}/investors/{id}/cas' \
--header 'Authorization: Bearer eyJh...' \
--form 'file=@"/C:/Users/Tarrakki/Desktop/david_cas.pdf"' \
--form 'password="ABCDP4589M"'

Response samples

Content type
application/json
{
  • "cas_id": "string"
}

CAS Deprecated

Generate and retrieve Consolidated Account Statement (CAS).

Note: this API requires investor's consent. Use Send OTP and Verify OTP APIs to obtain the investor consent.

Authorizations:
OAuth2
Request Body schema: application/json

CAS

auth_ref
required
string <uuid>

Authorization reference. i.e., otp_id

Responses

Response Schema: application/json
cas_type
string
pan
string
mobile
string
email
string
Array of objects (data)
Array of objects (portfolio-2)
object (investor_detail)
statementHoldingFilter
string

Request samples

Content type
application/json
{
  • "auth_ref": "a9ac3845-212f-4f9c-83f4-49a2136de7d1"
}

Response samples

Content type
application/json
Example
{
  • "cas_type": "summarized",
  • "pan": "string",
  • "mobile": "string",
  • "email": "string",
  • "data": [
    ],
  • "portfolio": [
    ],
  • "investorDetails": {
    },
  • "statementHoldingFilter": "string"
}

CAS Deprecated

Generate and retrieve Consolidated Account Statement (CAS).

Note: this API requires investor's consent. Use Send OTP and Verify OTP APIs to obtain the investor consent.

Authorizations:
OAuth2
path Parameters
id
required
string <uuid>

Auth Reference

Responses

Response Schema: application/json
cas_type
string
pan
string
mobile
string
email
string
Array of objects (data)
Array of objects (portfolio-2)
object (investor_detail)
statementHoldingFilter
string

Response samples

Content type
application/json
Example
{
  • "cas_type": "summarized",
  • "pan": "string",
  • "mobile": "string",
  • "email": "string",
  • "data": [
    ],
  • "portfolio": [
    ],
  • "investorDetails": {
    },
  • "statementHoldingFilter": "string"
}

Initiate CAS (v2)

Initiate a Consolidated Account Statement (CAS) request.

Note: To test the CAS API in UAT, please contact us to get a valid testing PAN, mobile number, and their combination.

Authorizations:
OAuth2
Request Body schema: application/json
cas_type
required
string

Type of CAS statement

pan
required
string

PAN number of the investor

mobile
required
string

Mobile number of the investor. Required when email is not provided.

email
required
string

Email of the investor. Required when mobile is not provided.

callback_url
required
string <uri>

URL to redirect after MFC process completion.

Note: We will append cas_id and status as query parameters when redirecting.

Status Enum: "initiated", "redirected", "qr_generated", "qr_uploaded", "qr_validated", "qr_invalid", "completed", "failed"

Responses

Response Schema: application/json
id
required
string <uuid>

ID of the CAS request

redirection_url
required
string <uri>

URL to redirect the user to MFC portal

Request samples

Content type
application/json
Example
{
  • "cas_type": "summarized",
  • "pan": "string",
  • "mobile": "string",
  • "email": "string",
  • "callback_url": "http://example.com"
}

Response samples

Content type
application/json
{}

Upload CAS QR code (v2)

Upload CAS QR code for validation and response generation.

Authorizations:
OAuth2
path Parameters
id
required
string <uuid>

ID of the CAS request

Request Body schema: multipart/form-data
qr_code
required
string <binary>

PNG file containing QR code

Responses

Request samples

curl --request POST '{BASE URL}/mf/v2/cas/{id}/upload' \
--header 'Authorization: Bearer eyJh...' \
--form 'qr_code=@"/C:/Users/Tarrakki/Desktop/qr_code.png"'

Retrieve CAS (v2)

Get CAS processing status and CAS File.

Note:

  1. The CAS file response is directly provided in standard eCAS format, without any modification. In case if you find it different than the mentioned schema, then please contact us.
  2. To see the CAS file structure, please check the response samples dropdown located on the right side of this documentation (if viewing on web) or below the API response (if viewing on mobile).
Authorizations:
OAuth2
path Parameters
id
required
string <uuid>

ID of the CAS request

Responses

Response Schema: application/json
id
required
string <uuid>

ID of the CAS request

cas_type
required
string
Enum: "summarized" "detailed"

Type of CAS statement

status
required
string
Enum: "initiated" "redirected" "qr_generated" "qr_uploaded" "qr_validated" "qr_invalid" "completed" "failed"

Status of the CAS process

cas_file
string <uri>

URL of the signed CAS file, available when status is completed

Response samples

Content type
application/json
Example
{}

Sync CAS (v2)

Sync a previously initiated Consolidated Account Statement (CAS) request.

Authorizations:
OAuth2
path Parameters
cas_id
required
string <uuid>

ID of the CAS request

Request Body schema: application/json
investor_id
required
integer

ID of the investor whose portfolio should be synced from the parsed CAS statement.

action
string
Default: "dry_run"
Enum: "dry_run" "commit"

Sync mode.

  • dry_run: parses the CAS and returns a projection of what a commit would write. No portfolio changes are persisted.
  • commit: parses the CAS and applies the changes to the investor's portfolio.

Responses

Response Schema: application/json
cas_id
required
string <uuid>

ID of the CAS request that was synced.

investor_id
required
integer

ID of the investor whose portfolio was synced.

action
required
string
Enum: "dry_run" "commit"

Sync mode that produced this response.

  • dry_run: the import_outcome block is a projection of what a commit would write.
  • commit: the import_outcome block reflects actual writes to the investor's portfolio.
required
object

Partner-facing summary of the sync invocation.

Request samples

Content type
application/json
{
  • "investor_id": 0,
  • "action": "dry_run"
}

Response samples

Content type
application/json
{
  • "cas_id": "e95ff3bd-c797-4e81-b0f4-8c8f4078f6f2",
  • "investor_id": 0,
  • "action": "dry_run",
  • "summary": {
    }
}

OTPs

Send an OTP

Sends an OTP (One Time Password) to the investor's registered email or mobile number.

Authorizations:
OAuth2
Request Body schema: application/json

Send OTP

otp_type
required
string (otp_type)
investor_id
required
string

Responses

Response Schema: application/json
otp_type
string
investor_id
string
otp_id
string
email
string <email>
mobile
string
expiry
string <date-time>

Request samples

Content type
application/json
Example
{
  • "otp_type": "nominee",
  • "investor_id": "string"
}

Response samples

Content type
application/json
Example
{
  • "otp_type": "nominee",
  • "investor_id": "string",
  • "otp_id": "string",
  • "email": "user@example.com",
  • "mobile": "string",
  • "expiry": "2019-08-24T14:15:22Z"
}

Verify OTP

Verify OTP (One Time Password)

Authorizations:
OAuth2
path Parameters
id
required
string

OTP Id

Request Body schema: application/json

Verify OTP

otp_type
required
string (otp_type)
Enum: "nominee" "buy_order" "sell_order" "sip_order" "switch_order" "stp_order" "swp_order" "bulk_order"
otp
required
number

Responses

Response Schema: application/json
otp_type
string (otp_type)
Enum: "nominee" "buy_order" "sell_order" "sip_order" "switch_order" "stp_order" "swp_order" "bulk_order"
otp
number

Request samples

Content type
application/json
{
  • "otp_type": "nominee",
  • "otp": 0
}

Response samples

Content type
application/json
{
  • "otp_type": "nominee",
  • "otp": 0
}

Resend OTP

Resend OTP (One Time Password)

Authorizations:
OAuth2
path Parameters
id
required
string

OTP Id

Responses

Response Schema: application/json
otp_id
string

Response samples

Content type
application/json
{
  • "otp_id": "string"
}

Broker Change

Generate Broker Change Form (v2)

Create broker change form generation request.

Note: Each folio uses one of two structures — funds to change broker for specific schemes, or amc_id + old_arn_code + old_broker_name ("All Schemes") to change broker for every scheme under the same folio without listing funds.

Authorizations:
OAuth2
Request Body schema: application/json
investor_id
required
string
required
Array of objects non-empty
required
object
required
object

Responses

Request samples

Content type
application/json
Example
{
  • "investor_id": "154",
  • "folios": [
    ],
  • "broker_details": {
    },
  • "applicants": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Get Broker Change Form (v2)

Get broker change form generation status and download URL (if ready).

Authorizations:
OAuth2
path Parameters
id
required
string <uuid>

The UUID of the broker change form generation request.

Responses

Response Schema: application/json
id
required
string
status
required
string
Enum: "new" "processing" "success" "failed"

Status of the background task

broker_change_forms
string <uri>

Response samples

Content type
application/json
{}

Calculators

Investment calculator

Projects the future value of a mutual fund investment for a SIP, lumpsum, or combined lumpsum_sip plan. Optionally returns a year-by-year schedule and a what-if scenario_matrix across multiple return rates and periods.

Compounding conventions

  • Lumpsum (investment_type: lumpsum) is compounded annuallyfuture_value = amount × (1 + rate)^years.
  • SIP is compounded monthly as an annuity-due (each installment invested at the start of the month).
  • Lumpsum + SIP (investment_type: lumpsum_sip) compounds the lumpsum component monthly (not annually) and the SIP component as above.
Authorizations:
OAuth2
Request Body schema: application/json

Investment projection inputs.

investment_type
required
string
Enum: "sip" "lumpsum" "lumpsum_sip"

The kind of investment to project.

object (lumpsum_config)

One-time (lumpsum) investment configuration.

object (sip_config)

Systematic Investment Plan (SIP) configuration.

expected_return
required
number

Expected annual return in percent. Must be greater than 0 and at most 100.

investment_period_value
required
integer [ 1 .. 50 ]

Investment horizon in years. Must be between 1 and 50.

investment_period_unit
string
Default: "years"
Value: "years"

Unit of the investment period. Only years is supported.

object (step_up_config)

Optional annual step-up applied to the SIP installment. When enabled is true, type and value are required.

object (scenarios_config)

Optional what-if comparison grid. When enabled is true, both return_rates and periods are required, and the response includes a scenario_matrix.

include_schedule
boolean
Default: false

Whether to include the year-by-year schedule breakdown in the response.

Responses

Response Schema: application/json
success
boolean
object

Request samples

Content type
application/json
Example
{
  • "investment_type": "lumpsum",
  • "lumpsum": {
    },
  • "expected_return": 12,
  • "investment_period_value": 3
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Webhooks

Notification Webhook

Authorizations:
ApiKeyAuth
Request Body schema: application/json
event_type
required
string (event_type)
order_type
required
string (order_type)
Enum: "buy" "sell" "sip" "switch" "switch_in" "stp" "swp" "broker_transfer_in" "broker_transfer_out"
order_id
required
string
parent_order_id
string
status
required
string (order_status)
Enum: "failed" "success" "cancelled" "payment_not_initiated" "awaiting_payment_confirmation" "payment_approved" "payment_rejected" "complete"
status_remark
string
nav
number or null <float>

NAV at which the order was processed. Populated only once the order is successfully completed at the exchange (i.e. status is complete); it is null for every earlier status. Applies to buy, sell, sip and swp orders, and represents the source/from-fund NAV for switch and stp orders.

nav_date
string or null <date>

Date of the NAV reported in nav. Populated only once the order is complete; null for all earlier statuses.

to_fund_nav
number or null <float>

NAV of the target (switch-in) fund. Sent only for switch and stp orders, and populated only once the order is complete; null before completion. Not present for other order types.

to_fund_nav_date
string or null <date>

Date of the NAV reported in to_fund_nav. Sent only for switch and stp orders and populated only once the order is complete; null before completion.

Responses

Request samples

Content type
application/json
Example
{
  • "event_type": "order_status_update",
  • "order_type": "buy",
  • "order_id": "string",
  • "parent_order_id": "string",
  • "status": "failed",
  • "status_remark": "string",
  • "nav": 0,
  • "nav_date": "2019-08-24",
  • "to_fund_nav": 0,
  • "to_fund_nav_date": "2019-08-24"
}

Subscribe to an event.

Subscribe to a webhook

Authorizations:
OAuth2
Request Body schema: application/json

Subscribe to an event notification

event_type
required
string (event_type)
Enum: "order_status_update" "investor_status_update"
api_key
required
string
url
required
string <url>

Responses

Response Schema: application/json
id
string

subscription id

Request samples

Content type
application/json
{
  • "event_type": "order_status_update",
  • "api_key": "string",
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "id": "string"
}

Subscribe to an event. (v2)

Subscribe to a webhook (v2)

Authorizations:
OAuth2
Request Body schema: application/json

Subscribe to an event notification

event_type
required
string (v2_event_type)
Enum: "order_status_update" "investor_status_update" "mandate_status_update"
api_key
required
string
url
required
string <url>

Responses

Response Schema: application/json
id
string

subscription id

Request samples

Content type
application/json
{
  • "event_type": "order_status_update",
  • "api_key": "string",
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "id": "string"
}