Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this section we will understand how fund flow works for Pre Paid Instrument (PPI) accounts. 


  1. The fintech transfers funds from its current account to the  Fintech's  current account of the sponsor IFI (eg RBL, IDFC)
  2. Zeta Ops verifies the fund transfer and increases the limit of the Fintech Funding A/c
  3. Account holder adds money to his PPI account
  4. Fintech Triggers an A2A transfer API to debit the VBO Funding account and credit the account holder's account
Note

Depending upon the sponsor bank for the PPI program, the fund flow may have variations.


APIs for RAH funding

Fusion provides the following set of APIs to perform different operations of Real Account Holder (RAH) funding.

  • Fund Account Holder Account
  • Retrieve the Account balance
  • Retrieve the Account transaction
  • Reverse Account Transaction

Fund Account Holder Account

Each transaction is associated with an identifier, transferCode, which must be passed in the request body of the /transfers endpoint. Transfer code help identify the type of transaction for reporting . The format for transfer code is Channel _Type of Transaction_ Auth/Reversal  eg. ATLAS_P2M_AUTH
Contact Zeta to know the supported transfer codes.

Note
iconfalse

Support for UPI fund transfer is coming soon.


Endpoint URI

Status
colourGreen
titlePost

/api/v1/ifi/{ifiID}/transfers

Input parameters

  • ifiID: Required. Unique identifier for sponsor IFI.
  • requestID: Required. Unique identifier for every transfer request.
  • amount: Required. Amount that needs to be transferred. Possible value supported for currency are INR, USD, and more.
  • transferCode: Required. Identifier for the type of transaction for reporting. eg ATLAS_P2M_AUTH
  • debitAccountID: Required. ID of the account from where funds are debited
  • creditAccountID: Required. ID of the account where funds are credited
  • transferTime: Optional. Time required to transfer funds.
  • remarks: Optional. Remarks for the fund transfer.
Div
classcustomtabs
Div
classtabsmenu
Div
classtabsmenu_1

Request

Div
classtabsmenu_2

Response

Div
classtabscontent
Div
classtabpage_1
Code Block
languagejs
themeMidnight
titlecURL Sample
collapsetrue
curl -X POST \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/transfers \
-H 'Content-Type: application/json' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
-d '{
"requestID": "8439e4b6-1b63-4a28-afa1-34206a44425a",
"amount": {
"currency": "INR",
"amount": 21
},
"transferCode": "ATLAS_P2M_AUTH",
"debitAccountID": "422782d2-adcd-49a6-bde1-eb0461a582ba",
"creditAccountID": "608332f5-2d31-4377-bf91-5492dda0f694",
"transferTime": 1574741608000,
"remarks": "Fund Account Holders account",
"attributes": {}
}'
Div
classtabpage_2
Code Block
languagejs
themeMidnight
titleJSON Sample
collapsetrue
{
"requestID": "8439e4b6-1b63-4a28-afa1-34206a44425a",
"transferID": "20191126041456390_3712_8439e4b6-1b63-4a28-afa1-34206a44425a",
"status": "SUCCESS"
}

Retrieve the Account Balance

You can retrieve the balance of an account by passing accountID as a path parameter in the balance endpoint, as shown below:

Endpoint URI

Status
colourBlue
titleGET

/api/v1/ifi/{ifiID}/accounts/{accountID}/balance

Input parameters

  • ifiID: Required. Unique identifier of the sponsor IFI
  • accountID: Required. Unique identifier of the Account for which balance is to be retrieved

Samples

Div
classcustomtabs
Div
classtabsmenu
Div
classtabsmenu_1

Request

Div
classtabsmenu_2

Response

Div
classtabscontent
Div
classtabpage_1
Code Block
languagejs
themeMidnight
titlecURL Sample
collapsetrue
curl -X GET \
'https://fusion.preprod.zeta.in/api/v1/ifi/140827/accounts/608332f5-2d31-4377-bf91-5492dda0f694/balance' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}'
Div
classtabpage_2
Code Block
languagejs
themeMidnight
titleJSON Sample
collapsetrue
{
"balance": 21,
"currency": "INR",
"lastTransactionID": "20191126041456390_3712_8439e4b6-1b63-4a28-afa1-34206a44425a",
"accountingType": "LIABILITY",
"headers": {}
}

