A Funding Account is a corporate financial account. These accounts enable Fintech's to disburse funds to their employees. A newly created Account for the Account Holder must be funded to allow successful transactions. A funding account is helpful in many different ways as follows:

  • Using the funding account, a fintech can manage salary disbursement by adding funds to the Account Holder's account. For more information fintech's funding account, see About Account Types.
  • Using the Account-to-Account (A2A) transfer, an Account Holder can transfer funds to other Account Holders in the Zeta system. This ensures that you have sufficient balance in your funding account to avoid any last-minute transfer error.
  • An Account Holder can leverage a payment gateway (PG) supported by the fintech to add funds to the account.

The Zeta onboarding/sales team will share the bank details. You can initiate an online NEFT transfer or cheque payment towards your bank account.

Let us understand how the Funding Account flow operates. The following are the activities show how the money travels between Fintech’s account and bank’s account:

  1. Fintech creates a current account with a bank.
  2. Bank maintains a pool account for fintech.
  3. Money travels from the pool account to the Fintech funding account in Zeta
  4. Fintech controls different use-cases using the Funding Account:
    1. Fintech uses the funding account to fund Account Holders (using Fusion's /transfers API).
    2. Fintech may allow Account Holder to fund their account using a payment gateway.

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

Fusion supports IMPS and NEFT fund transfer modes. Each mode is defined by a unique identifier, transferCode, which must be passed in the request body of the /transfers endpoint. Contact Zeta to know the supported transfer codes.

Support for UPI fund transfer is coming soon.

To fund the account, use the /transfers endpoint and provide the values for the following keys in the request body, as shown below:

  • transferCode: Required. Code to specify the mode of fund transfer like IMPS and NEFT.
  • debitAccountID: Required. ID of the fintech's account from where the funds will be transferred. A fintech account is provisioned during the onboarding.
  • creditAccountID: Required. ID of the Account Holder's account to which the funds will be transferred.

Endpoint URI

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

Input parameters

  • ifiID: Required. Unique identifier of the IFI.
  • requestID: Required. This is generated by the requester. Should be globally unique. Zeta will reject a duplicate token generation request ID.
  • amount: Required. Amount that needs to be transferred. Possible value supported for currency are INR, USD, and more.
  • transferCode: Required. Code to specify the mode of fund transfer like IMPS and NEFT.
  • debitAccountID: Required. Unique identifier of the fintech's account from where the funds will be transferred. A fintech account is provisioned during the on-boarding.
  • creditAccountID: Required. Unique identifier of the Account Holder's account to which the funds will be transferred.
  • transferTime: Optional. Time required to transfer funds.
  • remarks: Optional. Remark of 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

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

Input parameters

  • ifiID: Required. Unique identifier of the 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/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 transaction

In Fusion, a Transaction refers to any fund transfer from one account to another. 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

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

Input parameters

  • ifiID: Required. Unique identifier of the 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

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

Input parameters

  • ifiID: Required. Unique identifier of the IFI.
  • transactionID: Required. Unique identifier of the transaction for which the reversal is being triggered.
  • 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 this as true for partial reversal or false for full reversal of transaction.
  • transferCode: Required. Code to specify the mode of fund transfer like IMPS and NEFT.
  • remarks: Optional. Remark of 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"
}

Withdrawal of funds from RAH account

Let us consider a scenario of fund transfer from one Real Account Holder (RAH) to another Legal Account Holder (LAH). In a card transaction, an individual swipes using the payment card at the merchant. The money travels from an individual’s account to the bank’s account. 

Endpoint URI

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

Input parameters

  • ifiID: Required. Unique identifier of the IFI.
  • requestID: Required. This is generated by the requester. Should be globally unique. Zeta will reject a duplicate token generation request ID.
  • amount: Required. Amount that needs to be transferred. Possible value supported for currency are INR, USD, and more.
  • transferCode: Required. Code to specify the mode of fund transfer like IMPS and NEFT.
  • debitAccountID: Required. Unique identifier of the Real Account Holder's account from where the funds will be transferred. A fintech account is provisioned during the on-boarding.
  • creditAccountID: Required. Unique identifier of the Legal Account Holder's account to which the funds will be transferred.
  • transferTime: Optional. Time required to transfer funds.
  • remarks: Optional. Remark of the fund transfer.

Samples

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_A2A_AUTH",
"debitAccountID": "422782d2-adcd-49a6-bde1-eb0461a582ba",
"creditAccountID": "608332f5-2d31-4377-bf91-5492dda0f694",
"transferTime": 1574741608000,
"remarks": "Transfer Funds between Account Holders",
"attributes": {}
}'
{
"requestID": "8439e4b6-1b63-4a28-afa1-34206a44425a",
"transferID": "20191126041456390_3712_8439e4b6-1b63-4a28-afa1-34206a44425a",
"status": "SUCCESS"
}

On this page:

Need Help?

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