#Website Name Deposits

A standard SDK that grants access to fixed deposit products offered by multiple banks to developers.

Integration of supply partners—financial institutions such as banks, NBFCs, and AMCs—with distributor channels such as PhonePe and Google Pay is facilitated by (Website Name)'s

(Website Name)’s product offers a lot of advantages—

  1. Standalone FD—No need to open new bank account. A customer can fund their FD from their existing bank accounts using either UPI or net-banking.
  2. Attractive interest rates—Our bank/NBFC partners give us the best interest rates available in the market, making it lucrative as an investment option.
  3. Insured upto 5 Lakhs—FD from Banks are insured upto 5 Lakhs by RBI’s wholly owned subsidiary DICGC (Deposit Insurance and Credit Guarantee Corporation).
  4. FDs from multiple banks/NBFC—Multiple options for FDs on the platform. If you need some more information, read more on commonly asked questions about (Website Name) Deposits here.

If you need some more information, read more on commonly asked questions about Website Name Deposits here.


#What can I do with this product?

If you’re a supply partner

On the (Website Name) platform, a "supply partner" is a financial institution that offers fixed deposit products to customers. For example Small Finance Banks, NBFCs, etc.

On the (Website Name) platform, a "supply partner" refers to any financial institution that provides fixed deposit products to customers. Such as NBFCs, small finance banks, and so forth.

Providing your customers with a streamlined fixed deposit booking and management experience could be achieved through the distribution of your FD product on multiple distributor platforms. An increased influx of funds and customers will be to your advantage, and you will not be required to invest a substantial amount in CAC.

  • Increased retail base and granularity of customers
  • Minimize your cost of acquiring customers
  • Amplify your IT bandwidth—Integrating with (Website Name) SDK enables you to go live on multiple fintech partners in a fraction of the time it typically takes.
If you’re a distributor partner

A "distributor partner" for (Website Name)'s FD SDK is any digital or hybrid channel that has the capability to offer fixed deposits to their clientele. For instance, investment and payment applications.

You can expand your coverage of investment instruments and offer proprietary ones, without having to integrate individually with each bank or fund house. This vastly reduces time spend on development, letting you go live much faster.


#How it works

This section is meant for distributor partners. Supply partners may require bespoke integrations depending on their individual technical configurations.

Here is a typical list of steps involved in booking an FD by a retail investor. In this scenario, the distributor app has onboarded a banking partner with (Website Name)’s Deposit SDK.

  1. The customer opens a distributor partners app and chooses any of the supply partners to invest in.
  2. The customer chooses an amount to invest and a tenure of their choice, and views the expected return on the maturity of the FD.
  3. The customer fills out KYC details and personal information.
  4. The customer then pays using any payment method of their choice (UPI, Netbanking, etc).
  5. This payment directly goes to the supply partner, or maybe routed via (Website Name)’s own payment gateway infrastructure.

Was this page helpful?

#Fixed Deposits integration

#Step 1 — Create an FD app on The Bridge

The Bridge is the developer console utilized by (Website Name) to administer integrations. This is the configuration page for your FD application. The Bridge features (Website Name) Fixed Deposits products in the Investments section. After configuring this configuration, a secret key will be provided for use as an input parameter when executing the SDK.


Configure FD app on Bridge ↗

#Step 2 — Integrate via SDK

Embed the SDK on your page. Offer pre-built end-to-end FD journeys with thoughtfully designed UX, easily collect user details and full-fill FD bookings.

Look at the Integrate via SDK guide to proceed.


#Step 3 — Go live


Once you have finished integration on sandbox, these are the steps to go live on production—

  • Get design approvals—Share your design/UX with us to make sure it adheres to the guidelines laid down by banks.
  • Contact your account manager—Once designs are finalized, agreements exceuted and approved. Contact your account manager of (Website Name) for going live.
  • Execute legal agreements—This will be shared once you start the conversation with the business team.

Was this page helpful?

#Fixed Deposits SDK integration guide for Web

#Add a button



Add the following button at an appropriate location to your page. The function launchSDK, which invokes the SDK, should be attached to click event of this button.

<buttononclick="launchSDK()">Book FD</button>

#Add the script

Add both the scripts, Script 1 and Script 2 provided below, just before closing of body tag on your page.


Script 1
<script
type="text/javascript"
src="https://fd.(Website Name).co/sdk.js"
></script>

Script 2

Provide the following details when calling the function in the script—

  • A valid SDK secretKey obtained from the bridge under-investment product has to be passed as secretKey in the function call.
  • Provide env as MOCK for mock environment and PROD for production environment.
  • Provide these values to theme some parts of the SDK—
    • logoUrl link to your logo
  • Provide redirectTo as the URL object to which the user should be redirected after the transaction is completed.
    • on success or failure, we will redirect user to success or failure URL, provided in redirectTo object with a query parameter applicationId with value as the application ID of the transaction.
    • this will help in easier way to map transactions with respect to one user and to check when one user has created multiple FDs with different providers
  • provider is the bank/NBFC offering the FD. Following are the values for various bank/NBFC partners—
provider provider code
Ujjivan Small Finance Bank UJVN
Bajaj Finance NBFC BAJAJ

The details required vary across banks. Following are the details required for the above mentioned bank/NBFC partners–


All prefills aren't mandatory. Only email, amount, env and tenure are mandatory. If you choose to skip a prefill, simply don't include it in your code.


Note that the key provider has a value of UJVN, representing the FD providing bank.


Provide tenure in days. For example, if you want to provide a tenure of 180 days, provide tenure: 180. The range of tenure is 180 to 365 days.


Note that the key env has a value of MOCK, representing the current environment. The possible values are MOCK, UAT and PROD.


To re-initate the SDK for user to restart from where the user left. You need to call this function once again.


