Fund Transfers
Familiarize yourself with payment types and beneficiary fund transfers in the payment ecosystem. In this article, you learn about:
Payment types
Fusion provides the following types of payment to a Real Account Holder:
-
Card payment
-
Beneficiary transfer
-
A2A transfer
Beneficiaries
On Fusion, a Beneficiary is like your real-world beneficiaries whom you may want to transfer real funds to. It is similar to the list of entities that you may have in your savings bank account system along with some identifier like UPI VPA ID or Bank account number + IFSC code. Beneficiaries are internally modelled in the system as entities that have underlying Accounts associated with them.
Adding a Beneficiary to an Account Holder consists of the following steps:
-
Create a beneficiary
-
Add a beneficiary account
Create a beneficiary
Before adding a Beneficiary for a Real Account Holder (RAH), create a Beneficiary object for the beneficiary.
Endpoint URI
The sample below illustrates the following points:
-
Details of Beneficiary to be added are passed in the request body.
-
ID of the Account Holder to whom the Beneficiary will be added is passed as a path parameter in the endpoint URI.
-
The response returns a unique identifier for the newly created Beneficiary, id.
curl -X POST \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/ebc49dda-f664-4280-9bb7-52e62a379a26/beneficiaries \
-H 'Content-Type: application/json' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
-d '{
"requestID": "request-ben-123",
"firstName": "Ishaan",
"type" : "REAL",
"middleName": "",
"lastName": "Singh",
"gender": "Male",
"salutation": "Mr.",
"relationship": "Friend",
"profilePicURL": "url"
}'
{
"requestID": "FUSION-140827-ebc49dda-f664-4280-9bb7-52e62a379a26-1573557024015",
"id": "f8f77c78-1053-4bf4-9a6c-1a03a78d739a",
"ifiID": 140827,
"accountHolderID": "ebc49dda-f664-4280-9bb7-52e62a379a26",
"salutation": "Mr.",
"firstName": "Ishaan",
"middleName": "",
"lastName": "Singh",
"gender": "Male",
"profilePicURL": "url",
"status": "ENABLED",
"type": "REAL",
"vectors": [],
"customFields": {},
"headers": {}
}
Add a beneficiary account
A Beneficiary’s Account is required to transfer funds to the Beneficiary. Once you have created a Beneficiary object, create an Account and map it to the Account Holder.
Endpoint URI
Following API sample shows how to add Beneficiary Account for the newly created beneficiary:
As a prerequisite, specify the following parameters in the endpoint URI:
individualID
, which is the Account Holder ID, returned while creating an Account Holder.beneficiaryID
, which is the Beneficiary ID returned while creating a Beneficiary.
curl -X POST \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/45734e18-0d1c-4fa2-84f4-5f6b928d7e01/beneficiaries/4401578d-8972-48cc-9ae9-e3efd900497e/accounts \
-H 'Content-Type: application/json' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
-d '{
"ifiID": 140827,
"isVerified": true,
"status": "ENABLED",
"beneficiaryID": "f8f77c78-1053-4bf4-9a6c-1a03a78d739a",
"parentAccountHolderID": "45734e18-0d1c-4fa2-84f4-5f6b928d7e01",
"nickname": "New Beneficiary Account",
"type": "ZETA",
"accountInfo": {
"accountNumber": "28a35e77-4fe9-4570-8571-b3a97b84e523",
"accountProvider": "ICICI787365e35634",
"nameAtAccountProvider": "ISHAAN",
"routingCode": "IMPS",
"accountType": "SAVINGS",
"attributes": {
"additionalProp1": "INDIRANAGAR",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"isDefault": true,
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}'
{
"id": "41c02be5-60ec-4439-afb2-310948e89707",
"ifiID": 140827,
"isVerified": false,
"status": "ENABLED",
"beneficiaryID": "4401578d-8972-48cc-9ae9-e3efd900497e",
"parentAccountHolderID": "45734e18-0d1c-4fa2-84f4-5f6b928d7e01",
"nickname": "New Beneficiary Account",
"type": "ZETA",
"accountInfo": {
"accountNumber": "28a35e77-4fe9-4570-8571-b3a97b84e523",
"accountProvider": "ICICI787365e35634",
"nameAtAccountProvider": "ISHAAN",
"routingCode": "IMPS",
"accountType": "SAVINGS",
"attributes": {
"additionalProp1": "INDIRANAGAR",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"isDefault": true,
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"createdAt": "Nov 12, 2019 1:46:49 PM",
"headers": {}
}
Get beneficiary details
Beneficiary information is important when you want to link a Beneficiary to an existing Account Holder. There can be other scenarios as per business process where you will need to retrieve beneficiary’s details.
Endpoint URI
Use the following API to retrieve Beneficiary details:
As a prerequisite, use the following parameters to be specified in the endpoint URI:
individualID
, which is the Account Holder ID, returned while creating an Account Holder.beneficiaryID
, which is the Beneficiary ID returned while creating a Beneficiary.
curl -X GET \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/45734e18-0d1c-4fa2-84f4-5f6b928d7e01/beneficiaries/f8f77c78-1053-4bf4-9a6c-1a03a78d739a \
-H 'Content-Type: application/json' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
{
"requestID": "FUSION-140827-ebc49dda-f664-4280-9bb7-52e62a379a26-1573557024015",
"id": "f8f77c78-1053-4bf4-9a6c-1a03a78d739a",
"ifiID": 140827,
"accountHolderID": "ebc49dda-f664-4280-9bb7-52e62a379a26",
"salutation": "Mr.",
"firstName": "Ishaan",
"middleName": "",
"lastName": "Singh",
"gender": "Male",
"profilePicURL": "url",
"status": "ENABLED",
"type": "REAL",
"vectors": [],
"customFields": {},
"headers": {}
}
Get beneficiary account details
Beneficiary Account details can be required when the Account Holder wants to transfer funds to the beneficiary. Therefore, you can retrieve Account details for every existing Beneficiary.
Endpoint URI
Use the following API to retrieve Account details of a specific Beneficiary:
As a prerequisite, use the following parameters to be specified in the endpoint URI:
individualID
, which is the Account Holder ID, returned while creating an Account Holder.beneficiaryID
, which is the Beneficiary ID returned while creating a Beneficiary.accountID
, which is the Beneficiary Account ID returned while adding a Beneficiary Account.
curl -X GET \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/45734e18-0d1c-4fa2-84f4-5f6b928d7e01/beneficiaries/4401578d-8972-48cc-9ae9-e3efd900497e/accounts/89c783c4-ea6b-48d9-a0bc-479e1a8395c7 \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
{
"id": "89c783c4-ea6b-48d9-a0bc-479e1a8395c7",
"ifiID": 140827,
"isVerified": false,
"status": "ENABLED",
"beneficiaryID": "4401578d-8972-48cc-9ae9-e3efd900497e",
"parentAccountHolderID": "45734e18-0d1c-4fa2-84f4-5f6b928d7e01",
"nickname": "New Beneficiary Account",
"type": "ZETA",
"accountInfo": {
"accountNumber": "ba8eb92f-4a44-4959-9d07-aa83dad89bad",
"accountProvider": "ICICI787365e35634",
"nameAtAccountProvider": "ISHAAN",
"routingCode": "IMPS",
"accountType": "SAVINGS",
"attributes": {
"additionalProp1": "INDIRANAGAR",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"isDefault": true,
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"createdAt": "Nov 12, 2019 1:01:14 PM",
"headers": {}
}
Get beneficiary account list
You can retrieve all the Accounts for a particular Beneficiary, if they have more than one account. For example, a list of Beneficiary Accounts is required when a fintech wants to disburse salary to its employees (beneficiaries).
Endpoint URI
Use the following API to retrieve a Beneficiary Account List:
As a prerequisite, use the following parameters to be specified in the endpoint URI:
individualID
, which is the Account Holder ID, returned while creating an Account Holder.
beneficiaryID
, which is the Beneficiary ID returned while creating a Beneficiary.
curl -X GET \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/45734e18-0d1c-4fa2-84f4-5f6b928d7e01/beneficiaries/4401578d-8972-48cc-9ae9-e3efd900497e/accounts \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
{
"beneficiaryAccountList": [
{
"id": "89c783c4-ea6b-48d9-a0bc-479e1a8395c7",
"ifiID": 140827,
"isVerified": false,
"status": "ENABLED",
"beneficiaryID": "4401578d-8972-48cc-9ae9-e3efd900497e",
"parentAccountHolderID": "45734e18-0d1c-4fa2-84f4-5f6b928d7e01",
"nickname": "New Beneficiary Account",
"type": "ZETA",
"accountInfo": {
"accountNumber": "ba8eb92f-4a44-4959-9d07-aa83dad89bad",
"accountProvider": "ICICI787365e35634",
"nameAtAccountProvider": "ISHAAN",
"routingCode": "IMPS",
"accountType": "SAVINGS",
"attributes": {
"additionalProp1": "INDIRANAGAR",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"isDefault": true,
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"createdAt": "Nov 12, 2019 1:01:14 PM",
"headers": {}
},
{
"id": "400a3882-3546-4b6e-a156-0b88106ddcea",
"ifiID": 140827,
"isVerified": false,
"status": "ENABLED",
"beneficiaryID": "4401578d-8972-48cc-9ae9-e3efd900497e",
"parentAccountHolderID": "45734e18-0d1c-4fa2-84f4-5f6b928d7e01",
"nickname": "New Beneficiary Account",
"type": "ZETA",
"accountInfo": {
"accountNumber": "ba8eb92f-4a44-4959-9d07-aa83dad89bad",
"accountProvider": "ICICI787365e35634",
"nameAtAccountProvider": "ISHAAN",
"routingCode": "IMPS",
"accountType": "SAVINGS",
"attributes": {
"additionalProp1": "INDIRANAGAR",
"additionalProp2": "string",
"additionalProp3": "string"
}
},
"isDefault": true,
"attributes": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"createdAt": "Nov 12, 2019 1:16:06 PM",
"headers": {}
}
],
"headers": {}
}
Beneficiary transfers
Retrieve beneficiary details
To transfer funds to a Beneficiary, you require individualId
, beneficiaryID
and accountID
parameters. Note that:
-
individualId
is the Account Holder’s ID, id, returned from Create Account Holder API -
beneficiaryID
is the Beneficiary’s ID, id , returned from Create a beneficiary API -
accountID
is the Beneficiary’s Account ID, id , returned from Add a beneficiary account API
Transfer funds to beneficiary
Pass the values for individualId
, beneficiaryID
and accountID
from the previous step and use the transfers endpoint to transfer funds to Beneficiary.
Endpoint URIs
Fusion supports IMPS, NEFT and UPI fund transfer modes. Each mode is defined by a unique identifier, transferCode, which must be passed in the request body of the transfer endpoint. Contact mailto:Zeta to know the supported transfer codes.
curl -X POST \
https://fusion.preprod.zeta.in/api/v1/ifi/140827/individuals/b23ef097-8d7e-41e9-86da-c2072db6fa25/beneficiaries/f52a98b5-0f7c-4ad0-9474-8f48d9df1b78/accounts/2afd8e4c-3f13-4be0-a620-ef9c1a21ef11/transfers \
-H 'Content-Type: application/json' \
-H 'X-Zeta-AuthToken: {{AUTH_TOKEN}}' \
-d '{
"requestID": "BeneficiaryTransactio234nTest-22113231298798",
"currency": "INR",
"amount": 10,
"transferCode": "ATLAS_P2M_AUTH",
"debitAccountHolderID": "b23ef097-8d7e-41e9-86da-c2072db6fa25",
"debitAccountID": "4cdb45da-0ae5-46bf-8aae-c0943a5aae3f",
"beneficiaryID": "f52a98b5-0f7c-4ad0-9474-8f48d9df1b78",
"beneficiaryAccountID": "2afd8e4c-3f13-4be0-a620-ef9c1a21ef11",
"transactionTime": 12322334234489,
"remarks": "TEST",
"attributes": {}
}'
{
"requestID": "FUSION-140827-f52a98b5-0f7c-4ad0-9474-8f48d9df1b78-1575257482530",
"transactionID": "20191202033122794_1909_FUSION-140827-f52a98b5-0f7c-4ad0-9474-8f48d9df1b78-1575257482530",
"status": "SUCCESS",
"headers": {}
}
To retrieve transaction details for an account, use the \transactions endpoint.
Card payment
Account Holders can use the issued cards to make digital payments (e-commerce websites), or swipe the card at merchant’s POS machines. No public APIs are required to be invoked, as various Acquirer, Issuer and Fusion services communicate with each other internally to process these types of transactions.
Related articles
Payment FAQs
FAQs related to the payment APIs
Beneficiary API Error Codes
List of error codes specific to Beneficiary APIs
Beneficiary APIs
Create Accounts, manage Bundles, view transactions
Payment Simulator
A tool for developers to try out card transactions
Shared Spends
A step-by-step walkthrough to set up Shared spends product
Card API Error Codes
List of error codes specific to Card APIs
Card APIs
Order new cards, change PIN, get payment details