Prerequisites
Parameter name | Parameter value |
---|---|
Ifi id | 304876 |
API endpoint | https://fusion.gw.zetapay.in/api/v1 |
Access token | {{token}} |
Bundle id | {{BundleID}} |
Simulator for card payments | https://prod-card-simulator.gw.zetapay.in/ |
Funding Account ID | {{FundingAccountID}} |
Vbo id | {{VboID}} |
cardSkuIDs | {{SkuID} |
About Fusion
Fusion is an API-based Platform-as-a-Service (PaaS) offering. It enables fintechs to build and manage financial products for unique use-cases. Fusion offers seamless integration with banks, payment networks, card printers, push servers, and several other services.
Fusion APIs solve many use-cases like customer loyalty cards, employee benefits, corporate gifting, expense management, merchant payouts, just-in-time account funding, and so on.
Get instant access to the complete financial environment via simple and powerful API integrations with Fusion.
Pre-requisites
- Access token to be embedded as a header in
X-Zeta-AuthToken
. - The system will not take in requests unless this auth token is passed as part of the header.
- The API endpoint that needs to be called for testing is https://fusion.gw.zetapay.in/api/v1.
- There are several steps to do if you want to orchestrate a user journey for a fintech user on Zeta’s system. We will give you sample curls throughout the document to go through the journey points as mentioned below.
- For all the following APIs, invocation has to be driven through the issuer (or the bank). In this case, fintech has to use a static, assigned
IFI id
of304876
. - Also, for most of the APIs you can use either postman or curl. We have provided curl examples for now in the documentation.
- Mandatory Fields Highlighted Colour.
- Response used in other API Highlighted Colour.
Get Accounts by Account Holder
This API will list all the accounts which are linked to that particular individual account holder. Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
individualID/accountHolderID | It is received from Create Account Holder/new individual API. |
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/individuals/8f481b75-afff-4ef2-ab9b-97b3e08fb17c/accounts' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}'
{
"accounts": [
{
"id": "1cd911fd-0894-4aed-880d-a7124a5bbe4a",
"vectors": [],
"accessors": [],
"relationships": [],
"ifiID": 304876,
"ownerAccountHolderID": "8f481b75-afff-4ef2-ab9b-97b3e08fb17c",
"accountProviderID": "8451380a-8979-49e4-baf9-f71af5d956bf",
"name": "Parent_savings",
"productFamilyID": 2140941378257639093,
"productID": 6178734290235544095,
"programIDs": [],
"ledgerID": 5474275113084006114,
"status": "ENABLED",
"attributes": {
"zeta.business-id": "304876",
"zeta.card-program-id": ""
},
"createdAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 11,
"minute": 20,
"second": 29,
"nano": 503009000
}
},
"updatedAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 11,
"minute": 20,
"second": 29,
"nano": 503009000
}
},
"headers": {}
},
{
"id": "c934cbe4-df6e-44f2-8fe0-2ac7e7767262",
"vectors": [],
"accessors": [],
"relationships": [],
"ifiID": 304876,
"ownerAccountHolderID": "8f481b75-afff-4ef2-ab9b-97b3e08fb17c",
"accountProviderID": "8451380a-8979-49e4-baf9-f71af5d956bf",
"name": "Parent_current",
"productFamilyID": 2140941378257639093,
"productID": 6178734290235544095,
"programIDs": [],
"ledgerID": 1109478357847137299,
"status": "ENABLED",
"attributes": {
"zeta.business-id": "304876",
"zeta.card-program-id": ""
},
"createdAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 11,
"minute": 20,
"second": 29,
"nano": 432112000
}
},
"updatedAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 11,
"minute": 20,
"second": 29,
"nano": 432112000
}
},
"headers": {}
},
{
"id": "dc97c156-1fed-44c0-a7e4-5158f1fac042",
"vectors": [],
"accessors": [],
"relationships": [],
"ifiID": 304876,
"ownerAccountHolderID": "8f481b75-afff-4ef2-ab9b-97b3e08fb17c",
"accountProviderID": "8451380a-8979-49e4-baf9-f71af5d956bf",
"name": "VBO_bundle",
"productFamilyID": 2140941378257639093,
"productID": 6178734290235544095,
"programIDs": [],
"ledgerID": 4009385172360054756,
"status": "ENABLED",
"attributes": {
"bundle.name": "PaySeva wallet bundle (minKYC with PAN)",
"zeta.business-id": "304876",
"zeta.card-program-id": ""
},
"createdAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 10,
"minute": 39,
"second": 2,
"nano": 974289000
}
},
"updatedAt": {
"date": {
"year": 2020,
"month": 7,
"day": 28
},
"time": {
"hour": 10,
"minute": 39,
"second": 2,
"nano": 974289000
}
},
"headers": {}
}
],
"headers": {}
}
In response you will get details of all the accounts that are linked with the provided individual ID.
Get Account balance
This API will help in fetching the account balance details by providing the accountID. Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
accountID | It is received while issuing a bundle or from the issue account product API. |
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/accounts/dc97c156-1fed-44c0-a7e4-5158f1fac042/balance' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}'
{
"balance": 0,
"currency": "INR",
"lastTransactionID": "20200728103903290_10809_Hzyj0Q==",
"accountingType": "LIABILITY",
"headers": {}
}
The following parameters will be received in response & will be used in further APIs.|Parameters|API Involved| |———-|————| |lastTransactionID|ID of the last transaction done.|
Account to Account Transfer
This API is used to transfer money from one account to another. The money is transferred from debit account to credit account by providing their respective ID. Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
amount | User needs to specify the amount that needs to be transferred. (In Paisa). |
currency | It shows the currency in which the money is transferred. (Length 16 characters). |
transfer code | (Length 240 characters) |
debit account id | individualID of the debited account. |
credit account id | individualID of the credited account. |
remarks | (Length 256 characters) |
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/transfers' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}' \
--data-raw '{
"requestID" : "test_abcd_1aadflkjhdjh_123658",
"amount": {
"currency" : "INR",
"amount" : "10000"
},
"transferCode": "ATLAS_P2M_AUTH",
"debitAccountID": "dc97c156-1fed-44c0-a7e4-5158f1fac042",
"creditAccountID": "03a60325-e8a4-4c84-b094-30bfb130502b",
"transferTime": 12324254832342,
"remarks": "TEST",
"attributes": {}
}'
{
"requestID": "test_abcd_1aadflkjhdjh_123658",
"transferID": "20200806123348502_15770_test_abcd_1aadflkjhdjh_123658",
"status": "SUCCESS"
}
The following parameters will be received in response & will be used in further APIs.|Parameters|API Involved| |———-|————| |transferID|This can be used further used in Account to Account Reversal API (transactionID) for reversal.|
Get Transactions by Account ID
Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
accountID | It is received while creating an account. |
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/accounts/dc97c156-1fed-44c0-a7e4-5158f1fac042/transactions?pageSize=2&pageNumber=1' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}'
{
"accountTransactionList": [
{
"accountID": "dc97c156-1fed-44c0-a7e4-5158f1fac042",
"transactionID": "20200806123348502_15770_test_abcd_1aadflkjhdjh_123658",
"postingID": "158073",
"reversalTransactionIDs": [],
"previousBalance": 41000,
"newBalance": 31000,
"timestamp": 1596717227998,
"amount": 10000,
"currency": "INR",
"recordType": "DEBIT",
"remarks": "TEST",
"attributes": {
"account.pd-id": "6178734290235544095",
"zeta.card-program-id": "",
"debitAuthSignatory": "[\"[email protected]/1\"]",
"aura.coa-id": "6221687368577586252",
"account.pf-id": "2140941378257639093",
"bundle.name": "PaySeva wallet bundle (minKYC with PAN)",
"policies": "{}",
"account.account-holder-id": "8f481b75-afff-4ef2-ab9b-97b3e08fb17c",
"journal.voucherCode": "ATLAS_P2M_AUTH",
"journal.self": "false",
"zeta.card-program-ids": "",
"aura.parent-node-id": "5154468505745539829",
"isForced": "false",
"payment.captured": "true",
"zeta.ifi": "304876",
"zeta.ppi-type": "OPEN",
"zeta.product-type": "Generic",
"zeta.ifi-product-type": "MCC_VOUCHER_RECIPIENT",
"athena.account-provider-id": "8451380a-8979-49e4-baf9-f71af5d956bf",
"zeta.business-id": "304876",
"isP2PTransfer": "false"
},
"headers": {}
},
{
"accountID": "dc97c156-1fed-44c0-a7e4-5158f1fac042",
"transactionID": "20200806123126773_15767_test_abcd_1aadflkjhdjh_123457",
"postingID": "158072",
"reversalTransactionIDs": [],
"previousBalance": 51000,
"newBalance": 41000,
"timestamp": 1596717086278,
"amount": 10000,
"currency": "INR",
"recordType": "DEBIT",
"remarks": "TEST",
"attributes": {
"account.pd-id": "6178734290235544095",
"zeta.card-program-id": "",
"debitAuthSignatory": "[\"[email protected]/1\"]",
"aura.coa-id": "6221687368577586252",
"account.pf-id": "2140941378257639093",
"bundle.name": "PaySeva wallet bundle (minKYC with PAN)",
"policies": "{}",
"account.account-holder-id": "8f481b75-afff-4ef2-ab9b-97b3e08fb17c",
"journal.voucherCode": "ATLAS_P2M_AUTH",
"journal.self": "false",
"zeta.card-program-ids": "",
"aura.parent-node-id": "5154468505745539829",
"isForced": "false",
"payment.captured": "true",
"zeta.ifi": "304876",
"zeta.ppi-type": "OPEN",
"zeta.product-type": "Generic",
"zeta.ifi-product-type": "MCC_VOUCHER_RECIPIENT",
"athena.account-provider-id": "8451380a-8979-49e4-baf9-f71af5d956bf",
"zeta.business-id": "304876",
"isP2PTransfer": "false"
},
"headers": {}
}
],
"totalRecord": 4,
"headers": {}
}
The following parameters will be received in response & will be used in further APIs.
Parameters | API Involved |
---|---|
transactionID | This is further used in Account to Account Reversal API (transactionID) for reversal. |
Account to Account Reversal API
This API is used to reverse the funds transfer using transactionID Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
transactionID | Received in response of get transactions by accountID. |
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/140827/transactions/20200806123348502_15770_test_abcd_1aadflkjhdjh_123658/reversal' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{token}}' \
--data-raw '{
"requestID": "497cd983-c91a-4a1d-a112-276986f7e54676",
"currency": "INR",
"amount": 20000,
"doPartialReversal": true,
"transferCode": "A2A_VBOPayout-VBO2E_AUTH-REVERSAL",
"remarks": "l3 to l1 reversal for txn id: 20200807150927713_625_b0c20f22-71a4-478f-b0c6-c4168b2110cd"
}'
{
"requestID": "497cd983-c91a-4a1d-a112-276986f7e54676",
"paymentType": "REVERSAL",
"transactionID": "20200806123348502_15770_test_abcd_1aadflkjhdjh_123658",
"amount": 20000,
"currency": "INR",
"status": "FAILED",
"statusDetails": {
"message": "Invalid reversal value: INR 20000",
"errorCode": "INTERNAL_ERROR"
}
}
Status - Failed As for Min KYC transfer does not work.
Transfer dummy balance to the account of the account Holder
Below are the list of mandatory parameters that need to be added in the request body:
Parameters | Description |
---|---|
X-Zeta-AuthToken | It should be same as mentioned in the prerequisite table. |
ifiID | Unique identifier of the IFI. |
amount | User needs to specify the amount that needs to be transferred. (In Paisa). |
currency | It shows the currency in which the money is transferred. |
(Length 16 characters). | |
transfer code | (Length 240 characters) |
debit account id | Funding Account ID |
credit account id | individualID of the credited account. |
remarks | (Length 256 characters) |
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/transfers' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{cookie}}' \
--data-raw '{ "requestID" : "8439e4b6-1b63-4a28-afa1-34206a44425afkljfa",
"amount": {
"currency" : "INR",
"amount" : "50000"
},
"transferCode": "ATLAS_P2M_AUTH",
"debitAccountID": "03a60325-e8a4-4c84-b094-30bfb130502b",
"creditAccountID": "dc97c156-1fed-44c0-a7e4-5158f1fac042",
"transferTime": 1574741608000,
"remarks": "AH-1 VBO a/c",
"attributes": {}
}'
{
"requestID": "8439e4b6-1b63-4a28-afa1-34206a44425afkljfa",
"transferID": "20200806082840923_14534_8439e4b6-1b63-4a28-afa1-34206a44425afkljfa",
"status": "SUCCESS"
}