<scripttype="text/javascript">
functionlaunchSDK(){
document.Setu.FD.init({
secretKey:"YOUR_SECRET_KEY",
env:"MOCK",//ENUM values - "MOCK", "UAT", "PROD"
partnerName:"YOUR_PARTNER_NAME",//Used for branding
theme:{
primaryColor:"#3742FA",
secondaryColor:"#E2ECFC",
primaryTextColor:"#1A202C",
secondaryTextColor:"#A0AEC0",
hoverOnPrimaryColor:"#2C3AFA",
inputFieldBackgroundColor:"#F7FAFC",
inputFieldBorderColor:"#3742FA",
cardColor:"#FFFFFF",
globalBackgroundColor:"#F7FAFC",
logoUrl:
"https://image.shutterstock.com/image-vector/abstract-vector-logo-design-template-600w-1971786323.jpg",
},
provider:"UJVN",//ENUM values - "UJVN", "BAJAJ"
prefills:{
amount:25000,
tenure:180,//Range - 180 to 365 days
kycParams:{
pan:"ABCD1234E",
mobile:"9998887776",
},
personalParams:{
mothersName:"Rhea",
fathersName:"Kronos",
maritalStatus:"MARRIED",//ENUM values - "SINGLE","MARRIED","DIVORCED","WIDOW","SEPARATED"
spouseName:"Hera",
qualification:"10TH",
occupation:"EMPLOYED",//ENUM values - "SALARIED", "PROFESSIONAL", "SELF_EMPLOYED", "UNEMPLOYED", "STUDENT", "HOUSEWIFE", "RETIRED"
designation:"SALARIED",//ENUM values - "DOCTOR", "CONSULTANT", "EDUCATOR", CHARTERED_ACCOUNTANT", "LAWYER", "STUDENT", "HOUSEWIFE", "RETIRED", "SALARIED", "SELF_EMPLOYED", "OTHERS"
communicationAddress:"6th main, Subhash Nagar, Tumkur",
communicationPinCode:"560023",
},
nomineeParams:{
nomineeRelationship:"SON",//ENUM values - 'FATHER', 'MOTHER', 'DAUGHTER', 'SON', 'FATHER_IN_LAW', 'MOTHER_IN_LAW', 'DAUGHTER_IN_LAW', 'SON_IN_LAW', 'GRAND_FATHER', 'GRAND_MOTHER', 'HUSBAND', 'WIFE', 'BROTHER', 'SISTER', 'BROTHER_IN_LAW', 'SISTER_IN_LAW', 'AUNT', 'UNCLE', 'COUSIN', 'GUARDIAN', 'EMPLOYER', 'EMPLOYEE', 'FRIEND', 'COLLEAGUE', 'OTHER', 'SHG_MEMBER', 'SHG', 'NEPHEW', 'NIECE'
nomineeName:"Suresh",
nomineeDob:"1992-11-11",
nomineeEmail:"[email protected]",
nomineePincode:"560023",
},
maturityParams:{
maturityIfsc:"SBIN0050432",
maturityAccountNumber:"00112233445566",
},
redirectTo:{
success:"https://my-website.co/success"
failure:"https://my-website.co/failure"
}
},
});
}
</script>

#Mock values for testing

Once you have successfully embedded the SDK on your page, use the following input values for testing the SDK journey in sandbox—


Was this page helpful?

#Fixed Deposits SDK integration guide for Android

#Add a button



Add the following button at an appropriate location to your activity.

#Important notes

  • A valid SDK secretKey obtained from the bridge under-investment product has to be passed as secretKey in the function call.
  • Provide env as MOCK for mock environment and PROD for production environment.
  • Provide these values to theme some parts of the SDK—
    • logoUrl link to your logo
  • Provide redirectTo as the URL object to which the user should be redirected after the transaction is completed.
    • on success or failure, we will redirect user to success or failure URL, provided in redirectTo object with a query parameter applicationId with value as the application ID of the transaction.
    • this will help in easier way to map transactions with respect to one user and to check when one user has created multiple FDs with different providers
  • provider is the bank/NBFC offering the FD. Following are the values for various bank/NBFC partners—
provider provider code
Ujjivan Small Finance Bank UJVN
Bajaj Finance NBFC BAJAJ



All prefills aren't mandatory. Only email, amount, env and tenure are mandatory. If you choose to skip a prefill, simply don't include it in your code.


Note that the key provider has a value of UJVN, representing the FD providing bank.


Provide tenure in days. For example, if you want to provide a tenure of 180 days, provide tenure: 180. The range of tenure is 180 to 365 days.


Note that the key env has a value of MOCK, representing the current environment. The possible values are MOCK, UAT and PROD.


To re-initate the SDK for user to restart from where the user left. You need to call this function once again.


This is a sample implementation of invoking our FD SDK in Android.

Android implementation using Java

packagecom.example.deposits;// Replace with your package name
importandroidx.appcompat.app.AppCompatActivity;
importandroid.annotation.SuppressLint;
importandroid.os.Bundle;
importandroid.util.Base64;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
importorg.json.JSONException;
importorg.json.JSONObject;
publicclassMainActivityextendsAppCompatActivity{
@Override
protectedvoidonCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView =getWebviewObject();
// HTML to load SDK
String html ="<script type="text/javascript" src="https://fd.(website name).co/sdk.js"></script><p>Loading...</p>";
String encodedHtml =Base64.encodeToString(html.getBytes(),Base64.NO_PADDING);
// Set prefills here
JSONObject prefills =newJSONObject();
try{
prefills.put("secretKey","YOUR_SECRET_KEY");
prefills.put("env","MOCK");// MOCK, PROD
prefills.put("partnerName","YOUR_PARTNER_NAME");
prefills.put("theme",getPrefillsTheme());
prefills.put("provider","UJVN");
prefills.put("prefills",getPrefills());
prefills.put("personalParams",getPersonalParams());
prefills.put("nomineeParams",getNomineeParams());
prefills.put("maturityParams",getMaturityParams());
prefills.put("redirectTo",getRedirectionDetails());
}catch(JSONException e){
e.printStackTrace();
}
String jsString ="(function handleClick(){document.(website name).FD.init(%s)})();";
String injectableJS =String.format(jsString, prefills);
webView.loadData(encodedHtml,"text/html","base64");
webView.setWebViewClient(newWebViewClient(){
@Override
publicvoidonPageFinished(WebView view,String url){
if(view.getUrl().startsWith("data:")){
view.evaluateJavascript( injectableJS, paRes ->{
// Handle response here
});
});
}
super.onPageFinished(view, url);
}
});
}
// Set theme
JSONObjectgetPrefillsTheme()throwsJSONException{
JSONObject theme =newJSONObject();
theme.put("logoUrl","https://image.shutterstock.com/image-vector/abstract-vector-logo-design-template-600w-1971786323.jpg");
theme.put("primaryColor","#3742FA");
theme.put("secondaryColor","#E2ECFC");
theme.put("primaryTextColor","#1A202C");
theme.put("secondaryTextColor","#A0AEC0");
theme.put("hoverOnPrimaryColor","#2C3AFA");
theme.put("inputFieldBackgroundColor","#F7FAFC");
theme.put("inputFieldBorderColor","#3742FA");
theme.put("cardColor","#FFFFFF");
theme.put("globalBackgroundColor","#F7FAFC");
return theme;
}
// Set amount, tenue and KYC params
JSONObjectgetPrefills()throwsJSONException{
JSONObject prefils =newJSONObject();
prefils.put("amount",25000);
prefils.put("tenure",180);
JSONObject kyc =newJSONObject();
kyc.put("email","[email protected]");
kyc.put("pan","ABCD1234E");
kyc.put("mobile","9998887776");
prefils.put("kycParams", kyc);
return prefils;
}
// Set personal params
JSONObjectgetPersonalParams()throwsJSONException{
JSONObject personal =newJSONObject();
personal.put("mothersName","Rhea");
personal.put("fathersName","Kronos");
personal.put("maritalStatus","MARRIED");
personal.put("spouseName","Hera");
personal.put("qualification","10TH");
personal.put("occupation","EMPLOYED");
personal.put("designation","SALARIED");
personal.put("communicationAddress","6th main, Subhash Nagar, Tumkur");
personal.put("communicationPinCode","560023");
return personal;
}
// Set nominee params
JSONObjectgetNomineeParams()throwsJSONException{
JSONObject nomineeParams =newJSONObject();
nomineeParams.put("nomineeRelationship","SON");
nomineeParams.put("nomineeName","Suresh");
nomineeParams.put("nomineeDob","1992-11-11");
nomineeParams.put("nomineeEmail","[email protected]");
nomineeParams.put("nomineePincode","560023");
return nomineeParams;
}
// Set account details
JSONObjectgetMaturityParams()throwsJSONException{
JSONObject maturityParams =newJSONObject();
maturityParams.put("maturityIfsc","SBIN0050432");
maturityParams.put("maturityAccountNumber","00112233445566");
return maturityParams;
}
// Set redirection object
JSONObjectgetRedirectionDetails()throwsJSONException{
JSONObject redirectTo =newJSONObject();
redirectTo.put("success","https://my-website.co/success");
redirectTo.put("failure","https://my-website.co/failure");
return redirectTo;
}
@SuppressLint("SetJavaScriptEnabled")
WebViewgetWebviewObject(){
WebView webView =findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
return webView;
}
}

