API Reference

SERVICES Android Library

Card91 SERVICES Android Library

This Library is used to access the bunch of Card91 fintech services from login with auth token to card setting and transferring money

Features

Library directly communicate with Card91 services.

Getting started

Add Card91 SERVICES library into your application and call the required functions.

Installation (Gradle and Manifest Configuration)

Android Minimum Requirements :

Gradle Version - 7.3.3
minSdkVersion - 21
compileSdkVersion - 33
targetSdkVersion - 33

Android Permission on Manifest:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />

Update gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip

Gradle dependencies

dependencies {
    implementation 'androidx.core:core-ktx:1.9.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
		//Add the CARD91 sdk 
    implementation files('../app/libs/card91Sdk.aar')
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    implementation 'com.squareup.okhttp3:okhttp:4.5.0'
    implementation 'com.github.bastiaanjansen:jwt-java:1.2.0'
    implementation 'com.auth0:java-jwt:4.0.0'
    implementation 'com.auth0.android:jwtdecode:2.0.1'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
   
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.9.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'
    implementation 'com.google.code.gson:gson:2.10.1'  // Add this for Gson

}


Also enable the binding on the same app gradle file under android tag if the binding has been used

buildFeatures {
       viewBinding true
   }
}

Usage

Below steps is defined to followed to integrate the Library

Add AAR (Android Library Files)

Add the .aar file provided by card91 team at the libs folder on the project eg. card91Sdk.aar
Keep the aar file at location {Client project location}/app/src/main/libs
Add below line on the app gradle

implementation files('../app/libs/card91Sdk.aar')

or

implementation(name: 'card91Sdk', ext: 'aar' )

📘

Note

Clean and Build the android app to get the dependencies added on to the application

SUPPORTED SERVICE METHOD

NameDescription
loginWithAuthTokenService return the card holder details with its card information.
getCardFlagsService return the card holder a particular card flags informations. Eg ATM transaction is enabled or not
updateCardFlagsService update the card holder a particular card flags informations.Eg ATM transaction is enabled or disable
lockCardService freeze a particular card activity
blockCardOTPService initiate the card permanent block with OTP generation .
blockCardConfirmationService completes the card permanent block with OTP validation.
getCardLimitService return the card holder a particular card setting limit information.
setCardLimitService update the card holder a particular card setting limit information.
getWalletDetailService to get the wallet detail for the customer.
setWalletStatusUse this method to make the wallet lock or unlock
addBeneficiaryService to add beneficiary at the card holder level.
getAllBeneficiaryService to add beneficiary get all beneficiary
getBeneficiaryDetailsService to get beneficiary details
updateBeneficiaryLimitService to update the beneficiary limits
updateBeneficiaryLimitVerifyService to update the beneficiary limit with OTP verification.
getBeneficiaryTransactionsService to get beneficiary transaction list
transferMoneyToBeneficiaryService to transfer money to beneficiary

IMPLEMENTATION

Create a KOTLIN activity from where the service functions will be called.
Remember to implement "Card91EventListener" interface to listen the call back event response.

Implemented method of Card91EventListener are onEvent and onEventException, Card91RemoteResponse is the response data model class which contains response body, header and response code which is directly passed on to overridden methods (call backs)

import com.card91.common.Card91RemoteServices
import com.card91.common.interfaces.Card91EventListener
import com.card91.common.models.Card91RemoteResponse

class MainActivity : AppCompatActivity(), Card91EventListener {
 /// Sample response 
  override fun onEvent(response: Card91RemoteResponse?) {
          Log.e("onEvent Response --",response?.responseCode.toString() +response?.responseBody.toString()+response?.responseHeader.toString() )
           /// response?.responseCode will return the service reponse code 
         	 ///  response?.responseBody will return the service response body 
           //// response?.responseHeader will return the service okhhtp Headers  
   }

   override fun onEventException(type: String?, responseBody: String?, code: String?) {
          Log.e("onEventException  --",responseBody +type+code )
            /// Any Exception from the service need to handled here
   }
}

For call different service function, first instantiate the instance of Card91RemoteServices by passing the environment ("PROD" for production and "PROD_SANDBOX" for sandbox production) , card holder auth token into the constructor.

Initiating the customer service

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XXXXXXXXXXJFVsPPg5fCfcUh4=",this)

