zendit developers Logo
Search zendit documentation
Menu

zendit Digital Gift Cards & Utility Payments

zendit Digital Gift Cards & Utility Payments allow the purchase and redemption of electronic gift cards for delivery to a recipient or paying prepaid utilities.

About the product

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.

Product Catalog

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.

About Subtypes

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:

  • Auto & Moto
  • Clothing & Accessories
  • Digital Apps
  • Electronics
  • Food & Beverage
  • Fuel
  • Gaming & Entertainment
  • General Merchandise
  • Health & Beauty
  • Home & Garden
  • Online Shopping
  • Restaurant
  • Shopping
  • Sports & Outdoors
  • Supermarket
  • Travel & Experience
  • Utilities

Using these values on the subtype filter will expose products in these categories when searching the catalog.

About Brands

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.

Working with 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.

Required Fields

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.

Brand Media

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.

Getting the List of Available Brands

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:

  • total: the total number of brands in your query
  • limit: the number of brands per page requested
  • offset: the page of brands related to the limit
  • list: the list of brands for the page of data

Each brand contains 2 attributes:

  • brand: the shortened brand name that will match the catalog’s brand name
  • brandName: the display name to be used for a brand

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.

Retrieving a Brand

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:

  • brand: The matching shortened value used in the list of brands and catalog items
  • brandName: The display name for the brand
  • brandColor: An optionally set value for the color used in branding the item that can be used for styling content in your shop experience
  • brandLogo: Publicly available URL for the image for the brand’s logo
  • brandLogoExtension: The file type that the brandLogo is delivered in (SVG, PNG, JPG) to help determine what type of handling the logo should receive
  • brandBigImage: A large image representing the brand that can be used in the heading of a shopping page for the brand
  • brandGiftImage: A giftcard image for the brand
  • brandInfoPdf: Future feature for an attached PDF with information about the brand
  • description: A short marketing description about the brand.
  • requiredFieldLabels: A collection of labels for required fields. Typically used with utility products that use a common accountId required field but may reference a meter number, invoice number, account number, etc.
  • inputMasks: A formatted input mask primarily used with Utilities to help the user to input the correct value for a meter number, invoice, account, etc.
  • redemptionInstructions: An array of available instructions for the brand.

Within the brand, you can find all the currently valid redemption instruction variants available. Within this array you will find the following values:

  • language: The 2 letter ISO code for language for the instructions. Most brands will contain at a minimum English (en) and we are expanding the instructions to include Spanish (es), French (fr) and German (de) as content is built up in the brands.
  • country: The 2 letter ISO code for the destination country of the product.
  • deliveryType: The type of instructions to use based on the product sold.
  • link: A prebuilt link for the redemption instructions document. This link is not publicly available and requires the API token to access.

About Brand Images

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:

Example of Big Image

An example of a logo that can be scaled in multiple sizes:

Example Brand Logo 200px wide

Example Brand Logo 100px wide

Example of Gift Cards:

Example Gift Card Scaled 250px wide
Example Gift Card Scaled 100px wide
Example Gift Card scaled 350px wide

Redemption Instructions and Terms and Conditions

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 brand name (short name)
  • the destination country for the recipient in the 2 letter ISO code
  • the delivery type for the gift (found on the catalog deliveryType)
  • Optionally, the language 2 letter ISO code for retrieving the instructions in the desired language

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": ""
}

Rendered HTML Instructions Example

Example:

Online

  1. Click on the link received to reveal the claim code
  2. Visit www.adidas.com
  3. When paying, enter the claim code received when prompted
  4. The total price to be paid will be reduced depending on the value of the eGIFT received

In a store

  1. Click on the link received to reveal the claim code
  2. Visit participating Adidas stores in the United States
  3. At checkout, present the received claim code to the cashier
  4. The total price to be paid will be reduced depending on the value of the eGIFT received

Processing Transactions

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"
}

Handling Required Fields

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.

Working With Delivery Types

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 NameDescription
deliveryTypeType that determines attributes in the receipt to use
sendValue of the gift that was delivered in destination currency
currency3 letter ISO code for the destination currency
epinPin for redemption, security code when combined with a voucherId or redemptionUrl
voucherIdID of voucher for redemption
redemptionUrlURL for recipient to redeem
accountIdAccount ID for a voucher
expiresAtDate eGift value expires
instructionsInstructions for redemption of the gift
recipientCustomerServiceNumberCustomer service number for recipient
senderCustomerServiceNumberCustomer service number for sender
termsTerms and conditions for eGiftt
confirmationNumberProvider 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.

Delivery Type: direct

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.

Attributes

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
accountIdOptional

Delivery Type: pin

The pin delivery type returns a pin for redemption of the product.

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
epinRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsOptional

Delivery Type: pin-instructions

The pin-instructions delivery type will deliver a pin with instructions on how to redeem the product.

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
epinRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsRequired

Delivery Type: pin-voucher

The pin-voucher delivery type will return a voucher Id and a epin as a security code to be used when redeeming the product.

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
voucherIdRequired
epinRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsOptional

Delivery Type: redemptionURL

The redemptionURL delivery type will return a link to a landing page for the product with instructions on how to redeem the product.

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
redemptionUrlRequired
epinOptional
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsOptional

Delivery Type: voucher

The voucher delivery type will return a voucher id to redeem the product

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
voucherIdRequired
epinRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsOptional

Delivery Type: pin-redemptionURL

The voucher delivery type will return a redmptionUrl to redeem the product with an epin as the security code required to redeem the product.

AttributeRequired / Optional
confirmationNumberRequired
sendRequired
currencyRequired
redemptionUrlRequired
epinRequired
expiresAtOptional
senderCustomerServiceNumberOptional
recipientCustomerServiceNumberOptional
termsOptional
instructionsOptional

The Transaction Receipt Format

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.

Webhook

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.