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:
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:
/transfers
API).Fusion provides the following set of APIs to perform different operations of Real Account Holder (RAH) funding.
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.POST |
|
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" }
You can retrieve the balance of an account by passing accountID
as a path parameter in the balance endpoint, as shown below:
GET |
|
ifiID
: Required. Unique identifier of the IFI.accountID
: Required. Unique identifier of the Account whose balance is to be retrieved.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": {} }
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.
GET |
|
ifiID
: Required. Unique identifier of the IFI.accountID
: Required. Unique identifier of the Account whose balance is to be retrieved.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": {} }
In case of any disputes, pass transactionID
as a path parameter to reverse fund transfer. For partial transaction reversals, set doPartialReversal
to True
.
GET |
|
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.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" }
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.
POST |
|
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.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" }