#Mock values for testing

Once you have successfully embedded the SDK on your page, use the following input values for testing the SDK journey in sandbox—


Was this page helpful?

#Fixed Deposits SDK integration guide for iOS

#Add a button



Add the following button at an appropriate location to your view.

#Important notes

  • A valid SDK secretKey obtained from the bridge under-investment product has to be passed as secretKey in the function call.
  • Provide env as MOCK for mock environment and PROD for production environment.
  • Provide these values to theme some parts of the SDK—
    • logoUrl link to your logo
  • Provide redirectTo as the URL object to which the user should be redirected after the transaction is completed.
    • on success or failure, we will redirect user to success or failure URL, provided in redirectTo object with a query parameter applicationId with value as the application ID of the transaction.
    • this will help in easier way to map transactions with respect to one user and to check when one user has created multiple FDs with different providers
  • provider is the bank/NBFC offering the FD. Following are the values for various bank/NBFC partners—
provider provider code
Ujjivan Small Finance Bank UJVN
Bajaj Finance NBFC BAJAJ



All prefills aren't mandatory. Only email, amount, env and tenure are mandatory. If you choose to skip a prefill, simply don't include it in your code.


Note that the key provider has a value of UJVN, representing the FD providing bank.


Provide tenure in days. For example, if you want to provide a tenure of 180 days, provide tenure: 180. The range of tenure is 180 to 365 days.


Note that the key env has a value of MOCK, representing the current environment. The possible values are MOCK, UAT and PROD.


To re-initate the SDK for user to restart from where the user left. You need to call this function once again.


This is a sample implementation of invoking our FD SDK in Swift.

iOS implementation using SWIFT