After invoking the constructor call individual function and get the response in overridden functions.
Example request for loginWithAuthToken

 val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , this)
 val jsonString = "{" +
            "    \"mobile\": \"917096482153\",\n" +
            "    \"sdkAuthToken\": \"1\",\n" +
            "    \"primaryOrgId\": \"230705103219705ID1OID1317188\"\n" + // primary org id
            "}"
 val jsonObject = JSONObject(jsonString)
 card91service.loginWithAuthToken(jsonObject);

Response:

Response header will contain will contain the "jwt_token" which is the card holder token which will be used to call rest of the api from request authentication as bearer token as card holder token.

responseBody=
{
  "customer": {
    "createdTime": "2024-06-13T06:40:59.000+0000",
    "createdBy": "230331054237284ID1UID5326707",
    "modifiedTime": "2024-06-13T06:43:32.000+0000",
    "modifiedBy": null,
    "id": "240613064059382ID1CUSTID7848474",
    "dob": "1992-01-02",
    "gender": "F",
    "mobile": "917557608589",
    "email": "[email protected]",
    "name": "Dallas",
    "nameOnCard": "Cullen",
    "invited": true,
    "firstTimeSignUp": true,
    "firstTimeLogin": true,
    "saltHash": 0,
    "wrongMpinCount": 0,
    "mpinResetCount": 0,
    "cardHolderPaymentSideId": null,
    "locale": null,
    "status": "ACTIVE",
    "extCustomerRefNo": null
  },
  "cards": [
    {
      "id": "240613064059432ID1CARD6428800",
      "status": "ACTIVE",
      "customerId": "240613064059382ID1CUSTID7848474",
      "lastFourDigits": "7512",
      "cardMode": "PHYSICAL_NAMED_CARD",
      "orgName": "YESAutomationTest 5791",
      "orgId": "240613060403353ID1OID1413045",
      "cardImage": null,
      "network": "RUPAY",
      "programName": "YES Bank - Rupay",
      "issuer": "YES",
      "van": null,
      "rootCardId": "240613064059432ID1CARD6428800",
      "kitNumber": "240000214716",
      "cardType": "GPR",
      "primaryCard": true,
      "addOnCard": false
    }
  ],
  "mpinResetRequired": false
}
responseCode=200

responseHeader =
date: Thu, 13 Jun 2024 06:47:21 GMT
content-type: application/json
cache-control: no-cache, no-store, max-age=0, must-revalidate
expires: 0
jwt_token: C91IP_ZVCgSUB4+hdKaBWSM+FjMHoyvrsRoFVhPyO2Bj2Yps8= /// Card holder token
login_token: C91IP_ZVCgSUB4+hdKaBWSM+FjMHoyvrsRoFVhPyO2Bj2Yps8=
pragma: no-cache
scheme_id: 240613064059382ID1CUSTID7848474
strict-transport-security: max-age=31536000 ; includeSubDomains
vary: Origin
vary: Access-Control-Request-Method
vary: Access-Control-Request-Headers
x-content-type-options: nosniff
x-frame-options: DENY
 x-xss-protection: 1; mode=block 

//Use below code to get the JWT token 
println("JWT Token: ${response?.responseHeader!!["jwt_token"]}")

Example request for getCardFlags

val card91service: Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX", "C91CHk6uZV+HZ/InkHb8hZQzlS6EhKB0naYrMgn3ZPKpGnrw=", this)  
card91service.getCardFlags("230705103521821ID1CARD0150896");// Card holder cardId

Response

responseBody ={"cardFlags":{"CL_ENABLED":false,"ATM_ENABLED":false,"ECOM_ENABLED":false,"POS_ENABLED":false}}
responseCode = 200

Example request for updateCardFlags

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)               
val requestBody = JSONObject()
try {
      requestBody.put("cardId", "230705103521821ID1CARD0150896")// Card holder cardId
      val requestBodyInside = JSONObject()
      requestBodyInside.put("ATM_ENABLED", false) // ATM Flag
      requestBodyInside.put("POS_ENABLED", false)// POS Flag
      requestBodyInside.put("ECOM_ENABLED", false)// ECOM Flag
      requestBodyInside.put("CL_ENABLED", false)// CL Flag
      requestBody.put("cardFlags", requestBodyInside)
                   
     } catch (e: JSONException) {
      e.printStackTrace()
}
card91service.updateCardFlags(requestBody);

Response:

responseBody=
{
  "cardFlags": {
    "CL_ENABLED": false,
    "ATM_ENABLED": false,
    "ECOM_ENABLED": false,
    "POS_ENABLED": false
  }
}
responseCode =200

Example request for lockCard

