Smart SIP
This API allows you to automate recurring investments in equity stocks and ETFs on a daily, weekly, monthly or custom schedule.
USE CASE
Invest a fixed amount or quantity in a stock or ETF on a regular schedule.
Note
Smart SIP is available for equity only. You can invest by amount or quantity and optionally enable step-up.
- Available only for Equity segment symbols on NSE/BSE CM.
- You can invest using either a fixed amount or a specified quantity.
- Use price range protection (HPR/LPR) to skip execution when prices move beyond your defined range.
- With the step-up option, you can gradually increase the investment amount or quantity over time.
Details
- Smart SIP allows you to automate recurring investments in equity stocks, ETFs, with orders placed automatically at your selected frequency—daily, weekly, monthly, or on custom dates.
freqis 1 (daily), 2 (weekly), 3 (monthly) or 6 (custom). Daily needssip_timewithin 9:15 AM to 3:30 PM. The others usesip_day.sip_dayis 1 to 28. For weekly it must be 1 (Monday) to 5 (Friday).imd_startas true starts the SIP now instead of waiting for the schedule.- Send either
amountorqty, not both. An amount-based SIP cannot be less than LTP.productTypecan be CNC or MTF. - Send either
endTimeorexp_qty, not both.endTimemust be after today and not on a weekend, at least 4 days away for daily and 30 days for weekly or monthly. step_up_freqis 3 or 5 and must be at leastfreq. Sendstep_up_amountorstep_up_qty(matching your SIP mode), not both. Step-up is not allowed for a custom SIP.hprmust be greater thanlpr. A custom SIP for today cannot be placed after 11:00 AM.- There is a daily limit on the number of SIP orders. Going over it is rejected.
- Rate limits differ between the Standard and Prime plans. See Plans & rate limits.
Request Attributes
| Attribute | Data Type | Required | Description |
|---|---|---|---|
symbol | string | Yes | The instrument's unique identifier (Equity only), e.g., "NSE:SBIN-EQ" |
productType | string | Yes | Must be one of: "CNC", "MTF" |
freq | int | Yes | SIP frequency (enum: 1, 2, 3, 6) |
sip_day | int | Yes | Day of the month for SIP execution (Min: 1, Max: 28) |
qty OR amount | integer/number | Yes | At least one required - Quantity or amount per SIP instalment (Max: 999999) |
sip_time | int | Conditional | Required if freq = 1 (Daily). Unix timestamp for SIP execution time (must be within market hours) |
imd_start | boolean | No | Whether to start SIP immediately. true = start now, false = wait for schedule |
endTime | int | No | Default: 0 (no end date). Unix timestamp when the SIP should end |
hpr | float | No | Default: 0. Skips SIP if price is above this upper limit |
lpr | float | No | Default: 0. Skips SIP if price is below this lower limit |
step_up_freq | int | No | Frequency of step-up increase (enum: 3, 5). Default: 0 (no step-up) |
step_up_qty | int | No | Quantity to increase at each step-up (Default: 0; Max: 999999) |
step_up_amount | float | No | Amount to increase at each step-up (Default: 0; Max: 999999) |
exp_qty | int | No | Quantity for expiry/final SIP order (Default: 0; Max: 999999) |
SIP Frequency Values
| Value | Frequency | Required Field | Description |
|---|---|---|---|
1 | Daily | sip_time | Invests every trading day at the specified time |
2 | Weekly | sip_day | Invests once a week on the specified day |
3 | Monthly | sip_day | Invests once a month on the specified day |
6 | Custom | sip_day | Invests on selected dates each month |
Validations & Error Messages
| Attribute | Validation Rule | Error Message |
|---|---|---|
qty & amount | Provide either amount or qty (exactly one) | "Please enter either the amount or qty to place an order." |
symbol | Must be Equity segment (NSE/BSE CM) | "Equity SIP is not available for the selected symbol. Please choose a different symbol." |
productType | Must be CNC or MTF | "productType must be one of the following: CNC, MTF" |
freq | Must be 1, 2, 3, or 6 (enum) | "The input details entered is invalid." |
sip_day | Min: 1, Max: 28 | "The input details entered is invalid." |
sip_time | Required if freq=1 | "Please select a SIP time." |
sip_time | Must be within 9:15 AM - 3:30 PM | "Please select an SIP time within market hours." |
qty | Max: 999999, must be multiple of lot size | "Quantity should be multiple of min lot size." |
amount | If amount-based SIP, amount must not be < LTP | "The SIP amount cannot be less than the LTP." |
step_up_freq | Must be >= freq (enum: 3, 5) | "Step-up frequency should be greater than or equal to the SIP frequency." |
step_up_amount & step_up_qty | Only one of step_up_amount or step_up_qty allowed | "Please provide either step_up_amount or step_up_qty, not both." |
step_up_freq | Step-up not allowed for custom frequency SIP | "Step-up is not allowed for custom frequency SIP." |
step_up_amount / step_up_qty | Step-up field must match SIP mode (amount vs qty) | "Please provide step_up_amount for amount based SIP or step_up_qty for qty based SIP." |
hpr & lpr | HPR must be > LPR | "The high price range must be greater than the low price range." |
sip_day | Required for SIP scheduling | "Please select a SIP day." |
endTime | Must be > current day | "End time must be greater than the current day." |
endTime | Expiry date must not fall on weekend | "The expiry date shouldn't be on a weekend." |
endTime (Daily) | Must be >= 4 days from today | "Please select an expiry date at least 4 days from today." |
endTime (Weekly/Monthly) | Must be >= 30 days from today | "Please select an expiry date at least 30 days from today." |
| Custom SIP | Custom SIP for today not allowed past cutoff | "You can't place a custom SIP for today past 11:00 AM." |
sip_time | SIP time cannot be in the past | "The SIP time cannot be in the past. Please select a future date and time." |
sip_day (weekly) | Weekly SIP day must be Mon–Fri (1–5) | "For weekly SIP, please select a day between 1 (Monday) and 5 (Friday)." |
sip_day (monthly) | Monthly SIP day must be 1–28 | "For monthly SIP, please select a day between 1 and 28." |
endTime & exp_qty | Provide either endTime or expired quantity, not both | "Please provide either endTime or expired quantity, not both." |
| Daily limit | Max SIP orders allowed | "You have exceeded the maximum limit of creating X SIP orders for the day." |
Response Attributes
| Attribute | Data Type | Description |
|---|---|---|
code | int | Status code: 200 for success; negative values indicate errors. |
message | string | Success or error message. Example: "Your Equity SIP for {symbol} has been successfully initiated" |
s | string | "ok" for success, "error" for failure. |
id | string | Unique identifier for the placed SIP order (returned only on success). |
Last updated on