import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate, WKUIDelegate {
let webView: WKWebView = {
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
let configuration = WKWebViewConfiguration()
configuration.defaultWebpagePreferences = prefs
configuration.preferences.javaScriptCanOpenWindowsAutomatically = true
let webView = WKWebView(frame: .zero, configuration: configuration)
return webView
}()
struct prefilData : Codable {
var secretKey: String = "YOUR_SECRET_KEY"
var env: String = "MOCK"
var partnerName: String = "YOUR_PARTNER_NAME"
var provider: String = "UJVN"
var theme: Theme = Theme()
var prefills: Prefills = Prefills()
var personalParams: PersonalParams = PersonalParams()
var nomineeParams: NomineeParams = NomineeParams()
var maturityParams: MaturityParams = MaturityParams()
var redirectTo: RedirectTo = RedirectTo()
struct Theme: Codable {
var logoUrl: String = "https://image.shutterstoc.com/image-vector/abstract-vector-logo-design-template-600w-1971786323.jpg"
var primaryColor: String = "#3742FA"
var secondaryColor: String = "#E2ECFC"
var primaryTextColor: String = "#1A202C"
var secondaryTextColor: String = "#A0AEC0"
var hoverOnPrimaryColor: String = "#2C3AFA"
var inputFieldBackgroundColor: String = "#F7FAFC"
var inputFieldBorderColor: String = "#3742FA"
var cardColor: String = "#FFFFFF"
var globalBackgroundColor: String = "#F7FAFC"
}
struct Prefills: Codable {
var amount: Int = 25000
var tenure: Int = 180
var kycParams: KYCParams = KYCParams()
struct KYCParams: Codable {
var email: String = "[email protected]"
var pan: String = "ABCD1234E"
var mobile: String = "9998887776"
}
}
struct PersonalParams: Codable {
var mothersName: String = "Rhea"
var fathersName: String = "Kronos"
var maritalStatus: String = "MARRIED"
var spouseName: String = "Hera"
var qualification: String = "10TH"
var occupation: String = "EMPLOYED"
var designation: String = "SALARIED"
var communicationAddress: String = "6th main, Subhash Nagar, Tumkur"
var communicationPinCode: String = "560023"
}
struct NomineeParams: Codable {
var nomineeRelationship: String = "SON"
var nomineeName: String = "Suresh"
var nomineeDob: String = "1992-11-11"
var nomineeEmail: String = "[email protected]"
var nomineePincode: String = "560023"
}
struct MaturityParams: Codable {
var maturityIfsc: String = "SBIN0050432"
var maturityAccountNumber: String = "00112233445566"
}
struct RedirectTo: Codable {
var success: String = "https://my-website.co/success"
var failure: String = "https://my-website.co/failure"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(webView)
webView.navigationDelegate = self
webView.uiDelegate = self
webView.loadHTMLString("<script type="text/javascript" src="https://fd.(website name).co/sdk.js"></script><p>Loading...</p>", baseURL: nil)
let injectableJS = getInjectableJS()
DispatchQueue.main.asyncAfter(deadline: .now()+2){
self.webView.evaluateJavaScript(injectableJS){ result, error in
guard let html = result as? String, error == nil else {
return
}
print(html)
}
}
}
func getInjectableJS() -> String {
let jsonEncoder = JSONEncoder()
jsonEncoder.outputFormatting = .prettyPrinted
let pd = prefilData()
var endcodePrefills = "";
do {
let prefills = try jsonEncoder.encode(pd)
endcodePrefills = String(data: prefills, encoding: .utf8)!
} catch {
print(error.localizedDescription)
}
return "(function handleClick(){document.(website name).FD.init((endcodePrefills))})();"
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
webView.frame = view.bounds
}
func webView(_ webView: WKWebView, createWebViewWith configuration: WKWebViewConfiguration, for navigationAction: WKNavigationAction, windowFeatures: WKWindowFeatures) -> WKWebView? {
let newWebView = WKWebView(frame: webView.frame, configuration: configuration)
view.addSubview(newWebView)
return newWebView
}
}

#Mock values for testing

Once you have successfully embedded the SDK on your page, use the following input values for testing the SDK journey in sandbox—


Was this page helpful?

#Peripheral pages

These are pages that would be built out by you, which come before or after the fixed deposit booking journey. These help your customers to smoothly complete the fixed deposits journey for your customers within your app or website. While these may not be mandatory, it is recommended that you build this to offer a better product to your users and get a higher conversion rate.


#Create a page to highlight benefits

The Website Name Deposits product has many advantages. You may choose to highlight the following details for your customers—

  1. Standalone FD—No need to open new bank account. A customer can fund their FD from their existing bank accounts using either UPI or net-banking.
  2. Attractive interest rates—Our bank/NBFC partners give us the best interest rates available in the market, making it lucrative as an investment option.
  3. Insured upto 5 Lakhs—FD from Banks are insured upto 5 Lakhs by RBI’s wholly owned subsidiary DICGC (Deposit Insurance and Credit Guarantee Corporation).
  4. FDs from multiple banks/NBFC—Multiple options for FDs on the platform.

#Create a fixed deposit exploration page

If you want to allow your users to explore various FD options that you provide, you can build a page that helps them try out options, even before actually starting the FD booking journey. Examples include FD calculators, interest graphs, comparison between FD providers and so on. Here is one such example—

Sample FD exploration page

In order to build an exploration page that is consistent with the current information, we offer these APIs. You can use one or more of them, as per your needs.

  1. FD calculator API— Get maturity amount corresponding to a particular investment amount, tenure, provider. Implement FD calculator APIs using our API Docs ↗

  2. Misc info API— Get misc information about all providers. Implement Misc info APIs using our API Docs ↗

This page could also have a CTA that pre-fills user choices like amount/tenure etc. and invokes the FD booking SDK. Here is the ideal end-to-end user journey with the SDK integration.


#Create a fixed deposit dashboard

On completing the FD booking journey, you will receive a webhook notification with status as FINISH. The webhook notification will have all the data required to create such a page, using details like invested amount, maturity amount, rate of interest, maturity date and more.

Sample FD exploration page

Was this page helpful?

#Configure notifications

Webhooks can be configured to listen to user events such as real-time application status, once the user starts the Fixed Deposit booking journey. This can be used for analytics and re-engagement purposes.

Notifications have to be configured on The Bridge in Step 2 of configuration and is optional


#Set up process

Provide callback URL

Set up a callback URL that is capable of receiving real-time notifications.


Supported auth schemes

We support 3 forms of auth scheme for your callback URL server —

  1. None – Open Endpoint without any authentication.
  2. JWT – Signed JWT based authentication i.e. JWT token in Authorization Header. client-id and secret should be configured on Bridge. JWT generation URLs along with payload need to be communicated offline to Website Name by writing to deposits.biz@(website name).co.
  3. Basic – Username and Password based authentication.

The authentication scheme can be customised for enterprise customers — please write to us at deposits.biz@(website name).co


#Notification payload structure

Each notification is a JSON with the following key value pairs —

  • amount: amount being invested in the fixed deposit
  • application_id: every user is associated with a unique application_id
  • email: email id of the user, same as provided while generating the SDK token
  • phone: phone number provided by the user during the booking journey
  • state: state of the application in the FD booking journey. See the list of application states below for a detailed explanation.
  • tenure_in_days: tenure of the FD in days
  • maturity_date: date at which FD gets matured and funds are credited back to the user's source account
  • maturity_amount: amount which user will receive at maturity
  • interest_rate: interest received per annum for the particular FD
  • bank/NBFC: provider of the FD
  • timestamp: timestamp indicating when this notification was created, confirms to the EPOC format
  • premature_redemption_available_online: whether the provider supports breaking of FD before maturity or not

#Sample payload

{
"amount":25000.0,
"application_id":"21b2fd43-47e5-47bf-810d-699a8a4de4b7",
"phone":"919876543210",//ENUM values—919876543210 | null
"state":"FINISH",//ENUM values—AWT_GENERATE_VERIFY_OTP | AWT_AADHAAR_CONSENT | AWT_WEBVIEW_RESULTS | AWT_PAYMENT | FINISH
"tenure_in_days":200,
"maturity_date":"31-12-2030",
"maturity_amount":30000,
"interest_rate":"7%",
"bank/NBFC":"UJJIVAN",//ENUM values—Bajaj Finance
"timestamp":1643038421.505453,// epoc time
"premature_redemption_available_online":"YES"// ENUM values—YES/NO
}

We may add additional parameters at a later stage. However, backward compatibility will be ensured.


#List of application states

The following states convey the status of a booking journey –

  • AWT_GENERATE_VERIFY_OTP — Awaiting Mobile OTP verification
  • AWT_AADHAAR_CONSENT — Awaiting Aadhaar Consent
  • AWT_WEBVIEW_RESULTS — Awaiting Aadhaar Verification
  • AWT_PAYMENT — Awaiting Payment
  • FINISH — Fixed Deposit has been booked

(Website Name) FD APIs


Base URL

http://deposits-sandbox.(website name).co:3002/deposits/v1

Authentication

HTTP authentication - bearer

Description

(website name)’s standardised Fixed Deposit APIs work across multiple banks and NBFC and are designed for anyone looking to offer a complete FD booking & management service to their customers. Here’s what a user can expect to do

  • Calculate returns against FDs
  • Check FD offers
  • Apply and fill in details
  • Transfer funds and get notified on payment
  • Manage FD with statements, raise service requests. We continue to add more functionality to build a full spectrum of deposits services, like offering a recurring deposit product and more.

Definitions

Provider

The bank or NBFC providing FD booking & management services. See GET FD Providers API

Offer

  • A template for an Application. Each offer has a set of required inputs to successfully complete an application. It also specifies lower and upper bounds for tenures or principal amounts, with an associated interest rate. See the GET FD Offers API
  • Naming of offers follow <BANK>_<TYPE>_<OFFER_NO> format. Here BANK is bank/provider code(EQTS, UJVN, BAJAJ), TYPE reffers to REG(Regular)/SNR(Senior Citizen). e.g., EQTS_REG_01, EQTS_SNR_01, UJVN_REG_01
  • You can change which bank FD you want to book by updating deposit_offer_id in Create Application (POST /application) API call.
    • To book an Equitas FD use offers prefixed with EQTS e.g., EQTS_REG_01, EQTS_SNR_01
    • To book an Ujjivan FD use offers prefixed with UJVN e.g., UJVN_REG_01, UJVN_SNR_01

Application

Use a specified offer to get required inputs for an application. Use the applicationID (provided at the time of creating application) to use it to GET Application Status or PATCH Application to update application inputs

Account

Once an Application is complete, an Account is created -> Remember to save the Customer object in creation response. Or call the GET Account status API. To summarise, a Provider offers multiple Offers. An Offer is used as a template to create an Application. The Application is filled up with fields as specified in the Offer . Once complete and paid for, the Application is used to create an Account .

We have 3 categories of APIs

  1. Peripheral APIs
  2. FD Booking APIs
  3. FD Management APIs

Authorization

Please use below Curl to obtain Bearer token, which needs to be embedded in Authorization header.

curl --request POST 'https://auth-dev.(website name).co/auth/realms/fd/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_secret=5cfa9293-6697-4ee3-aae8-8a6837f026e8' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=dummy-id'

Bank Specific APIs:

To book an FD, normally you need to call (website name)-FD APIs in a chronological order. But not every bank/provider follow the standard API call flow, for example you don't need to Generate OTP for mobile number while booking an Ujjivan FD. In these scenarios, you can skip calling API's which are not applicable to particular banks. To figure out if an API is applicable for a Certain Bank/Provider or if there's a need to change set of params in default API request, check out Applicable Providers section in each APIs documentation.

FD Calculator

http://deposits-sandbox.(website name).co:3002/deposits/v1/calculator

Description

Get expected returns for an FD with a given provider, for a given amount & tenure.

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Request

Security

HTTP authentication - bearer

Query parameters

provider

string

Required

amount

integer

Required

Amount to be deposited ( in Rupees)

tenure

integer

Required

Deposit tenure ( in days )

category

string

Required

category code (eg: SENIOR_CITIZEN)


Response

Body

provider

object

Required

principalAmount

number

Required

maturityAmount

number

Required

interestAccrued

number

Required

interestRate

number

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url 'http://deposits-sandbox.(website name).co:3002/deposits/v1/calculator?provider=UJVN&amount=9000&tenure=10&category=REGULAR'\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"principalAmount":9000,
"maturityAmount":9012,
"interestAccrued":12,
"interestRate":5
}

Providers

http://deposits-sandbox.(website name).co:3002/deposits/v1/providers

Get a list of all FD providers (Banks/NBFCs) currently integrated with (website name).


Request

Security

HTTP authentication - bearer

Response

Body

array
Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/providers \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


[
{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
}
]

Offers

http://deposits-sandbox.(website name).co:3002/deposits/v1/offers

List of all Offers from supported FD Providers.

You can use the query filters to

  • filter offers from a given provider only.
  • filter offers meant for senior citizens only ( or regular only)
  • filter offers having interest rates within your desired range.
  • filter offers having the allowed principal amounts within your desired range.

If you're interested to Create an Application using a given offer, remember to note down the offerID (eg: "EQTS_REG_01"). Also remember to lookup the expectedParams of the Offer while filling in the required fields for the Application


Request

Security

HTTP authentication - bearer

Header parameters

Accept

string

Required


Response

Body

array
Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/offers \
--header 'Accept: application/json'\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


[
{
"id":"EQTS_SNR_07",
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"category":"SENIOR_CITIZEN",
"amount":{
"min":5000,
"max":5000
},
"tenure":{
"min":271,
"max":364
},
"interest":{
"payoutFrequency":"NONE",
"rate":7.2
},
"prematureWithdrawal":{
"penalty":{
"value":1,
"unit":"PERCENTAGE"
},
"isAllowed":1
},
"expectedParams":{
"kyc":[
{
"name":"aadhaar",
"required":true
},
{
"name":"pan",
"required":true
},
{
"name":"mobile",
"required":true
},
{
"name":"email",
"required":true
}
],
"personal":[
{
"name":"mobile",
"required":true
},
{
"name":"fathersName",
"required":true,
"maxLength":30
},
{
"name":"mothersName",
"required":true,
"maxLength":30
},
{
"name":"cityOfBirth",
"required":true,
"maxLength":20
},
{
"name":"countryOfBirth",
"required":true
},
{
"name":"qualification",
"required":true
},
{
"name":"occupation",
"required":true
},
{
"name":"designation",
"required":true
},
{
"name":"maritalStatus",
"required":true
},
{
"name":"incomeGroup",
"required":true
}
],
"nominee":[
{
"name":"skipNominee",
"required":true
},
{
"name":"relationship",
"required":true
},
{
"name":"isSameAsCustomerAddress",
"required":true
},
{
"name":"name",
"required":true
},
{
"name":"dob",
"required":true
},
{
"name":"email",
"required":true
},
{
"name":"pinCode",
"required":true
},
{
"name":"city",
"required":true
},
{
"name":"address",
"required":true
},
{
"name":"addressType",
"required":true
}
],
"declarations":[
{
"name":"aadhaar",
"required":true
},
{
"name":"fatca",
"required":true
},
{
"name":"fundFromOwnAccount",
"required":true
},
{
"name":"maturityAutoTransfer",
"required":true
},
{
"name":"pep",
"required":true
},
{
"name":"tnc",
"required":true
}
]
}
},
{
"id":"EQTS_SNR_08",
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"category":"SENIOR_CITIZEN",
"amount":{
"min":5000,
"max":5000
},
"tenure":{
"min":365,
"max":365
},
"interest":{
"payoutFrequency":"NONE",
"rate":7.7
},
"prematureWithdrawal":{
"penalty":{
"value":1,
"unit":"PERCENTAGE"
},
"isAllowed":1
},
"expectedParams":{
"kyc":[
{
"name":"aadhaar",
"required":true
},
{
"name":"pan",
"required":true
},
{
"name":"mobile",
"required":true
},
{
"name":"email",
"required":true
}
],
"personal":[
{
"name":"mobile",
"required":true
},
{
"name":"fathersName",
"required":true,
"maxLength":30
},
{
"name":"mothersName",
"required":true,
"maxLength":30
},
{
"name":"cityOfBirth",
"required":true,
"maxLength":20
},
{
"name":"countryOfBirth",
"required":true
},
{
"name":"qualification",
"required":true
},
{
"name":"occupation",
"required":true
},
{
"name":"designation",
"required":true
},
{
"name":"maritalStatus",
"required":true
},
{
"name":"incomeGroup",
"required":true
}
],
"nominee":[
{
"name":"skipNominee",
"required":true
},
{
"name":"relationship",
"required":true
},
{
"name":"isSameAsCustomerAddress",
"required":true
},
{
"name":"name",
"required":true
},
{
"name":"dob",
"required":true
},
{
"name":"email",
"required":true
},
{
"name":"pinCode",
"required":true
},
{
"name":"city",
"required":true
},
{
"name":"address",
"required":true
},
{
"name":"addressType",
"required":true
}
],
"declarations":[
{
"name":"aadhaar",
"required":true
},
{
"name":"fatca",
"required":true
},
{
"name":"fundFromOwnAccount",
"required":true
},
{
"name":"maturityAutoTransfer",
"required":true
},
{
"name":"pep",
"required":true
},
{
"name":"tnc",
"required":true
}
]
}
}
]

Get Parameter Options

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/param/address_type

While filling out the Application, certain fields like occupation , designation, marital_status, ... need to be passed. The values of these fields needs to be one among the available options. This API tells you what those options are.

Every option has a key and a value. You need to pass the keys while filling the Application, and you may use the value for display purposes.


Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Response

Body

param

string

Required

options

array

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/param/address_type \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


{
"param":"occupation",
"options":[
{
"key":"SALARIED",
"value":"Salaried"
},
{
"key":"PROFESSIONAL",
"value":"Professional"
},
{
"key":"SELF_EMPLOYED",
"value":"Self-Employed"
},
{
"key":"UNEMPLOYED",
"value":"Unemployed"
},
{
"key":"STUDENT",
"value":"Student"
},
{
"key":"HOUSEWIFE",
"value":"Housewife"
},
{
"key":"RETIRED",
"value":"Retired"
}
]
}

TNC

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/tnc

Get description of terms and conditions in plain text.


Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Response

Body

FATCA

string[]

Required

PEP

string[]

Required

TNC

string[]

Required

AADHAAR

string[]

Required

MATURITY_AUTO_TRANSFER

string[]

Required

FUND_FROM_OWN_ACCOUNT

string[]

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/tnc \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


{
"FATCA":[
"I agree and I hereby declare that I am a tax resident of India above the age of 18 years, and hereby comply with FATCA Declaration."
],
"PEP":[
""
],
"TNC":[
"Opening this FD account online through your digital platform has no intervention or role of the Bank except providing the facility of the digital platform. The initial payment for the account shall be remitted only from a full KYC complied account.",
"The basis of the account opening is my Aadhaar Card.",
"I agree and hereby authorise Equitas Small Finance Bank to fetch my/our personal details using OTP. Aadhaar E - KYC which wil be used for KYC purposes. My personal details are being drawn from the database maintained by UIDAI based on the Aadhaar number provided by me. Bank is not responsible for any incorrect information that may appear in the data provided by me.",
"The opening of the account will be confirmed only after I enter the OTP number received to my mobile number linked to and available in Aadhaar database.",
"As the details are drawn from UIDAI data base, they cannot be modified or altered by me.",
"I am solely responsible for the data made available for opening the account.",
"The data may be lost or get distorted during transmission and I shall not make the Bank liable or responsible for the same",
"Since the opening of the account is through digital platform, there could arise technical fault or error during the opening of the account, which is beyond the control of the Bank and the Bank is not responsible for any loss in this regard.",
"In an event of mismatch in Aadhaar Details and PAN, I acknowledge that the Bank has the right to reject my application and refund my amount.",
"If the KYC documents as specified by the Bank is not furnished withing 12 months, the account would be closed immediately with / without any reference to me.",
"Till such time, I present the personal details for verification, there shall be restrictions on credits and debits in the account as per the guidelines issued by the RBI, which, as on date, restricts me from holding aggregate credit balance of more than Rs.1 lakh in all the accounts held with Equitas Small Finance Bank and cumulative credit transaction carried out by me would not exceed Rs.2 lakhs in a financial year. The account would be totally frozen until 12 months from date of account opening in case of breach of limits specified by RBI. The account could be operated only when the KYC documents as specified by Bank is furnished. ",
"I am also aware that if the verification has not been done by me even beyond the 12 month period, Bank reserves the right to close the account without any reference to me and I will have to visit the branch for withdrawing the funds by providing valid documents as specified by the Bank. I shall not have any claim or dispute with the Bank for any loss that may result to me in this regard as it is solely attributable to me.",
"I am aware that I will be eligible only for a term loan, the aggregate of which, shall not exceed Rs. 60, 000 / -",
"Till I furnish the KYC details in person to your branch for verification, I am not entitled to debit card or POS machine transactions at any commercial outlets. If applicable.",
"Till I present the KYC details in person to your branch for verification, I am not allowed to carry out any transactions at the branch, furthur, I am not entitled to cheque, cash, NEFT, RTGS and IMPS transactions through branch. However I am permitted to carry out online / digital transactions through Net banking / Mobile banking. If applicable.",
"Premature closure/Redemption proceeds will be sent to the details provided by me/us at the time of opening of the FD, in case the account is closed/inactive and the money is returned, bank will not be responsible for the loss of interest/principal / damages as the case may be.",
"I declare that no other account has been opened nor will be opened using OTP based Aadhaar e-KYC within the same Bank or with any other bank.",
"I am aware that the link for opening Selfe Account uses cookies to ensure best experience.",
"I agree that this and such account will be subject to regular scrutiny and monitoring from the bank and bank shall have the right to place the account under total freeze/debit freeze/close the account at its sole discretion, in case of suspicious transactions or transactions not consistent with RBI guidelines relating to the account.",
"I do agree to all the general Terms & Conditions which can be accessed at https://www.equitasbank.com/pdf/Terms-conditions/pdf"
],
"AADHAAR":[
""
],
"MATURITY_AUTO_TRANSFER":[
""
],
"FUND_FROM_OWN_ACCOUNT":[
""
]
}

Create Application

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application

Description

Create an Application using an Offer as a template .

Input

  • offerId: ID of the Offer
  • amount : principal amount (in Rupees)
  • tenure : deposit tenure (in days)
  • isExisting :NTB/ETB (boolean)

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Output

Application object


Request

Security

HTTP authentication - bearer

Body

amount

integer<int32>

Required

offerId

string

Required

tenure

integer<int32>

Required

isExisting

boolean

Response

Body

id

string

Required

offerId

string

Required

state

object

Required

provider

object

Required

tenure

integer<int32>

Required

amount

integer<int32>

Required

interest

object

Required

params

object

Required

Language

curl

Node

Python

Go

Request sample


200 OK

Response sample


{
"id":"ec164d44-b275-4b78-9a56-31fd2f6145d3",
"offerId":"EQTS_REG_01",
"state":{
"code":"AWT_GENERATE_VERIFY_OTP",
"description":{}
},
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"tenure":10,
"amount":9000,
"interest":{
"payoutFrequency":"NONE",
"rate":3.6
},
"params":{
"kyc":{},
"personal":{},
"nominee":{},
"declarations":{}
}
}

Get Application Status

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}

