Familiarize yourself with payment types and beneficiary fund transfers in the payment ecosystem. In this article, you learn about:
Fusion provides the following types of payment to a Real Account Holder:
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:
Before adding a Beneficiary for a Real Account Holder (RAH), create a Beneficiary object for the beneficiary.
POST |
|
The sample below illustrates the following points:
id
.Request
Response
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": {} }
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.
POST |
|
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.Request
Response
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": {} }
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.
GET |
|
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.Request
Response
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": {} }
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.
GET | /api/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.Request
Response
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": {} }
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).
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.Request
Response
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": {} }
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 APIbeneficiaryID
is the Beneficiary's ID, id , returned from Create a beneficiary APIaccountID
is the Beneficiary's Account ID, id , returned from Add a beneficiary account APIPass the values for individualId
, beneficiaryID
and accountID
from the previous step and use the transfers endpoint to transfer funds to Beneficiary.
POST | /api/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 Zeta to know the supported transfer codes.
Request
Response
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.
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.