Retrieve the Account Transactions

To view transactions, pass accountID as a path parameter in the /transactions endpoint, as shown below. To get a paginated view, use pageSize and pageNumber query parameters.

Endpoint URI

Status
colourBlue
titleGET

/api/v1/ifi/{ifiID}/accounts/{accountID}/transactions

Input parameters

  • ifiID: Required. Unique identifier of the sponsor IFI.
  • accountID: Required. Unique identifier of the Account whose balance is to be retrieved.

Samples

Div
classcustomtabs
Div
classtabsmenu
Div
classtabsmenu_1

Request

Div
classtabsmenu_2

Response

Div
classtabscontent
Div
classtabpage_1
Code Block
languagejs
themeMidnight
titlecURL Sample
collapsetrue
curl -X GET \
'https://fusion.preprod.zeta.in/api/v1/ifi/140827/accounts/608332f5-2d31-4377-bf91-5492dda0f694/transactions?pageSize=2&pageNumber=3' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}'
Div
classtabpage_2
Code Block
languagejs
themeMidnight
titleJSON Sample
collapsetrue
{
"accountTransactionList": [
{
"accountID": "97417dc9-a636-4cd1-b5b8-4951103403dc",
"transactionID": "20200113130528523_2615_FUSION-140827-9c1bae42-0610-4253-96c3-62af594d1bde-1578920727914",
"reversalTransactionIDs": [],
"previousBalance": 500,
"newBalance": 700,
"timestamp": 1578920728550,
"amount": 200,
"currency": "INR",
"recordType": "DEBIT",
"remarks": "TEST123",
"attributes": {
"account.pd-id": "8892149590596675137",
"zeta.card-program-id": "",
"debitAuthSignatory": "[\"10@zetauser.zeta.in/1\"]",
"aura.coa-id": "3071036307140878880",
"account.pf-id": "558731570586644109",
"bundle.name": "Customer bundle (minKYC without PAN)",
"policies": "{}",
"account.account-holder-id": "b9988179-9a74-41f5-aba4-0b85e501fd68",
"journal.voucherCode": "ATLAS_P2M_AUTH",
"journal.self": "false",
"zeta.card-program-ids": "",
"aura.parent-node-id": "1159171505324535297",
"isForced": "false",
"payment.captured": "true",
"account.account_holder.account_holder_provider_id": "862bb162-b5ad-4112-9d73-bb2306546a36",
"zeta.ifi": "140827",
"zeta.ppi-type": "OPEN",
"zeta.product-type": "Generic",
"zeta.ifi-product-type": "GPR_MIN_KYC_WITHOUT_PAN",
"athena.account-provider-id": "a36ac47b-c2a2-406c-b6a0-f8857fc5f735",
"zeta.business-id": "140827"
},
"headers": {}
},
{
"accountID": "97417dc9-a636-4cd1-b5b8-4951103403dc",
"transactionID": "20200113130414238_1671_FUSION-140827-9c1bae42-0610-4253-96c3-62af594d1bde-1578920654203",
"reversalTransactionIDs": [],
"previousBalance": 891,
"newBalance": 711,
"timestamp": 1578920654269,
"amount": 180,
"currency": "INR",
"recordType": "DEBIT",
"remarks": "TEST123",
"attributes": {
"account.pd-id": "8892149590596675137",
"zeta.card-program-id": "",
"debitAuthSignatory": "[\"10@zetauser.zeta.in/1\"]",
"aura.coa-id": "3071036307140878880",
"account.pf-id": "558731570586644109",
"bundle.name": "Customer bundle (minKYC without PAN)",
"policies": "{}",
"account.account-holder-id": "b9988179-9a74-41f5-aba4-0b85e501fd68",
"journal.voucherCode": "ATLAS_P2M_AUTH",
"journal.self": "false",
"zeta.card-program-ids": "",
"aura.parent-node-id": "1159171505324535297",
"isForced": "false",
"payment.captured": "true",
"account.account_holder.account_holder_provider_id": "862bb162-b5ad-4112-9d73-bb2306546a36",
"zeta.ifi": "140827",
"zeta.ppi-type": "OPEN",
"zeta.product-type": "Generic",
"zeta.ifi-product-type": "GPR_MIN_KYC_WITHOUT_PAN",
"athena.account-provider-id": "a36ac47b-c2a2-406c-b6a0-f8857fc5f735",
"zeta.business-id": "140827"
},
"headers": {}
}
],
"totalRecord": 6,
"headers": {}
}