Description

Get the Application Status. state code specifies the stage of the Application in the FD booking process. state description provides more contextual data (if any) of the state.

Input

  • applicationID ( in URL )

Output

Application object

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Response

Body

id

string

Required

offerId

string

Required

state

object

Required

provider

object

Required

tenure

integer<int32>

Required

amount

integer<int32>

Required

interest

object

Required

params

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


{
"id":"ec164d44-b275-4b78-9a56-31fd2f6145d3",
"offerId":"EQTS_REG_01",
"state":{
"code":"AWT_KYC_INPUT",
"description":{
"awaiting":[
"pan",
"email",
"mobile"
]
}
},
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"tenure":10,
"amount":9000,
"interest":{
"payoutFrequency":"NONE",
"rate":3.6
},
"params":{
"kyc":{},
"personal":{
"mobile":"919483895729"
},
"nominee":{},
"declarations":{}
}
}

Update Application Parameters

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}

Description

API to "fill" or PATCH the application with required KYC fields.

Input

lookup the kyc section under expectedParams in the associated Offer .

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Output

Application object

Notes

  • This API should be called when the Application state code is AWT_KYC_INPUT
  • Though aadhaar is also listed under kyc section of expectedParams in the associated Offer, we dont expect aadhaar in this API call. Instead, route the user to a given webpage to complete his KYC. Check the next API Give Aadhaar Consent for more details.
  • In case of BAJAJ, aadhaar based kyc is not supported, instead we do a ckyc.

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Body

