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.

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"

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
{}

PAN Verification

Verifies PAN details

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

Permanent Account Number

name
required
string

Combination of first name, middle name, and last name or name on the PAN card.

dob
required
string <date>

Date of Birth

father_name
required
string

Combination of first name, middle name, and last name.

consent
required
boolean
consent_purpose
required
string [ 20 .. 50 ] characters

Responses

Response Schema: application/json
type
string
Enum: "individual" "company" "hindu_undivided_family" "body_of_individuals" "association_of_persons" "government_agency" "artificial_juridicial_person" "local_authority" "limited_liability_partnership" "trust"
pan
string
name
string
Enum: "match" "mismatch"
dob
string
Enum: "match" "mismatch"
father_name
string
Enum: "match" "mismatch"
status
string
Enum: "valid" "fake" "deactivated" "invalid" "amalgamation" "acquisition" "death" "dissolution" "liquidated" "merger" "partition" "split" "under_liquidation"
PAN StatusDescription
validExisting and Valid
fake

Marked as Fake
deactivated
Marked as Deactivated
invalid
Not present in Income Tax Department (ITD) database/Invalid PAN
amalgamationExisting and Valid but event marked as Amalgamation in ITD database
acquisitionExisting and Valid but event marked as Acquisition in ITD database
deathExisting and Valid but event marked as Death in ITD database
dissolutionExisting and Valid but event marked as Dissolution in ITD database
liquidatedExisting and Valid but event marked as Liquidated in ITD database
mergerExisting and Valid but event marked as Merger in ITD database
partitionExisting and Valid but event marked as Partition in ITD database
splitExisting and Valid but event marked as Split in ITD database
under_liquidationExisting and Valid but event marked as Under Liquidation in ITD database
aadhaar_seeding_status
string
Enum: "successful" "unsuccessful" "not_seeded" "not_applicable"
Aadhaar Seeding StatusDescription
successfulAadhaar seeding is successful
unsuccessfulAadhaar seeding is unsuccessful
not_seededAadhaar is not seeded
not_applicable Aadhaar seeding not applicable for non-indivduals

Request samples

Content type
application/json
{
  • "pan": "ABCPD1234X",
  • "name": "John M Doe",
  • "dob": "2000-01-31",
  • "father_name": "Michel Doe",
  • "consent": true,
  • "consent_purpose": "Identity verification for mutual fund investment"
}

Response samples

Content type
application/json
{
  • "type": "individual",
  • "pan": "ABCPD1234X",
  • "first_name": "match",
  • "middle_name": "match",
  • "last_name": "match",
  • "status": "valid",
  • "aadhaar_seeding_status": "successful"
}

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

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)

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"
}

Retrieve investor detail (v2)

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

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 <= 70 characters

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)

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",
  • "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: 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
string (investor_type)

Not modifiable after investor is created

first_name
string <= 70 characters

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)

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_optional)

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": {
    }
}

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

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>

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
name
string

Name of the nominee

relation
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
integer [ 1 .. 100 ]

Percentage of share to allocate

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

Type of identity document

identity_value
string

Value of the identity document

email
string

Nominee's email address

mobile_number
string

Nominee's mobile number

mobile_country_code
string

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

minor
boolean

Whether the nominee is a minor (under age 18)

guardian_name
string

Name of the guardian (required if nominee is a minor)

guardian_relation
string

Guardian's relation with the nominee (required if nominee is a minor)

guardian_identity_type
string
Enum: "pan" "aadhar" "driving_license" "passport"

Type of guardian's identity document (required if nominee is a minor)

guardian_identity_value
string

Value of the guardian's identity document (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)

any

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)

any

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)

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"
}

Holdings

Holdings

Portfolio

Portfolio

Authorizations:
OAuth2
path Parameters
id
required
string

Investor id

Responses

Response Schema: application/json
Array
folio
string
fund_id
string
fund_name
string
nav_date
string <date>
nav
number

Last available NAV of the fund

units
number
total_investment
number
current_value
number
absolute_return
number
xirr
number
asset_class
string
Enum: "equity" "debt" "hybrid"

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

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

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_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
[
  • {
    }
]

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

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
Array of objects (historical_nav)

NAV historical data

Array of objects (exit_load)
Array of objects (fund_managers)
Array of objects (benchmarks)
Array of objects (holdings)
Array of objects (holdings)
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",
  • "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,
  • "nav_history": [
    ],
  • "exit_loads": [
    ],
  • "managers": [
    ],
  • "benchmarks": [
    ],
  • "top_ten_holdings": [
    ],
  • "detailed_holdings": [
    ],
  • "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
[
  • {
    }
]

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
{}

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": [
    ]
}

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

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"
}

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": [
    ]
}

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) for the authenticated user's organization. This endpoint combines the functionality of the previous separate SIP, STP, and SWP list endpoints.

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

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

Filter by order status

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": [
    ]
}

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"
}

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"
}

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"
            }
          ]
        }
      ]
    }
  ]
}

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

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"
}

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)
pan
required
string = 10 characters

Permanent Account Number (PAN) of the investor.

email
string

Registered email id of the investor.

Note: email id is not required if mobile number is provided.

mobile
string

Registered mobile number of the investor.

Note: mobile number is not required if email id is provided

Responses

Response Schema: application/json
otp_type
string
otp_id
string <uuid>

Request samples

Content type
application/json
Example
{
  • "otp_type": "summarized_cas",
  • "pan": "ABCDE1234X",
  • "email": "john@somedomain.com"
}

Response samples

Content type
application/json
Example
{
  • "otp_type": "summarized_cas",
  • "otp_id": "54bb07c0-6b6d-4331-9eba-71e1c890eb14"
}

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" "summarized_cas" "detailed_cas"
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" "summarized_cas" "detailed_cas"
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"
}

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

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"
}

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"
}