Switch to dark theme

Switch to light theme

Fund Transfers

Fund Transfers
Published on 20th August, 2021

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

POST/api/v1/ifi/{ifiID}/individuals/{individualID}/beneficiaries

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 Sample
Switch Theme
Expand More
Copy
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"
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"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": {}
}
Code Copied

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

POST/api/v1/ifi/{ifiID}/individuals/{individualID}/beneficiaries/{beneficiaryID}/accounts

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 Sample
Switch Theme
Expand More
Copy
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"
}
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"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": {}
}
Code Copied

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

GET/api/v1/ifi/{ifiID}/individuals/{individaulID}/beneficiaries/{beneficiaryID}

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 Sample
Switch Theme
Expand More
Copy
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}}' \
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"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": {}
}
Code Copied

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

GETapi/v1/ifi/{ifiID}/individuals/{individualID}/beneficiaries/{beneficiaryID}/accounts/{accountID}

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 Sample
Switch Theme
Expand More
Copy
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}}' \
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"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": {}
}
Code Copied

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

GET/api/v1/ifi/{ifiID}/individuals/{individualID}/beneficiaries/{beneficiaryID}/accounts

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 Sample
Switch Theme
Expand More
Copy
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}}' \
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"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": {}
}
Code Copied

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

POSTapi/v1/ifi/{ifiID}/individuals/{individualID}/beneficiaries/{beneficiaryID}/accounts/{accountID}/transfers
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 Sample
Switch Theme
Expand More
Copy
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": {}
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
"requestID": "FUSION-140827-f52a98b5-0f7c-4ad0-9474-8f48d9df1b78-1575257482530",
"transactionID": "20191202033122794_1909_FUSION-140827-f52a98b5-0f7c-4ad0-9474-8f48d9df1b78-1575257482530",
"status": "SUCCESS",
"headers": {}
}
Code Copied
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