params

object

Required

Response

Body

id

string

Required

offerId

string

Required

state

object

Required

provider

object

Required

tenure

integer<int32>

Required

amount

integer<int32>

Required

interest

object

Required

params

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request PATCH \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'\
--header 'content-type: application/json'\
--data '{
"params": {
"kyc": {
"mobile": "919404746750",
"pan": "AGXPM3070D",
"email": "test@(website name).co"
},
"declarations": {
"fundFromOwnAccount": "accepted",
"maturityAutoTransfer": "accepted",
"fatca": "accepted",
"pep": "accepted",
"tnc": "accepted",
"aadhaar": "accepted"
},
"personal": {
"fathersName": "Aman Kumar",
"mothersName": "Sarita Devi",
"occupation": "SALARIED",
"designation": "SALARIED",
"qualification": "UNDER_GRADUATE",
"maritalStatus": "SINGLE",
"incomeGroup": "LIGHT_INCOME_GROUP_1",
"cityOfBirth": "New Delhiiiiiiiiii",
"countryOfBirth": "INDIA",
"mobile": "919404746750"
},
"nominee": {
"skipNominee": false,
"name": "test",
"dob": "1991-12-01",
"email": "test@(website name).co",
"relationship": "FATHER",
"isSameAsCustomerAddress": "false",
"pinCode": "341506",
"city": "JHAROD",
"address": "asdashghjg",
"addressType": "PERMANENT_ADDRESS"
}
}
}'
200 OK

