Create a Purchase Order
Ensure the following before placing a purchase order
- Your investor is kyc compliant
- You have an investment account created for your investor
1. Get fund scheme details and check purchase eligibility
Once you have decided to place a purchase order against a particular scheme, fetch the scheme details using the Get fund scheme , and ensure that the scheme is eligible for purchase. Here are the checks that you must do.
- The scheme must be active (i.e.
active
=true
) - Lumpsum purchases must be allowed (i.e.
purchase_allowed
=true
) - If a fresh purchase is being made, i.e. a purchase without providing a folio number, ensure that purchase amount is within the range of
min_initial_investment
andmax_initial_investment
and the denomination of the amount must be according toinitial_investment_multiples
of a scheme. - If an additional purchase is being made, i.e. a purchase in an existing folio, ensure that purchase amount is within the range of
min_additional_investment
andmax_additional_investment
and the denomination of the amount must be according toadditional_investment_multiples
of a scheme.
2. Create a purchase order
FP uses MF Purchase
object to represent all the mutual fund purchase orders. You need to create a MF Purchase
as a first step for placing a one time purchase order.Call the
Create mf purchase
with the following json. Use the investment account of the investor for whom you are placing the order for.
{
"mf_investment_account": "mfia_367a75826694614a539c0f82b196027",
"scheme": "INF173K01FE6",
"amount": 10000
}
A MF Purchase gets created for which you need to make a payment. Keep a note of the object id
and old_id
; you will need these for making payments and checking the status of the order later on.
# Displaying only a part of the object(response) for brevity
{
"object": "mf_purchase",
"id": "mfp_177177219f634373b01072986d2eea7d",
"old_id": 9123,
"mf_investment_account": "mfia_367a75826694614a539c0f82b196027",
"amount": 10000
}
Note:
If you are placing a purchase order against an existing folio, you can also provide folio_number
while creating a purchase order.
3. Send OTP to mobile/email and obtain consent for nomination details before creating payment for new folio creation
This step is applicable only for new folio creation. i.e. if it is a new investment under a new folio
For what purpose must the consent be taken?
The investor has two options to manage nominations while creating a new folio.
- Either provide nominee details (upto 3) OR
- Opt out of nomination
Irrespective of the option chosen, obtaining consent from the investor for the nomination option is mandatory.
How should consent be taken?
If nominee details are provided, ensure that all the holders know their nomination preferences so that they can give consent.
- Nominee Name
- Nominee DOB (Mandatory & Applicable in case the Nominee is a Minor)
- Allocation Percentage
- Nominee Relationship
- Name of the Guardian (Mandatory & Applicable in case the Nominee is a Minor)
- Guardian’s Relationship with Nominee (Mandatory & Applicable in case the Nominee is a Minor)
- Nominee Pan (Optional)
- Guardian Pan (Optional. Can provide this value if nominee is a minor)
On the other hand, if nominee details are not provided, ensure that all holders know that they are opting out of the nomination facility.
- Send OTP to both Mobile number/Email address. This must be the mobile number/email address stored against the primary investor linked to the investment account associated with the purchase order. If there are multiple holders, send OTP to Mobile number/Email addresses of all holders.
- Accept OTP from all the holders and verify the OTP and ensure that the correct OTP is entered.
- Store all the consent-related information for audit purposes.
4. Update the purchase order with investor consent
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 if a purchase order has been placed against a folio. Call the Fetch folios API and fetch the email address and mobile number against the folio.
- Sending a One-Time Password to the investor at his/her email/phone number available in the Investor Object or the Investor Profile.
Once the consent has been collected, the email and mobile used to collect that consent needs to be added to the purchase object by using Update a Purchase Order .
If the order gateway is
BSE
, you need to change the order state toconfirmed
along with the consent details using Update a MF Purchase . Once the order isconfirmed
, FP will try to submit the order to BSE asynchronously in the background. Once the order submission is successful, the purchase order state changes fromconfirmed
tosubmitted
. Please ensure that orders are insubmitted
state before you can accept payments.
5. Collect payments against purchase orders
Collect amount via Netbanking/UPI
To make a payment using internet banking or upi, make a request to
Create payment
with the following json. Use the order's old_id
from the
previous step. Use the id
of the bank account belonging to
the investor, with which you want him to make the payment. You can provide multiple order ids of `pending` purchase orders created against the same investment account and create a single payment.
{
"amc_order_ids": [9123],
"bank_account_id": 23
}
Look for token_url
in the response and redirect your
investor to it to complete his payment. After your investor finishes the payment, FP
redirects him to the postback URL configured on your account or to the
payment_postback_url
provided in the request. You'll
receive success
or
failure
in the
status
param. As a good security practice, do not
completely rely on the status
received in the postback
call. Instead check the status of the payment from your server before giving a final
confirmation to your investor.
Learn more about payment states.
Upon successful payment collection, the orders willl be marked as confirmed
if the gateway is rta
and orders will be submitted to order gateway eventually for further processing.
Collect amount via e-mandates
To make a payment against one-time RTA purchase orders using e-mandates, make a request to
Create a NACH payment
with the following json. Use the order's old_id
from the
previous step. Use the id
of the mandate belonging to
the investor, with which you want the investor to make the payment.
{
"mandate_id": 23
"amc_order_ids": [9123],
}
For more details, please check this link.Upon successful payment collection, the orders willl be marked as confirmed
if the gateway is rta
and orders will be submitted to order gateway eventually for further processing.
Collect payments on your own.
After you have collected the money from your investor and initiated a transfer of that amount to AMC's bank account, provide the transfer details using the Create a MF Settlement Detail with the following json:
{
"mf_purchase": "mfp_177177219f634373b01072986d2eea7d",
"payment_type": "netbanking",
"bank_account_number": "999900002222",
"bank_ifsc": "UTIB0003098",
"beneficiary_account_number": "1233453",
"beneficiary_account_title": "MF Collection A/c",
"beneficiary_bank_name": "Amc Bank Name"
}
Collect payments on your own
Once you provided the transfer initiation details, confirm the purchase order by calling the Update mf purchase with the following json:
{
"id": "mfp_177177219f634373b01072986d2eea7d",
"state": "confirmed"
}
5. Track the order
Once the payment collection is successful, you don't have to take further actions. After the order is processed successfully (typically takes one day) - units are allotted and the object state will move to successful
. You can track a single purchase order using
fetch mf purchase
to check the state
of the order or you can check the status of multiple orders at once using
MF Purchase List
API.
For a successful order, review the following key attributes of the mf_purchase
object:
allotted_units
: the number of units issued for the purchase amount
purchased_price
: the price per unit at which the units are issued
folio_number
: the folio (aka mutual fund account) in which the units are issued. You'll need this to place additional purchases and redemption orders
Testing
In sandbox, 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"
}
A testing folio number is issued during simulation, which you can use to place additional purchase orders or redemption orders.