NAV Navbar
shell
  • Introduction
  • Recommended Process Flow
  • Authentication
  • Investors
  • Investment Account
  • Orders
  • Instant Redemption (Early access)
  • Order History
  • Simulation (Early access)
  • MasterData
  • Helper API
  • Mandate
  • E-Mandate
  • Payments
  • KYC
  • File Upload (Early access)
  • Errors
  • Introduction

    Welcome to the Fintech Primitives Mutual Fund APIs. You can use our APIs to access Mutual Fund API endpoints, which can get information on various investors, and their respective orders in the database.

    Recommended Process Flow

    Please refer to the Documentation for further details on the following

    Get Sandbox access to start instantly.

    Authentication

    Fintech Primitives Mutual Fund System supports 3 different types of authentication: Admin, Tenant and User. It expects the API key to be included in all API requests to the server in a header in the below format:

    Authorization: Bearer JWT_TOKEN

    HMAC Token Generation

    The API uses the HMAC Token based authentication mechanism for tenant login. The HMAC generation procedure is as follows.

    HMAC Token Generation

    Generate payload to sign

    
    Generated payload will be like
    
    "POST" + "\n" +
    "d41d8cd98f00b204e9800998ecf8427e" + "\n" +
    "application/json" + "\n" +
    "20150830T123600Z" + "\n" +
    "/api/auth/tenant/login"
    

    Generate the payload to be signed in below format:

    Request Method + "\n" + body + "\n" + type + "\n" + date + "\n" + request-URI

    In the tenant login, body will be md5 of content-body which is md5(""), date is passed as header params in the request and is called MFProDate

    The format for the MFProDate header is "yyyyMMdd'T'HHmmssZ"

    Signing the payload

    Below are the steps to sign the payload :

    Step 1

    Sign the payload using HmacSHA256 algorithm and secret_key

    Step 2

    Step 2.1

    Base64 encode the above generated data and sign the data with secret_key provided by FintechPrimitives.

    The two parameters which vary in the above steps are payload and secret_key. And below is the whole process of signing

    signed_payload = Base64_StrictEncode(Hmac_SHA256(secret_key, Base64_StrictEncode(payload)))

    payload is the data generated in generate payload step.

    secret_key is the key which will be shared to each tenant either via mail or some other communication mechanism

    Step 2.2

    Format the MFProDate used in generate payload step step in YYYYMMDD format and sign it with the result of step 1 (signed_payload).

    signed_date = Base64_StrictEncode(Hmac_SHA256(signed_payload, MFProDate_IN_YYYYMMDD_FORMAT))

    The signed_payload is used as KEY to sign MFProDate_IN_YYYYMMDD_FORMAT using Hmac_SHA256 algorithm.

    Step 2.3

    Use the signed_date generated in step2 to sign the tenant_name provided by FintechPrimitives

    signed_tenant_name = Base64_StrictEncode(Hmac_SHA256(signed_date, tenant_name)

    Step 2.4

    Use signed_tenant_name generated in step3 to sign the string mfprocybrilla.

    final_hmac_token = Base64_StrictEncode(Hmac_SHA256(signed_tenant_name, "mfprocybrilla"))

    The above steps will generate the HMAC token which needs to be passed to the Tenant login API

    [POST] Tenant Login

    curl -X POST "https://tenant.example.com/api/auth/tenant/login"
      -H "
        Authorization: tenant_name:HMAC_TOKEN
        MFProDate: 20150830T123600Z
        Content-Type: application/json
      "
    

    The above command returns JSON structured like this:

    {
      "user": {
        "id": "1",
        "name": "kumar",
        "email": "test@cybrilla.com",
        "phone_number": "1234567891"
      },
      "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIyIiwic2NvcGVzIjpbInVzZXIiXSwiaXNzIjoiY3licmlsbGEtYXV0aCIsImlhdCI6MTUwMDQ3MzUxOSwiZXhwIjoxNTAwNDc1MzE5fQ.3_l86DYlmBphZuikVh4F0fHlf-4YG48xk2X__8AkdWc"
    }
    

    The endpoint allows tenants to login. A JWT_TOKEN is returned which has to be provided in other requests for authentication.

    HTTP Request

    POST https://tenant.example.com/api/auth/tenant/login

    Content-Type: application/json

    Header Parameters

    Authorization public_key:token

    public_key is the tenant name which will be shared with each tenant

    token is the HMAC token generated in the previous steps.

    MFProDate is the timestamp used in Step 2.2 in hmac-generation formatted as yyyyMMdd'T'HHmmssZ

    Investors

    [GET] Investors

    curl "https://tenant.example.com/api/onb/investors"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "last": false,
      "first": false,
      "total_pages": 5,
      "number": 2,
      "size": 10,
      "total_elements": 41,
      "investors": [
        {
          "id": 1,
          "display_name": "tony",
          "perm_addr_is_corres_addr": true,
          "ip_address": "192.168.1.1",
          "created_at": "2018-05-22T10:14:19.072Z",
          "updated_at": "2018-05-22T10:14:19.072Z",
          "meta": null,
          "nomination": {
            "skip_nomination": false,
            "nominee1": {
              "date_of_birth": "1990-10-10",
              "name": "Tony Stark",
              "relationship": "nandam",
              "guardian_name": null,
              "guardian_relationship": null,
              "allocation_percentage": 100
            },
            "nominee2": null,
            "nominee3": null
          },
          "contact_detail": {
            "email": "mfp@cybrilla.com",
            "isd_code": 91,
            "mobile": "9008580644",
            "office_telephone_no": null,
            "residence_telephone_no": null
          },
          "fatca_detail": {
            "country_of_birth_ansi_code": "IN",
            "source_of_wealth": "BUSINESS",
            "first_trc_ansi_code": null,
            "first_trc_taxid_type": null,
            "first_trc_taxid_number": null,
            "second_trc_ansi_code": null,
            "second_trc_taxid_type": null,
            "second_trc_taxid_number": null,
            "third_trc_ansi_code": null,
            "third_trc_taxid_type": null,
            "third_trc_taxid_number": null,
            "gross_annual_income": 1000000,
            "no_other_tax_residences": true
          },
          "kyc_identity_detail": {
            "name": "tony Soprano ms",
            "father_or_spouse_name": "tonys wife",
            "mothers_name": null,
            "ckyc_number": null,
            "kyc_relation": "spouse",
            "date_of_birth": "1980-10-10",
            "marital_status": "MARRIED",
            "pan_number": "AFZPN3001P",
            "gender": "female",
            "occupation": "BUSINESS",
            "residential_status": "RESIDENT_INDIVIDUAL",
            "country_of_citizenship_ansi_code": "IN",
            "pan_exempt": false,
            "pep_exposed": false,
            "pep_related": false,
            "guardian_relationship": null,
            "guardian_name": null,
            "guardian_date_of_birth": null,
            "guardian_pan_number": null
          },
          "bank_accounts": [
            {
              "id": 1,
              "account_holder_name": "tony",
              "type": "SAVINGS",
              "primary_account": true,
              "number": "00000001214415",
              "created_at": "2019-05-22T10:14:19.082Z",
              "updated_at": "2019-05-22T10:14:19.082Z",
              "branch": {
                "ifsc_code": "ICIC0000611",
                "micr_code": null,
                "branch_name": "GUDIVADA",
                "bank_name": "ICICI BANK LIMITED",
                "branch_address": "ICICI BANK LTD , D NO11218, NENIPLAZA, ELURU ROAD, GUDIVADA 521301",
                "contact": null,
                "city": "GUDIVADA",
                "district": "KRISHNA",
                "state": "ANDHRA PRADESH"
              }
            }
          ],
          "correspondence_address": {
            "line1": "1082 road",
            "line2": null,
            "line3": null,
            "type": "CORRESPONDENCE",
            "zipcode": "560112",
            "city": "Bengaluru",
            "state": "KARNATAKA",
            "country_ansi_code": "IN"
          },
          "_links": [
            {
              "href": "https://tenant.example.com/onb/investors/229",
              "rel": "self",
              "method": "GET"
            },
            {
              "href": "https://tenant.example.com/onb/investors/229",
              "rel": "update",
              "method": "POST"
            }
          ]
        }
      ]
    }
    

    This endpoint retrieves all the investors of the tenant.

    HTTP Request

    GET https://tenant.example.com/api/onb/investors

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100
    curl "https://tenant.example.com/api/onb/investors/search?query=user@cybrilla.com&bank_account_ids=1,22"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "last": false,
      "first": false,
      "total_pages": 5,
      "number": 2,
      "size": 10,
      "total_elements": 41,
      "investors": [
        {
          "id": 1,
          "display_name": "tony",
          "perm_addr_is_corres_addr": true,
          "ip_address": "192.168.1.1",
          "created_at": "2018-05-22T10:14:19.072Z",
          "updated_at": "2018-05-22T10:14:19.072Z",
          "meta": null,
          "nomination": {
            "skip_nomination": false,
            "nominee1": {
              "date_of_birth": "1990-10-10",
              "name": "Tony Stark",
              "relationship": "nandam",
              "guardian_name": null,
              "guardian_relationship": null,
              "allocation_percentage": 100
            },
            "nominee2": null,
            "nominee3": null
          },
          "contact_detail": {
            "email": "mfp@cybrilla.com",
            "isd_code": 91,
            "mobile": "9008580644",
            "office_telephone_no": null,
            "residence_telephone_no": null
          },
          "fatca_detail": {
            "country_of_birth_ansi_code": "IN",
            "source_of_wealth": "BUSINESS",
            "first_trc_ansi_code": null,
            "first_trc_taxid_type": null,
            "first_trc_taxid_number": null,
            "second_trc_ansi_code": null,
            "second_trc_taxid_type": null,
            "second_trc_taxid_number": null,
            "third_trc_ansi_code": null,
            "third_trc_taxid_type": null,
            "third_trc_taxid_number": null,
            "gross_annual_income": 1000000,
            "no_other_tax_residences": true
          },
          "kyc_identity_detail": {
            "name": "tony Soprano ms",
            "father_or_spouse_name": "tonys wife",
            "mothers_name": null,
            "ckyc_number": null,
            "kyc_relation": "spouse",
            "date_of_birth": "1980-10-10",
            "marital_status": "MARRIED",
            "pan_number": "AFZPN3001P",
            "gender": "female",
            "occupation": "BUSINESS",
            "residential_status": "RESIDENT_INDIVIDUAL",
            "country_of_citizenship_ansi_code": "IN",
            "pan_exempt": false,
            "pep_exposed": false,
            "pep_related": false,
            "guardian_relationship": null,
            "guardian_name": null,
            "guardian_date_of_birth": null,
            "guardian_pan_number": null
          },
          "bank_accounts": [
            {
              "id": 1,
              "account_holder_name": "tony",
              "type": "SAVINGS",
              "primary_account": true,
              "number": "00000001214415",
              "created_at": "2019-05-22T10:14:19.082Z",
              "updated_at": "2019-05-22T10:14:19.082Z",
              "branch": {
                "ifsc_code": "ICIC0000611",
                "micr_code": null,
                "branch_name": "GUDIVADA",
                "bank_name": "ICICI BANK LIMITED",
                "branch_address": "ICICI BANK LTD , D NO11218, NENIPLAZA, ELURU ROAD, GUDIVADA 521301",
                "contact": null,
                "city": "GUDIVADA",
                "district": "KRISHNA",
                "state": "ANDHRA PRADESH"
              }
            }
          ],
          "correspondence_address": {
            "line1": "1082 road",
            "line2": null,
            "line3": null,
            "type": "CORRESPONDENCE",
            "zipcode": "560112",
            "city": "Bengaluru",
            "state": "KARNATAKA",
            "country_ansi_code": "IN"
          },
          "_links": [
            {
              "href": "https://tenant.example.com/onb/investors/229",
              "rel": "self",
              "method": "GET"
            },
            {
              "href": "https://tenant.example.com/onb/investors/229",
              "rel": "update",
              "method": "POST"
            }
          ]
        }
      ]
    }
    

    HTTP Request

    GET https://tenant.example.com/api/onb/investors/search

    Query Parameters

    Parameter Mandatory Default Description
    query no - it can be name, email or PAN number
    bank_account_ids no - multiple bank account IDs separated by a comma
    ids no - multiple investors IDs separated by a comma
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Investor Details

    curl "https://tenant.example.com/api/onb/investors/1"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "display_name": "tony",
      "perm_addr_is_corres_addr": true,
      "ip_address": "192.168.1.1",
      "created_at": "2018-05-22T10:14:19.072Z",
      "updated_at": "2018-05-22T10:14:19.072Z",
      "meta": null,
      "nomination": {
        "skip_nomination": false,
        "nominee1": {
          "date_of_birth": "1990-10-10",
          "name": "Tony Stark",
          "relationship": "nandam",
          "guardian_name": null,
          "guardian_relationship": null,
          "allocation_percentage": 100
        },
        "nominee2": null,
        "nominee3": null
      },
      "contact_detail": {
        "email": "mfp@cybrilla.com",
        "isd_code": 91,
        "mobile": "9008580644",
        "office_telephone_no": null,
        "residence_telephone_no": null
      },
      "fatca_detail": {
        "country_of_birth_ansi_code": "IN",
        "source_of_wealth": "BUSINESS",
        "first_trc_ansi_code": null,
        "first_trc_taxid_type": null,
        "first_trc_taxid_number": null,
        "second_trc_ansi_code": null,
        "second_trc_taxid_type": null,
        "second_trc_taxid_number": null,
        "third_trc_ansi_code": null,
        "third_trc_taxid_type": null,
        "third_trc_taxid_number": null,
        "gross_annual_income": 1000000,
        "no_other_tax_residences": true
      },
      "kyc_identity_detail": {
        "name": "tony Soprano ms",
        "father_or_spouse_name": "tonys wife",
        "mothers_name": null,
        "ckyc_number": null,
        "kyc_relation": "spouse",
        "date_of_birth": "1980-10-10",
        "marital_status": "MARRIED",
        "pan_number": "AFZPN3001P",
        "gender": "female",
        "occupation": "BUSINESS",
        "residential_status": "RESIDENT_INDIVIDUAL",
        "country_of_citizenship_ansi_code": "IN",
        "pan_exempt": false,
        "pep_exposed": false,
        "pep_related": false,
        "guardian_relationship": null,
        "guardian_name": null,
        "guardian_date_of_birth": null,
        "guardian_pan_number": null
      },
      "bank_accounts": [
        {
          "id": 1,
          "account_holder_name": "tony",
          "type": "SAVINGS",
          "primary_account": true,
          "number": "00000001214415",
          "created_at": "2019-05-22T10:14:19.082Z",
          "updated_at": "2019-05-22T10:14:19.082Z",
          "branch": {
            "ifsc_code": "ICIC0000611",
            "micr_code": null,
            "branch_name": "GUDIVADA",
            "bank_name": "ICICI BANK LIMITED",
            "branch_address": "ICICI BANK LTD , D NO11218, NENIPLAZA, ELURU ROAD, GUDIVADA 521301",
            "contact": null,
            "city": "GUDIVADA",
            "district": "KRISHNA",
            "state": "ANDHRA PRADESH"
          }
        }
      ],
      "correspondence_address": {
        "line1": "1082 road",
        "line2": null,
        "line3": null,
        "type": "CORRESPONDENCE",
        "zipcode": "560112",
        "city": "Bengaluru",
        "state": "KARNATAKA",
        "country_ansi_code": "IN"
      },
      "_links": [
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "self",
          "method": "GET"
        },
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "update",
          "method": "POST"
        }
      ]
    }
    

    This endpoint shows the data of an investor identified by the given investor_id

    HTTP Request

    GET https://tenant.example.com/api/onb/investors/{investor_id}

    [POST] Create Investor

    curl -X POST "https://tenant.example.com/api/onb/investors"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "display_name": "tony",
      "perm_addr_is_corres_addr": true,
      "ip_address": "192.168.29.100",
      "bank_accounts": [
        {
          "account_holder_name": "tony",
          "number": "00000001234455",
          "primary_account": true,
          "type": "SAVINGS",
          "ifsc_code": "ICIC0000611"
        }
      ],
      "contact_detail": {
        "email": "mfp@cybrilla.com",
        "isd_code": "91",
        "mobile": "9008580644"
      },
      "fatca_detail": {
        "country_of_birth_ansi_code": "IN",
        "no_other_tax_residences": true,
        "source_of_wealth": "business",
        "gross_annual_income": 100000
      },
      "nomination": {
        "skip_nomination": false,
        "nominee1": {
          "allocation_percentage": 100,
          "date_of_birth": "1990-10-10",
          "name": "nandam",
          "relationship": "spouse"
        }
      },
      "kyc_identity_detail": {
        "pan_number": "AFZPN3001P",
        "country_of_citizenship_ansi_code": "IN",
        "date_of_birth": "1980-10-10",
        "father_or_spouse_name": "tonys wife",
        "kyc_relation": "spouse",
        "gender": "female",
        "marital_status": "single",
        "name": "tony Soprano ms",
        "occupation": "BUSINESS",
        "residential_status": "resident_individual",
        "pep_exposed": false,
        "pep_related": false
      },
      "correspondence_address": {
        "line1": "1082 harlur road",
        "pincode": "560102"
      }
    }
      '
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "display_name": "tony",
      "perm_addr_is_corres_addr": true,
      "ip_address": "192.168.1.1",
      "created_at": "2018-05-22T10:14:19.072Z",
      "updated_at": "2018-05-22T10:14:19.072Z",
      "meta": null,
      "nomination": {
        "skip_nomination": false,
        "nominee1": {
          "date_of_birth": "1990-10-10",
          "name": "Tony Stark",
          "relationship": "nandam",
          "guardian_name": null,
          "guardian_relationship": null,
          "allocation_percentage": 100
        },
        "nominee2": null,
        "nominee3": null
      },
      "contact_detail": {
        "email": "mfp@cybrilla.com",
        "isd_code": 91,
        "mobile": "9008580644",
        "office_telephone_no": null,
        "residence_telephone_no": null
      },
      "fatca_detail": {
        "country_of_birth_ansi_code": "IN",
        "source_of_wealth": "BUSINESS",
        "first_trc_ansi_code": null,
        "first_trc_taxid_type": null,
        "first_trc_taxid_number": null,
        "second_trc_ansi_code": null,
        "second_trc_taxid_type": null,
        "second_trc_taxid_number": null,
        "third_trc_ansi_code": null,
        "third_trc_taxid_type": null,
        "third_trc_taxid_number": null,
        "gross_annual_income": 1000000,
        "no_other_tax_residences": true
      },
      "kyc_identity_detail": {
        "name": "tony Soprano ms",
        "father_or_spouse_name": "tonys wife",
        "mothers_name": null,
        "ckyc_number": null,
        "kyc_relation": "spouse",
        "date_of_birth": "1980-10-10",
        "marital_status": "MARRIED",
        "pan_number": "AFZPN3001P",
        "gender": "female",
        "occupation": "BUSINESS",
        "residential_status": "RESIDENT_INDIVIDUAL",
        "country_of_citizenship_ansi_code": "IN",
        "pan_exempt": false,
        "pep_exposed": false,
        "pep_related": false,
        "guardian_relationship": null,
        "guardian_name": null,
        "guardian_date_of_birth": null,
        "guardian_pan_number": null
      },
      "bank_accounts": [
        {
          "id": 1,
          "account_holder_name": "tony",
          "type": "SAVINGS",
          "primary_account": true,
          "number": "00000001214415",
          "created_at": "2019-05-22T10:14:19.082Z",
          "updated_at": "2019-05-22T10:14:19.082Z",
          "branch": {
            "ifsc_code": "ICIC0000611",
            "micr_code": null,
            "branch_name": "GUDIVADA",
            "bank_name": "ICICI BANK LIMITED",
            "branch_address": "ICICI BANK LTD , D NO11218, NENIPLAZA, ELURU ROAD, GUDIVADA 521301",
            "contact": null,
            "city": "GUDIVADA",
            "district": "KRISHNA",
            "state": "ANDHRA PRADESH"
          }
        }
      ],
      "correspondence_address": {
        "line1": "1082 road",
        "line2": null,
        "line3": null,
        "type": "CORRESPONDENCE",
        "zipcode": "560112",
        "city": "Bengaluru",
        "state": "KARNATAKA",
        "country_ansi_code": "IN"
      },
      "_links": [
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "self",
          "method": "GET"
        },
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "update",
          "method": "POST"
        }
      ]
    }
    

    This endpoint is used to create an investor.

    HTTP Request

    POST https://tenant.example.com/api/onb/investors/

    Query Parameters

    Name Mandatory type Comments
    display_name no string
    perm_addr_is_corres_addr yes boolean flag to determine if permanent_address is same as correspondence_address
    bank_accounts yes array of objects this is a list of banks accounts that can be added for the investor. You can mark only one account as Primary. For more details please refer bank account parameters.
    contact_detail yes object contact details of the investor
    fatca_detail yes object FATCA details of the investor
    nomination yes object nominee details of the investor
    kyc_identity_detail yes object identity details of the investor for KYC and Registration with AMCs
    correspondence_address yes object
    permanent_address no object mandatory if perm_addr_is_corres_addr is false
    overseas_address no object mandatory for NRI investor
    ip_address no string 192.099.10.10

    BankAccount params

    Name Mandatory type Comments
    account_holder_name yes string name of the bank account holder
    number yes string bank account number
    primary_account yes boolean whether the bank_account is primary or not
    type yes enum select one from - "SAVINGS", "CURRENT", "NRE", "NRO"
    ifsc_code yes select one of the ifsc code from ifsc codes api

    ContactDetail params

    Name Mandatory type Comments
    email yes string email ID of the investor to be reported to AMC
    isd_code yes string ISD code of the mobile / telephone number
    mobile yes string mobile number of the investor
    office_telephone_no no string
    residence_telephone_no no string

    FatcaDetail params

    Name Mandatory type Comments
    country_of_birth_ansi_code yes string ANSI code of the country, eg ANSI code of India is IN
    no_other_tax_residences yes boolean flag to determine if the investor is a tax-resident in countries other than India
    source_of_wealth yes enum values permitted: SALARY, BUSINESS, GIFT, ANCESTRAL_PROPERTY, RENTAL_INCOME, PRIZE_MONEY, ROYALTY, OTHERS
    gross_annual_income yes integer should be greater than zero
    first_trc_ansi_code no string ANSI code of the tax residency country. Mandatory if no_other_tax_residences is false
    first_trc_taxid_type no string type of tax identification (SSN Card etc..). Mandatory if first_trc_ansi_code is given
    first_trc_taxid_number no string number of the tax identification (SSN etc..). Mandatory if first_trc_ansi_code is given
    second_trc_ansi_code no string ansi code of the tax residency country
    second_trc_taxid_type no string type of tax identification (SSN Card etc..). Mandatory if second_trc_ansi_code is given
    second_trc_taxid_number no string number of the tax identification (SSN etc..). Mandatory if second_trc_ansi_code is given
    third_trc_ansi_code no string ansi code of the tax residency country
    third_trc_taxid_type no string type of tax identification (SSN Card etc..). Mandatory if third_trc_ansi_code is given
    third_trc_taxid_number no string number of the tax identification (SSN etc..). Mandatory if third_trc_ansi_code is given

    Nomination params

    Name Mandatory type Comments
    skip_nomination yes boolean Flag to determine is the investor wants to declare nominee
    nominee1 no object mandatory if skip_nomination is false
    nominee2 no object mandatory if allocation percentage of nominee1 is less than 100%
    nominee3 no object mandatory if total allocation percentage of nominee1 & nominee2 is less than 100%

    Nominee params

    Name Mandatory type Comments
    name yes string
    date_of_birth yes string date formatted as "YYYY-MM-DD"
    relationship yes string can be any relationship like (spouse/father/mother etc..)
    allocation_percentage yes integer should be from 0-100
    guardian_name no string mandatory if nominee is a minor
    guardian_relationship no string relationship of nominee with the guardian. Mandatory if nominee is a minor

    KYC IdentityDetail params

    Name Mandatory type Comments
    name yes string name of the investor as printed in the identity_proof
    father_or_spouse_name no string
    mothers_name no string
    kyc_relation no enum relationship of the investor with person mentioned in father_or_spouse_name field. Values permitted: FATHER, SPOUSE
    country_of_citizenship_ansi_code yes string ANSI code of the country of citizenship of the investor
    date_of_birth yes string date of birth of the investor in "YYYY-MM-DD" format
    gender yes enum gender of the investor. Values permitted: MALE, FEMALE, OTHERS
    marital_status yes enum marital status of the investor. Values permitted: MARRIED, SINGLE, OTHERS
    residential_status yes enum residential status of the investor. Values permitted: RESIDENT_INDIVIDUAL, NON_RESIDENT_INDIVIDUAL
    occupation yes enum occupation of the investor. Values permitted: AGRICULTURE, BUSINESS, DOCTOR, FOREX_DEALER, GOVERNMENT_SERVICE, HOUSE_WIFE, OTHERS, PRIVATE_SECTOR_SERVICE, PROFESSIONAL, PUBLIC_SECTOR_SERVICE, RETIRED, SERVICE, STUDENT.
    pan_number no string should be valid pan_number and mandatory if pan_exempt is false
    pan_exempt no boolean default to be false
    pep_exposed yes boolean flag to determine if the person is politically exposed
    pep_related yes boolean flag to determine if the person is related to a politically exposed person
    guardian_name no string mandatory if investor is minor
    guardian_relationship no string mandatory if investor is minor
    guardian_date_of_birth no string mandatory if investor is minor. Date of birth in format "YYYY-MM-DD".
    guardian_pan_number no string mandatory if investor is minor. PAN number of the guardian should be a valid PAN number.

    Address params

    Name Mandatory type Comments
    line1 yes string
    line2 no string
    line3 no string
    city no string mandatory if zipcode is given
    state no string mandatory if zipcode is given
    pincode no string mandatory if zipcode is not given
    zipcode no string mandatory if pincode is not given
    country_ansi_code no string mandatory if zipcode is given

    [POST] Update Investor

    curl -X POST "https://tenant.example.com/api/onb/investors/:investor_id"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "display_name": "tony",
      "perm_addr_is_corres_addr": true,
      "ip_address": "192.168.29.100",
      "bank_accounts": [
        {
          "id": 1,
          "account_holder_name": "tony",
          "number": "00000001234455",
          "primary_account": true,
          "type": "SAVINGS",
          "ifsc_code": "ICIC0000611"
        }
      ],
      "contact_detail": {
        "email": "mfp@cybrilla.com",
        "isd_code": "91",
        "mobile": "9008580644"
      },
      "fatca_detail": {
        "country_of_birth_ansi_code": "IN",
        "no_other_tax_residences": true,
        "source_of_wealth": "business",
        "gross_annual_income": 100000
      },
      "nomination": {
        "skip_nomination": false,
        "nominee1": {
          "allocation_percentage": 100,
          "date_of_birth": "1990-10-10",
          "name": "nandam",
          "relationship": "spouse"
        }
      },
      "kyc_identity_detail": {
        "pan_number": "AFZPN3001P",
        "country_of_citizenship_ansi_code": "IN",
        "date_of_birth": "1980-10-10",
        "father_or_spouse_name": "tonys wife",
        "kyc_relation": "spouse",
        "gender": "female",
        "marital_status": "single",
        "name": "tony Soprano ms",
        "occupation": "BUSINESS",
        "residential_status": "resident_individual",
        "pep_exposed": false,
        "pep_related": false
      },
      "correspondence_address": {
        "line1": "1082 harlur road",
        "pincode": "560102"
      }
    }
      '
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "display_name": "tony",
      "perm_addr_is_corres_addr": true,
      "ip_address": "192.168.1.1",
      "created_at": "2018-05-22T10:14:19.072Z",
      "updated_at": "2018-05-22T10:14:19.072Z",
      "meta": null,
      "nomination": {
        "skip_nomination": false,
        "nominee1": {
          "date_of_birth": "1990-10-10",
          "name": "Tony Stark",
          "relationship": "nandam",
          "guardian_name": null,
          "guardian_relationship": null,
          "allocation_percentage": 100
        },
        "nominee2": null,
        "nominee3": null
      },
      "contact_detail": {
        "email": "mfp@cybrilla.com",
        "isd_code": 91,
        "mobile": "9008580644",
        "office_telephone_no": null,
        "residence_telephone_no": null
      },
      "fatca_detail": {
        "country_of_birth_ansi_code": "IN",
        "source_of_wealth": "BUSINESS",
        "first_trc_ansi_code": null,
        "first_trc_taxid_type": null,
        "first_trc_taxid_number": null,
        "second_trc_ansi_code": null,
        "second_trc_taxid_type": null,
        "second_trc_taxid_number": null,
        "third_trc_ansi_code": null,
        "third_trc_taxid_type": null,
        "third_trc_taxid_number": null,
        "gross_annual_income": 1000000,
        "no_other_tax_residences": true
      },
      "kyc_identity_detail": {
        "name": "tony Soprano ms",
        "father_or_spouse_name": "tonys wife",
        "mothers_name": null,
        "ckyc_number": null,
        "kyc_relation": "spouse",
        "date_of_birth": "1980-10-10",
        "marital_status": "MARRIED",
        "pan_number": "AFZPN3001P",
        "gender": "female",
        "occupation": "BUSINESS",
        "residential_status": "RESIDENT_INDIVIDUAL",
        "country_of_citizenship_ansi_code": "IN",
        "pan_exempt": false,
        "pep_exposed": false,
        "pep_related": false,
        "guardian_relationship": null,
        "guardian_name": null,
        "guardian_date_of_birth": null,
        "guardian_pan_number": null
      },
      "bank_accounts": [
        {
          "id": 1,
          "account_holder_name": "tony",
          "type": "SAVINGS",
          "primary_account": true,
          "number": "00000001214415",
          "created_at": "2019-05-22T10:14:19.082Z",
          "updated_at": "2019-05-22T10:14:19.082Z",
          "branch": {
            "ifsc_code": "ICIC0000611",
            "micr_code": null,
            "branch_name": "GUDIVADA",
            "bank_name": "ICICI BANK LIMITED",
            "branch_address": "ICICI BANK LTD , D NO11218, NENIPLAZA, ELURU ROAD, GUDIVADA 521301",
            "contact": null,
            "city": "GUDIVADA",
            "district": "KRISHNA",
            "state": "ANDHRA PRADESH"
          }
        }
      ],
      "correspondence_address": {
        "line1": "1082 road",
        "line2": null,
        "line3": null,
        "type": "CORRESPONDENCE",
        "zipcode": "560112",
        "city": "Bengaluru",
        "state": "KARNATAKA",
        "country_ansi_code": "IN"
      },
      "_links": [
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "self",
          "method": "GET"
        },
        {
          "href": "https://tenant.example.com/onb/investors/229",
          "rel": "update",
          "method": "POST"
        }
      ]
    }
    

    This endpoint is used to update an existing investor's details

    HTTP Request

    POST https://tenant.example.com/api/onb/investors/{investor_id}

    Query Parameters

    All query parameters are same as create investor. Refer to create investor documentation

    In bank_accounts array, id of each bank account needs to be sent to update existing bank account. Otherwise, a new bank account will be add to the investor.

    Investment Account

    [POST] Create Investment Account

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "primary_investor_id": "1"
    }
    

    JSON response:

    {
      "message": "Investment account created.",
      "investment_account_id": 3898573529235304961,
      "primary_investor_id": 1
    }
    

    This endpoint is used to create an investment account for the investor. Investment_account_id is required to interact with the Order Management System.

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts

    Investment Account Params

    Name Mandatory Type Comments
    primary_investor_id yes integer investor ID returns in Create Investor API response

    [GET] Investment Accounts

    curl "https://tenant.example.com/api/oms/investment_accounts?investor_id=1"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "data": [
        {
          "primary_investor_id": 1,
          "secondary_investor_id": null,
          "investment_account_id": 1
        }
      ]
    }
    

    This endpoint retrieves a list of investment accounts associated with a given investor identified by the given investor_id

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts

    Query Parameters

    Parameter Mandatory Description
    investor_id yes investor ID of the investor

    Note :

    If the endpoint returns an empty array, it indicates that no investment account exists for that particular investor id.

    [GET] Investment Account Holdings

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/holdings"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "id": 12,
      "folios": [
        {
          "folio_number": "4131/34",
          "schemes": [
            {
              "isin": "INF740K01599",
              "name": "DSP BlackRock Income Opportunities Fund - Regular Plan -Growth",
              "type": "GROWTH",
              "holdings": {
                "as_on": "2018-03-12",
                "units": 83.597,
                "redeemable_units": 83.597
              },
              "market_value": {
                "as_on": "2018-03-08",
                "amount": 2368.4,
                "redeemable_amount": 2368.4
              },
              "invested_value": {
                "as_on": "2018-03-12",
                "amount": 2250
              },
              "payout": {
                "as_on": "2018-03-12",
                "amount": 0
              },
              "nav": {
                "as_on": "2018-03-08",
                "value": 28.3312
              }
            }
          ]
        },
        {
          "folio_number": "4998484493",
          "schemes": [
            {
              "isin": "INF204K01EF9",
              "name": "Reliance Medium Term Growth",
              "type": "GROWTH",
              "holdings": {
                "as_on": "2018-03-12",
                "units": 170.882,
                "redeemable_units": 170.882
              },
              "market_value": {
                "as_on": "2018-03-08",
                "amount": 6181.69,
                "redeemable_amount": 6181.69
              },
              "invested_value": {
                "as_on": "2018-03-12",
                "amount": 6000
              },
              "payout": {
                "as_on": "2018-03-12",
                "amount": 0
              },
              "nav": {
                "as_on": "2018-03-08",
                "value": 36.1752
              }
            }
          ]
        },
        {
          "folio_number": "168714",
          "schemes": [
            {
              "isin": "INF200K01180",
              "name": "SBI BLUE CHIP FUND-REGULAR PLAN GROWTH",
              "type": "GROWTH",
              "holdings": {
                "as_on": "2018-03-12",
                "units": 165.555,
                "redeemable_units": 165.555
              },
              "market_value": {
                "as_on": "2018-03-08",
                "amount": 6126.38,
                "redeemable_amount": 6126.38
              },
              "invested_value": {
                "as_on": "2018-03-12",
                "amount": 6000
              },
              "payout": {
                "as_on": "2018-03-12",
                "amount": 0
              },
              "nav": {
                "as_on": "2018-03-08",
                "value": 37.0051
              }
            }
          ]
        },
        {
          "folio_number": "2145674",
          "schemes": [
            {
              "isin": "INF205K01HY0",
              "name": "Invesco India Ultra Short Term Fund - Growth",
              "type": "GROWTH",
              "holdings": {
                "as_on": "2018-03-12",
                "units": 0.421,
                "redeemable_units": 0.421
              },
              "market_value": {
                "as_on": "2018-03-08",
                "amount": 1003.54,
                "redeemable_amount": 1003.54
              },
              "invested_value": {
                "as_on": "2018-03-12",
                "amount": 1000
              },
              "payout": {
                "as_on": "2018-03-12",
                "amount": 0
              },
              "nav": {
                "as_on": "2018-03-08",
                "value": 2383.6936
              }
            }
          ]
        },
        {
          "folio_number": "4991603125",
          "schemes": [
            {
              "isin": "INF204K01EF9",
              "name": "Reliance Medium Term Growth",
              "type": "GROWTH",
              "holdings": {
                "as_on": "2018-03-12",
                "units": 14.007,
                "redeemable_units": 14.007
              },
              "market_value": {
                "as_on": "2018-03-08",
                "amount": 506.71,
                "redeemable_amount": 506.71
              },
              "invested_value": {
                "as_on": "2018-03-12",
                "amount": 500
              },
              "payout": {
                "as_on": "2018-03-12",
                "amount": 0
              },
              "nav": {
                "as_on": "2018-03-08",
                "value": 36.1752
              }
            }
          ]
        }
      ]
    }
    

    This endpoint retrieves all folios with current holdings for the given investment_account

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/holdings

    Query Parameters

    Name Mandatory Description Example
    folios no comma separated list of folios 499183272514,499778256972,491178256912
    as_on no date till data required 1990-12-12

    Note :

    If the endpoint returns an empty array, it indicates that investment account does not have any folio numbers mapped to it.

    [GET] Investment Account Orders

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders"
      -H "Authorization: Bearer JWTTOKEN"
    

    This endpoint retrieves all orders for the given investment_account

    {
      "amc_orders": [
        {
          "id": 1616,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2019-04-03",
          "folio_number": "2106445674",
          "bank_account_id": null,
          "source_ref_id": null,
          "sip_id": null,
          "confirmed_at": "2019-04-03T14:10:00+05:30",
          "submitted_at": "2019-04-03T14:43:00+05:30",
          "succeeded_at": "2019-04-03T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-04-03T14:00:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 317,
            "name": "Invesco India Ultra Short Term Fund - Growth",
            "isin": "INF205K01HY0",
            "scheme_code": "USIG"
          }
        },
        {
          "id": 1766,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2018-03-16",
          "folio_number": "1017895054",
          "bank_account_id": null,
          "source_ref_id": "O_43034",
          "sip_id": null,
          "confirmed_at": "2018-03-16T11:10:00+05:30",
          "submitted_at": "2018-04-03T11:43:00+05:30",
          "succeeded_at": null,
          "reversed_at": "2018-04-03T15:30:23+05:30",
          "failed_at": null,
          "created_at": "2019-04-03T10:50:21+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 900,
            "name": "Aditya Birla Sun Life Cash Manager - Growth Plan",
            "isin": "INF209K01LQ0",
            "scheme_code": "43N"
          }
        },
        {
          "id": 1763,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2018-05-15",
          "folio_number": "499183273514",
          "bank_account_id": 36,
          "source_ref_id": "O_43027",
          "sip_id": null,
          "confirmed_at": "2018-05-15T13:10:00:345+05:30",
          "submitted_at": "2018-05-15T13:43:00:230+05:30",
          "succeeded_at": null,
          "reversed_at": null,
          "failed_at": "2018-04-16T10:30:23:343+05:30",
          "created_at": "2019-05-15T12:59:21:432+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 3,
            "name": "Reliance Medium Term Growth",
            "isin": "INF204K01EF9",
            "scheme_code": "IPGP"
          }
        },
        {
          "id": 1765,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2019-01-09",
          "folio_number": "SBBNAE209345",
          "bank_account_id": 36,
          "source_ref_id": "O_43033",
          "sip_id": 45,
          "confirmed_at": "2019-01-09T13:43:00:345+05:30",
          "submitted_at": "2019-01-09T13:43:00:230+05:30",
          "succeeded_at": "2019-01-09T10:30:23:343+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-01-09T12:59:21:432+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 4,
            "name": "Sundaram Diversified Equity Growth",
            "isin": "INF903J01538",
            "scheme_code": "14"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 4,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 4,
      "_links": {
        "self": {
          "href": "http://wealthapp.mft.com:9010/api/oms/investment_accounts/12/orders?state=pending&type=additional_purchase&sort=order_date&direction=desc"
        }
      }
    }
    

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders

    Query Parameters

    Parameter Mandatory Default Description Allowed values
    state no successful comma separated multiple states pending, submitted, successful, cancelled, payment_confirmed, failed, reversed
    type no - comma separated multiple types purchase, additional_purchase, redemption, redeem_all
    sort no investment_date sorting is done based on this column investment_date
    direction no desc ascending order or descending order asc or desc
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    Orders

    [POST] Create Lumpsum Order (NETBANKING)

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase/netbanking"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "bank_account_id": 1,
      "orders": [
        {
          "isin": "INF204KA1B64",
          "amount": 10000,
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        },
        {
          "isin": "INF204KA1B84",
          "amount": 10000,
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    JSON response:

    {
      "orders": [
        {
          "id": 2654461373273791985,
          "isin": "INF204KA1B64",
          "folio_number": "sgerhh2422343424",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95",
          "source_ref_id": "0987656"
        },
        {
          "id": 798881668533720940,
          "isin": "INF204KA1B84",
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    This endpoint is used to create a lumpsum netbanking order

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase/netbanking

    Note : The fund parameters mentioned in the comments below are availabe in Single Fund Schemes Detail API response. Lumpsum must be allowed for the given fund which can be confirmed by purchase_allowed flag in fund metadata.

    Lumpsum order Params

    Name Mandatory Type Comments
    bank_account_id yes integer bank account ID returns in Get Investor API response
    isin yes string fund ISIN number
    amount yes integer amount should fulfill the following conditions
    • if order is fresh purchase the amount should be between min_initial_investment and max_initial_investment and in multiple of initial_investment_multiples in fund
    • if order is additional purchase the amount should be between min_additional_investment and max_additional_investment and in multiple of additional_investment_multiples in fund
    folio_number no string mandatory if you need to place an additional purchase in the given folio number
    source_ref_id no string this is a source reference ID which will unique across system for the lumpsum order (ideally an auto generate identifier / uuid to identify a lumpsum order in tenant's application)
    user_ip no string IP address of user
    server_ip no string IP address of server

    [POST] Create Lumpsum Order (NACH)

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase/nach"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "mandate_id": 1,
      "orders": [
        {
          "isin": "INF204KA1B64",
          "amount": 10000,
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        },
        {
          "isin": "INF204KA1B84",
          "amount": 10000,
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    JSON response:

    {
      "orders": [
        {
          "id": 2654461373273791985,
          "isin": "INF204KA1B64",
          "folio_number": "sgerhh2422343424",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95",
          "source_ref_id": "0987656"
        },
        {
          "id": 798881668533720940,
          "isin": "INF204KA1B84",
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    This endpoint is used to create a lumpsum NACH order

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase/nach

    Note : The fund parameters mentioned in the comments below are availabe in Single Fund Schemes Detail API response Lumpsum must be allowed for the given fund which can be confirmed by purchase_allowed flag in fund metadata.

    Lumpsum order Params

    Name Mandatory Type Comments
    mandate_id yes integer mandate ID returns in Create Mandate API response
    isin yes string fund ISIN number
    amount yes integer amount should fulfill the following conditions
    • if order is fresh purchase the amount should be between min_initial_investment and max_initial_investment and in multiple of initial_investment_multiples in fund
    • if order is additional purchase the amount should be between min_additional_investment and max_additional_investment and in multiple of additional_investment_multiples in fund
    folio_number no string mandatory if you need to place an additional purchase in the given folio number
    source_ref_id no string this is a source reference ID which will unique across system for a lumpsum order (ideally an auto generate identifier / uuid to identify a lumpsum order in tenant's application)
    user_ip no string IP address of user
    server_ip no string IP address of server

    [POST] Create Sell Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "orders": [
        {
          "folio_number": "45323/45",
          "isin": "INF204KA1B64",
          "type": "amount",
          "amount": 1000,
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        },
        {
          "folio_number": "45323/45",
          "isin": "INF204KA1B64",
          "type": "units",
          "units": 15,
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        },
        {
          "folio_number": "45323/45",
          "isin": "INF204KA1B64",
          "redeem_all": true,
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    JSON response:

    {
      "orders": [
        {
          "id": 2654461373273791985,
          "isin": "INF204KA1B64",
          "folio_number": "sgerhh2422343424",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95",
          "source_ref_id": "0987656"
        },
        {
          "id": 798881668533720940,
          "isin": "INF204KA1B84",
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    This endpoint is used to create a sell order

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell

    Note : You can obtain redeemable_amount and redeemable_units for investment account in Get Investment Account Holdings API response

    Withdrawal order Params

    Name Mandatory Type Comments
    folio_number yes string from which folio_number you want to redeem
    isin yes string fund ISIN number
    type yes string type can be amount or units, mandatory if not redeem all
    amount no integer mandatory if type is amount, it should be lessthan or equal to redeemable_amount
    units no decimal mandatory if type is units, it should be lessthan or equal to redeemable_units
    redeem_all no boolean not to be sent if type is being sent, and if redeem_all is sent as true then type should not be provided
    source_ref_id no string this is a source reference ID which will unique across system for a lumpsum order (ideally an auto generate identifier / uuid to identify a lumpsum order in tenant's application)
    user_ip no string IP address of user
    server_ip no string IP address of server

    [POST] Create Instant Redemption Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell/instant"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "folio_number": "421227355",
      "isin": "INF10123VF4",
      "amount": 500,
      "redemption_bank_account_number": "0011212010100728645",
      "redemption_bank_account_ifsc_code": "122000004",
      "source_ref_id": "123",
      "user_ip": "192.168.1.1",
      "server_ip": "192.168.1.2"
    }
    

    JSON response:

    {
      "orders": [
        {
          "id": 11267,
          "isin": "INF109K01VF4",
          "isin_no": "INF109K01VF4",
          "source_ref_id": "kskaklkldlkas",
          "user_ip": "192.168.1.1",
          "server_ip": "192.168.1.2"
        }
      ]
    }
    

    This endpoint is used to create instant sell order

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell/instant

    Instant Withdrawal order Params

    Name Mandatory Type Comments
    folio_number yes string folio_number in which redemption to be placed
    isin yes string fund scheme's ISIN number. insta_redemption_allowed attribute of the fund_scheme should be true to fetch the details.
    amount yes integer amount should fulfill the following conditions
    redemption_bank_account_number yes string bank account number to which funds are transferred after redemption. It should be one of the bank account number returned in Pre Redemption Summary api
    redemption_bank_account_ifsc_code yes string ifsc_code of the given bank_account returned in Pre Redemption Summary api
    source_ref_id no string this is a source reference ID which will unique across system for an order (ideally an auto generate identifier / uuid to identify an order in the tenant's application)
    user_ip no string IP address of user
    server_ip no string IP address of server

    [POST] Create SIP Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "orders": [
        {
          "isin": "INF204KA1B64",
          "amount": 10000,
          "start_day": "2",
          "frequency": "MONTHLY",
          "installments": 20,
          "mandate_id": 23,
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    JSON response:

    {
      "orders": [
        {
          "id": 2654461373273791985,
          "isin": "INF204KA1B64",
          "folio_number": "sgerhh2422343424",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95",
          "source_ref_id": "0987656"
        },
        {
          "id": 798881668533720940,
          "isin": "INF204KA1B84",
          "source_ref_id": "0876789",
          "user_ip": "192.168.2.92",
          "server_ip": "192.168.2.95"
        }
      ]
    }
    

    This endpoint is used to create an SIP order SIP must be allowed for the given fund which can be confirmed by sip_allowed flag in fund metadata.

    HTTP Request

    POST https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips

    Note : The fund parameters mentioned in the comments below are availabe in Single Fund Schemes Detail API response

    Sip order Params

    Name Mandatory Type Comments
    isin yes string fund ISIN number
    amount yes integer amount should be in multiple of sip_multiples and between min_sip_amount and max_sip_amount
    start_day yes string start_day should be one of the values received in sip_frequency_data
    frequency yes string currently only "MONTHLY" frequency is supported
    installments yes integer installments should be between min_sip_installments and 1200 inclusive
    folio_number no string mandatory if you need to place an additional sip in the given folio number
    mandate_id yes integer mandate ID returns in Create Mandate API response
    source_ref_id no string this is a source reference ID which will unique across system for a sip (ideally an auto generate identifier / uuid to identify a SIP in the tenant's application)
    user_ip no string IP address of user
    server_ip no string IP address of server

    [GET] Pre Redemption Summary

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/preredemption_summary?folio_number={folio_number}&isin={isin}"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON response:

    {
      "folio_number": "427355",
      "isin": "INF109K01VF4",
      "instant_redemption": {
        "max_amount": 3766823.21025,
        "min_amount": 1,
        "allowed": true,
        "remarks": null,
        "redemption_bank_accounts": [
          {
            "account_number": "004010100728645",
            "ifsc_code": "UTIB0000004"
          }
        ]
      }
    }
    

    This endpoint gives preredemption summary for instant redemption

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/preredemption_summary?folio_number={folio_number}&isin={isin}

    Pre Redemption Request Params

    Name Mandatory Type Comments
    folio_number yes string from which folio_number you want to redeem
    isin yes string fund ISIN number. insta_redemption_allowed attribute of the fund_scheme should be true to fetch the details.

    Pre Redemption Response

    Name Type Comments
    folio_number string from which folio_number you want to redeem
    isin string fund ISIN number
    max_amount float maximum amount for which instant redemption order can be placed
    min_amount float minimum amount for which instant redemption order can be placed
    allowed boolean true/false value which shows instant redemption is Allowed or not
    remarks string in case instant redemption is not Allowed remarks shows the reason
    redemption_bank_accounts array of bank_accounts set of bank accounts to which instant redeemption order can be placed
    account_number string bank account number in order to place instant redemption order(use while placing instant redemption order)
    ifsc_code string bank ifsc_code in order to place instant redemption order(use while placing instant redemption order)

    [GET] List SIP Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON response:

    {
      "sip_orders": [
        {
          "sip_id": 15,
          "active": true,
          "amount": 80000,
          "frequency": "MONTHLY",
          "start_date": "2018-02-10",
          "installments": 11,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01UN9",
          "source_ref_id": "35256"
        },
        {
          "sip_id": 16,
          "active": true,
          "amount": 1000,
          "frequency": "MONTHLY",
          "start_date": "2017-12-12",
          "installments": 36,
          "folio_number": "1435eeeeee679",
          "mandate_id": "45",
          "isin": "INF903J01538",
          "source_ref_id": "27"
        },
        {
          "sip_id": 21,
          "active": true,
          "amount": 30000,
          "frequency": "MONTHLY",
          "start_date": "2018-03-28",
          "installments": 25,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01599",
          "source_ref_id": "O_40523"
        },
        {
          "sip_id": 22,
          "active": true,
          "amount": 2500,
          "frequency": "MONTHLY",
          "start_date": "2018-03-21",
          "installments": 24,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01599",
          "source_ref_id": "O_40526"
        },
        {
          "sip_id": 28,
          "active": true,
          "amount": 1000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-14",
          "installments": 191,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01052",
          "source_ref_id": "O_40550"
        },
        {
          "sip_id": 30,
          "active": true,
          "amount": 10000,
          "frequency": "MONTHLY",
          "start_date": "2018-06-07",
          "installments": 20,
          "folio_number": null,
          "mandate_id": "DF23",
          "isin": "INF204K01FQ3",
          "source_ref_id": "963g6322"
        },
        {
          "sip_id": 31,
          "active": true,
          "amount": 800,
          "frequency": "MONTHLY",
          "start_date": "2018-06-01",
          "installments": 48,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01599",
          "source_ref_id": "O_40558"
        },
        {
          "sip_id": 32,
          "active": true,
          "amount": 1000,
          "frequency": "MONTHLY",
          "start_date": "2018-06-01",
          "installments": 17,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01599",
          "source_ref_id": "O_40563"
        },
        {
          "sip_id": 33,
          "active": true,
          "amount": 1290,
          "frequency": "MONTHLY",
          "start_date": "2018-06-01",
          "installments": 35,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF740K01599",
          "source_ref_id": "O_40565"
        },
        {
          "sip_id": 34,
          "active": true,
          "amount": 12000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-21",
          "installments": 189,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40570"
        },
        {
          "sip_id": 35,
          "active": true,
          "amount": 12000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-21",
          "installments": 547,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40571"
        },
        {
          "sip_id": 36,
          "active": true,
          "amount": 12000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-21",
          "installments": 34,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40572"
        },
        {
          "sip_id": 37,
          "active": true,
          "amount": 12000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-21",
          "installments": 34,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01UN9",
          "source_ref_id": "O_40574"
        },
        {
          "sip_id": 38,
          "active": true,
          "amount": 25000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-22",
          "installments": 25,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01UN9",
          "source_ref_id": "O_40578"
        },
        {
          "sip_id": 39,
          "active": true,
          "amount": 3000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-23",
          "installments": 572,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40583"
        },
        {
          "sip_id": 40,
          "active": true,
          "amount": 3000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-23",
          "installments": 17,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40584"
        },
        {
          "sip_id": 41,
          "active": true,
          "amount": 1000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-28",
          "installments": 20,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01EF9",
          "source_ref_id": "O_40585"
        },
        {
          "sip_id": 42,
          "active": true,
          "amount": 3000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-23",
          "installments": 190,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40589"
        },
        {
          "sip_id": 43,
          "active": true,
          "amount": 3000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-23",
          "installments": 548,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01VA4",
          "source_ref_id": "O_40590"
        },
        {
          "sip_id": 44,
          "active": true,
          "amount": 3000,
          "frequency": "MONTHLY",
          "start_date": "2018-05-23",
          "installments": 572,
          "folio_number": null,
          "mandate_id": "7",
          "isin": "INF204K01FQ3",
          "source_ref_id": "O_40591"
        }
      ],
      "last": false,
      "total_pages": 2,
      "total_elements": 31,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 20,
      "_links": {
        "self": {
          "href": "http://wealthapp.mfpro.cybrilla.io/api/oms/investment_accounts/1111111/orders/sips"
        }
      }
    }
    

    This endpoint lists all the SIP orders

    Note :

    If the endpoint returns an empty array, it indicates that no SIP exists for that particular investor id.

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Single SIP Order Detail

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/1{sip_id}
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON response:

    {
      "sip_id": 34,
      "active": true,
      "amount": 12000,
      "frequency": "MONTHLY",
      "start_date": "2018-05-21",
      "installments": 189,
      "folio_number": null,
      "mandate_id": "7",
      "isin": "INF204K01VA4",
      "source_ref_id": "O_40570"
    }
    

    This endpoint is used to get the details of an SIP order

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}

    [GET] SIP Order Instalment

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}/installments"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON response:

    [
      {
        "id": 978,
        "type": "PURCHASE",
        "status": "SUCCESSFUL",
        "amount": 25000,
        "reverse_amount": null,
        "reverse_units": null,
        "price": null,
        "trade_date": null,
        "investment_date": "2017-09-10",
        "folio_number": "799515310622345",
        "bank_account_id": null,
        "source_ref_id": "AMC_36089",
        "sip_id": 425,
        "fund_scheme": {
          "id": 803,
          "name": "Mirae Asset Emerging Bluechip Fund - Regular Plan - Growth Option",
          "isin": "INF769K01101",
          "scheme_code": "EBRG"
        }
      }
    ]
    

    This endpoint is used to get instalment details of an SIP order

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}/installments

    Note :

    If the endpoint returns an empty array, it indicates that no SIP installments exists for that particular SIP id.

    [PATCH] Update SIP Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{invetsment_account_id}/orders/sips/{sip_id}"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "operation": "update",
      "data": {
        "mandate_id": "DQ12"
      }
    }
    

    JSON response:

    {
      "message": "successfully updated the sip"
    }
    

    This endpoint is used to update mandate id in SIP order.

    HTTP Request

    PATCH https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}

    Update SIP Order Params

    Name Mandatory Type Comments
    operation yes string update is only allowed
    mandate_id yes string mandate ID returns in Create Mandate API response

    [PATCH] Cancel SIP Order

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "operation": "deactivate"
    }
    

    JSON response:

    {
      "sip_id": 1,
      "active": false,
      "amount": 10000,
      "frequency": "MONTHLY",
      "start_date": "2017-10-25",
      "installments": 20,
      "folio_number": null,
      "mandate_id": "DF23",
      "fund_scheme_id": 1,
      "fund_type": "GROWTH",
      "_links": {
        "self": {
          "href": "http://dev.mfpro.cybrilla.io/api/oms/investment_accounts/1/orders/sips/1"
        }
      }
    }
    

    This endpoint is used to cancel an SIP order

    HTTP Request

    PATCH https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}

    Cancle SIP Order Params

    Name Mandatory Type Comments
    operation yes string deactivate is only allowed

    [PATCH] Cancel SIP Order Instalment

    curl -X POST "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "operation": "cancel_next_installment"
    }
    

    JSON response:

    {
      "id": 2,
      "type": "PURCHASE",
      "status": "CANCELLED",
      "amount": 10000,
      "reverse_amount": null,
      "reverse_units": null,
      "nav": null,
      "stt": null,
      "trade_date": null,
      "investment_date": "2017-10-25",
      "folio_number": null,
      "bank_account_id": null,
      "fund_scheme": {
        "id": 1,
        "name": "Motilal Oswal MOSt Focused Multicap 35 Fund Growth",
        "scheme_code": "CPGP"
      }
    }
    

    This endpoint is used to cancel the next upcoming installment of an SIP order

    HTTP Request

    PATCH https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sips/{sip_id}

    Cancle next installment of SIP Order Params

    Name Mandatory Type Comments
    operation yes string cancel_next_installment is only allowed

    [GET] Orders

    curl "https://tenant.example.com/api/oms/orders"
      -H "Authorization: Bearer JWTTOKEN"
    
    {
      "amc_orders": [
        {
          "id": 1616,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2019-04-03",
          "folio_number": "2106445674",
          "bank_account_id": null,
          "source_ref_id": null,
          "sip_id": null,
          "confirmed_at": "2019-04-03T14:10:00+05:30",
          "submitted_at": "2019-04-03T14:43:00+05:30",
          "succeeded_at": "2019-04-03T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-04-03T14:00:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 317,
            "name": "Invesco India Ultra Short Term Fund - Growth",
            "isin": "INF205K01HY0",
            "scheme_code": "USIG"
          }
        },
        {
          "id": 1766,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2018-03-16",
          "folio_number": "1017895054",
          "bank_account_id": null,
          "source_ref_id": "O_43034",
          "sip_id": null,
          "confirmed_at": "2018-03-16T11:10:00+05:30",
          "submitted_at": "2018-04-03T11:43:00+05:30",
          "succeeded_at": null,
          "reversed_at": "2018-04-03T15:30:23+05:30",
          "failed_at": null,
          "created_at": "2019-04-03T10:50:21+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 900,
            "name": "Aditya Birla Sun Life Cash Manager - Growth Plan",
            "isin": "INF209K01LQ0",
            "scheme_code": "43N"
          }
        },
        {
          "id": 1763,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2018-05-15",
          "folio_number": "499183273514",
          "bank_account_id": 36,
          "source_ref_id": "O_43027",
          "sip_id": null,
          "confirmed_at": "2018-05-15T13:10:00:345+05:30",
          "submitted_at": "2018-05-15T13:43:00:230+05:30",
          "succeeded_at": null,
          "reversed_at": null,
          "failed_at": "2018-04-16T10:30:23:343+05:30",
          "created_at": "2019-05-15T12:59:21:432+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 3,
            "name": "Reliance Medium Term Growth",
            "isin": "INF204K01EF9",
            "scheme_code": "IPGP"
          }
        },
        {
          "id": 1765,
          "type": "ADDITIONAL_PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2019-01-09",
          "folio_number": "SBBNAE209345",
          "bank_account_id": 36,
          "source_ref_id": "O_43033",
          "sip_id": 45,
          "confirmed_at": "2019-01-09T13:43:00:345+05:30",
          "submitted_at": "2019-01-09T13:43:00:230+05:30",
          "succeeded_at": "2019-01-09T10:30:23:343+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-01-09T12:59:21:432+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 4,
            "name": "Sundaram Diversified Equity Growth",
            "isin": "INF903J01538",
            "scheme_code": "14"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 4,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 4,
      "_links": {
        "self": {
          "href": "http://wealthapp.mft.com:9010/api/oms/investment_accounts/12/orders?state=pending&type=additional_purchase&sort=order_date&direction=desc"
        }
      }
    }
    

    This endpoint retrieves all the orders mapped to the tenant

    HTTP Request

    GET https://tenant.example.com/api/oms/orders

    Query Parameters

    Parameter Mandatory Default Description Allowed values
    state no successful comma separated multiple states pending, submitted, successful, cancelled, payment_confirmed, failed, reversed
    type no - comma separated multiple types purchase, additional_purchase, redemption, redeem_all
    sort no investment_date sorting is done based on this column investment_date
    direction no desc ascending order or descending order asc or desc
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    Instant Redemption (Early access)

    These are Instant Redemption APIs to directly interact with instant redemption service privided by AMCs. Order status tracking is not possible while using these APIs.

    To track the order status and unit allocation, please use APIs under Orders section.

    Supported AMCs:

    Pre Redemption Summary

    curl -X GET "https://tenant.example.com/api/instant_redemption/pre_redemption_summary?isin={isin}&folio_number={folio_number}"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response

    {
      "folio_number": "1038234271",
      "isin": "INF209K01RU9",
      "instant_redemption": {
        "allowed": true,
        "min_amount": 100,
        "max_amount": 35801,
        "multiples": 1,
        "redemption_bank_accounts": [
          {
            "account_number": "10211234921",
            "ifsc_code": "SBIN0001288"
          }
        ],
        "remarks": "Record retrieved successfully"
      }
    }
    

    Get pre redemption summary for given isin and folio_number.

    HTTP Request

    GET https://tenant.example.com/api/instant_redemption/pre_redemption_summary?isin={isin}&folio_number={folio_number}

    Request Parameters

    Name Mandatory Type Comments
    folio_number Yes string Folio number of the requested fund
    isin Yes string ISIN number of the requested fund

    Response Parameters

    Name Type Comments
    folio_number string Folio number of the requested fund
    isin string ISIN number of the reqeusted fund
    instant_redemption object Redemption details for the configured scheme

    Instant Redemption

    Name Type Comments
    allowed boolean Is instant redemption allowed for the requested data
    min_amount decimal Minumum amount for instant redemption
    max_amount decimal Maximum amount eligble for instant redemption. Value will be '0' if allowed is false
    multiples decimal Multiples in which order amount has to be passed
    redemption_bank_accounts array List of investor bank accounts to which funds can be remitted.
    remarks string Return message or remarks from amc

    Redemption Bank Accounts

    Name Type Comments
    account_number string Eligbile Bank account number.
    ifsc_code string Eligbile Bank account IFSC code.

    Place Order

    curl -X POST "https://tenant.example.com/api/instant_redemption/order"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    Place an Instant Redemption order with respective amc for given isin and folio number. The order contains information such as isin, folio number, bank account number and bank IFSC code. The bank account number and IFSC code should be one of the bank account details retured in /pre_redemption_summary service.

    HTTP Request

    POST https://tenant.example.com/api/instant_redemption/order

    JSON request

    {
      "folio_number": "455555",
      "isin": "INF109K01VF4",
      "amount": "500",
      "redemption_bank_account_number": "00464748728645",
      "redemption_bank_account_ifsc_code": "UTIB0000100"
    }
    

    JSON response

    {
      "order_reference": "3361202",
      "created_at": "2019-05-24T12:58:23+05:30",
      "remarks": "Transaction Successful",
      "redemption_mode": "INSTANT",
      "response_verbatim": {
        "TRANID": "3361202",
        "TRXN_DATE": "24/05/2019",
        "TRXN_TIME": "12:58:23 PM",
        "BANK_RRN": "914412759801",
        "IMPS_CODE": "0",
        "IMPS_STATUS": "Transaction Successful"
      }
    }
    

    Request Parameters

    Name Mandatory Type Comments
    isin yes string Fund ISIN number
    folio_number yes string Fund folio number
    amount yes string Amount for instant redemption. Should be greater than minumum amount ant in multiples of value from pre-redemption-summary
    redemption_bank_account_number yes string Bank Account number associated with reqested folio.
    redemption_bank_account_ifsc_code yes string Bank IFSC code for the bank associtated with requested folio.

    Response Parameters

    Name Type Comments
    order_reference string Transaction Reference from amc
    created_at string Date Time of the trade.
    remarks string Any return message or remarks from amc.
    redemption_mode string INSTANT/ NORMAL
    • INSTANT if order is processed as instant redemption order by amc
    • NORMAL if order is processed as an normal order by amc
    response_verbatim object The entire reponse object from amc. Differs for each amc.

    Order History

    [GET] Fetch all orders

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/investment_accounts/3898573529235304961/orders"
        }
      },
      "amc_orders": [
        {
          "id": 28805,
          "type": "PURCHASE",
          "status": "SUCCESSFUL",
          "amount": 10000,
          "reverse_amount": 10000,
          "reverse_units": 188.214,
          "price": 53.131,
          "trade_date": "2018-12-12",
          "investment_date": "2018-12-14",
          "folio_number": "UE344KCIMIZOLP10121233",
          "bank_account_id": null,
          "source_ref_id": "pre 1dd2sssss",
          "sip_id": null,
          "confirmed_at": "2018-12-12T14:10:00+05:30",
          "submitted_at": "2018-12-12T14:43:00+05:30",
          "succeeded_at": "2018-12-12T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-12-12T14:00:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 492,
            "name": "L&T  Tax Advantage Fund-Regular Plan-Growth",
            "isin": "INF677K01064",
            "scheme_code": "FTAFG"
          }
        },
        {
          "id": 28806,
          "type": "PURCHASE",
          "status": "SUCCESSFUL",
          "amount": 10000,
          "reverse_amount": 10000,
          "reverse_units": 188.214,
          "price": 53.131,
          "trade_date": "2018-12-12",
          "investment_date": "2018-12-14",
          "folio_number": "33YXRAE5XQWLBA5Q1123444",
          "bank_account_id": null,
          "source_ref_id": "pre 1dd2ssddsss",
          "sip_id": null,
          "confirmed_at": "2018-12-12T12:02:00+05:30",
          "submitted_at": "2018-12-12T12:43:00+05:30",
          "succeeded_at": "2018-12-12T12:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2019-12-12T12:02:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 492,
            "name": "L&T  Tax Advantage Fund-Regular Plan-Growth",
            "isin": "INF677K01064",
            "scheme_code": "FTAFG"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 2,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 2
    }
    

    This endpoint retrieves all orders placed by the investor

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders

    Parameter Mandatory Default Description Allowed values
    state no successful comma separated multiple states pending, submitted, successful, cancelled, payment_confirmed, failed, reversed
    type no - comma separated multiple types purchase, additional_purchase, redemption, redeem_all
    sort no investment_date sorting is done based on this column investment_date
    direction no desc ascending order or descending order asc or desc
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Fetch Single Order

    curl "https://tenant.example.com/api/oms/investment_accounts/1/orders/311"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "id": 11267,
      "type": "REDEMPTION",
      "status": "FAILED",
      "amount": 500,
      "reverse_amount": null,
      "reverse_units": null,
      "price": null,
      "trade_date": null,
      "investment_date": "2019-04-03",
      "folio_number": "427352125",
      "bank_account_id": null,
      "source_ref_id": "kskaklkldlkas",
      "sip_id": null,
      "confirmed_at": "2019-04-03T14:10:00+05:30",
      "submitted_at": "2019-04-03T14:43:00+05:30",
      "succeeded_at": "2019-04-03T15:30:23+05:30",
      "reversed_at": null,
      "failed_at": null,
      "created_at": "2019-04-03T14:00:00+05:30",
      "redemption_mode": "INSTANT",
      "redemption_bank_account_number": "0040101007122128645",
      "redemption_bank_account_ifsc_code": "UTIB00122100004",
      "fund_scheme": {
        "id": 1231,
        "name": "Test Data Liquid Institutional Plan - Growth",
        "isin": "INF109K011212VF4",
        "scheme_code": "155124"
      }
    }
    

    This endpoint retrieves order with given amc_order_id

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/{amc_order_id}

    [GET] Fetch purchase orders

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/investment_accounts/3898573529235304961/orders/purchase"
        }
      },
      "amc_orders": [
        {
          "id": 12,
          "type": "PURCHASE",
          "status": "PENDING",
          "amount": 1000,
          "reverse_amount": 1000,
          "reverse_units": 9.6871,
          "price": 103.2297,
          "trade_date": "2018-04-03",
          "investment_date": "2017-11-23",
          "folio_number": "6ZXBO9G5V0CVHsssssA7D",
          "bank_account_id": null,
          "source_ref_id": "34730",
          "sip_id": null,
          "confirmed_at": "2018-04-03T14:10:00+05:30",
          "submitted_at": "2018-04-03T14:43:00+05:30",
          "succeeded_at": "2018-04-03T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2018-04-03T14:00:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 4,
            "name": "Sundaram Diversified Equity Growth",
            "isin": "INF903J01538",
            "scheme_code": "14"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 1,
      "size": 10,
      "number": 0,
      "first": true,
      "number_of_elements": 1
    }
    

    This endpoint retrieves all purchase orders placed by the investor

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/purchase

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Fetch sell orders

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/investment_accounts/3898573529235304961/orders/purchase"
        }
      },
      "amc_orders": [
        {
          "id": 41,
          "type": "REDEEM_ALL",
          "status": "SUCCESSFUL",
          "amount": null,
          "reverse_amount": null,
          "reverse_units": null,
          "price": null,
          "trade_date": null,
          "investment_date": "2016-12-28",
          "folio_number": "49916sssss0855736",
          "bank_account_id": null,
          "source_ref_id": "1879",
          "sip_id": null,
          "confirmed_at": "2016-12-28T14:10:00+05:30",
          "submitted_at": "2016-12-28T14:43:00+05:30",
          "succeeded_at": "2016-12-28T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2016-12-28T14:00:00+05:30",
          "redemption_mode": "NORMAL",
          "redemption_bank_account_number": "null",
          "redemption_bank_account_ifsc_code": "null",
          "fund_scheme": {
            "id": 3,
            "name": "Reliance Medium Term Growth",
            "isin": "INF204K01EF9",
            "scheme_code": "IPGP"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 1,
      "size": 10,
      "number": 0,
      "first": true,
      "number_of_elements": 1
    }
    

    This endpoint retrieves all sell orders placed by the investor

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/sell

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Fetch switch orders

    curl "https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/switch"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/investment_accounts/3898573529235304961/orders/switch"
        }
      },
      "amc_orders": [
        {
          "id": 24085,
          "type": "SWITCH",
          "status": "SUCCESSFUL",
          "amount": null,
          "reverse_amount": 10000,
          "reverse_units": 10,
          "price": 400,
          "trade_date": "2018-12-13",
          "investment_date": "2018-12-13",
          "folio_number": "70463ssssss32234",
          "bank_account_id": null,
          "source_ref_id": "1263127312110",
          "sip_id": null,
          "confirmed_at": "2018-12-13T14:10:00+05:30",
          "submitted_at": "2018-12-13T14:43:00+05:30",
          "succeeded_at": "2018-12-13T15:30:23+05:30",
          "reversed_at": null,
          "failed_at": null,
          "created_at": "2018-12-13T14:00:00+05:30",
          "redemption_mode": null,
          "redemption_bank_account_number": null,
          "redemption_bank_account_ifsc_code": null,
          "fund_scheme": {
            "id": 23,
            "name": "RELIANCE PHARMA FUND - GROWTH  PLAN",
            "isin": "INF204K01968",
            "scheme_code": "PHGP"
          }
        }
      ],
      "last": true,
      "total_pages": 1,
      "total_elements": 1,
      "size": 10,
      "number": 0,
      "first": true,
      "number_of_elements": 1
    }
    

    This endpoint retrieves all switch orders placed by the investor

    HTTP Request

    GET https://tenant.example.com/api/oms/investment_accounts/{investment_account_id}/orders/switch

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    Simulation (Early access)

    All simulation apis are available only in the staging environment

    [POST] Order Simulation

    curl "https://tenant.example.com/api/oms/simulate/orders/{amc_order_id} "
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "status": "SUBMITTED"
    }
    

    JSON response:

    {
      "message": "order updated successfully"
    }
    

    This endpoint is used to simulate order statuses which are not available through public API. All simulation endpoints are only available in staging server.

    HTTP Request

    POST https://tenant.example.com/api/oms/simulate/orders/{amc_order_id}

    Simulate Order Request Params

    Name Mandatory Type Comments
    amc_order_id yes integer valid order id
    status yes string PAYMENT_CONFIRMED, SUBMITTED, SUCCESSFUL, FAILED and REVERSED are only allowed

    [POST] SIP Simulation

    curl "https://tenant.example.com/api/oms/simulate/sips/{sip_id}/generate_next_installment"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "message": "installment with order id 421 created. please use order simulation api for further simulation"
    }
    

    This endpoint is used to generate order for the given sip id, the order date will be of next installment.

    All simulation endpoints are only available in staging server.

    Example: If you have created sip with sip day 1 and created in march, first time it will create order for april , second time it will create order for may.

    HTTP Request

    POST https://tenant.example.com/api/oms/simulate/sips/{sip_id}/generate_next_installment

    Simulate SIP Request Params

    Name Mandatory Type Comments
    sip_id yes integer valid sip id

    [POST] Payment Simulation

    curl "https://tenant.example.com/api/pg/simulate/payments/{payment_id} "
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "status": "SUBMITTED"
    }
    

    JSON response:

    {
      "message": "payment updated to status SUBMITTED"
    }
    

    This endpoint is used to simulate payment statuses which are not available through public API.

    All simulation endpoints are only available in staging server.

    Note : To mark payment as APPROVED or SUCCESS mandate status must be APPROVED.

    HTTP Request

    POST https://tenant.example.com/api/pg/simulate/payments/{payment_id}

    Simulate Payment Request Params

    Name Mandatory Type Comments
    payment_id yes integer valid payment id
    status yes string SUBMITTED, APPROVED, REJECTED, INITIATED, PENDING, TIMEDOUT, SUCCESS and FAILED are only allowed

    [POST] Mandate Simulation

    curl "https://tenant.example.com/api/pg/simulate/mandates/{mandate_id}"
      -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "status": "SUBMITTED"
    }
    

    JSON response:

    {
      "message": "mandate updated to status SUBMITTED"
    }
    

    This endpoint is used to simulate mandate statuses which are not available through public API.

    All simulation endpoints are only available in staging server.

    HTTP Request

    POST https://tenant.example.com/api/pg/simulate/mandates/{mandate_id}

    Simulate Mandate Request Params

    Name Mandatory Type Comments
    mandate_id yes integer valid mandate id
    status yes string CREATED, SUBMITTED, APPROVED, RECEIVED and REJECTED are only allowed

    MasterData

    [GET] Pincodes

    curl "https://tenant.example.com/api/onb/pincodes"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "last": true,
      "first": true,
      "total_pages": 1,
      "number": 0,
      "size": 1,
      "total_elements": 1,
      "pincodes": [
        {
          "code": "560102",
          "city": "Bangalore South",
          "district": "Bangalore",
          "state_name": "Karnataka",
          "country_ansi_code": "IN",
          "_links": [
            {
              "href": "https://tenant.example.com/api/onb/pincodes/560102",
              "rel": "self",
              "method": "GET"
            }
          ]
        }
      ]
    }
    

    This endpoint retrieves all pincodes in the system with pagination

    HTTP Request

    GET https://tenant.example.com/api/onb/pincodes

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] Pincode

    curl "https://tenant.example.com/api/onb/pincodes/560102"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "code": "560102",
      "city": "Bangalore South",
      "district": "Bangalore",
      "state_name": "Karnataka",
      "country_ansi_code": "IN",
      "_links": [
        {
          "href": "https://tenant.example.com/api/onb/pincodes/560102",
          "rel": "self",
          "method": "GET"
        }
      ]
    }
    

    This endpoint retrieves details of the given pincode

    HTTP Request

    GET https://tenant.example.com/api/onb/pincodes/{pincode}

    [GET] States

    curl "https://tenant.example.com/api/onb/states"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "states": [
        {
          "name": "Karnataka",
          "state_code": "KA",
          "country_ansi_code": "IN"
        }
      ]
    }
    

    This endpoint retrieves all states of India which are updated in the system

    HTTP Request

    GET https://tenant.example.com/api/onb/states

    [GET] Countries

    curl "https://tenant.example.com/api/onb/countries"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "countries": [
        {
          "name": "India",
          "ansi_code": "IN"
        }
      ]
    }
    

    This endpoint retrieves the list of countries updated in the system

    HTTP Request

    GET https://tenant.example.com/api/onb/countries

    [GET] IfscCodes

    curl "https://tenant.example.com/api/onb/ifsc_codes"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "last": true,
      "first": true,
      "total_pages": 1,
      "number": 0,
      "size": 1,
      "total_elements": 1,
      "ifsc_codes": [
        {
          "ifsc_code": "ICIC0000611",
          "micr_code": "0000000",
          "branch_name": "gudivada",
          "branch_address": "ICICI BANK LTD , D NO-11-218, NENIPLAZA, ELURU ROAD, GUDIVADA. 521301",
          "bank_name": "ICICI",
          "contact": "SUMANTH SAGI 08674-247355",
          "city": "guivada",
          "district": "KRISHNA",
          "state": "ANDHRA PRADESH"
        }
      ]
    }
    

    This endpoint retrieves all ifsc_codes updated in the system

    HTTP Request

    GET https://tenant.example.com/api/onb/ifsc_codes

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    [GET] IfscCode

    curl "https://tenant.example.com/api/onb/ifsc_code/ICIC0000611"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "ifsc_code": "ICIC0000611",
      "micr_code": "0000000",
      "branch_name": "gudivada",
      "branch_address": "ICICI BANK LTD , D NO-11-218, NENIPLAZA, ELURU ROAD, GUDIVADA. 521301",
      "bank_name": "ICICI",
      "contact": "SUMANTH SAGI 08674-247355",
      "city": "guivada",
      "district": "KRISHNA",
      "state": "ANDHRA PRADESH"
    }
    

    This endpoint retrieves details of the given ifsc_code updated in the system

    HTTP Request

    GET https://tenant.example.com/api/onb/ifsc_codes/{ifsc_code}

    [GET] Single Fund Schemes Detail

    curl "https://tenant.example.com/api/oms/fund_schemes/{isin}"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "isin": "INF760K01DF2",
      "active": true,
      "name": "Canara Robeco Treasury Advantage Fund - Regular Plan- Weekly Div Reinvest",
      "investment_option": "DIV_REINVESTMENT",
      "min_initial_investment": 500,
      "min_additional_investment": 500,
      "initial_investment_multiples": 1,
      "max_initial_investment": 99999999,
      "max_additional_investment": 99999999,
      "additional_investment_multiples": 1,
      "min_withdrawal_amount": 100,
      "min_withdrawal_units": 1,
      "max_withdrawal_amount": null,
      "max_withdrawal_units": null,
      "withdrawal_multiples": 1,
      "sip_allowed": true,
      "min_sip_amount": 500,
      "max_sip_amount": 99999999,
      "min_sip_installments": 6,
      "sip_multiples": 1,
      "sip_frequency_data": {
        "MONTHLY": "1,5,15,20,25"
      },
      "switch_in_allowed": false,
      "switch_in_min_amt": null,
      "switch_multiples": null,
      "fund_category": "DEBT",
      "plan_type": "REGULAR",
      "amfi_code": "109366",
      "sub_category": null,
      "scheme_code": "TASW",
      "close_ended": false,
      "lock_in": false,
      "lock_in_period": null,
      "long_term_period": null,
      "purchase_allowed": true,
      "redemption_allowed": true,
      "insta_redemption_allowed": true,
      "amc_id": 6,
      "rta_id": 2,
      "merged": false,
      "merged_to_isin": null,
      "name_changes": null,
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/fund_schemes/INF760K01DF2"
        }
      }
    }
    

    This endpoint retrieves any particular fund scheme information

    HTTP Request

    GET https://tenant.example.com/api/oms/fund_schemes/{isin}

    [GET] Fund Schemes

    curl "https://tenant.example.com/api/oms/fund_schemes"
      -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "fund_schemes": [
        {
          "isin": "INF205K01US5",
          "active": true,
          "name": "Invesco India Short Term Fund - Plan B Monthly Dividend",
          "investment_option": "DIV_PAYOUT",
          "min_initial_investment": null,
          "min_additional_investment": null,
          "initial_investment_multiples": null,
          "max_initial_investment": null,
          "max_additional_investment": null,
          "additional_investment_multiples": null,
          "min_withdrawal_amount": 1000,
          "min_withdrawal_units": 1,
          "max_withdrawal_amount": null,
          "max_withdrawal_units": null,
          "withdrawal_multiples": 1,
          "sip_allowed": false,
          "min_sip_amount": null,
          "max_sip_amount": null,
          "min_sip_installments": null,
          "sip_multiples": null,
          "sip_frequency_data": null,
          "switch_in_allowed": false,
          "switch_in_min_amt": null,
          "switch_multiples": null,
          "fund_category": "DEBT",
          "plan_type": "REGULAR",
          "amfi_code": null,
          "sub_category": null,
          "scheme_code": "STIM",
          "close_ended": false,
          "lock_in": false,
          "lock_in_period": null,
          "long_term_period": null,
          "purchase_allowed": false,
          "redemption_allowed": true,
          "amc_id": 31,
          "rta_id": 2,
          "merged": true,
          "merged_to_isin": "INF251K01NK1",
          "name_changes": {
            "history": [
              {
                "old_name": "BNP PARIBAS OVERNIGHT FUND - MONTHLY DIVIDEND OPTION",
                "old_name_valid_upto": "2018-12-03"
              }
            ]
          }
        },
        {
          "isin": "INF205K01UT3",
          "active": true,
          "name": "Invesco India Short Term Fund - Plan B Monthly Dividend",
          "investment_option": "DIV_REINVESTMENT",
          "min_initial_investment": null,
          "min_additional_investment": null,
          "initial_investment_multiples": null,
          "max_initial_investment": null,
          "max_additional_investment": null,
          "additional_investment_multiples": null,
          "min_withdrawal_amount": 1000,
          "min_withdrawal_units": 1,
          "max_withdrawal_amount": null,
          "max_withdrawal_units": null,
          "withdrawal_multiples": 1,
          "sip_allowed": false,
          "min_sip_amount": null,
          "max_sip_amount": null,
          "min_sip_installments": null,
          "sip_multiples": null,
          "sip_frequency_data": null,
          "switch_in_allowed": false,
          "switch_in_min_amt": null,
          "switch_multiples": null,
          "fund_category": "DEBT",
          "plan_type": "REGULAR",
          "amfi_code": null,
          "sub_category": null,
          "scheme_code": "STIM",
          "close_ended": false,
          "lock_in": false,
          "lock_in_period": null,
          "long_term_period": null,
          "purchase_allowed": false,
          "redemption_allowed": true,
          "amc_id": 31,
          "rta_id": 2,
          "merged": false,
          "merged_to_isin": null,
          "name_changes": null
        },
        {
          "isin": "INF204K01547",
          "active": true,
          "name": "RELIANCE TOP 200 FUND - DIVIDEND PLAN",
          "investment_option": "DIV_REINVESTMENT",
          "min_initial_investment": 5000,
          "min_additional_investment": 1000,
          "initial_investment_multiples": 1,
          "max_initial_investment": 199999,
          "max_additional_investment": 199999,
          "additional_investment_multiples": 1,
          "min_withdrawal_amount": 1,
          "min_withdrawal_units": 0.001,
          "max_withdrawal_amount": null,
          "max_withdrawal_units": null,
          "withdrawal_multiples": 1,
          "sip_allowed": true,
          "min_sip_amount": 1000,
          "max_sip_amount": 9999999,
          "min_sip_installments": 6,
          "sip_multiples": 100,
          "sip_frequency_data": {
            "MONTHLY": "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28"
          },
          "switch_in_allowed": false,
          "switch_in_min_amt": null,
          "switch_multiples": null,
          "fund_category": "EQUITY",
          "plan_type": "REGULAR",
          "amfi_code": null,
          "sub_category": null,
          "scheme_code": "EARD",
          "close_ended": false,
          "lock_in": false,
          "lock_in_period": null,
          "long_term_period": null,
          "purchase_allowed": true,
          "redemption_allowed": true,
          "insta_redemption_allowed": true,
          "amc_id": 30,
          "rta_id": 2,
          "merged": false,
          "merged_to_isin": null,
          "name_changes": null
        }
      ],
      "last": false,
      "total_pages": 21,
      "total_elements": 402,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 20
    }
    

    This endpoint retrieves all the fund scheme with details on each.

    HTTP Request

    GET https://tenant.example.com/api/oms/fund_schemes

    Query Parameters

    Parameter Mandatory Default Description
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100
    active no NA value for active must be true OR false
    isin no NA comma separated list of isin

    [GET] AMCs

    curl "https://tenant.example.com/api/oms/amcs"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "_links": {
        "self": {
          "href": "https://tenant.example.com/oms/api/amcs"
        }
      },
      "amcs": [
        {
          "id": 1,
          "name": "Axis MF",
          "active": true,
          "amc_code": null
        }
      ]
    }
    

    This endpoint retrieves all the AMCs.

    HTTP Request

    GET https://tenant.example.com/api/oms/amcs

    Helper API

    Most of these APIs are for getting enums and other data from the system which is not related to any investor

    Registration MetaData

    curl "https://tenant.example.com/api/onb/metadata"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "address_types": [
        "CORRESPONDENCE",
        "OVERSEAS",
        "PERMANENT"
      ],
      "residential_statuses": [
        "RESIDENT_INDIVIDUAL",
        "NON_RESIDENT_INDIVIDUAL",
        "FOREIGN_NATIONAL",
        "PERSON_OF_INDIAN_ORIGIN",
        "PERSON_OF_INDIAN_ORIGIN_RESIDENT"
      ],
      "occupations": [
        "AGRICULTURE",
        "BUSINESS",
        "DOCTOR",
        "FOREX_DEALER",
        "GOVERNMENT_SERVICE",
        "HOUSE_WIFE",
        "OTHERS",
        "PRIVATE_SECTOR_SERVICE",
        "PROFESSIONAL",
        "PUBLIC_SECTOR_SERVICE",
        "RETIRED",
        "SERVICE",
        "STUDENT"
      ],
      "individual_identity_proofs": [
        "UID_AADHAR",
        "PANCARD",
        "VOTER_ID",
        "PASSPORT",
        "DRIVING_LICENSE",
        "NREGA_JOB_CARD",
        "OTHERS"
      ],
      "genders": [
        "MALE",
        "FEMALE",
        "OTHERS"
      ],
      "marital_statuses": [
        "MARRIED",
        "SINGLE",
        "OTHERS"
      ],
      "kyc_relationships": [
        "FATHER",
        "SPOUSE"
      ],
      "source_of_wealths": [
        "SALARY",
        "BUSINESS",
        "GIFT",
        "ANCESTRAL_PROPERTY",
        "RENTAL_INCOME",
        "PRIZE_MONEY",
        "ROYALTY",
        "OTHERS"
      ],
      "bank_account_types": [
        "CURRENT",
        "NRE",
        "NRO",
        "SAVINGS"
      ]
    }
    

    Returns different enums and values that have to be used while registering an investor

    HTTP Request

    GET https://tenant.example.com/api/onb/metadata

    Mandate

    [POST] Create Mandate

    curl -X POST "https://tenant.example.com/api/pg/mandates"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "mandate_type": "NACH",
      "bank_account_id": 1,
      "mandate_limit": 100000,
      "valid_from": "2017-10-16",
      "provider_id": 1
    }
      '
    

    The above command returns JSON structured like this:

    {
      "id": 1
    }
    

    This endpoint is used to create mandate. The API returns mandate ID in response.

    HTTP Request

    POST https://tenant.example.com/api/pg/mandates

    Content-Type: application/json

    Body Parameters

    Parameter Mandatory Type Description
    mandate_type yes String mandate Type
    bank_account_id yes Long bank account ID generated while creating the investor. This is not the bank id or the bank account number. Please check the GET investor details API to fetch the bank account ID
    mandate_limit yes Integer mandate limit
    valid_from no String valid from
    provider_id no Long provider ID sent earlier

    Response Code : 201

    [GET] Mandate

    curl "https://tenant.example.com/api/pg/mandates/1"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "id": 1,
      "bank_account_id": 1,
      "mandate_ref": null,
      "valid_from": "2017-10-23",
      "mandate_limit": 50000,
      "mandate_type": "NACH",
      "mandate_status": "SUBMITTED",
      "umrn": null,
      "created_at": "2017-10-23T04:49:21+05:30",
      "received_at": null,
      "submitted_at": "2017-10-23T04:30:21+05:30",
      "approved_at": null,
      "rejected_at": null,
      "rejected_reason": null,
      "provider_id": 1
    }
    

    This endpoint retrieves mandate info based on the mandate ID

    HTTP Request

    GET https://tenant.example.com/api/pg/mandates/{mandateId}

    Response Code : 200

    [GET] Mandates by Filters

    curl "https://tenant.example.com/api/pg/mandates?bank_account_id=18,12"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "last": true,
      "total_pages": 1,
      "total_elements": 2,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 2,
      "mandates": [
        {
          "id": 2,
          "bank_account_id": 1,
          "mandate_ref": "391335121",
          "valid_from": "2017-10-23",
          "mandate_limit": 50000,
          "mandate_type": "NACH",
          "mandate_status": "CREATED",
          "umrn": "1592",
          "created_at": "2017-10-23T04:51:27+05:30",
          "received_at": null,
          "submitted_at": null,
          "approved_at": null,
          "rejected_at": null,
          "rejected_reason": null,
          "provider_id": 1
        },
        {
          "id": 3,
          "bank_account_id": 1,
          "mandate_ref": "391115121",
          "valid_from": "2017-11-24",
          "mandate_limit": 50000,
          "mandate_type": "NACH",
          "mandate_status": "CREATED",
          "umrn": "1512",
          "created_at": "2017-11-24T04:51:27+05:30",
          "received_at": null,
          "submitted_at": null,
          "approved_at": null,
          "rejected_at": null,
          "rejected_reason": null,
          "provider_id": 1
        }
      ]
    }
    

    This endpoint retrieves mandate info based on given filters.

    HTTP Request

    GET https://tenant.example.com/api/pg/mandates?bank_account_id={bank_account_ids}

    Query Parameters

    Parameter Mandatory Default Description
    bank_account_id no - List of bank account ids
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    Response Code : 200

    E-Mandate

    [POST] Create E-Mandate

    curl -X POST "https://tenant.example.com/api/pg/mandates"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "mandate_type": "E_MANDATE",
      "bank_account_id": 1,
      "mandate_limit": 100000
    }
      '
    

    The above command returns JSON structured like this:

    {
      "id": 1
    }
    

    This endpoint is used to create e-mandate. The e-mandate feature is currently supported for Razorpay only. The API returns mandate ID in response.

    HTTP Request

    POST https://tenant.example.com/api/pg/mandates

    Content-Type: application/json

    Body Parameters

    Parameter Mandatory Type Description
    mandate_type yes String E_MANDATE
    bank_account_id yes Long bank account ID generated while creating the investor. This is not the bank id or the bank account number. Please check the GET investor details API to fetch the bank account ID
    mandate_limit yes Integer mandate limit
    provider_name no String currently RAZORPAY only
    valid_from no String valid From in yyyy-MM-dd format

    Response Code : 201

    [POST] Auth Transaction

    curl "https://tenant.example.com/api/pg/payments/emandate/auth"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "mandate_id": 1,
      "payment_postback_url": "https://example.com/"
    }
      '
    

    The above command returns JSON structured like this:

    {
      "token_url": "http://tenant.mfpro.cybrilla.io/api/pg/payments/netbanking/razorpay?txnId=bdbd1396-3197-460b-afd3-adc3f6e09123&txnType=1",
      "id": 1
    }
    

    This endpoint is used for authenticating the e-mandate feature from the respective bank once. Once the authentication is done from the bank side, subsequent payments need not be authenticated again and will be made automatically. The response contains payment gateway URL along with payment ID.

    HTTP Request

    POST https://tenant.example.com/api/pg/payments/emandate/auth

    Content-Type: application/json

    Body Parameters

    Parameter Mandatory Type Description
    mandate_id yes Integer mandate ID of created e-mandate
    payment_postback_url no String Application url where the investor will be redirected back after emandate auth transaction (https://example.com/payment_confirmation)

    Response Code : 200

    After e-mandate is authenticated at the payment gateway, a post request using HTTP POST will be made via web browser to the preconfigured URL provided by tenant

    HTTP Form POST Parameters

    Parameter Type Description
    paymentId String ID of the generated payment
    status String payment status either success or failure
    failureReason String payment failure reason, empty if payment is successful

    You can use this data for displaying the authentication status to the investor and if required retry

    Payments

    [POST] Net Banking

    curl -X POST "https://tenant.example.com/api/pg/payments/netbanking"
      -H "Authorization: Bearer JWTTOKEN"
      -d '
        {
      "amc_order_ids": [
        1,
        2
      ],
      "payment_postback_url": "https://example.com/"
    }
      '
    

    The above command returns JSON structured like this:

    {
      "token_url": "https://www.tpsl-india.in/PaymentGateway/txnreq.pg?id=7104d8b5-d9b4-4ff0-bda0-bfa2b308f072",
      "id": 1
    }
    

    This endpoint is used to make payment for multiple orders placed. The response contains payment gateway URL along with payment ID

    HTTP Request

    POST https://tenant.example.com/api/pg/payments/netbanking

    Content-Type: application/json

    Body Parameters

    Parameter Mandatory Type Description
    amc_order_ids yes Array contains the list of amc order ids
    method no String NETBANKING or CARD
    payment_postback_url no String Application url where the investor will be redirected back after payment operation (http://example.com/payment_confirmation)

    Response Code : 200

    After payment is done at the payment gateway, a post back using HTTP POST will be made via web browser to the preconfigured URL provided by tenant

    HTTP Form POST Parameters

    Parameter Type Description
    paymentId String ID of the generated payment
    status String payment status either success or failure
    failureReason String payment failure reason, empty if payment is successful

    You can use this data for displaying the status of the payment to the investor

    [GET] Get Payment

    curl "https://tenant.example.com/api/pg/payments/1"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns payment with id 1

    {
      "id": 1,
      "payment_type": "NACH",
      "status": "PENDING",
      "amount": 80000,
      "debit_date": "2018-11-09",
      "amc_order_ids": [
        1
      ],
      "failed_reason": null,
      "method": null,
      "created_at": "2018-11-08T01:00:00+05:30",
      "submitted_at": null,
      "debit_confirmed_at": null,
      "failed_at": null,
      "transfer_initiated_at": null,
      "settled_at": null,
      "rejected_at": null
    }
    

    This endpoint returns the details of the payment with id payment_id

    HTTP Request

    GET https://tenant.example.com/api/pg/payments/{payment_id}

    Response Code : 200

    [GET] Get all Payments

    curl "https://tenant.example.com/api/pg/payments"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns list of payments

    {
      "last": true,
      "total_pages": 1,
      "total_elements": 2,
      "size": 20,
      "number": 0,
      "first": true,
      "number_of_elements": 2,
      "payments": [
        {
          "id": 1,
          "payment_type": "NACH",
          "status": "PENDING",
          "amount": 1000,
          "debit_date": "2019-01-01",
          "amc_order_ids": [
            1
          ],
          "failed_reason": null,
          "method": null,
          "created_at": "2018-12-31T01:00:02+05:30",
          "submitted_at": null,
          "debit_confirmed_at": null,
          "failed_at": null,
          "transfer_initiated_at": null,
          "settled_at": null,
          "rejected_at": null
        },
        {
          "id": 2,
          "payment_type": "NACH",
          "status": "SUBMITTED",
          "amount": 2000,
          "debit_date": "2019-01-01",
          "amc_order_ids": [
            2
          ],
          "failed_reason": null,
          "method": null,
          "created_at": "2018-12-31T01:00:02+05:30",
          "submitted_at": "2018-12-31T01:30:02+05:30",
          "debit_confirmed_at": null,
          "failed_at": null,
          "transfer_initiated_at": "2018-12-31T01:10:02+05:30",
          "settled_at": null,
          "rejected_at": null
        }
      ]
    }
    

    HTTP Request

    GET https://tenant.example.com/api/pg/payments

    Query Parameters

    Parameter Mandatory Default Description Allowed values
    from no - from which date you want to search format should be yyyy-MM-dd valid date (yyyy-MM-dd format)
    to no - up to which date you want to search format should be yyyy-MM-dd valid date (yyyy-MM-dd format)
    payment_type no - type of payment you want to get NACH, NETBANKING, ECS, CHEQUE or AUTH_TRANSACTION
    payment_status no - multiple payment status separated by a comma SUBMITTED, APPROVED,REJECTED, INITIATED,PENDING,SUCCESS,FAILED
    amc_order_ids no - multiple amc order IDs separated by a comma
    direction no desc ascending order or Descending order asc or desc
    page no 0 page number of the result set
    size no 20 number of results per page, size should not be greater than 100

    Note :

    1. The parameter to will only be accepted with from parameter
    2. If you don't pass to whith from then to will be considered as the current date

    KYC

    [POST] Create KYC Check

    curl -X POST "https://tenant.example.com/api/kyc/check"
    -H "Authorization: Bearer JWTTOKEN"
    -d
    '
    {
      "pan": "BNBPP9384M"
    }
    '
    

    The above command returns JSON structured like this:

    {
      "id": "5620fd1f-eb14-442e-b0ee-da96a6c305c0",
      "source_ref_id": null,
      "pan": "BNBPP9384M",
      "entity_details": {
      },
      "status": true,
      "constraints": [
        {
          "type": "investment_limit",
          "amount": {
            "value": 50000,
            "currency": "inr"
          }
        }
      ],
      "sources": [
        {
          "name": "kra-cams",
          "response_verbatim": "Y|BNBPP9384M|KS100",
          "fetched_at": "2018-04-21T23:00:20+05:30"
        }
      ],
      "created_at": "2018-04-21T23:00:20+05:30",
      "updated_at": "2018-04-21T23:00:20+05:30"
    }
    

    Creating a KYC Check fetches the investor's kyc status from different sources

    HTTP Request

    POST https://tenant.example.com/api/kyc/check

    Query Parameters

    Parameter Mandatory Default Description
    pan yes - A valid PAN number to check the kyc status for

    [GET] Retrieve KYC Check

    curl "https://tenant.example.com/api/kyc/5620fd1f-eb14-442e-b0ee-da96a6c305c0"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "id": "5620fd1f-eb14-442e-b0ee-da96a6c305c0",
      "source_ref_id": null,
      "pan": "BNBPP9384M",
      "entity_details": {
      },
      "status": true,
      "constraints": [
        {
          "type": "investment_limit",
          "amount": {
            "value": 50000,
            "currency": "inr"
          }
        }
      ],
      "sources": [
        {
          "name": "kra-cams",
          "response_verbatim": "Y|BNBPP9384M|KS100",
          "fetched_at": "2018-04-21T23:00:20+05:30"
        }
      ],
      "created_at": "2018-04-21T23:00:20+05:30",
      "updated_at": "2018-04-21T23:00:20+05:30"
    }
    

    Retrieve the KYC Check object

    HTTP Request

    GET https://tenant.example.com/api/kyc/{id}

    [PUT] Refetch KYC Status

    curl -X PUT "https://tenant.example.com/api/kyc/5620fd1f-eb14-442e-b0ee-da96a6c305c0/refetch"
      -H "Authorization: Bearer JWTTOKEN"
    

    The above command returns JSON structured like this:

    {
      "id": "5620fd1f-eb14-442e-b0ee-da96a6c305c0",
      "source_ref_id": null,
      "pan": "BNBPP9384M",
      "entity_details": {
      },
      "status": true,
      "constraints": [
        {
          "type": "investment_limit",
          "amount": {
            "value": 50000,
            "currency": "inr"
          }
        }
      ],
      "sources": [
        {
          "name": "kra-cams",
          "response_verbatim": "Y|BNBPP9384M|KS100",
          "fetched_at": "2018-04-21T23:00:20+05:30"
        }
      ],
      "created_at": "2018-04-21T23:00:20+05:30",
      "updated_at": "2018-04-21T23:00:20+05:30"
    }
    

    Force the platform to refetch the kyc information from the sources

    HTTP Request

    PUT https://tenant.example.com/api/kyc/{id}/refetch

    [POST] Create KYC Request

    curl -X POST "https://tenant.example.com/kyc_requests"
    -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "pan": "K1PPG1998U",
      "email": "raj@example.com",
      "mobile": {
        "isd": "+91",
        "number": "8160597103"
      },
      "name": "Rani Gupta",
      "father_name": "Rajesh Gupta",
      "spouse_name": "",
      "mother_name": "",
      "gender": "male",
      "date_of_birth": "1980-10-19",
      "country_of_birth": "in",
      "marital_status": "unmarried",
      "residential_status": "resident_individual",
      "occupation_type": "private_sector",
      "correspondence_address": {
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "city": "Delhi",
        "pincode": "401012",
        "country": "in",
        "proof": "4192de0d-165f-458e-89ec-d4334b370256",
        "proof_back": "771a4d57-5447-4b1e-b4b6-dcb6049bda8c"
      },
      "permanent_address_is_same_as_correspondence": true,
      "identity_proof": "2f4d93e0-b700-41b8-b78e-e130224cfb03",
      "ipv_video": "6ef67352-08fb-3740-9283-b74e684b1b64",
      "signature": "434ceed567-53c5-3f68-ba3b-cbdc58526c64",
      "photo": "946848da-50bb-4957-a940-c164c0c71172"
    }
    

    JSON response:

    {
      "id": "6wq82c2ce-e38d-4b8e-85f3-wqfb7dc382f21",
      "status": "pending",
      "pan": "K1PPG1998U",
      "name": "Rani Gupta",
      "father_name": "Rajesh Gupta",
      "spouse_name": null,
      "mother_name": null,
      "email": null,
      "mobile": null,
      "ipv_video": "02651d2a-38fc-42a2-8c20-221d10453b3c",
      "signature": null,
      "photo": null,
      "gender": "male",
      "date_of_birth": "1981-01-15",
      "marital_status": "married",
      "country_of_birth": "IN",
      "permanent_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "correspondence_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "identity_proof": "6d0f4d71-aec3-4be6-8295-630e0fddaef6",
      "residential_status": "resident_individual",
      "occupation_type": null,
      "permanent_address_is_same_as_correspondence": true,
      "created_at": "2018-02-11 01:25:21",
      "updated_at": "2018-02-11 02:19:08",
      "object": "kyc_request"
    }
    

    The endpoint is used to submit a KYC request to the platform.

    HTTP Request

    POST https://tenant.example.com/kyc_requests

    Query Parameters

    Name Mandatory type Comments
    pan yes string should be valid pan_number
    email yes string email ID of the investor to be reported to AMC
    mobile yes object
    name yes string name of investor
    father_name no string mandatory if spouse_name is not mentioned
    spouse_name no string mandatory if father_name is not mentioned
    mother_name no string mandatory if father_name is not mentioned
    gender yes string gender of the investor. Values permitted: male, female, transgender
    date_of_birth yes string date of birth in dd-mm-yyyy format
    country_of_birth yes string country code
    marital_status yes string marital status of the investor. Values permitted: married, unmarried, others
    residential_status yes string residential status of the investor. Values permitted: resident_individual, non_resident_individual
    occupation_type yes string occupation of the investor. Values permitted: business, professional, self_employed, retired, housewife, student, public_sector, private_sector, government_sector, others
    correspondence_address yes object
    permanent_address_is_same_as_correspondence yes bolean if permanent address is same as correspondence then true else false
    permanent_address no object only if permanent_address_is_same_as_correspondence is false
    identity_proof yes string reference id returned from upload file API
    ipv_video yes string reference id returned from upload file API
    signature yes string reference id returned from upload file API
    photo yes string reference id returned from upload file API

    Mobile params

    Name Mandatory type Comments
    isd yes string isd code of country
    number yes string mobile number

    CorrespondenceAddress params

    Name Mandatory type Comments
    line_1 yes string address line 1
    line_2 no string address line 2
    line_3 no string address line 3
    city yes string city name
    pincode yes string valid area pincode
    country yes string ANSI code of the country
    proof yes string reference id returned from upload file API
    proof_back no string reference id returned from upload file API

    PermanentAddress params

    Name Mandatory type Comments
    line_1 yes string address line 1
    line_2 no string address line 2
    line_3 no string address line 3
    city yes string city name
    pincode yes string valid area pincode
    country yes string ANSI code of the country
    proof yes string reference id returned from upload file API
    proof_back no string reference id returned from upload file API

    [GET] GET KYC request

    curl -X GET "https://tenant.example.com/kyc_requests/123"
    -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "id": "6wq82c2ce-e38d-4b8e-85f3-wqfb7dc382f21",
      "status": "pending",
      "pan": "K1PPG1998U",
      "name": "Rani Gupta",
      "father_name": "Rajesh Gupta",
      "spouse_name": null,
      "mother_name": null,
      "email": null,
      "mobile": null,
      "ipv_video": "02651d2a-38fc-42a2-8c20-221d10453b3c",
      "signature": null,
      "photo": null,
      "gender": "male",
      "date_of_birth": "1981-01-15",
      "marital_status": "married",
      "country_of_birth": "IN",
      "permanent_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "correspondence_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "identity_proof": "6d0f4d71-aec3-4be6-8295-630e0fddaef6",
      "residential_status": "resident_individual",
      "occupation_type": null,
      "permanent_address_is_same_as_correspondence": true,
      "created_at": "2018-02-11 01:25:21",
      "updated_at": "2018-02-11 02:19:08",
      "object": "kyc_request"
    }
    

    The endpoint is used to fetch the details of a KYC request.

    HTTP Request

    GET https://tenant.example.com/kyc_requests/{id}

    Query Parameters

    Parameter Mandatory Default Description
    id yes - video kyc id returned from create video kyc request API

    Status Descriptions

    Value Description
    pending The application is ready to be processed
    ready_to_be_submitted All fields are verified, and ready to be submitted to KRA
    submitted Submitted to KRA

    [GET] GET KYC list

    curl -X GET "https://tenant.example.com/kyc_requests/123"
    -H "Authorization: Bearer JWTTOKEN"
    

    JSON response:

    {
      "object": "list",
      "data": [
        {
          "id": "6wq82c2ce-e38d-4b8e-85f3-wqfb7dc382f21",
          "status": "pending",
          "pan": "K1PPG1998U",
          "name": "Rani Gupta",
          "father_name": null,
          "spouse_name": "Ravi Bansal",
          "mother_name": "Savitri Gupta",
          "email": null,
          "mobile": null,
          "ipv_video": "02651d2a-38fc-42a2-8c20-221d10453b3c",
          "signature": null,
          "photo": null,
          "gender": "male",
          "date_of_birth": "1981-01-15",
          "marital_status": "married",
          "country_of_birth": "IN",
          "permanent_address": {
            "city": "Delhi",
            "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
            "line_1": "E/&02",
            "line_2": "Opp SBI ATM",
            "line_3": "12th Main Road South Delhi",
            "country": "IN",
            "pincode": "401012",
            "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
          },
          "correspondence_address": {
            "city": "Delhi",
            "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
            "state": "Delhi",
            "line_1": "E/&02",
            "line_2": "Opp SBI ATM",
            "line_3": "12th Main Road South Delhi",
            "country": "IN",
            "pincode": "401012",
            "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
          },
          "identity_proof": "6d0f4d71-aec3-4be6-8295-630e0fddaef6",
          "residential_status": "resident_individual",
          "occupation_type": null,
          "permanent_address_is_same_as_correspondence": true,
          "created_at": "2018-02-11 01:25:21",
          "updated_at": "2018-02-11 02:19:08",
          "object": "kyc_request"
        },
        {
          "id": "01edfef6-d8b8-462a-9346-addf35e64d51",
          "status": "pending",
          "pan": "T2NPG13255",
          "name": "Suraj Ramchandra",
          "father_name": "Rajesh Gupta",
          "spouse_name": null,
          "mother_name": null,
          "email": "suraj@example.com",
          "mobile": {
            "isd": "+91",
            "number": "1231567190"
          },
          "ipv_video": "101ac979-76ef-4171-8690-281663ba19d2",
          "signature": "6b3d2dc9-03e3-46f6-36a23-6c713db11ea9",
          "photo": "7819f379-a414-183a-8ac9-b125fe38a512",
          "gender": "male",
          "date_of_birth": "1990-10-19",
          "marital_status": "married",
          "country_of_birth": "in",
          "permanent_address": {
            "city": "Hyderabad",
            "proof": "101ac979-76ef-4171-8690-281663ba19d2",
            "line_1": "new SBI ATM",
            "line_2": "near bus stand",
            "line_3": "3rd Main road",
            "country": "in",
            "pincode": "205213",
            "proof_back": "101ac979-76ef-4171-8690-281663ba19d2"
          },
          "correspondence_address": {
            "city": "Hyderabad",
            "proof": "101ac979-76ef-4171-8690-281663ba19d2",
            "line_1": "new SBI ATM",
            "line_2": "near bus stand",
            "line_3": "3rd Main road",
            "country": "in",
            "pincode": "205213",
            "proof_back": "101ac979-76ef-4171-8690-281663ba19d2"
          },
          "identity_proof": "95268264-7ed4-4258-b5b1-52dba6552917",
          "residential_status": "resident_individual",
          "occupation_type": "private-sector",
          "permanent_address_is_same_as_correspondence": false,
          "created_at": "2018-05-06 05:14:51",
          "updated_at": "2018-05-06 05:14:51",
          "object": "kyc_request"
        }
      ]
    }
    

    The endpoint is used to fetch the list of KYC requests.

    HTTP Request

    GET https://tenant.example.com/kyc_requests

    [PUT] Update KYC Request

    curl -X POST "https://tenant.example.com/kyc_requests/c16cadd0-d7bf-491f-8a7b-e03c273be5cf"
    -H "Authorization: Bearer JWTTOKEN"
      -d '{json_request}'
    

    JSON request:

    {
      "pan": "K1PPG1998U",
      "email": "rani@example.com",
      "mobile": {
        "isd": "+91",
        "number": "7127727145"
      },
      "name": "Rani Gupta",
      "father_name": "",
      "spouse_name": "Ravi Bansal",
      "mother_name": "Savitri Gupta",
      "gender": "male",
      "date_of_birth": "1981-01-15",
      "country_of_birth": "in",
      "marital_status": "married",
      "residential_status": "resident_individual",
      "occupation_type": "private_sector",
      "correspondence_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "proof_back": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "country": "in",
        "pincode": "401012"
      },
      "permanent_address_is_same_as_correspondence": true,
      "identity_proof": "1411ff9c-3b68-4c5c-bfe7-46f1a1cdd7f6",
      "ipv_video": "76e18d5f-e84a-478d-a836-4971f38d3814",
      "signature": "7fb1d584-a631-4971-b215-997333577f8f",
      "photo": "2c08d434-a95d-4889-afb5-ad5c5f950397"
    }
    

    The endpoint is used to update the details of a KYC request

    JSON response:

    {
      "id": "6wq82c2ce-e38d-4b8e-85f3-wqfb7dc382f21",
      "status": "pending",
      "pan": "K1PPG1998U",
      "name": "Rani Gupta",
      "father_name": "Rajesh Gupta",
      "spouse_name": null,
      "mother_name": null,
      "email": null,
      "mobile": null,
      "ipv_video": "02651d2a-38fc-42a2-8c20-221d10453b3c",
      "signature": null,
      "photo": null,
      "gender": "male",
      "date_of_birth": "1981-01-15",
      "marital_status": "married",
      "country_of_birth": "IN",
      "permanent_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "correspondence_address": {
        "city": "Delhi",
        "proof": "e17b7wb1-2204-40f2-b4b9-8012c3c36f73",
        "line_1": "E/&02",
        "line_2": "Opp SBI ATM",
        "line_3": "12th Main Road South Delhi",
        "country": "IN",
        "pincode": "401012",
        "proof_back": "71a773fa-134c-4849-891e-df3a2s230f6f"
      },
      "identity_proof": "6d0f4d71-aec3-4be6-8295-630e0fddaef6",
      "residential_status": "resident_individual",
      "occupation_type": null,
      "permanent_address_is_same_as_correspondence": true,
      "created_at": "2018-02-11 01:25:21",
      "updated_at": "2018-02-11 02:19:08",
      "object": "kyc_request"
    }
    

    HTTP Request

    POST https://tenant.example.com/kyc_requests/{id}

    Query Parameters

    Name Mandatory type Comments
    pan yes string should be valid pan_number
    email yes string email ID of the investor to be reported to AMC
    mobile yes object
    name yes string name of investor
    father_name no string mandatory if spouse_name is not mentioned
    spouse_name no string mandatory if father_name is not mentioned
    mother_name no string mandatory if father_name is not mentioned
    gender yes string gender of the investor. Values permitted: male, female, others
    date_of_birth yes string date of birth in dd-mm-yyyy format
    country_of_birth yes string country code
    marital_status yes string marital status of the investor. Values permitted: married, unmarried, others
    residential_status yes string residential status of the investor. Values permitted: resident_individual, non_resident_individual
    occupation_type yes string occupation of the investor. Values permitted: business, professional, self_employed, retired, housewife, student, public_sector, private_sector, government_sector, others
    correspondence_address yes object
    permanent_address_is_same_as_correspondence yes bolean if permanent address is same as correspondence then true else false
    permanent_address no object only if permanent_address_is_same_as_correspondence is false
    identity_proof yes string reference id returned from upload file API
    ipv_video yes string reference id returned from upload file API
    signature yes string reference id returned from upload file API
    photo yes string reference id returned from upload file API

    Update Mobile params

    Name Mandatory type Comments
    isd yes string isd code of country
    number yes string mobile number

    Update CorrespondenceAddress params

    Name Mandatory type Comments
    line_1 yes string address line 1
    line_2 no string address line 2
    line_3 no string address line 3
    city yes string city name
    pincode yes string valid area pincode
    country yes string ANSI code of the country
    proof yes string reference id returned from upload file API
    proof_back no string reference id returned from upload file API

    Update PermanentAddress params

    Name Mandatory type Comments
    line_1 yes string address line 1
    line_2 no string address line 2
    line_3 no string address line 3
    city yes string city name
    pincode yes string valid area pincode
    country yes string ANSI code of the country
    proof yes string reference id returned from upload file API
    proof_back no string reference id returned from upload file API

    File Upload (Early access)

    [POST] File Upload

    curl -X POST "https://tenant.example.com/files"
    -H "Authorization: Bearer JWTTOKEN"
    -F
    '
    "file" : {file_to_upload}
    '
    

    The above command returns JSON structured like this:

    {
      "id": "224f380c-d8f9-6f15-b2d9-27968a75f491",
      "created_at": "2018-05-13T17:53:58+05:30",
      "filename": "bob_dl_back.jpg",
      "content_type": "image/jpeg",
      "purpose": null,
      "byte_size": 4501312,
      "url": "http://tenant.example.com/fm-dev/h5sPa4sPnSLoxthdLtCDwG9e?response-content-disposition=inline%3B%20filename%3D%22bob_dl_back.jpg%22%3B%20filename%2A%3DUTF-8%27%27amulaya_dl_back.jpg&response-content-type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=K3DJ6MHBWZGBXZYTX7ZJ%2F20190513%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190513T122358Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9d081412101c683c021231b6662abbc5e12ab90243faaad34c87d50192046e98",
      "object": "file"
    }
    

    Endpoint is used to upload POI, POA, photo, video, signature files.

    HTTP Request

    POST https://tenant.example.com/files

    Query Parameters

    Parameter Mandatory Default Description
    file yes - File to upload.
    purpose no - Notes.

    [GET] Get File

    curl "https://tenant.example.com/files/870d11d1-c63b-41ca-362a-c8062f4efc71"
      -H "Authorization: Bearer JWTTOKEN"
    

    Endpoint is used to fetch details of a particuler file.

    {
      "id": "224f380c-d8f9-6f15-b2d9-27968a75f491",
      "created_at": "2018-05-13T17:53:58+05:30",
      "filename": "bob_dl_back.jpg",
      "content_type": "image/jpeg",
      "purpose": null,
      "byte_size": 4501312,
      "url": "http://tenant.example.com/fm-dev/h5sPa4sPnSLoxthdLtCDwG9e?response-content-disposition=inline%3B%20filename%3D%22bob_dl_back.jpg%22%3B%20filename%2A%3DUTF-8%27%27amulaya_dl_back.jpg&response-content-type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=K3DJ6MHBWZGBXZYTX7ZJ%2F20190513%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190513T122358Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=9d081412101c683c021231b6662abbc5e12ab90243faaad34c87d50192046e98",
      "object": "file"
    }
    

    Endpoint is used to fetch details of a particuler file.

    HTTP Request

    GET https://tenant.example.com/files/{id}

    Query Parameters

    Parameter Mandatory Default Description
    id yes - file id returned from upload file api.

    [GET] GET File list

    curl -X PUT "https://tenant.example.com/files"
      -H "Authorization: Bearer JWTTOKEN"
    

    Enpoint fetches the list of all the files.

    {
      "object": "list",
      "data": [
        {
          "id": "d2784e7c-a414-4da8-954c-911fe425094a",
          "created_at": "2018-01-29T13:07:32+05:30",
          "filename": "fil1.png",
          "content_type": "image/png",
          "purpose": "kyc approve document",
          "byte_size": 127343,
          "url": "http://tenant.example.com/fm-dev/RNJSekp8p664juhoTCzfiXvD?response-content-disposition=inline%3B%20filename%3D%22undraw_react_y7wq.png%22%3B%20filename%2A%3DUTF-8%27%27undraw_react_y7wq.png&response-content-type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=K3DJ6MHBWZGBXZYTX7ZJ%2F20190513%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190513T124358Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3723068f230a125e04157f3e11ce7d803fb20de77f8f921280d60d68dec03a7a",
          "object": "file"
        },
        {
          "id": "81d631b2-4bc7-49b9-a11d-ff10110e484b",
          "created_at": "2018-01-29T13:44:56+05:30",
          "filename": "undraw_deliveries_131a.png",
          "content_type": "image/png",
          "purpose": "kyc document",
          "byte_size": 73441,
          "url": "http://tenant.example.com/fm-dev/WWUDamFoet9sRGcLFR74NF97?response-content-disposition=inline%3B%20filename%3D%22undraw_deliveries_131a.png%22%3B%20filename%2A%3DUTF-8%27%27undraw_deliveries_131a.png&response-content-type=image%2Fpng&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=K3DJ6MHBWZGBXZYTX7ZJ%2F20190513%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190513T124358Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=a7a740c23ed31a0e1ca4e95006d578c0fa5930b0ccdff0fb8fbba588dbd10489",
          "object": "file"
        }
      ]
    }
    

    Enpoint fetches the list of all the files.

    HTTP Request

    GET https://tenant.example.com/files

    Errors

    Fintech Primitives Mutual Fund APIs use standard HTTP error codes. Please refer to HTTP error codes documentation.

    All errors will be emitted in the following structure.

    Error Structure

    attribute Type Comments
    status integer same as http status code
    message string descriptive message
    errors array of objects list of errors on each field
    {
      "status": 400,
      "message": "some description message",
      "errors": [
        {
          "field": "name",
          "message": "validation / error message"
        }
      ]
    }
    

    Example Validation Error on investor creation

    {
      "error": {
        "status": 400,
        "message": "Validation failed. 20 error(s)",
        "errors": [
          {
            "field": "bank_accounts[1].account_holder_name",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[0].account_holder_name",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[0].number",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[0].type",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[0].primary_account",
            "message": "should not be empty / null"
          },
          {
            "field": "kyc_identity_detail",
            "message": "should not be empty / null"
          },
          {
            "field": "perm_addr_is_corres_addr",
            "message": "should not be empty / null"
          },
          {
            "field": "contact_detail",
            "message": "should not be empty / null"
          },
          {
            "field": "fatca_detail.no_other_tax_residences",
            "message": "should not be empty / null"
          },
          {
            "field": "display_name",
            "message": "should not be empty / null"
          },
          {
            "field": "nomination",
            "message": "should not be empty / null"
          },
          {
            "field": "fatca_detail.gross_annual_income",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[1].ifsc_code",
            "message": "should not be empty / null"
          },
          {
            "field": "fatca_detail.country_of_birth",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[1].primary_account",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[0].ifsc_code",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[1].number",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts",
            "message": "atleast one bank_account should be marked as primary"
          },
          {
            "field": "fatca_detail.source_of_wealth",
            "message": "should not be empty / null"
          },
          {
            "field": "bank_accounts[1].type",
            "message": "should not be empty / null"
          }
        ]
      }
    }
    

    Example Json Parse Error

    {
      "error": {
        "status": 400,
        "message": "JSON parse error",
        "errors": null
      }
    }