Response sample


{
"id":"ec164d44-b275-4b78-9a56-31fd2f6145d3",
"offerId":"EQTS_REG_01",
"state":{
"code":"AWT_AADHAAR_CONSENT",
"description":{
"awaiting":[
"aadhaar"
]
}
},
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"tenure":10,
"amount":9000,
"interest":{
"payoutFrequency":"NONE",
"rate":3.6
},
"params":{
"kyc":{
"mobile":"919404746750",
"pan":"AGXPM3070D",
"email":"test@(website name).co"
},
"declarations":{
"fundFromOwnAccount":"accepted",
"maturityAutoTransfer":"accepted",
"fatca":"accepted",
"pep":"accepted",
"tnc":"accepted",
"aadhaar":"accepted"
},
"personal":{
"fathersName":"randomFather",
"mothersName":"randomMother",
"occupation":"SALARIED",
"designation":"SALARIED",
"qualification":"UNDER_GRADUATE",
"maritalStatus":"SINGLE",
"incomeGroup":"LIGHT_INCOME_GROUP_1",
"cityOfBirth":"New Delhiiiiiiiiii",
"countryOfBirth":"INDIA",
"mobile":"919404746750"
},
"nominee":{
"skipNominee":false,
"name":"test",
"dob":"1991-12-01",
"email":"test@(website name).co",
"relationship":"FATHER",
"isSameAsCustomerAddress":"false",
"pinCode":"341506",
"city":"JHAROD",
"address":"asdashghjg",
"addressType":"PERMANENT_ADDRESS"
}
}
}

Generate OTP

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/generate-otp

Description

Users need to be authenticated(via SMS OTP) before proceeding with the Application process. This API sends the SMS to the given mobile number.

As a next step, call the Verify OTP API

Input

  • mobile : "91" prefixed mobile number

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Output

Success/Failure message

Notes

This API can only be called when Application's state code is AWT_GENERATE_VERIFY_OTP


Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Body

mobile

string

Required

Response

Body

message

string

Required

Language

curl

Node

Python

Go

Request sample


200 OK

Response sample


{
"message":"OTP Send Successfully to 919483895719"
}

Get Payment Methods

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/payment-methods

Description

Get available payment methods

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Response

Body

array
Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/payment-methods \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200 OK

Response sample


[
{
"name":"UPI",
"id":"UPI"
}
]

Generate Payment Link

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/payment

Description

This method creates a payment object. A payment object contains a unique transaction ID. A payment object has 3 states

  • PENDING
  • FULFILLED
  • EXPIRED

input

  • paymentMethodID: pass "UPI" here

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

Payment object containing

  • txnRefId: Transaction reference ID
  • status: status is "PENDING" at the time of creation.
  • upiDeeplink : Use this link to enable the user to make the payment via UPI

Notes

  • You can call this API only when the Application's state code is AWT_PAYMENT
  • You can generate as many payment objects as you want.
  • Use Get Payment Status API to check if the payment is FULFILLED or not.
  • Use Get Application Status API to get the list of all payment objects generated so far for the given application.

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Body

paymentMethodId

string

Required

Response

Body

paymentMethod

object

Required

applicationId

string

Required

txnRefId

string

Required

upiDeeplink

string

Required

status

string

Required

paymentDetails

object

Required

Language

curl

Node

Python

Go

Request sample


200

Response sample


{
"paymentMethod":{
"id":"UPI",
"name":"UPI"
},
"applicationId":"ec164d44-b275-4b78-9a56-31fd2f6145d3",
"txnRefId":"QG9snkmXtqijcH4eT7n4am",
"upiDeeplink":"upi://pay?pa=(website name)@equitas&pn=equitasbank&tr=QG9snkmXtqijcH4eT7n4am&mc=6012&am=5500",
"status":"PENDING",
"paymentDetails":{}
}

Get Payment Status

http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/payment/{txn_ref_id}

Description

Get the status of the payment object created via Create Payment Link API,. If FULFILLED, you also get the source account details in the payment object. A payment object has 3 states

  • PENDING
  • FULFILLED
  • EXPIRED

input

applicationID : ( in URL ) txnRefID : ID of the payment object( in URL)

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

Payment object.

Notes

  • the status field of the payment object gives you the payment state.
  • If the user has made the payment successfully, status would change from PENDING to FULFILLED.
  • A FULFILLED payment object has details about the source account of the transaction which include
    • txnID : or UTR
    • remitterName : account holder's
    • remitterAmount : amount transferred.
    • remitterAccountNumber :
    • remitterIfsc :
    • remitterBank : Bank name
    • remitterBranch : Branch name
    • sourceVpa :
    • destinationVpa :

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required

txn_ref_id

string

Required


Response

Body

200

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/payment/{txn_ref_id}\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{}

Create Account

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/account

Description

Create an Account using the filled Application

input

  • txnRefId : txnRefId of the FULFILLED payment object created with Generate Payment Link API
  • maturityAccountNumber : Account Number where the principal+interest should be settled upon redemption/maturity
  • maturityIfsc: IFSC of the maturityAccountNumber

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

Account object

notes

  • You must to store the customerObject within the Account object inorder to use the FD management APIs. This is because all Applications are deleted after a certain time, and no meta data would be available to manage the FD account.
  • You can also call Get Account Status to extract the customerObject before the Application is purged.

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Body

txnRefId

string

Required

maturityAccountNumber

string

Required

maturityIfsc

string

Required

Response

Body

applicationId

string

Required

state

object

Required

offerId

string

Required

provider

object

Required

tenure

integer<int32>

Required

amount

integer<int32>

Required

interest

object

Required

customerObject

object

Required

Get Account Status

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/application/{deposit_id}/account

Description

Get Account status.

input

  • applicationId : ( in URL )

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)

output

Account object

notes

  • You must to store the customerObject within the Account object inorder to use the FD management APIs. This is because all Applications are deleted after a certain time, and no meta data would be available to manage the FD account.
  • The Account object mostly looks like the Application object. Infact, Account object is just the Application object in its final state,"FINISH". In the state description you can find the following
    • openingDate
    • maturityDate
    • maturityAmount

Request

Security

HTTP authentication - bearer

Path parameters

deposit_id

string

Required


Response

Body

applicationId

string

Required

state

object

Required

offerId

string

Required

provider

object

Required

tenure

integer<int32>

Required

amount

number

Required

interest

object

Required

