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.
Get Resource details
The payment products created at the time of bundle issuance are internally mapped to a phone number and a card which was issued to the account holder. In order to get details of these payment instruments you would have to make a call to the following API. 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 | resource id is returned in issue bundle API response. |
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/resources/4d85d740-00db-4d64-abe2-71a1eca0433d' \
--header 'X-Zeta-AuthToken: {{token}}' \
--header 'Cookie: {{cookie}}' \
--data-raw ''
{
"ifi": 304876,
"id": "4d85d740-00db-4d64-abe2-71a1eca0433d",
"resourceProductId": "573dbfc3-2d26-49d6-819b-68aa240609c0",
"resourceProduct": {
"ifi": 304876,
"id": "573dbfc3-2d26-49d6-819b-68aa240609c0",
"code": "RESOURCE_PRODUCT_VBOUAT",
"name": "RESOURCE_PRODUCT_VBOUAT",
"description": "RESOURCE_PRODUCT_VBOUAT",
"formFactorProducts": [
{
"ifi": 304876,
"id": "6955636d-99f0-472e-a1ee-58470a441750",
"code": "CMS_VBOUAT",
"name": "CMS_VBOUAT",
"description": "CMS_VBOUAT",
"type": "card",
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"provider": "CMS",
"skuID": "TESTNW_12345644_PHY_VBO_UAT",
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"attributes": {},
"issuanceStatus": "ACTIVE",
"paymentStatus": "ACTIVE",
"createdAt": "Apr 24, 2020 12:50:08 PM",
"modifiedAt": "Apr 24, 2020 12:50:08 PM",
"headers": {
"tenantID": "304876",
"object": "[email protected]"
}
},
{
"ifi": 304876,
"id": "9935967c-4a97-4771-90dc-9015699eab01",
"code": "PMS_VBOUAT",
"name": "PMS_VBOUAT",
"description": "PMS_VBOUAT",
"type": "phoneNumber",
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"provider": "PMS",
"skuID": "TESTNW_12345644_PHY_VBO_UAT",
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"attributes": {},
"issuanceStatus": "ACTIVE",
"paymentStatus": "ACTIVE",
"createdAt": "Apr 24, 2020 12:51:27 PM",
"modifiedAt": "Apr 24, 2020 12:51:27 PM",
"headers": {
"tenantID": "304876",
"object": "[email protected]"
}
}
],
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"status": "ACTIVE",
"createdAt": "Apr 24, 2020 12:53:17 PM",
"modifiedAt": "Apr 24, 2020 12:53:17 PM",
"headers": {}
},
"targetURI": "account://3e42fd1a-5bb6-4dbe-8c5e-4c72564eff34",
"formFactors": [],
"tags": [],
"vectors": [
"vector://ACCOUNTHOLDER/22e70e67-6468-4035-a781-180c3151161e"
],
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"attributes": {},
"status": "ACTIVE",
"createdAt": "Jul 29, 2020 9:35:39 AM",
"modifiedAt": "Jul 29, 2020 9:35:39 AM",
"headers": {}
}
|
|
The following parameters will be received in response & will be used in further APIs.|Parameters|Description| |———-|———–| |formFactor(id)|Phone number form factor id (When in issue bundle API user pass “disable FF creation : true” in that case we have an empty formFactor ID array) This id needs to be used for changing the state of the form factor(active/inactive/deleted).|
formFactorProducts(id)|CMS (formFactorProducts(id)) - Used in Associate card form factor with resource.
PMS (formFactorProducts(id)) - Used in Associate phone form factor with resource.|
|formFactorID|Card form factor id. (card id which is supposed to be used in the SDK).|
Update Resource State
Whenever a payment product is issued, a resource gets created. This API helps in changing the state of the resource. 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 received as a response to the issueBundle API. |
STATUS | User can change the state as Active, Inactive. |
curl --location --request PATCH 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/resources/1f57ea91-6dc2-40cf-9a55-e5fc2c124524' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{cookie}}' \
--data-raw '{
"status" : "INACTIVE"
}'
{
"ifi": 304876,
"id": "1f57ea91-6dc2-40cf-9a55-e5fc2c124524",
"resourceProductId": "573dbfc3-2d26-49d6-819b-68aa240609c0",
"resourceProduct": {
"ifi": 304876,
"id": "573dbfc3-2d26-49d6-819b-68aa240609c0",
"code": "RESOURCE_PRODUCT_VBOUAT",
"name": "RESOURCE_PRODUCT_VBOUAT",
"description": "RESOURCE_PRODUCT_VBOUAT",
"formFactorProducts": [
{
"ifi": 304876,
"id": "6955636d-99f0-472e-a1ee-58470a441750",
"code": "CMS_VBOUAT",
"name": "CMS_VBOUAT",
"description": "CMS_VBOUAT",
"type": "card",
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"provider": "CMS",
"skuID": "TESTNW_12345644_PHY_VBO_UAT",
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"attributes": {},
"issuanceStatus": "ACTIVE",
"paymentStatus": "ACTIVE",
"createdAt": "Apr 24, 2020 12:50:08 PM",
"modifiedAt": "Apr 24, 2020 12:50:08 PM",
"headers": {
"tenantID": "304876",
"object": "[email protected]"
}
},
{
"ifi": 304876,
"id": "9935967c-4a97-4771-90dc-9015699eab01",
"code": "PMS_VBOUAT",
"name": "PMS_VBOUAT",
"description": "PMS_VBOUAT",
"type": "phoneNumber",
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"provider": "PMS",
"skuID": "TESTNW_12345644_PHY_VBO_UAT",
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"attributes": {},
"issuanceStatus": "ACTIVE",
"paymentStatus": "ACTIVE",
"createdAt": "Apr 24, 2020 12:51:27 PM",
"modifiedAt": "Apr 24, 2020 12:51:27 PM",
"headers": {
"tenantID": "304876",
"object": "[email protected]"
}
}
],
"tags": [
"tag://vbo/ea4f06a3-6b9f-4948-bc75-e4bdb4d6cc9b"
],
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"status": "ACTIVE",
"createdAt": "Apr 24, 2020 12:53:17 PM",
"modifiedAt": "Apr 24, 2020 12:53:17 PM",
"headers": {}
},
"targetURI": "account://dc97c156-1fed-44c0-a7e4-5158f1fac042",
"formFactors": [
{
"id": "64bfa915-01c6-43a0-b767-7a6a238253e5",
"ifi": 304876,
"formFactorProductID": "6955636d-99f0-472e-a1ee-58470a441750",
"formFactorID": "860a3df6-3d47-479c-b54e-8e7a076f1dd8",
"targetURI": "account://dc97c156-1fed-44c0-a7e4-5158f1fac042",
"tags": [],
"attributes": {},
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"status": "ACTIVE",
"createdAt": "Jul 28, 2020 10:39:04 AM",
"modifiedAt": "Jul 29, 2020 10:44:23 AM",
"headers": {}
},
{
"id": "a1a964d7-bf03-45a6-b170-7f4ccc599ec0",
"ifi": 304876,
"formFactorProductID": "9935967c-4a97-4771-90dc-9015699eab01",
"formFactorID": "+919843543897",
"targetURI": "account://dc97c156-1fed-44c0-a7e4-5158f1fac042",
"tags": [],
"attributes": {},
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"status": "ACTIVE",
"createdAt": "Jul 28, 2020 10:39:03 AM",
"modifiedAt": "Jul 29, 2020 10:44:23 AM",
"headers": {}
}
],
"tags": [],
"vectors": [
"vector://ACCOUNTHOLDER/8f481b75-afff-4ef2-ab9b-97b3e08fb17c"
],
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"attributes": {},
"status": "INACTIVE",
"createdAt": "Jul 28, 2020 10:39:03 AM",
"modifiedAt": "Aug 14, 2020 1:55:55 PM",
"headers": {}
}
The following parameters will be received in response & will be used in further APIs.|Parameters|Description| |———-|———–| |status|Status of the resource can be Active, Inactive.|
Get Card details
As mentioned above, once you get the formFactorID associated with the card, you can get its details. Since fintech is not PCI DSS compliant the way to do this would be by integrating with the SDK that we provide. For now, however, fintech can use the following SDK to get the card details by providing it with the formFactorID (ID/UUID for the payment instrument).
Update FormFactor State
This API changes the state of form factor. A form factor includes payment instrument & phone number. 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 received as a response to the issueBundle API or getResource API. |
formFactorID | This is received as a response to the getResource API (formfactor.id ). |
status | Users need to update the status of the formFactor. It can be ACTIVE, INACTIVE and DELETED. |
curl --location --request PATCH 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/resources/1f57ea91-6dc2-40cf-9a55-e5fc2c124524/form_factors/64bfa915-01c6-43a0-b767-7a6a238253e5' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{cookie}}' \
--data-raw '{
"status" : "ACTIVE"
}'
{
"id": "64bfa915-01c6-43a0-b767-7a6a238253e5",
"ifi": 304876,
"formFactorProductID": "6955636d-99f0-472e-a1ee-58470a441750",
"formFactorID": "860a3df6-3d47-479c-b54e-8e7a076f1dd8",
"targetURI": "account://dc97c156-1fed-44c0-a7e4-5158f1fac042",
"tags": [],
"attributes": {},
"policies": {
"issuancePolicies": [],
"paymentPolicies": []
},
"status": "ACTIVE",
"createdAt": "Jul 28, 2020 10:39:04 AM",
"modifiedAt": "Aug 14, 2020 2:06:47 PM",
"headers": {}
}
| Allowed Codes| |————–| |LOST_OR_STOLEN| |DAMAGED| |HOTLISTED| |OTHER|For changing status to DELETED: we need to provide reason and code in the request as below:
1 2 3 4 5 6 7
{ "status": "DELETED", "reason": { "code": "DAMAGED", "description": "User card was lost/stolen" } }
Simulate a card transaction
Once you get card details as mentioned above, you can simulate an ecom transaction by visiting the following link And providing the card information received in Get Card details. This would look something like this: This would take you to a second factor authentication page which would look like: Once you provide the OTP received to you on the registered mobile number on this page, your transaction is processed and you receive success you can view transactions on your account using the following API.
Dispatch Card API
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. |
formFactorID | This is received as a response to the getResource API. |
deliveryAddress | - Leave Empty incase of no delivery address - Ex: “name”: ”” - Max length: No validation |
|
|
The following parameters will be received in response & will be used in further APIs.|Parameters|Description| |———-|————| |status|Status of the resource can be Active, Inactive.|
Card Replacement API
This involves two API’s to be executed -
getCardAPI
This API will provide CRN number (Card Reference Number) 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. |
formFactorID | This is received as a response to the getResource API. |
curl --location --request GET 'https://fusion.gw.zetapay.in/api/v1/ifi/304876/cards/860a3df6-3d47-479c-b54e-8e7a076f1dd8' \
--header 'Authorization: Bearer {{token}}' \
--header 'Cookie: {{cookie}}'
{
"resource": {
"uri": "resource://1f57ea91-6dc2-40cf-9a55-e5fc2c124524",
"attributes": {}
},
"cardID": "860a3df6-3d47-479c-b54e-8e7a076f1dd8",
"crn": "120135777156",
"cardType": "PHYSICAL",
"maskedPan": "123456-xxxxxx-6455",
"cardStatus": "ENABLED",
"orderDetails": {
"orderID": "69aed49f-c919-439a-b887-78ca42448c89",
"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": "SI1205",
"thirdLineEmbossing": "",
"fourthLineEmbossing": "",
"expiry": {
"month": "6",
"year": "25"
},
"deliveryAddress": {},
"tenantAttributes": {},
"orderStatus": "CARD_DATA_GENERATED"
},
"tenantAttributes": {},
"binRange": {
"bin": "123456",
"range": "22"
}
}
The following parameters will be received in response & will be used in further APIs.|Parameters|Description| |———-|———–| |crn|Use this CRN number in replace card API call.|
Replace Card API
Use the CRN number fetched to make replace card API call 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 received as a response to the getResource API. |
oldCardReference:Number | The card CRN for a replacement is being ordered. |
deliveryAddress | - Leave Empty incase of no delivery address - Ex: “name”: ”” - Max length: No validation |
curl -X POST \
https://fusion.gw.zetapay.in/api/v1/ifi/304876/cards/orders/replacement \
-H 'Authorization: Bearer {{token}}' \
-d '{
"orderID": "TestOrdersxo45m0ym_2",
"oldCardReferenceNumber": "190866998070",
"expiry": {
"month": 2,
"year": 2020
},
"thirdLineEmbossing": "p3o",
"fourthLineEmbossing": "9uj",
"deliveryAddress": {
"name": "p3o 9uj",
"addressLine1": "Directiplex",
"addressLine2": "Near Andheri Subway",
"addressLine3": "Old Nagardas Road",
"addressLine4": "Andheri East",
"city": "Mumbai",
"state": "Maharashtra",
"country": "India",
"postalCode": "400069",
"contactNumber": "+919090909090"
},
"tenantAttributes": {
"corporateName": "",
"corporateID": "",
"templateID": ""
},
"vendorAttributes": {
"consignmentID" :""
}
}'
{
"quantity": 1,
"orderID": "TestOrdersxo45m0ym_2",
"cardSkuID": "MASTERCARD_53257103",
"plasticCode": "WHITEC",
"expiry": {
"month": 2,
"year": 2020
},
"thirdLineEmbossing": "p3o",
"fourthLineEmbossing": "9uj",
"deliveryAddress": {
"name": "p3o 9uj",
"addressLine1": "Directiplex",
"addressLine2": "Near Andheri Subway",
"addressLine3": "Old Nagardas Road",
"addressLine4": "Andheri East",
"city": "Mumbai",
"state": "Maharashtra",
"country": "India",
"postalCode": "400069",
"contactNumber": "+919090909090"
},
"tenantAttributes": {
"templateID": "",
"corporateID": "",
"corporateName": ""
},
"vendorAttributes": {
"consignmentID": ""
},
"additionalAttributes": {
"oldCrn": "190866998070"
},
"orderStatus": "CARD_REQUEST_GENERATED",
"orderedAt": "2020-04-16T13:08:43.197Z"
}