zendit Digital Gift Cards & Utility Payments allow the purchase and redemption of electronic gift cards for delivery to a recipient or paying prepaid utilities.
Zendit Gift Cards allow the purchase of digital gift cards for popular global and regional brands that can be redeemed in store or through eCommerce. Utility payments allow prepaid utilities to be paid to top up usage.
All endpoints for the catalog and transactions can be found under the /vouchers endpoints on the API. Brand media assets are found under the /brands endpoints on the API.
The product catalog of Gift Cards and Utilities use the /voucher endpoints. You can filter the catalog by region, country, brand or a subtype. Subtypes categorize the gifts and utility payments and you can login to the zendit user console and explore the categories of gifts available.
Products can be searched with any combination of filters for regions, destination country, brand and subtype.
A product subtype is a categorization of the product. There are many subtypes that allow you to build an experience of providing the products in categories on your implementation. New subtypes may be introduced over time to distinguish the category of product. The current list of subtypes includes:
Using these values on the subtype filter will expose products in these categories when searching the catalog.
Digital Gift Cards and Utilities products are available for many brands from athletic clothing stores like Adidas, computers and gadgets from Apple, and gaming subscriptions like XBox Play or Playstation. The list of brands is numerous and new brands are frequently added to the catalog.
The catalog can be queried for a list of items using the filters or a specific item. The format of a Gift Card product on a client who has setup their wallet in USD is as follows:
{
"enabled": true,
"offerId": "APPLE_US_10_EGIFT_WHS",
"country": "US",
"regions": [
"North America"
],
"brand": "Apple",
"brandName": "Apple",
"productType": "VOUCHER",
"subTypes": [
"Digital Apps"
],
"notes": "",
"shortNotes": "",
"priceType": "FIXED",
"send": {
"currency": "USD",
"fixed": 1000
},
"price": {
"currency": "USD",
"fixed": 1175,
"suggestedFixed": 1175,
"margin": 0.1106
},
"cost": {
"currency": "USD",
"fixed": 1045
},
"requiredFields": [
"recipient.firstName",
"recipient.lastName"
],
"deliveryType": "voucher",
"createdAt": "2025-02-17T05:52:01.419Z",
"updatedAt": "2025-02-20T00:00:00Z"
}
From the example you can see this product is from Apple with the country (destination in this case) for the US and delivers a value of $10.00. Note that all currency values are in pennies where a value of 100 is 100 pennies or $1.00.
In order to fulfill this product, it requires 2 required values for the recipient’s first and last names (more on required fields follows.)
This product will provide a voucher that is a link to be given to the recipient. The cost is $10.45 and the price to charge a customer for the product is $11.75. The price can be customized in the catalog console to set the price to charge a customer as desired. When selling the product, $10.45 will be deducted from the zendit wallet to fulfill the gift card.
Each product in the catalog will contain a list of fields that are required to fulfill the product. A list of required fields and their definitions can be found as part of the API documentation. Additional required fields are added as new products are added to the catalog and new required fields may appear on products that aren’t on the list. When sending a transaction, every required field must be included and must have a value. Transactions missing a required field or sent with an empty string for the value will be rejected.
For customers who prefer to buy products in bulk to add to their own inventory rather than issuing them in real time against zendit, all required fields must have a value in and most cases, you can include dummy values to retrieve redemption values. In cases where the product requires the recipient’s phone number, you may use a valid phone number in the destination for multiple transactions provided the deliveryType of the product is not “direct.”
zendit provides media assets to help build your shop experience. Media assets include brand descriptions, logo images, gift card images, heading images for landing pages for a brand as well as step by step instructions for redeeming the product and the terms and conditions for the product sold.
Note that not all brands may be available in the media kit but we are continually building content for brands and if you encounter missing brand information or redemption instructions, let us know.
The list of brands can be retrieved using the /brands endpoint on the API. The list also offers a parameter to narrow the list by the destination country. Since brand lists can be very long, we provide a limit and offset values for controlling the amount of output to allow pagination through the list.
The brand list contains:
Each brand contains 2 attributes:
An example list of brands is as follows:
{
"total": 258,
"limit": 10,
"offset": 0,
"list": [
{
"brand": "PCRichard&Son",
"brandName": " P.C. Richard and Son"
},
{
"brand": "1800Basket",
"brandName": "1-800-Basket"
},
{
"brand": "1800PetSupplies",
"brandName": "1-800-Pet Supplies"
},
{
"brand": "Adidas",
"brandName": "Adidas"
},
... list continues ...
]
}
From the list, you can identify all of the brands that have media assets that match your search query. Note that at this time, the brand list is unsorted.
To retrieve the details of a brand, use the /brands/{brand} endpoint where teh brand is the short name matching the “brand” value from the list which will also match the “brand” value in catalog items.
An example value of a brand follows:
{
"brand": "Adidas",
"brandName": "Adidas",
"brandColor": "",
"brandLogo": "https://bmk.dev.idtdigitalpayments.com/assets/2023/08/adidas.png",
"brandLogoExtension": "PNG",
"brandBigImage": "https://bmk.dev.idtdigitalpayments.com/assets/2023/08/adidas-store.jpg",
"brandGiftImage": "https://bmk.dev.idtdigitalpayments.com/assets/2023/08/adidgs-image.png",
"brandInfoPdf": "",
"description": "Adidas designs clothing for a variety of athletes and sports, including runners, basketball players, soccer kids, fitness enthusiasts, and yogis. Their products include workout clothes, bras, tights, and tracksuits.",
"requiredFieldsLabels": [],
"inputMasks": [],
"redemptionInstructions": [
{
"language": "en",
"country": "us",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=us&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "es",
"country": "us",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=us&deliveryType=redemptionURL&language=es",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "gb",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=gb&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "se",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=se&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "ie",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=ie&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "fr",
"country": "fr",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=fr&deliveryType=redemptionURL&language=fr",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "fr",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=fr&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "fi",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=fi&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "es",
"country": "es",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=es&deliveryType=redemptionURL&language=es",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "es",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=es&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "de",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=de&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "de",
"country": "de",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=de&deliveryType=redemptionURL&language=de",
"deliveryType": "redemptionURL"
},
{
"language": "de",
"country": "at",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=at&deliveryType=redemptionURL&language=de",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "at",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=at&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "be",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=be&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "fr",
"country": "be",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=be&deliveryType=redemptionURL&language=fr",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "ch",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=ch&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
},
{
"language": "en",
"country": "cz",
"link": "https://test-fuji-gateway-api.dev.fuji.idt.net/v1/brands/Adidas/redemptionInstructions?country=cz&deliveryType=redemptionURL&language=en",
"deliveryType": "redemptionURL"
}
]
}
Exploring the data available in this brand it returns the following values:
Within the brand, you can find all the currently valid redemption instruction variants available. Within this array you will find the following values:
All brand images are scalable for implementation to fit large, desktop shops or smaller screens for mobile apps. To preserve aspect ratios, it is recommended to scale items by either width or height but not both to prevent the image from displaying distorted.
An example of the BigImage that can be scaled:
An example of a logo that can be scaled in multiple sizes:
Example of Gift Cards:
Redemption Instructions are lightly formatted HTML with step by step information for a recipient to redeem a gift card while Terms and Conditions are plain text to allow for more lengthy text explaining the T&Cs of the gift card. Note that URLs grabbed from the Brand’s listing of available documents require your API key to be submitted in the request to retrieve them.
To retrieve the instructions for presale of the gift card it requires:
The default language for redemption instructions is English (en) and if a requested language is not available, English will be returned as the default language.
Redemption instructions may also be retrieved post sale using the same parameters but should use the delivery type from the receipt of the transaction.
Providers for the source of gift cards may change over time and use different delivery types that will change the instructions for redeeming the gift card. When providers change and new instructions are added for a new delivery type, the historical instructions will be preserved so if a transaction is fulfilled with a deliveryType of “redemptionURL” and new transactions fulfill with a deliveryType of “pin-voucher” you can retrieve the correct set of instructions for historical transactions by using the deliveryType “redemptionURL” on the receipt and new transactions using the deliveryType “pin-voucher” from receipts for those transactions.
{
"country": "us",
"language": "en",
"deliveryType": "redemptionURL",
"redemptionInstructions": "<div class=\"co8aDb\" role=\"heading\" aria-level=\"3\"><p id=\"tw-target-text\" class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><strong><span class=\"Y2IQFc\" lang=\"en\">Online </span></strong></p><ol><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">Click on the link received to reveal the claim code </span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">Visit www.adidas.com</span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">When paying, enter the claim code received when prompted </span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">The total price to be paid will be reduced depending on the value of the eGIFT received </span></li></ol><p><strong><span class=\"Y2IQFc\" lang=\"en\">In a store </span></strong></p><ol><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">Click on the link received to reveal the claim code </span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">Visit participating Adidas stores in the United States</span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">At checkout, present the received claim code to the cashier </span></li><li class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwirtvDL6rSJAxULhYkEHZ1TBEoQ3ewLegQIBxAU\" aria-label=\"Translated text: Online Click on the link received to reveal the claim code Visit www.adidas.fr When paying, enter the claim code received when prompted The total price to be paid will be reduced depending on the value of the eGIFT received In a store Click on the link received to reveal the claim code Visit participating Adidas stores in France At checkout, present the received claim code to the cashier The total price to be paid will be reduced depending on the value of the eGIFT received\"><span class=\"Y2IQFc\" lang=\"en\">The total price to be paid will be reduced depending on the value of the eGIFT received</span></li></ol></div>",
"terms": "Adidas Gift Cards may be redeemed for merchandise on adidas.com and in adidas Sport Performance, adidas Originals, and adidas Outlet stores in the United States. They are not currently available for International use. Adidas gift cards are not redeemable at miteam.com, TaylorMade, adidas Golf, y-3, Reebok or Rockport. Gift Cards cannot be used to purchase another Gift Card. Promotional offers or discounts do not apply to the purchase of Gift Cards. Gift Cards cannot be redeemed for cash except where required by law. A maximum of five (5) Gift Cards may be redeemed on one order. If the amount of your Gift Card(s) does NOT cover the total order amount, the remainder of the purchase balance can be paid with an accepted alternate form of payment. Your Gift Card will not expire as long as there is value remaining on the Gift Card. You can use it anytime. Any remaining value that is left on your Gift Card will be stored and available for your next purchase. We ask that you safeguard your card and treat your Gift Card as you would cash. Do not share your Gift Card Code and PIN. We are not able to replace or replenish Gift Cards that are lost, stolen or used without authorization.",
"redemption_video": ""
}
Example:
Online
In a store
When processing a transaction, ensure that you are supplying all values required for the transaction, this includes the unique transaction ID that you send, the ID of the offer, the array of required fields to fulfill the product and if the product is an open range offer and not a fixed value, the value to send for the transaction.
The format for sending a transaction takes the following form:
{
"fields": [
{
"key": "string",
"value": "string"
}
],
"offerId": "string",
"transactionId": "string",
"value": {
"type": "ZEND",
"value": 0
}
}
The fields collection is where you place the required field values, the offerId is the catalog offerId for the sale and the transactionId is a unique transaction Id supplied to track the request after submission.
Note that the “value” structure is required when the product is an open range product and allows you to specify the value based on the PRICE the user paid for the product or a specific value in local currency as ZEND. The “value” structure is not supported for fixed type products that deliver a specific value so for submitting a fixed product, omit this to avoid an error with a transaction format following this example:
{
"fields": [
{
"key": "string",
"value": "string"
}
],
"offerId": "string",
"transactionId": "string"
}
Each gift or utility product has different requirements for fields that must be submitted and these will be identified on the item in the catalog. When a transaction is submitted with missing required fields, or fields that contain no value the transaction will be rejected with a validation error. In most cases the validation error will identify which field is improperly handled but severely malformed transaction requests with a valid JSON structure will trigger a generic validation_error due to too many issues with the transaction.
Below you can find an example of required fields properly formed for a transaction:
{
... transaction data ....
"fields": [
{
"key": "recipient.firstName",
"value": "John"
},
{
"key": "recipient.lastName",
"value": "Doe"
},
{
"key": "recipient.msisdn",
"value": "+15515551212"
}
],
... transaction data continues ...
}
Note that the array is formed by placing the required field name in “key” and the value for the the field in “value”
Also note that when an msisdn value is requested, it must be submitted in E.164 format to pass validation.
When processing a transaction, zendit will fulfill the request and provide a response that contains receipt with the redemption information or a confirmation of delivery. There are multiple delivery types that will help guide how to handle the receipt and what information to provide the customer with to redeem the product. Breaking it down, the receipt of the transaction contains 13 attributes that will provide information for redemption based on how the product is delivered and will include the delivery type.
These attributes include:
Attribute Name | Description |
deliveryType | Type that determines attributes in the receipt to use |
send | Value of the gift that was delivered in destination currency |
currency | 3 letter ISO code for the destination currency |
epin | Pin for redemption, security code when combined with a voucherId or redemptionUrl |
voucherId | ID of voucher for redemption |
redemptionUrl | URL for recipient to redeem |
accountId | Account ID for a voucher |
expiresAt | Date eGift value expires |
instructions | Instructions for redemption of the gift |
recipientCustomerServiceNumber | Customer service number for recipient |
senderCustomerServiceNumber | Customer service number for sender |
terms | Terms and conditions for eGiftt |
confirmationNumber | Provider Confirmation ID |
Not every delivery type will return all attributes. To understand which fields are applicable, use the following set of delivery types and the required or optional attributes they return. Fields listed as required will be returned with the transactions. Fields listed as optional may have a value or may be returned with no value. Optional fields depend on the provider backing the gift card or utility payment.
Due to restrictions on some Digital Gift card products, the voucher information is required to be encrypted. You will not be able to view the unencrypted values in the user console when viewing the transaction or see the unencrypted value on reports but when pulling the transaction from the API, or receiving a webhook the value will be decrypted on the response.
The direct delivery type will require the recipient information and will deliver the Gift Card or Utility Payment directly to the recipient. No redemption information for the gift will be available to the sender.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
accountId | Optional |
The pin delivery type returns a pin for redemption of the product.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
epin | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Optional |
The pin-instructions delivery type will deliver a pin with instructions on how to redeem the product.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
epin | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Required |
The pin-voucher delivery type will return a voucher Id and a epin as a security code to be used when redeeming the product.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
voucherId | Required |
epin | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Optional |
The redemptionURL delivery type will return a link to a landing page for the product with instructions on how to redeem the product.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
redemptionUrl | Required |
epin | Optional |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Optional |
The voucher delivery type will return a voucher id to redeem the product
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
voucherId | Required |
epin | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Optional |
The voucher delivery type will return a redmptionUrl to redeem the product with an epin as the security code required to redeem the product.
Attribute | Required / Optional |
confirmationNumber | Required |
send | Required |
currency | Required |
redemptionUrl | Required |
epin | Required |
expiresAt | Optional |
senderCustomerServiceNumber | Optional |
recipientCustomerServiceNumber | Optional |
terms | Optional |
instructions | Optional |
Transaction receipts will contain all 13 attributes mentioned above. Only values that are relevant to the deliveryType will contain data. The example receipt structure is as follows:
... transaction details ...
"receipt": {
"accountId": "string",
"confirmationNumber": "string",
"currency": "string",
"deliveryType": "string",
"epin": "string",
"expiresAt": "string",
"instructions": "string",
"notes": "string",
"recipientCustomerServiceNumber": "string",
"redemptionUrl": "string",
"send": 0,
"senderCustomerServiceNumber": "string",
"terms": "string",
"voucherId": "string"
},
... transaction details continued ...
In the case of a pin-redemptionURL delivery type the accountId and voucherId fields would be blank. The values to provide the customer would be contained in the redemptionUrl and epin fields to provide them with the link they would follow to a landing page for redeeming the product and the epin as a security code to unlock the product and receive the product.
Digital Gift Cards and Utility payments have a webhook available for receiving the status of the transaction. The webhook format is identical to the format of polling the transaction by ID on the Voucher endpoints for status.
For more information on setting up Webhooks in Zendit, see the Webhooks documentation.