customerObject

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/application/{deposit_id}/account \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"applicationId":"ec164d44-b275-4b78-9a56-31fd2f6145d3",
"state":{
"code":"FINISH",
"description":{
"opening_date":"2019-12-31",
"maturity_date":"2020-01-10",
"maturity_amount":"5508",
"interest_rate":"5"
}
},
"offerId":"EQTS_REG_01",
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.equitasbank.com/sites/default/files/equitas-logo.png"
},
"tenure":10,
"amount":5500,
"interest":{
"rate":3.6,
"payoutFrequency":"NONE"
},
"customerObject":{
"accountId":"300000663913",
"productCode":"EQTS_REG_01",
"urn":"",
"customerId":"7727386",
"name":"Sunil Ghintala",
"dob":"1993-01-21",
"pan":"TGXPM3070D",
"mobile":"919483895729",
"email":"test@(website name).co",
"nomineeName":"test",
"nomineeRelation":"FATHER",
"nomineeDob":"1991-12-01"
}
}

Start session

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/session

Description

Create a REST session ( valid for 15 minutes ) for FD management APIs

input

Applicable Providers

  • Equitas (EQTS)

output

  • sessionID

Request

Security

HTTP authentication - bearer

Response

Body

sessionId

string

Required

Language

curl

Node

Python

Go

Request sample


curl --request POST \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/session \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"sessionId":"0327f4c4-834a-47bd-a81e-31848be7118a"
}

Check balance

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/balance

Description

Get current balance

input

  • sessionId ( in URL )

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • balance ( in Rupees )

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Response

Body

balance

number

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/balance \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"balance":5000
}

Get statement

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/statement

description

Get statement, to fetch transactions in a period

input

  • sessionId : ( in URL )
  • start-date : ( in URL )
  • end-date : ( in URL )

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • List of transactions, each containing
    • transactionType : (CR/DR)
    • amount : ( in Rupees )
    • date :

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Query parameters

start-date

string

Required

end-date

string

Required


Response

Body

accountId

string

Required

transactions

array

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url 'http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/statement?start-date=2020-10-10&end-date=2020-12-10'\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"accountId":"300000661434",
"transactions":[
{
"id":"",
"date":"",
"amount":"",
"narration":"",
"type":"CREDIT"
}
]
}

Get redemption details

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/redemption-details

description

Check how much you would get if you were to redeem today

input

  • sessionId : (in URL)

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • netRedemptionAmount
  • taxDeducted
  • principalAmount
  • accruedInterest

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Query parameters

amount

integer

Required


Response

Body

netRedemptionAmount

number

Required

principalAmount

integer<int32>

Required

accruedInterest

integer<int32>

Required

penalty

number

Required

taxDeducted

integer<int32>

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url 'http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/redemption-details?amount=5500'\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"netRedemptionAmount":5500,
"principalAmount":5500,
"accruedInterest":0,
"penalty":0,
"taxDeducted":0
}

Get maturity details

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/maturity-details

Description

Get maturity details ( account details of the beneficiary )

input

  • sessionId : ( in URL )

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • maturityAmount : amount at maturity ( in Rupees )
  • accountMaturityDate : date of maturity ( YYYY-MM-DD )
  • redemptionAccountDetails : accountNumber, IFSC, bankName, branchName

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Response

Body

accountId

string

Required

currentBalance

number

Required

accountOpeningDate

string

Required

accountMaturityDate

string

Required

tenure

string

Required

principalAmount

number

Required

maturityAmount

number

Required

interest

object

Required

redemptionAccount

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/maturity-details \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"accountId":"300000665410",
"currentBalance":5002,
"accountOpeningDate":"2020-01-01",
"accountMaturityDate":"2020-01-10",
"tenure":"9",
"principalAmount":5000,
"maturityAmount":5007,
"interest":{
"payoutFrequency":"MATURITY",
"rate":5
},
"redemptionAccount":{
"accountId":"",
"ifsc":"",
"bank":"",
"branch":""
}
}

Start auth session

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/auth-session

Description

Create an authenticated session ( via SMS OTP), as a precursor to calling Service Request APIs

input

  • sessionId : (in URL)

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • authSessionId : Store this ID. To be used while Fetching Auth Token
  • success/failure status of OTP being send to the registered mobile number.

note

  • The SMS would be sent to the mobile number already registered with the bank.

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Response

Body

authSessionId

string

Required

OTP

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/auth-session \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"authSessionId":"954e8544-c5bb-4925-9d6b-e6b596c9f5b4",
"OTP":{
"status":"OTP send to user mobile number linked to FD account"
}
}

Verify auth session a.k.a Get auth token

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/auth-session

Description

Verify the OTP sent in Start auth session to complete the authentication and start the session.

input

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • accessToken
  • scope : scope of access token ( eg: "EDIT", "REDEEM")

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Response

Body

authenticationDetails

object

Required

Language

curl

Node

Python

Go

Request sample


curl --request POST \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/auth-session \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"authenticationDetails":{
"tokenType":"OTP",
"accessTokenValue":"0a1e85d8886b918168e165a94c5af0ab0170558b040fcc4f9cc0541754394933",
"expiresIn":"2020-11-27 11:13:10",
"scope":[
"EDIT",
"REDEEM"
]
}
}

Create redemption service request

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/redemption

Description

Raise a service request with the bank to redeem a given amount.

input

  • amount: amount to be redeemed.

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

output

  • recordId: Service request ID.

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Header parameters

x-auth-token

string

Required


Body

amount

integer<int32>

Required

Response

Body

recordId

string

Required

message

string

Required

Language

curl

Node

Python

Go

Request sample


400 BAD REQUEST

Response sample


{
"recordId":"201127044128340",
"message":"Service request 201127044128340 is under process."
}

Check Service Request status

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/{session_id}/service-request

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Request

Security

HTTP authentication - bearer

Path parameters

session_id

string

Required


Response

Body

200

Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url http://deposits-sandbox.(website name).co:3002/deposits/v1/{session_id}/service-request \
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{}

Miscellaneous Details

http://deposits-sandbox.(Website Name).co:3002/deposits/v1/misc

Description

Get miscellaneous details for an FD with a given provider, for a given amount & tenure.

Applicable Providers

  • Equitas (EQTS)
  • Ujjivan (UJVN)
  • Bajaj (BAJAJ)

Request

Security

HTTP authentication - bearer

Query parameters

provider

string

Required

FD provider code


Response

Body

provider

object

miscellaneousDetails

object
Language

curl

Node

Python

Go

Request sample


curl --request GET \
--url 'http://deposits-sandbox.(website name).co:3002/deposits/v1/misc?provider=EQTS'\
--header 'Authorization: Bearer REPLACE_BEARER_TOKEN'
200

Response sample


{
"provider":{
"id":"EQTS",
"name":"Equitas Small Finance Bank",
"logoUrl":"https://www.logo.com/sites/default/files/equitas-logo.png"
},
"miscellaneousDetails":{
"tnc":"",
"prematureRedemptionOnline":true,
"maximumAmount":85000,
"maxFDPerUser":1,
"minimumAmount":5000,
"paymentMethod":[
"UPI"
],
"maximumTenure":{
"unit":"MONTH",
"value":12
},
"customerServiceDetails":{
"phone":"1800-333-1111",
},
"minimumTenure":{
"unit":"MONTH",
"value":3
},
"lockIn":null,
"KYCMethod":"ADHAR"
}
}