Create a Redemption Order
You can use the FP APIs to
- Determine whether an investor can sell his/her units.
- Determine the maximum number of units that the investor can sell
- Sell units partially or completely.
- Track the status of redemption orders once sell orders are placed.
1. Fetch fund scheme details
Use Get fund scheme and note down the values of following scheme attributes
redemption_allowed
,min_withdrawal_amount
,max_withdrawal_amount
,withdrawal_multiples
,min_withdrawal_units
,max_withdrawal_units
,withdrawal_multiples_units
2. Generate holdings report
Mutual fund units are associated with folios. You can treat folios as sub-accounts under the investment account. You can fetch the list of folios for an investment a/c from the
holdings report
and note down redeemable_units
to determine the units that are available for selling.
3. Check redemption eligibility
Redeem by amount
redemption_allowed
must be true.redeemable_amount
must be greater than zero.- Redemption amount(Sell order amount) must be >=
min_withdrawal_amount
and <=max_withdrawal_amount
- Redemption amount must be in the denominations of
withdrawal_multiples
Redeem by units
redemption_allowed
must be true.redeemable_units
must be greater than zero.- Redemption units(Sell order units) must be >=
min_withdrawal_units
and <=max_withdrawal_units
- Redemption amount must be in the denominations of
withdrawal_multiples_units
4. Create a sell order
Call the
create mf redemption
with the following json. Use the investment account of the investor for whom you are placing the order for. Pass the folio_number
and scheme
from which you are selling the units.
Redemption by amount
{
"mf_investment_account": "mfia_189111b00566431db0dace5332db519c",
"folio_number": "15075102",
"amount": 10000,
"scheme": "INF173K01FQ0"
}
Redemption by units
{
"mf_investment_account": "mfia_189111b00566431db0dace5332db519c",
"folio_number": "15075102",
"units": 100,
"scheme": "INF173K01FQ0"
}
Full redemption
{
"mf_investment_account": "mfia_189111b00566431db0dace5332db519c",
"folio_number": "15075102",
"scheme": "INF173K01FQ0"
}
A MF Redemption gets created in pending
state.
# Displaying only a part of the object for brevity
{
"object": "mf_redemption",
"id": "mfr_15f8d86bae614801bab5accaed131abc",
"old_id": 6597,
"mf_investment_account": "mfia_189111b00566431db0dace5332db519c",
}
Once you have created a redemption order, you have to obtain consent from the investor for the redemption.
5. Obtain investor's consent for the redemption order by sending an OTP to email or mobile or both
As per SEBI regulations, investor consent must be obtained by sending a One-Time Password to the investor at his/her email/phone number registered against the folio before redemptions can be sent to rtas. Call the List folios API and fetch email addresses and mobile numbers against the folio.
# Displaying only a part of the folio object for brevity
{
"email_addresses": [
"mfp@cybrilla.com"
],
"mobile_numbers": [
"+919999999999"
]
}
Send OTP to any one of the email addresses/mobile numbers. Once the OTP has been sent and investor has entered the correct OTP, confirm the order.
6. Confirm the order
Call the update mf redemption to confirm the order. FP sends orders for processing only after confirmation. Use the following json:
{
"id": "mfr_15f8d86bae614801bab5accaed131abc",
"state": "confirmed",
"consent": {
"email": "mfp@cybrilla.com",
"isd_code": "91",
"mobile": "9999999999"
}
}
7. Track the order
Call the
fetch mf redemption
to check the state
of the sell order.
When the order is successfully submitted to the AMC, the order status becomes submitted
. Learn more about the order states
Orders in confirmed
state will be sent for processing and the object state will move to submitted
. After the order is processed successfuly and units are repurchased by the AMC, the object state will move to successful
; the redeemed units, amount and the price is available in redeemed_units
, redeemed_amount
and redeemed_price
attributes of the mf redemption object.
Testing
In sandbox environment, you can use the
simulation
to simulate successful
and failed
orders to help you during the integration process. Use the following json to simulate the order to successful
state.
{
"status": "SUCCESSFUL"
}