This section illustrates few examples with input params and the output responses for the Cardholder function
Overview
This section details down the sample function input params and output params for the cardholder service.
Function Details
Below are the sample input and output of the SDK functions.
Function Name | Description | Input Params | Output Params |
---|---|---|---|
loginWithAuthToken | Generates the cardholder token and fetch the cardholder basic details using the SDK Single Sign on Webhook implementation | Map<String, dynamic> loginWithAuthTokendata = { "mobile": <mobile number>, // Card holder mobile number "sdkAuthToken": "suth#eree", // Auth token of the calling application (not of Card91) "primaryOrgId": <org id> // Organization Id } , context Context, env String | In case of success:{ "customer": { "createdTime": "2022-01-31T09:46:41.000+0000", "createdBy": "220123145106418ID1UID6609530", "modifiedTime": null, "modifiedBy": null, "status": "ACTIVE", "id": "220131151639396ID1CUSTID7491716", "dob": null, "gender": null, "mobile": "919876011170", "email": "[email protected]", "name": "Tandon Prakhar", "nameOnCard": "Tandon Prakhar", "invited": true, "firstTimeSignUp": true, "firstTimeLogin": true, "saltHash": 0, "wrongMpinCount": 0, "mpinResetCount": 0, "cardHolderPaymentSideId": "4120", "locale": null }, "cards": [ { "id": "220131151642500ID1CARD2791192", "status": "BLOCKED", "customerId": "220131151639396ID1CUSTID7491716", "lastFourDigits": "7501", "cardMode": "DIGITAL_ONLY_CARD", "orgName": "ABC Businsess", "cardImage": "" } ] } In case of error like missing mandatory fields: { "success": false, "errorGroup": "INVALID_INPUT", "subErrorCode": "DATA_INVALID_IN_REQ", "message": "Mobile number with country code is needed", "error": true } In case of missing information: { "message": "No Webhook URL found" } |
getCardFlags | This function fetches the card flags set for the card. The card flags include: POS, ATM, Ecom and Tap (or CL) | Map <String, dynamic> getFlagsdata { 'cardId': <card id>, 'loginAuthToken': <Card91 Cardholder token> }, context Context, env String | In case of success:{ "cardFlags": { "ATM_ENABLED": true, "POS_ENABLED": true, "ECOM_ENABLED": true, "CL_ENABLED": true } } In case of error like missing mandatory fields: { "message": "Card not found" } In case of any other error information: { "message": "CardFlags Failed due to server error. Please try later" } |
updateCardFlags | This function updates the card flags for any card | Map <String, dynamic> updateCardFlagsdataFlag { 'cardId': <card id>, 'cardFlags': { 'ATM_ENABLED': false, 'POS_ENABLED': false, 'ECOM_ENABLED': true, 'CL_ENABLED': false } }, context Context, env String | In case of success:{ "cardFlags": { "ATM_ENABLED": true, "POS_ENABLED": false, "ECOM_ENABLED": true, "CL_ENABLED": false } } |
lockCard | Lock card or temporary suspension of the card can be done via this function, This is a reversible process. | Map <String, dynamic> lockCarddata = { 'cardId': <card id to be locked>, 'loginAuthToken': <Card 91 cardholder token>, 'lock': true }, contect Context, env String | In case of success: { "message": "Card ending with 3068 is LOCKED", "id": <Card Id>, "status": "LOCKED", "customerId": <customer id>, "lastFourDigits": "3068", "cardMode": "DIGITAL_ONLY_CARD", "orgName": "ABC Business", "cardImage": "" } In case of error like missing mandatory fields: { "success": false, "errorGroup": "INVALID_INPUT", "subErrorCode": "DATA_INVALID_IN_REQ", "message": "CardId is mandatory", "error": true } In case of other failures: { "message": "Cannot act on a Blocked Card" } |
blockCardOTP | The cardholder can block the card. As this is irreversible process, it is a 2 step process. (a) OTP generation and (b) Blocking the card. This function is the first step. | Map <String, dynamic> blockCardOTPdata { 'cardId': '230705103521821ID1CARD0150896' }, context Context, env String | In case of success:{ "mobile": <mobile number starting with 91>, "sessionId": <32 bit UUID> //This session id is to be passed as param in the next function } In case of error like missing mandatory fields: { "success": false, "errorGroup": "INVALID_INPUT", "subErrorCode": "DATA_INVALID_IN_REQ", "message": "CardId is mandatory", "error": true } In case of other failures: { "message": "Card Is Already Blocked" } |
blockCardConfirmation | This is the second step for blocking the card. After this the card is permanently blocked. | Map <String, dynamic> data { 'cardId': '917096482153',/// String 'reason':"",/// String Possible values: LOST, STOLEN, DAMAGED 'sessionId':"",/// String 'otp':""/// String as received by the cardholder }, context Context, env String | In case of success:{ "message": "Card ending with 3068 is BLOCKED", "id": "220202094138773ID1CARD6090768", "status": "BLOCKED", "customerId": "220131151639396ID1CUSTID7491716", "lastFourDigits": "3068", "cardMode": "DIGITAL_ONLY_CARD", "orgName": "ABC Businsess", "cardImage": "" } In case of error like missing mandatory fields: { "success": false, "errorGroup": "INVALID_INPUT", "subErrorCode": "DATA_INVALID_IN_REQ", "message": "CardId is mandatory", "error": true } |
getCardLimit | Use this function to fetch the card limits set for each card flags on a monthly or per transaction basis. | Map <String, dynamic> getCardLimitdata = { 'loginAuthToken': "C91CHoq2DVMFut2xI8UvtbZ4CFdppHQfWVq8qdMt2cETcQdI=", //Auth token 'cardID': '230705103521821ID1CARD0150896', // cardId of the card holder }, context Context, env String | { "cardRules": [ { "txnType": "ECOM", "period": "M", //Monthly "maxLimit": "10000", "userLimit": "200", "consumedLimit": "00", "enabled": false }, { "txnType": "ECOM", "period": "D", //Daily "maxLimit": "10000", "userLimit": "10000", "enabled": false }, { "txnType": "ECOM", "period": "T", //Transaction "maxLimit": "10000", "userLimit": "100", "enabled": false }, { "txnType": "ATM", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": true }, { "txnType": "ATM", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "POS", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": true }, { "txnType": "POS", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "POS", "period": "T", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "CL", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": false }, { "txnType": "CL", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": false }, { "txnType": "CL", "period": "T", "maxLimit": "5000", "userLimit": "5000", "enabled": false } ] } |
setCardLimit | Use this function to set the card limits set for each card flags on a monthly and per transaction basis. | List <Map <String, dynamic>> setCardLimitdata [ { "txnType": "ECOM", "userLimit": "200", "maxLimit": "10000", "period": "M", "enabled": false }, { "txnType": "ECOM", "userLimit": "10000", "maxLimit": "10000", "period": "D", "enabled": false }, { "txnType": "ECOM", "userLimit": "10", "period": "M", "maxLimit": "10000", "enabled": false }, { "txnType": "CL", "userLimit": "10000", "maxLimit": "10000", "period": "D", "enabled": false }, { "txnType": "CL", "userLimit": "5000", "maxLimit": "5000", "period": "T", "enabled": false }, ], context Context, env String | { "cardRules": [ { "txnType": "ECOM", "period": "M", "maxLimit": "10000", "userLimit": "200", "consumedLimit": "00", "enabled": false }, { "txnType": "ECOM", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": false }, { "txnType": "ECOM", "period": "T", "maxLimit": "10000", "userLimit": "10", "enabled": false }, { "txnType": "ATM", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": true }, { "txnType": "ATM", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "POS", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": true }, { "txnType": "POS", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "POS", "period": "T", "maxLimit": "10000", "userLimit": "10000", "enabled": true }, { "txnType": "CL", "period": "M", "maxLimit": "10000", "userLimit": "10000", "consumedLimit": "00", "enabled": false }, { "txnType": "CL", "period": "D", "maxLimit": "10000", "userLimit": "10000", "enabled": false }, { "txnType": "CL", "period": "T", "maxLimit": "5000", "userLimit": "5000", "enabled": false } ] } |
getCardWalletDetails | Fetches the Wallet details of a card | Map <String, dynamic> getCardWalletDetailsdata = { 'cardId': <Card Id>, 'loginAuthToken': <Card91 Cardholder token> }, context Context, env String | In case of success:{ "wallets": [ { "appId": "2891fab5-c206-4298-9a79-841b7719ac9c", "orgId": "220123145103837ID1OID9785460", "ledgerOrgId": "220123145103837ID1OID9785460", "groupId": "220131151346486ID1CP7441240", "name": "Default App", "status": "ACTIVE", "description": "default application", "balanceType": "PREPAID", "startingBalance": "0.0000", "startingBalanceValidityPeriod": null, "allowCustomerMoneyLoad": false, "rulesJson": { "version": "1", "zeroFilterMatchBehaviour": false, "balanceType": "PREPAID", "rules": \[] }, "createdAt": "2022-01-31T09:45:12.000Z", "updatedAt": "2022-01-31T09:45:12.000Z", "priority": 1, "splitTxn": "ALLOW", "balance": "0.0000" } ] } In case of error like missing mandatory fields: { "message": "No Card Found with the Card Id" } |
addBeneficiary | Service to add beneficiary at the card holder level. | Map<String, dynamic> addBeneficiarydata = { "issuerCode": "YES",// Issuer code "accountNumber": "BBB1916624", /// Account number of the bene account "ifscCode": "NSDL0006184", // IFSC code of bene account bank "name": "Niket Rawat" /// Name on account }; | {beneficiaryId: 230922064603898ID1BENF1322650} |
getAllBeneficiary | Service to get all beneficiary | Map<String, dynamic> getAllBeneficiarydata = { "issuerCode": "YES", // Issuer code "ifscCode": "NSDL0006184", /// ifsc code of the bene "name": "Niket Rawat", // account holder name 'page': "1", "mobileNo": "917096482153",// bene mobile number (optional) 'perPage': "25", // for pagination 'loginAuthToken': "C91CHIRmv9fxiWvZgqk2YkLP+HwIrGOMwfvk0873bmsG0KAs=" // card holder auth token }; | { "success": true, "headers": { "connection": "keep-alive", "cache-control": "no-cache, no-store, max-age=0, must-revalidate", "date": "Fri, 22 Sep 2023 06:08:21 GMT", "transfer-encoding": "chunked", "vary": "Origin,Access-Control-Request-Method,Access-Control-Request-Headers", "strict-transport-security": "max-age=31536000 ; includeSubDomains", "x-frame-options": "DENY", "pragma": "no-cache", "content-type": "application/json", "x-xss-protection": "1; mode=block", "x-content-type-options": "nosniff", "expires": "0" }, "data": { "recordsCurrentPage": 1, "currentPage": 1, "totalPages": 1, "totalRecords": 1, "beneficiaries": [ { "id": "230816131708992ID1BENF4851640", "name": "Niket Rawat", "accountNumber": "BBB1916624", "ifscCode": "NSDL0006184", "associatedIssuer": "NSDL", "createdTime": "2023-08-16T13:17:09.000+00:00", "lastModifiedTime": null } ] } } |
getBeneficiaryDetails | Service to get beneficiary details | Map<String, dynamic> getBeneficiaryDetailsdata = { 'beneficiaryId': "230712125533217ID1BENF6095840", // bene Id 'loginAuthToken': "C91CHIRmv9fxiWvZgqk2YkLP+HwIrGOMwfvk0873bmsG0KAs=" // auth token }; | {id: 230816131708992ID1BENF4851640, name: Niket Rawat, accountNumber: BBB1916624, ifscCode: NSDL0006184, associatedIssuer: NSDL, maxPermissibleLimit: 200000.0000, createdTime: 2023-08-16T13:17:09.000+00:00, lastModifiedTime: null} |
transferMoneyToBeneficiary | Transfer money to beneficiary | Map<String, dynamic> transferMoneyToBeneficiarydata = { 'beneficiaryId': "230712125533217ID1BENF6095840", // bene id 'amount': "500", // amount transfferring 'transferMethod': "IMPS" // mode }; | |
getBeneficiaryTransactions | Map<String, dynamic> getBeneficiaryTransactionsdata = { 'loginAuthToken': "C91CHXg9qzUuDzh1VzjNCOaPnxw5wi7430wRTsZFsOR1xGyc=", //Auth token 'beneficiaryId': "230714095131301ID1BENF5758415", //bene id 'transferStatus': "", // transaction status 'txnMethod': "0", 'page': "1", 'perPage': "2", 'from': "", 'to':"" }; | ||