Reverse Account Transactions

In case of any disputes, pass transactionID as a path parameter to reverse fund transfer. For partial transaction reversals, set doPartialReversal to True.

Endpoint URI

Status
colourBlue
titleGET

/api/v1/ifi/{ifiID}/transactions/{transactionID}/reversal

Input parameters

  • ifiID: Required. Unique identifier of the sponsor IFI.
  • transactionID: Required. Unique identifier of the transaction which is to be reversed.
  • requestID: Required. Unique identifier of the A2A Reversal.
  • currency: Required. Currency for which reversal is required. For example, INR, USD, and more.
  • amount: Required. Amount that needs to be reversed.
  • doPartialReversal: Optional. Pass true for partial reversal,  false for full reversal of transaction.
  • transferCode: Required. Code to specify the mode of fund transfer eg. P2P, P2M etc.
  • remarks: Optional. Remarks for the fund reversal.

Samples

Div
classcustomtabs
Div
classtabsmenu
Div
classtabsmenu_1

Request

Div
classtabsmenu_2

Response

Div
classtabscontent
Div
classtabpage_1
Code Block
languagejs
themeMidnight
titlecURL Sample
collapsetrue
curl --location --request POST 'https://fusion.preprod.zeta.in/api/v1/ifi/{ifiID}/transactions/{transactionID}/reversal' \
--header 'Authorization: Bearer <token> ' \
--data-raw '{
"requestID": "reversal_fampay_test-1",
"currency": "INR",
"amount" : "100",
"doPartialReversal" : true,
"transferCode": "ATLAS_P2M_AUTH-REVERSAL",
"remarks": "reversal_for_fampay"
}'
Div
classtabpage_2
Code Block
languagejs
themeMidnight
titleJSON Sample
collapsetrue
{
"amount": 1,
"currency": "INR",
"paymentType": "REVERSAL",
"remark": "Reversal of vbo1",
"requestID": "93480e72-b883-46fa-8f3f-abe326ab9df7",
"revertTransactionID": "20200429121612790_14_revert_375231000459_reversal_dfdsrdkedddsdd",
"status": "SUCCESS/FAILED",
"statusDetails": {
"asBigDecimal": 0,
"asBigInteger": 0,
"asBoolean": true,
"asByte": 0,
"asCharacter": "string",
"asDouble": 0,
"asFloat": 0,
"asInt": 0,
"asJsonPrimitive": {
"asBigDecimal": 0,
"asBigInteger": 0,
"asBoolean": true,
"asByte": 0,
"asCharacter": "string",
"asDouble": 0,
"asFloat": 0,
"asInt": 0,
"asLong": 0,
"asNumber": {},
"asShort": 0,
"asString": "string",
"boolean": true,
"jsonArray": true,
"jsonNull": true,
"jsonObject": true,
"jsonPrimitive": true,
"number": true,
"string": true
},
"asLong": 0,
"asNumber": {},
"asShort": 0,
"asString": "string",
"jsonArray": true,
"jsonNull": true,
"jsonObject": true,
"jsonPrimitive": true
},
"transactionID": "20181206084927090_687_375231000459",
"transferCode": "ATLAS_P2M_AUTH-REVERSAL"
}
Panel
Div
classalignLeftIcon

On this page:

Table of Contents

Div
classhelp-box

Need Help?

Drop a mail at fusion-support@zeta.tech or call us on 080-6690 5995.