val card91service: Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX", "C91CHk6uZV+HZ/InkHb8hZQzlS6EhKB0naYrMgn3ZPKpGnrw=", this)  
val requestBody = JSONObject()
try {
  requestBody.put("cardId", "230705103521821ID1CARD0150896")// Card Holder Card ID 
  requestBody.put("lock", true)

  } catch (e: JSONException) {
  e.printStackTrace()
}
card91service.lockCard(requestBody);

Response:

responseBody
{"message":"Card is already unlocked"}
responseCode =200

Example request for blockCardOTP

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestObject = JSONObject();
requestObject.put("cardId","230530100608159ID1CARD5790474")//Card holder card ID
card91service.blockCardOTP(requestObject);

Response:

responseBody={"mobile":"918016703737","sessionId":"DUMMY-ID"}
responseCode = 200

Example request for blockCardConfirmation

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)

val requestObject = JSONObject();
requestObject.put("cardId","230530100608159ID1CARD5790474")
requestObject.put("reason","LOST") // Reasons for blocking the card possible four value can be passed -- Lost, Stolen, Damaged, Not Required
requestObject.put("sessionId","DUMMY-ID")// Session id which while generating the OTP
requestObject.put("otp","121212") /// Real otp
card91service.blockCardConfirmation(requestObject);

Response:

responseBody=
  {
    "message": "Card ending with 3068 is BLOCKED",
    "id": "220202094138773ID1CARD6090768",
    "status": "BLOCKED",
    "customerId": "220131151639396ID1CUSTID7491716",
    "lastFourDigits": "3068",
    "cardMode": "DIGITAL_ONLY_CARD",
    "orgName": "Prakhar Businsess",
    "cardImage": ""
}
responseCode=200

Example request for getCardLimit

Request:

try {
  val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
  card91service.getCardLimit("230705103521821ID1CARD0150896");// card holder card Id

} catch (e: JSONException) {
	e.printStackTrace()
}

Response:

responseBody=
{
  "cardRules": [
    {
      "txnType": "ECOM",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "200",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ECOM",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ECOM",
      "period": "T",
      "maxLimit": "200000",
      "userLimit": "200000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "5000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "D",
      "maxLimit": "50000",
      "userLimit": "50000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "T",
      "maxLimit": "50000",
      "userLimit": "50000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "T",
      "maxLimit": "200000",
      "userLimit": "200000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "M",
      "maxLimit": "5000",
      "userLimit": "5000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "T",
      "maxLimit": "5000",
      "userLimit": "5000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    }
  ],
  "kitNumber": "240000109978"
}
responseCode=200

Example request for setCardLimit

Request:

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CHhFl0TpR5lfLl5t0XrH/+ZohqqwvEJFVsPPg5fCfcUh4=",this)
val requestBody = JSONArray()
val requestObjectATM = JSONObject()

  requestObjectATM.put("txnType", "ATM")// Type of Transaction eg , ATM, CL, ECOM, POS
  requestObjectATM.put("maxLimit", "10000") // Max limit given by bank
  requestObjectATM.put("userLimit", "5000")// User limit which he/she wants to set 
  requestObjectATM.put("period", "M")/// M stands for monthly limit
  requestBody.put(requestObjectATM);

val requestObjectCL = JSONObject()

  requestObjectCL.put("txnType", "ECOM") // Type of Transaction eg , ATM, CL, ECOM, POS
  requestObjectCL.put("maxLimit", "10000") // Max limit given by bank
  requestObjectCL.put("userLimit", "7000") // User limit which he/she wants to set 
  requestObjectCL.put("period", "M") /// M stands for monthly limit
  requestBody.put(requestObjectCL);
card91service.setCardLimit(requestBody, "230705103521821ID1CARD0150896");// card holder card Id

Response

responseBody= {
  "cardRules": [
    {
      "txnType": "ECOM",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "200",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ECOM",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ECOM",
      "period": "T",
      "maxLimit": "200000",
      "userLimit": "200000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "10000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "D",
      "maxLimit": "50000",
      "userLimit": "50000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "ATM",
      "period": "T",
      "maxLimit": "50000",
      "userLimit": "50000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "M",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "POS",
      "period": "T",
      "maxLimit": "200000",
      "userLimit": "200000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "M",
      "maxLimit": "5000",
      "userLimit": "5000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "D",
      "maxLimit": "500000",
      "userLimit": "500000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    },
    {
      "txnType": "CL",
      "period": "T",
      "maxLimit": "5000",
      "userLimit": "5000",
      "maxLimitPerTxn": "0",
      "consumedLimit": "0",
      "userLimitPerTxn": "0",
      "enabled": false
    }
  ],
  "kitNumber": null
}
responseCode =200

Example request for getWalletDetail

Request:

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91IP_IgI+CAM%%%%%%%%%%%7ViQIudPLyI9U=",this)

card91service.getCardWalletDetails(this, "230704125202564ID1CARD6454936"); // Customer card detail 

Response:

responseBody={
  "wallets": [
    {
      "cardId": "230704125202564ID1CARD6454936",
      "appId": "98d7faf5-432b-454f-b786-c37f761fa6bc",
      "orgId": "230217024240504ID1OID6864550",
      "ledgerOrgId": "230217024240504ID1OID6864550",
      "groupId": "230630074826303ID1CP6003872",
      "name": "Wallet",
      "status": "ACTIVE",
      "description": "Wallet",
      "balanceType": "PREPAID",
      "allowCustomerMoneyLoad": false,
      "createdAt": "2023-07-04T12:52:02.000+00:00",
      "createdBy": null,
      "updatedAt": "2024-07-03T07:17:45.000+00:00",
      "priority": 1,
      "splitTxn": "DISALLOW",
      "closedLoop": false,
      "balance": "90.0000",
      "rulesJson": {
        "version": "1",
        "zeroFilterMatchBehaviour": "allow",
        "balanceType": "PREPAID",
        "rules": [],
        "cashbackRules": []
      },
      "ncmcVerified": 0,
      "allowWalletToLink": false
    }
  ],
  "ncmcWallets": [
    {
      "cardId": "230704125202564ID1CARD6454936",
      "appId": "ncmc_fd79c176-293b-48ba-8911-14adb767ee11",
      "orgId": "230217024240504ID1OID6864550",
      "ledgerOrgId": "230217024240504ID1OID6864550",
      "groupId": "230630074826303ID1CP6003872",
      "name": "NCMC Wallet",
      "status": "ACTIVE",
      "description": "For NCMC transactions",
      "balanceType": "PREPAID",
      "allowCustomerMoneyLoad": null,
      "createdAt": "2023-09-23T01:44:35.000+00:00",
      "createdBy": null,
      "updatedAt": "2023-09-23T01:44:35.000+00:00",
      "priority": 0,
      "splitTxn": "DISALLOW",
      "closedLoop": false,
      "balance": "0.0000",
      "rulesJson": null,
      "ncmcVerified": 1,
      "allowWalletToLink": false
    }
  ]
}

Response Code: 200

Example request for setWalletStatus

Request:

 val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
 val requestObjectCL = JSONObject()
 requestObjectCL.put("c0fb702b-d705-4fb5-99f6-70ec5d27bda6", "ACTIVE") /// Put wallet id as key and value as status /// ACTIVE/INACTIVE
 val requestJsonParent = JSONObject()
 requestJsonParent.put("walletStatusMap", requestObjectCL)
 card91service.setWalletStatus(requestJsonParent, "230714120729338ID1CARD4168209");// // card holder card Id 

Response

responseBody= {“message”:“Wallet statuses updated successfully”}
responseCode =200

Example request for addBeneficiary

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val addBeneficiarydata = JSONObject()
addBeneficiarydata.put("issuerCode", "NSDL") // NSDL in case of NSDL bank
addBeneficiarydata.put("accountNumber", "BBB1916624") // Bene account number
addBeneficiarydata.put("ifscCode", "NSDL0006184") 
addBeneficiarydata.put("name", "Niket Rawat")
card91service.addBeneficiary(this , addBeneficiarydata, "918016703737");

Response:

responseBody=
{“beneficiaryId”:“240613111923133ID1BENF5433060”}
responseCode=200

Example request for getAllBeneficiary

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val getAllBeneficiarydata = JSONObject()
getAllBeneficiarydata.put("page", "1") // page number 
getAllBeneficiarydata.put("mobileNo", "918016703737") // Card holder mobile
getAllBeneficiarydata.put("perPage", "10") // item per page
getAllBeneficiarydata.put("issuerCode", "") /// NSDL in case of NSDL bank
card91service.getAllBeneficiary(this , getAllBeneficiarydata);

Response:

responseBody=
{
  "recordsCurrentPage": 1,
  "currentPage": 1,
  "totalPages": 1,
  "totalRecords": 1,
  "beneficiaries": [
    {
      "id": "240613111923133ID1BENF5433060",
      "name": "Niket Rawat",
      "accountNumber": "BBB1916624",
      "ifscCode": "NSDL0006184",
      "associatedIssuer": "NSDL",
      "createdTime": "2024-06-13T11:19:23.000+00:00",
      "lastModifiedTime": "2024-06-13T11:19:23.000+00:00",
      "dailyRequestLimit": null,
      "dailyTransferRequestAllowed": "5",
      "maxMonthlyLimit": null,
      "kycLimit": null
    }
  ]
}

responseCode=200

Example request for getBeneficiaryDetails

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
card91service.getBeneficiaryDetail(this , "240611095120679ID1BENF9316464");// Beneficiary Id

Response:

responseBody=
{
  "id": "240613111923133ID1BENF5433060",
  "name": "Niket Rawat",
  "accountNumber": "BBB1916624",
  "ifscCode": "NSDL0006184",
  "associatedIssuer": "NSDL",
  "maxPermissibleLimit": "200000.0000",
  "createdTime": "2024-06-13T11:19:23.000+00:00",
  "lastModifiedTime": "2024-06-13T11:19:23.000+00:00",
  "dailyRequestLimit": null,
  "dailyTransferRequestAllowed": "5",
  "maxMonthlyLimit": "200000.0000",
  "kycLimit": "200000"
}

responseCode=200

Example request for updateBeneficiaryLimit

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val updateBeneficiaryLimitdata = JSONObject()
updateBeneficiaryLimitdata.put("maxMonthlyLimit", 45001.0) //monthly limit
updateBeneficiaryLimitdata.put("dailyTransferRequestAllowed", 5) // Transfer limit allowed per day
card91service.updateBeneficiaryLimit(this , updateBeneficiaryLimitdata, "240611095120679ID1BENF9316464"); /// Beneficiary id

Response:

responseBody=
{"sessionId":"sfr23423"} // Session id used to pass on OTP confirmation on beneficiary limit change
responseCode=200

Example request for updateBeneficiaryLimitVerify

📘

Note

updateBeneficiaryLimitVerify only used for YES bank issuer.


val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)

val updateBeneficiaryLimitVerifydata = JSONObject()

updateBeneficiaryLimitVerifydata.put("sessionId", "DUMMY-ID")
updateBeneficiaryLimitVerifydata.put("otp", "123456") // received otp to customer 
updateBeneficiaryLimitVerifydata.put("maxMonthlyLimit", 45001)
updateBeneficiaryLimitVerifydata.put("dailyRequestLimit", 5)
card91service.updateBeneficiaryLimitVerify(this , updateBeneficiaryLimitVerifydata, "240611100532661ID1BENF4442164");

Response:

responseBody=
 {}
responseCode=200

Example request for getBeneficiaryTransactions

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val getBeneficiaryTransactionsdata = JSONObject()

getBeneficiaryTransactionsdata.put("transferStatus", "") // 
getBeneficiaryTransactionsdata.put("txnMethod", "")
getBeneficiaryTransactionsdata.put("page", "1")
getBeneficiaryTransactionsdata.put("perPage", "2")
getBeneficiaryTransactionsdata.put("from", "")
getBeneficiaryTransactionsdata.put("to", "")
card91service.getBeneficiaryTransactions(this , getBeneficiaryTransactionsdata, "240611095120679ID1BENF9316464");

Response:

responseBody=
 {}
responseCode=200

Example request for transferMoneyToBeneficiary

val card91service:Card91RemoteServices = Card91RemoteServices("PROD_SANDBOX" , "C91CH2Rrm82Q6gXXXXXXu29Z8LpSv1lpg=",this)
val transferMoneyToBeneficiarydata = JSONObject()

transferMoneyToBeneficiarydata.put(
 "beneficiaryId",
"240611095120679ID1BENF9316464"
)
transferMoneyToBeneficiarydata.put("amount", "5")
transferMoneyToBeneficiarydata.put("transferMethod", "IMPS")
card91service.transferMoneyToBeneficiary(this , transferMoneyToBeneficiarydata, "230714120729338ID1CARD4168209");

Response:

responseBody=
{
  "status": "SUCCESS",
  "txnPartnerReferenceId": "C91315744932",
  "txnReferenceId": "C91315744932"
}
responseCode=200

SERVICE RESPONSE CODE DESCRIPTION

Response can be traced on the call back event object Card91RemoteResponse

Response codeDescription
200-299 Between 200-299 is considered as success response.
400-499401 Invalid auth token,
403 Forbidden,
400 Request structure is malformed or incorrect
415 Missing header request
etc
500-599Server Error