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.
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 --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": ""
}
}'
{
"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": ""
}
}
- 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 --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}}'
[
{
"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"
}
}
]
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. |
|
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"
}
}'
{
"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": {}
}
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 --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"
}'
{
"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"
}
]
}
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 --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/cards/149569457850' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{Cookie}}'
{
"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"
}
}
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 --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"]
}'
{
"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": {}
}
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 --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"]
}'
{
"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": {}
}
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
Copy
Code Copied
|