- Created by user-5c3b0, last modified by Kumari Geeta on Sep 28, 2020
In this section we will understand how fund flow works for Pre Paid Instrument (PPI) accounts.
- The fintech transfers funds from its current account to the Fintech's current account of the sponsor IFI (eg RBL, IDFC)
- Zeta Ops verifies the fund transfer and increases the limit of the Fintech Funding A/c
- Account holder adds money to his PPI account
- Fintech Triggers an A2A transfer API to debit the VBO Funding account and credit the account holder's account
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.
Support for UPI fund transfer is coming soon.
Endpoint URI
POST |
|
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_AUTHdebitAccountID
: Required. ID of the account from where funds are debitedcreditAccountID
: Required. ID of the account where funds are creditedtransferTime
: Optional. Time required to transfer funds.remarks
: Optional. Remarks for the fund transfer.
Request
Response
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": {} }'
{ "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
GET |
|
Input parameters
ifiID
: Required. Unique identifier of the sponsor IFIaccountID
: Required. Unique identifier of the Account for which balance is to be retrieved
Samples
Request
Response
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}}'
{ "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
GET |
|
Input parameters
ifiID
: Required. Unique identifier of the sponsor IFI.accountID
: Required. Unique identifier of the Account whose balance is to be retrieved.
Samples
Request
Response
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}}'
{ "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
GET |
|
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
Request
Response
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" }'
{ "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" }
- No labels