• Credit

    US flag
  • Credit

    US flag

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 of 304876.
  • 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.

Bulk Card Order API Flow

Bulk Card Order API

This API is used for placing bulk card order for multiple account holders. 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.
quantity Quantity of the cards that user want to place.
orderID This is a unique identifier for each order, must not contain any special characters.
contactNumber Contact number of the user (who is placing bulk card order).
cardSkuIDs The indicates the expiry date of the card. It starts from the date when the card is issued to the account holder. It gets expired with 3 to 5 years of issuance.

cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/cards/orders' \
--header 'Accept: application/json, text/plain, */*' \
--header 'Authorization: Bearer {{token}}' \
--header 'Origin: https://cards-support-center-stage.zetaapps.in' \
--header 'Referer: https://cards-support-center-stage.zetaapps.in/' \
--header 'Sec-Fetch-Mode: cors' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36' \
--header 'Cookie: {{Cookie}}' \
--data-raw '{
  "quantity": "25",
  "orderID": "VBObulkcardorder25",
  "cardSkuID": "TESTNW_12345644_PHY_VBO_UAT",
  "plasticCode": "WHITEC",
  "expiry": {
      "month": 1,        "year": 5,
      "separator": "/"
  },
  "thirdLineEmbossing": "",
  "fourthLineEmbossing": "",
  "deliveryAddress": {
      "name": "DirectiPlex",
      "addressLine1": "Directiplex, Old Nagardas road",
      "addressLine2": "Andheri (East)",
      "addressLine3": "Mumbai",
      "addressLine4": "NA",
      "city": "Mumbai",
      "state": "Maharashtra",
      "country": "India",
      "postalCode": "400053",
      "contactNumber": "02228875456"
  },
  "tenantAttributes": {
      "corporateName": "",
      "corporateID": "",
      "templateID": ""
  },
  "vendorAttributes": {
      "consignmentID": ""
  }
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
  "quantity": 25,
  "orderID": "VBObulkcardorder25",
  "cardSkuID": "TESTNW_12345644_PHY_VBO_UAT",
  "plasticCode": "WHITEC",
  "expiry": {
      "month": 1,
      "year": 5
  },
  "thirdLineEmbossing": "",
  "fourthLineEmbossing": "",
  "deliveryAddress": {
      "name": "DirectiPlex",
      "addressLine1": "Directiplex, Old Nagardas road",
      "addressLine2": "Andheri (East)",
      "addressLine3": "Mumbai",
      "addressLine4": "NA",
      "city": "Mumbai",
      "state": "Maharashtra",
      "country": "India",
      "postalCode": "400053",
      "contactNumber": "02228875456"
  },
  "tenantAttributes": {
      "corporateName": "",
      "corporateID": "",
      "templateID": ""
  },
  "vendorAttributes": {
      "consignmentID": ""
  }
}
 
Code Copied
  • For pre-production, whenever you place an order, we have to wait for 10-15 minutes for the order state to change. Embossing file generated status can be achieved by doing an internal dispatch call. Please reach out to Zeta team to trigger this API.
  • In production: The files move to the Embossing file generated state at 2:30 AM after the embossing cron runs at Zeta’s end.

List Card by Order

This API is used to fetch card related details like crn, cardID, maskedPan. The orderID received as a response to the Bulk Card order API is used to get the details. Users will get cardID, cardType,maskedPan etc. Once the Embossing_File status is changed to generated from Pending state. 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.
orderID This is a unique identifier for each order (This will be same as passed in bulk card order API).

cURL Sample
Switch Theme
Expand More
Copy
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/orders/VBObulkcardorder25/cards/list?limit=1&offset=0' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{Cookie}}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
[
  {
      "cardID": "471325f6-4141-4a72-9f5d-6b3a9ca8fc44",
      "crn": "149569457850",
      "cardType": "PHYSICAL",
      "maskedPan": "123456-xxxxxx-3239",
      "cardStatus": "ENABLED",
      "orderDetails": {
          "orderID": "VBObulkcardorder25",
          "cardSkuID": "TESTNW_12345644_PHY_VBO_UAT",
          "cardSku": {
              "cardSkuId": "TESTNW_12345644_PHY_VBO_UAT",
              "productID": "203229671356371",
              "ifi": "304876",
              "bin": "123456",
              "plasticCode": "SI1205",
              "vendorID": "SELP",
              "tags": [
                  "tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
              ],
              "range": "22"
          },
          "plasticCode": "WHITEC",
          "thirdLineEmbossing": "",
          "fourthLineEmbossing": "",
          "expiry": {
              "month": "7",
              "year": "25"
          },
          "deliveryAddress": {
              "country": "India",
              "city": "Mumbai",
              "postalCode": "400053",
              "contactNumber": "02228875456",
              "addressLine1": "Directiplex, Old Nagardas road",
              "addressLine2": "Andheri (East)",
              "addressLine3": "Mumbai",
              "state": "Maharashtra",
              "addressLine4": "NA"
          },
          "tenantAttributes": {
              "templateID": "",
              "corporateID": "",
              "corporateName": ""
          },
          "orderStatus": "EMBOSSING_FILE_GENERATED"
      },
      "binRange": {
          "bin": "123456",
          "range": "22"
      }
  }
]
 
Code Copied
The following parameters will be received in response & will be used in further APIs.
|Parameters|Description| |———-|———–| |crn|It is a card reference number. Using CRN, user can fetch card details.| |cardID|Will get this detail once the status of embossing file changes to -> EMBOSSING_FILE_GENERATED. Associate card form factor with resource, Associate phone form factor with resource.| |cardType|Will get this detail once the status of embossing file changes to -> EMBOSSING_FILE_GENERATED.| |maskedPan|Will get this detail once the status of embossing file changes to -> EMBOSSING_FILE_GENERATED.| |cardStatus|Will get this detail once the status of embossing file changes to -> EMBOSSING_FILE_GENERATED.| |orderStatus|This gives the status of the card.|

New Individual API

Once the bulk card order is placed, an account holder can be created. This is the same API as used for creating Account holder. Use the /newIndividual API to create an Application for a new Account Holder. Users have to provide Account Holder’s personal contact and KYC information in the request body. 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 It represents a unique identifier assigned to the ifi (eg. 304876).
formID Form id has to be unique per request, if added in payload (it’s an optional field).
individualType It represents whether account holder is LAH or RAH.
firstName This represents the first name of the Account Holder. The name should be same as mentioned in the OVD details.
dob User needs to provide the year, month & day fields.
authData User needs to provide OVD (it can be PAN, DL, Voter ID).
vectors Users need to provide the value as contact number or email id. The vector type will be of 2 type; p for phone number & e for email.
X-Zeta-AuthToken, ifiID needs to update as mentioned in the Prerequisite table.

cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/applications/newIndividual' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}' \
--data-raw '{
  "ifiID": "304876",
  "formID": "001132",
  "applicationType": "CREATE_ACCOUNT_HOLDER",
  "spoolID": "3deb5a70-311c-11ea-978f-2e728ce88125",
  "individualType": "REAL",
  "salutation": "",
  "firstName": "Modi",
  "middleName": "",
  "lastName": "Kachru",
  "profilePicURL": "",
  "dob": {
      "year": 1997,
      "month": 11,
      "day": 20
  },
  "gender": "",
  "mothersMaidenName": "",
  "kycDetails": {
      "kycStatus": "MINIMAL",
      "kycStatusPostExpiry": "KYC_EXPIRED",
      "kycAttributes": {},
      "authData": {
          "PAN": "CPPPM791A62"
      },
      "authType": "PAN"
  },
  "vectors": [
      {
          "type": "p",
          "value": "+919424037665",
          "isVerified": true
      }
  ],
  "pops": [],
  "customFields": {
      "entity_id": "ABCD0001"
  }
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
  "applicationID": "251683",
  "formID": "001132",
  "ifiID": 304876,
  "spoolID": "3deb5a70-311c-11ea-978f-2e728ce88125",
  "status": "APPROVED",
  "individualID": "22e70e67-6468-4035-a781-180c3151161e",
  "applicationType": "REAL",
  "salutation": "",
  "firstName": "Modi",
  "middleName": "",
  "lastName": "Kachru",
  "profilePicURL": "",
  "dob": {
      "year": 1997,
      "month": 11,
      "day": 20
  },
  "gender": "",
  "mothersMaidenName": "",
  "vectors": {
      "076a073a-b825-4f20-b844-29fe88d9d979": {
          "type": "p",
          "value": "+919424037665",
          "aetherID": "076a073a-b825-4f20-b844-29fe88d9d979",
          "isVerified": false
      },
      "7261661b-a646-4f75-981b-a9578a52394d": {
          "type": "pan",
          "value": "CPPPM791A62",
          "aetherID": "7261661b-a646-4f75-981b-a9578a52394d",
          "isVerified": false
      }
  },
  "tags": {
      "082bf909-dd06-4a5e-b561-1b65f978ed81": {
          "type": "vbo-id",
          "value": "ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b",
          "attributes": {}
      }
  },
  "kycDetails": {
      "kycStatus": "MINIMAL",
      "updateTime": "Jul 29, 2020 9:21:40 AM",
      "expiryTime": "Jul 6, 2119 9:21:40 AM",
      "kycStatusPostExpiry": "MINIMAL",
      "authType": "PAN",
      "authData": {
          "PAN": "CPPPM791A62"
      },
      "kycAttributes": {
          "pan": "CPPPM791A62",
          "authType": "PAN",
          "kycType": "MINIMAL"
      }
  },
  "customFields": {
      "entity_id": "ABCD0001"
  },
  "createdAt": "Jul 29, 2020 9:21:40 AM",
  "updatedAt": "Jul 29, 2020 9:21:40 AM",
  "source": "Fusion",
  "statusDetails": {},
  "headers": {}
}
 
Code Copied
The following parameters will be received in response & will be used in further APIs.
|Parameters|API Involved| |———-|————| |individualID|Get Account Holder Info, Get Account Holder Info By User Vector.| |vectorType|Get Account Holder Info By User Vector.| |vectorValue|Get Account Holder Info By User Vector.|

Issue bundle

Issue Bundle API is used to issue an account product. While placing bulk card order we disable FF creation so empty Resource gets created 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.
bundleID Pass the bundleID as provided in pre-requisite table.
accountHolderID ID of the Account Holder to whom the Account is being issued.(individualID).
name Name of the issued Bundle.
disableFFCreation true (Here empty resource gets created(Not associated to any form factor[phone number+prepaid card])).

cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/bundles/502cb813-8ccb-49ec-8e32-63a95f8fb6e8/issueBundle' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{Cookie}}=' \
--data-raw '{
  "accountHolderID": "22e70e67-6468-4035-a781-180c3151161e",
  "name": "VBO_bundle_09",
  "disableFFCreation" : "true"
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
  "requestID": "b607e500-9729-46c9-bb5e-83d0b2078369",
  "accounts": [
      {
          "bundleID": "502cb813-8ccb-49ec-8e32-63a95f8fb6e8",
          "accountHolderID": "22e70e67-6468-4035-a781-180c3151161e",
          "accountID": "3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34"
      }
  ],
  "paymentInstruments": [
      {
          "bundleID": "502cb813-8ccb-49ec-8e32-63a95f8fb6e8",
          "resourceID": "4d85d740-00db-4d64-abe2-71a1eca0433d",
          "status": "ACTIVE",
          "targetAccount": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34"
      }
  ]
}
 
Code Copied
The following parameters will be received in response & will be used in further APIs.
|Parameters|API Involved| |———-|————| |accountID|Can be used in issueAccountProduct, associate card form factor with resource| |resourceID|Get resource to fetch Form Factor (empty Resource gets created (not associated to any form factors)).|

Get Card by CRN

Get card and order details for a specific card by specifying its Card Reference Number(CRN).

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.
crn This is Card reference number which is fetched from List card by order API.
cURL Sample
Switch Theme
Expand More
Copy
 
 curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/cards/149569457850' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{Cookie}}'
 
 
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
 
 {
   "cardID": "471325f6-4141-4a72-9f5d-6b3a9ca8fc6a",
   "crn": "149569457850",
   "cardType": "PHYSICAL",
   "maskedPan": "123456-xxxxxx-3239",
   "cardStatus": "ENABLED",
   "orderDetails": {
       "orderID": "VBObulkcardorder25",
       "cardSkuID": "TESTNW_12345644_PHY_VBO_UAT",
       "cardSku": {
           "cardSkuId": "TESTNW_12345644_PHY_VBO_UAT",
           "productID": "203229671356371",
           "ifi": "304876",
           "bin": "123456",
           "plasticCode": "SI1205",
           "vendorID": "SELP",
           "tags": [
               "tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
           ],
           "range": "22"
       },
       "plasticCode": "WHITEC",
       "thirdLineEmbossing": "",
       "fourthLineEmbossing": "",
       "expiry": {
           "month": "7",
           "year": "25"
       },
       "deliveryAddress": {
           "country": "India",
           "city": "Mumbai",
           "postalCode": "400053",
           "contactNumber": "02228875456",
           "addressLine1": "Directiplex, Old Nagardas road",
           "addressLine2": "Andheri (East)",
           "addressLine3": "Mumbai",
           "state": "Maharashtra",
           "addressLine4": "NA"
       },
       "tenantAttributes": {
           "templateID": "",
           "corporateID": "",
           "corporateName": ""
       },
       "orderStatus": "EMBOSSING_FILE_GENERATED"
   },
   "binRange": {
       "bin": "123456",
       "range": "22"
   }
}
  
Code Copied
Get card details from this API.

Associate card form factor with resource

Since, using issueBundle API, we have created an empty resource which is not associated with any formFactorID. Using this API, we link resourceID with formFactorID(card). 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.
Crn This is Card reference number which is fetched from List card by order API.
resourceID This is fetched from Issue Bundle API.
formFactorProductID Get Resource API provides the form factor product id. The one with CMS (Card Management System) - under formFactorProducts array needs to be used here.
formFactorID Card ID fetched from List Card by Order, [Get Card by CRN].
targetURI Account ID issued in issue bundle call.
vectors Individual ID generated in newIndividual API response.
cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/resources/4d85d740-00db-4d64-abe2-71a1eca0433d/form_factors' \
--header 'Authorization: Bearer {{token}}' \
--data-raw '{
  "formFactorProductID": "19a8528f-151f-4e68-9871-e25d0f75f0d5",
  "formFactorID": "471325f6-4141-4a72-9f5d-6b3a9ca8fc6a",
  "targetURI": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34",
  "status": "ACTIVE",
  "vectors": ["vector://ACCOUNTHOLDER/22e70e67-6468-4035-a781-180c3151161e"]
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
  "id": "bb67f615-e76b-4e19-a481-473a1c7a23a3",
  "ifi": 304876,
  "formFactorProductID": "19a8528f-151f-4e68-9871-e25d0f75f0d5",
  "formFactorID": "471325f6-4141-4a72-9f5d-6b3a9ca8fc6a",
  "targetURI": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34",
  "tags": [],
  "attributes": {},
  "policies": {
      "issuancePolicies": [],
      "paymentPolicies": []
  },
  "status": "ACTIVE",
  "createdAt": "Jul 29, 2020 1:02:43 PM",
  "modifiedAt": "Jul 29, 2020 1:02:43 PM",
  "headers": {}
}
 
Code Copied

Associate phone form factor with resource

Since, using issueBundle API, we have created an empty resource which is not associated with any formFactorID. Using this API, we link resourceID with formFactorID(phone). 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.
resourceID This is fetched from Issue Bundle API.
formFactorProductID Get Resource API provides the form factor product id. The one with PMS(Phone Management System) - under formFactorProducts array needs to be used here.
formFactorID Phone Number of the user (As given in Account Holder creation (New individual API)).
targetURI Account ID issued in issue bundle call.
vectors Individual ID generated in newIndividual API response.
cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/resources/4d85d740-00db-4d64-abe2-71a1eca0433d/form_factors' \
--header 'Authorization: Bearer {{token}}' \
--data-raw '{
  "formFactorProductID": "599dcee9-bb33-4893-b896-c86f49a601d2",
  "formFactorID": "+919424037665",
  "targetURI": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34",
  "status": "ACTIVE",
  "vectors": ["vector://ACCOUNTHOLDER/22e70e67-6468-4035-a781-180c3151161e"]
}'
Code Copied
JSON Sample
Switch Theme
Expand More
Copy
{
  "id": "c0bf4731-1139-4a24-bdef-a3e965be9171",
  "ifi": 304876,
  "formFactorProductID": "599dcee9-bb33-4893-b896-c86f49a601d2",
  "formFactorID": "+919424037665",
  "targetURI": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34",
  "tags": [],
  "attributes": {},
  "policies": {
      "issuancePolicies": [],
      "paymentPolicies": []
  },
  "status": "ACTIVE",
  "createdAt": "Jul 29, 2020 1:41:18 PM",
  "modifiedAt": "Jul 29, 2020 1:41:18 PM",
  "headers": {}
}
 
Code Copied

Generate PIN API

After associating formFactor ID with resourceID, users need to pass the delivery channel to receive the pin. 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.
cardID/formFactorID This is fetched from Get card by CRN.
deliveryChannel PHONE/EMAIL. Depending upon the vector type assigned during Account Holder Creation.
cURL Sample
Switch Theme
Expand More
Copy
curl --location --request POST
Code Copied