zendit developers Logo
Search zendit documentation
Zendit API

Zendit API (1.0.0)

Download OpenAPI specification:Download

Overview

Our cloud-based Prepaid as a Service platform is now even more accessible with our reliable and efficient REST API. Our API provides seamless access to catalogs, balance information, and transactions for our:

  • International Mobile Top Up Products
  • International Mobile Bundles
  • Digital Gift Cards
  • Utility Payments
  • eSIM

Our platform is built with industry-standard security protocols and is designed to integrate seamlessly with your existing systems. We are committed to providing top-notch support, so please don't hesitate to reach out to our experienced zendit support team with any questions or support needs.

Zendit University

As a supplement to this API guide, head over to Zendit University to understand the features of the system, how transaction flows work and how to get details from the catalog for your integration.

Environments

Testing and development before going live with your product or service is crucial. That’s why we provide easy access to both our test bed and production environments through our gateway.

When you register for zendit, you’ll be provided with a test mode API key to use for simulated transactions. These transactions will not transfer real value, but will deduct from your test bed wallet. No credit card is required for this environment, and you can manage your wallet balance through our administration console.

When you’re ready to switch to production mode and start processing real transactions, you’ll need to fund your prepay wallet with real value. This will allow you to process transactions using your production key.

For more information on using our testbed environment to simulate different responses, refer to our comprehensive test mode environment documentation.

Please don’t hesitate to contact our support team if you have any questions or need assistance.

API Security

When you sign up for our platform, you’ll be given access to your test mode key for testing your integration with our API. To send requests to an API endpoint, please use the Authentication header and include your API key as follows:

Authorization: Bearer YOUR_API_KEY

This will authenticate your requests and allow our API to process them securely. If you’re ready to switch to production mode and start processing real transactions, you’ll need to use your production key instead.

For more information about our security, refer to our security guide.

Transactions

Transparency and visibility are most important when it comes to processing transactions. That’s why we process transactions asynchronously and provide detailed status updates throughout the process.

When you send a transaction through our platform, we first validate the parameters of the transaction and then return the transaction ID in the response, along with any error messages if the transaction cannot be processed. From there, the transaction enters the zendit ecosystem and begins to move through our system.

To check on the status of your transaction, you can periodically poll the transaction using the transaction ID. Our system provides detailed updates on the transaction’s status as it moves through the system, including updates on receipt, wallet authorization, offer fulfillment, and completion.

Once the transaction is complete, you’ll receive a final status update that reports whether it was successful or encountered any errors during processing. Additionally, each transaction contains a history log that shows all status updates throughout the transaction process, providing you with a comprehensive view of the transaction’s journey through our platform.

To understand more about how to work with transactions, refer to our transaction guide.

Transaction ID

Providing our users with maximum flexibility when it comes to tracking their transactions is important. That’s why we don’t automatically generate transaction IDs – instead, you can supply any alphanumeric string of your choosing (such as an autonumber or a GUID) to track your transaction in our system.

To ensure that your transaction is processed correctly, you must supply the ID you will use to track the transaction status with each transaction request. Please note that transaction IDs are unique per zendit account and environment, so you can use the same transaction ID in both your test environment and production environment (once per environment).

If you’re using an autonumber scheme and have test and production environments, there’s no need to worry about collisions of IDs between the two environments. We understand the importance of keeping your test and production environments separate, and our system is designed to handle this seamlessly.

Queue and Retry

We strive to ensure that your transactions are processed reliably and efficiently. While most transactions are processed in real time, occasional recoverable errors can occur when a product provider in the ecosystem encounters an issue.

To address this, our API automatically sets a 15-minute timeout on the transaction and then retries it. If there is an extended problem with a product provider, the system will continue to retry the transaction every 15 minutes until it either completes successfully or fails after 24 hours.

If you would prefer not to use the queue and retry feature, you may turn the feature off in the client console on the API settings page.

For more information refer to the Queue and Retry guide.

Digital Gift Card and Utility Payment Required Felds

Digital Gift Cards and Utility Payments based on the brand requirements may require more information than just the recipient’s phone number. For the specific requirements of a Digital Gift Card or Utility Payment offer the list of fields required will be provided in the catalog. You can find all the possible fields that a these offers may require on the required fields page.

Error Messages

For a detailed list of possible error statuses, please see Error Message Guide.

Transaction Log Structure

zendit Transactions contain a log of activity as the transaction progresses through the system. You can find this on any transaction under the “log” structure. The log will give more detail about the transaction from when it was submitted, when it was authorized against the wallet, when it was submitted for fulfillment and any errors that were encountered while processing will be noted at the stage where the transaction failed.

Searching using createdAt date on transactions

When using the createdAt date on the transaction search endpoints (/topup/purchases, /transactions and /voucher/purchases) dates use the RFC 3339 format in UTC Timezone (e.g. 2023-02-15T03:15:22Z)

When searching with createdAt there are a few prefixes you can add to the time in order to search around the timestamp supplied. The search formats are as follows:

Format Description Example
No prefix Search for an exact date/time 2023-02-15T03:15:22Z will search for transactions that match February 15, 2023 at 3:15 and 22 seconds in UTC timezone
lt Search for a date/time that is earlier than the supplied value lt2023-02-15T03:15:22Z will search for transactions that are before February 15, 2023 at 3:15 and 22 seconds in UTC timezone
lte Search for a date/time that is equal to the supplied value and earlier lte2023-02-15T03:15:22Z will search for transactions that are equal February 15, 2023 at 3:15 and 22 seconds in UTC timezone and transactions that are earlier
gt Search for a date/time that is later than the supplied value gt2023-02-15T03:15:22Z will search for transactions that are after February 15, 2023 at 3:15 and 22 seconds in UTC timezone
gte Search for a date/time that is equal to the supplied value and later gte2023-02-15T03:15:22Z will search for transactions that are equal to February 15, 2023 at 3:15 and 22 seconds in UTC timezone and transactions that are later

Regions

Catalog methods support filtering/searching products by region. Regions are string values and supported with the following values:

  • Global (includes global esim)
  • Africa
  • Asia
  • Caribbean
  • Central America
  • Eastern Europe
  • Western Europe
  • North America
  • Oceania
  • South America
  • South Asia
  • Southeast Asia
  • Middle East and North Africa

Try out the API

Swagger pages for the api can be found at https://api.zendit.io/swagger/index.html

MSISDN (Phone Number) Lookup

Phone number lookup is currently in beta with select clients. The beta group is closed to new participants. For testing in the test mode environment, the following phone number patterns may be used to get simulated results:

Phone Number Pattern Country Result Carrier Result
+502 3XXX XXXX GT Claro
+502 5XXX XXXX GT Tigo
+1 5XX XXX XXXX US Verizon
+1 6XX XXX XXXX US T-Mobile

Using any number sequence to fill in the X in these numbers will yield these results in the test mode environment. All other phone numbers will yield a phone number not found error. For the production environment, all valid phone numbers will work.

Note that for US phone numbers and some destinations that use MVNOs (e.g. Boost, Mint) the carrier result will return the network the device is assigned to (e.g. T-Mobile in the case of Mint Mobile) and will not return the name of the MVNO. This is a limitation of the service.

Clients who aren't included in the beta will receive an error on the endpoints of LOOKUP_NOT_ENABLED when calling the endpoint.

Reports

Transaction reports can be generated from the API. Transaction reports are generated asynchronously and are first called with the POST request to generate the report with a start datetime and end datetime. The report generates a CSV file of transactions that are either in DONE or FAILED status. Transactions that have not completed will not be included in the report since their final status is not known until they complete.

For the time period, the start datetime includes transactions that are at the start datetime or later. For the end datetime, transactions included in the report will be earlier than the set time. As an example, to produce a report for 1 day, set the start datetime to "2024-02-01T00:00:00Z" and the end datetime to "2024-02-02T00:00:00Z" and it will include all transactions starting from midnight on February 1, 2024 and completing before February 2, 2024. Transactions still in flight on February 1, 2024 but not completing until February 2, 2024 will appear on a report for 1 day for February 2, 2024.

When selecting a time period, consider the length of time between the start and end time and your transaction volume as a guide to how long a report may take to generate. The longer the period and number of transactions completed within this period will require more time to generate the report.

After sending a generate report, you will receive an acknoledgement of the request including a system generated report Id to track the status. You may poll the status endpoint (polling interval should be at least 1 second between poll requests) to check on the progress of the report. When the report status has responded with Ready, the file is ready to download.

Downloading the report you may use the reportId and filename included in the status response. You may also use the downloadUrl which has the fully formed API call to download the report. Downloading the report must include your API Key since report downloads are not on a public URL.

In the case of failure, the failure reason will be returned in the error structure and the report will have a FAILED status. You can check the log structure in the report to find out more information as to why the report generation failed.

Account

Check your account balance. For wallet inforatmion see the zendit wallet guide.

Get current balance of wallet

Authorizations:
ApiKey

Responses

Request samples

curl -X GET -H "Authorization: [[apiKey]]" "https://https://api.zendit.io/v1//v1/balance"

Response samples

Content type
application/json
{
  • "availableBalance": 0,
  • "currency": "string"
}

eSIM

eSIM Catalog and Transaction Operations. For more information about eSIM products see the eSIM Guide. For catalog operations refer to the zendit catalog guide. For transactions refer to the zendit transaction guide. For webhooks refer to the zendit webhook guide.

eSIM Purchase Webhook

Request Body schema: application/json

eSIM purchase result

brand
string

Brand of eSIM

object (dto.ESimConfirmation)

Confirmation of a completed eSIM transaction

cost
integer

Cost of the eSIM to Partner

costCurrency
string

Currency of cost to eSIM Partner

country
string

Destination country for eSIM offer (blank when eSIM offer is regional)

createdAt
string

Date/time transaction was created

dataGB
number

GB of data included in eSIM (0 when data is unlimited)

dataSpeeds
Array of strings (dataSpeed)
Items Enum: "2G" "3G" "4G" "5G"

Data speeds available for eSIM

dataUnlimited
boolean

Flag indicating whether data is unlimited on the eSIM

durationDays
integer

Duration of the eSIM offer in days

object (dto.Error)

Error information encountered while processing transaction

Array of objects (dto.TransactionLogItem)

Trace log for fulfillment of transaction

notes
string

Notes included about the eSIM offer

offerId
string

Catalog ID of the offer (used for purchases)

price
integer

Price to customer for eSIM (when using the zendit pricing module)

priceCurrency
string

Currency of price charged to customer for eSIM (when using the zendit pricing module)

priceType
string (priceType)
Enum: "FIXED" "RANGE"

Price type for the eSIM (Fixed or Range)

productType
string (productType)
Enum: "TOPUP" "VOUCHER" "ESIM" "RECHARGE_SANDBOX" "RECHARGE_WITH_CREDIT_CARD"

Product type for eSIM

regions
Array of strings (regions)
Items Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

Regions for the eSIM

Array of objects (dto.ESimRoaming)

Roaming information for regional eSIM products (empty array for NO ROAM eSIM offers)

shortNotes
string

Short notes for eSIM offer

smsNumber
integer

Included SMS messages with eSIM (0 when unlimited or not included, check smsUnlimited flag)

smsUnlimited
boolean

Flag whether SMS messaging is unlimited for offer

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status of transaction

subTypes
Array of strings

Subtypes for the eSIM offer

transactionId
string

Transaction Id provided by partner

updatedAt
string

Date/Time of last update to transaction

object (dto.PurchaseValue)

Value and type of price used for purchase of ranged products

voiceMinutes
integer

Voice minutes included in eSIM offer (0 when unlimited or not included, check voiceUnlimited Flag)

voiceUnlimited
boolean

Flag whether voice minutes are unlimited for the offer

Responses

Request samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataSpeeds": [
    ],
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "error": {
    },
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "regions": [
    ],
  • "roaming": [
    ],
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    },
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Get list of eSIM offers

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
number

Number of items to skip – use with limit for pagination

brand
string

Brand (Carrier for MTU) to filter

country
string

2 letter ISO code for the destination country to filter

regions
string (regions)
Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

String for the name of the region to filter

subType
string

Offer subtype to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/offers?_limit=&_offset=&brand=&country=®ions=&subType="

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Get an eSIM offer by the offer ID

Authorizations:
ApiKey
path Parameters
offerId
required
string

Catalog Id to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/offers/{offerId}"

Response samples

Content type
application/json
{
  • "brand": "string",
  • "cost": {
    },
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataSpeeds": [
    ],
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "enabled": true,
  • "notes": "string",
  • "offerId": "string",
  • "price": {
    },
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "regions": [
    ],
  • "roaming": [
    ],
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "subTypes": [
    ],
  • "updatedAt": "string",
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Get list of eSim transactions

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to retrieve (Minimum 1, Masimum 1,024)

_offset
required
integer

Number of items to skip – use with limit for pagination

createdAt
string

Data filter – see Overview section for filtering by date

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/purchases?_limit=&_offset=&createdAt=&status="

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Purchase an eSIM offer for a new eSIM or add an offer to an existing eSIM

Authorizations:
ApiKey
Request Body schema: application/json
iccid
string

ICCID to apply plan (omit to issue a new eSIM)

offerId
required
string

Catalog ID of the offer (used for purchases)

transactionId
required
string

Transaction Id provided by partner

Responses

Request samples

Content type
application/json
{
  • "iccid": "string",
  • "offerId": "string",
  • "transactionId": "string"
}

Response samples

Content type
application/json
{
  • "status": "string",
  • "transactionId": "string"
}

Get eSim transaction by id

Authorizations:
ApiKey
path Parameters
transactionId
required
string

Transaction ID to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/purchases/{transactionId}"

Response samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataSpeeds": [
    ],
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "error": {
    },
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "regions": [
    ],
  • "roaming": [
    ],
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    },
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Get eSim QR code by transaction id

Authorizations:
ApiKey
path Parameters
transactionId
required
string

Transaction ID to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/purchases/{transactionId}/qrcode"

Response samples

Content type
No sample

Retrieve usage of active and queued plans on an eSIM.

Authorizations:
ApiKey
path Parameters
iccId
required
string

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/esim/{iccId}/plans" 

Response samples

Content type
application/json
{
  • "list": [
    ],
  • "total": 0
}

Mobile Top Up

Mobile Top Up, Mobile Bundle, and Mobile Data Catalog and Transaction Operations For catalog operations refer to the zendit catalog guide. For transactions refer to the zendit transaction guide. For webhooks refer to the zendit webhook guide.

Mobile Top Up Purchase Webhook

Request Body schema: application/json

Mobile Top Up, Mobile Bundle, and Mobile Data purchase result

brand
string

Brand of TopUp (Carrier)

object (dto.Confirmation)

Confirmation information for the topup

cost
integer

Zendit price for partner

costCurrency
string

3 letter ISO code for currency of cost

country
string

Destination country for Topup

createdAt
string

Date/time transaction was created

dataGB
number

Amount of data included in offer for Bundles and Data plans (0 when data is unlimited)

dataUnlimited
boolean

Flag for bundles and data plans with unlimited data

durationDays
integer

Duration of the bundle or data plan offer in days

object (dto.Error)

Error information encountered while processing transaction

Array of objects (dto.TransactionLogItem)

Trace log for fulfillment of transaction

notes
string

Notes included about the Topup offer

offerId
string

Catalog ID of the offer (used for purchases)

price
integer

Price to customer for Topup (when using the zendit pricing module)

priceCurrency
string

Currency of price charged to customer for Topup (when using the zendit pricing module)

priceType
string (priceType)
Enum: "FIXED" "RANGE"

Price type for the Topup (Fixed or Range)

productType
string (productType)
Enum: "TOPUP" "VOUCHER" "ESIM" "RECHARGE_SANDBOX" "RECHARGE_WITH_CREDIT_CARD"

Product type for Topup

recipientPhoneNumber
string

Recipient of the topup

regions
Array of strings (regions)
Items Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

Regions for the Topup

send
integer

Value sent to the recipient

sendCurrency
string

Currency of the value sent

object (dto.TopupSender)

Sender information for the topup

shortNotes
string

Short notes for Topup offer

smsNumber
integer

Included SMS messages with Topup (0 when unlimited or not included, check smsUnlimited flag)

smsUnlimited
boolean

Flag whether SMS messaging is unlimited for offer

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status of transaction

subTypes
Array of strings (topupSubtypes)
Items Enum: "Mobile Top Up" "Mobile Bundle" "Mobile Data"

Subtypes for the Topup offer

transactionId
string

Transaction Id provided by partner

updatedAt
string

Date/Time of last update to transaction

object (dto.PurchaseValue)

Value and type of price used for purchase of ranged products

voiceMinutes
integer

Voice minutes included with Topup (0 when unlimited or not included, check voiceUnlimited Flag)

voiceUnlimited
boolean

Flag whether voice minutes are unlimited for the offer

Responses

Request samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "error": {
    },
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "recipientPhoneNumber": "string",
  • "regions": [
    ],
  • "send": 0,
  • "sendCurrency": "string",
  • "sender": {
    },
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    },
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Get list of topup offers

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
number

Number of items to skip – use with limit for pagination

brand
string

Brand (Carrier for MTU) to filter

country
string

2 letter ISO code for the destination country to filter

regions
string (regions)
Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

String for the name of the region to filter

subType
string (topupSubtypes)
Enum: "Mobile Top Up" "Mobile Bundle" "Mobile Data"

Offer subtype to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/topups/offers?_limit=&_offset=&brand=&country=®ions=&subType="        

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Get a topup offer by the offer ID

Authorizations:
ApiKey
path Parameters
offerId
required
string

Catalog Id to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/topups/offers/{offerId}"        

Response samples

Content type
application/json
{
  • "brand": "string",
  • "cost": {
    },
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "enabled": true,
  • "notes": "string",
  • "offerId": "string",
  • "price": {
    },
  • "priceType": "string",
  • "productType": "TOPUP",
  • "regions": [
    ],
  • "send": {
    },
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "subTypes": [
    ],
  • "updatedAt": "string",
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Get list of topup transactions

Authorizations:
ApiKey
query Parameters
_limit
required
integer

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
integer

Number of items to skip – use with limit for pagination

createdAt
string

Data filter – see Overview section for filtering by date

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/topups/purchases?_limit=&_offset=&createdAt=&status="

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Create transaction for purchase

Authorizations:
ApiKey
Request Body schema: application/json
offerId
required
string

Catalog ID of the offer

recipientPhoneNumber
required
string

Recipient of the topup in e.164 format

object (dto.TopupSender)

Optional sender information

transactionId
required
string

Transaction Id provided by partner

object (dto.PurchaseValue)

Purchase amount and type required for RANGE offers/omitted for FIXED offers

Responses

Request samples

Content type
application/json
{
  • "offerId": "string",
  • "recipientPhoneNumber": "string",
  • "sender": {
    },
  • "transactionId": "string",
  • "value": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string",
  • "transactionId": "string"
}

Get topup transaction by id

Authorizations:
ApiKey
path Parameters
transactionId
required
string

Transaction Id to find

Responses

Request samples

curl -X POST\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
-H "Content-Type: application/json"\
"https://api.zendit.io/v1/topups/purchases"      

Response samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "dataGB": 0,
  • "dataUnlimited": true,
  • "durationDays": 0,
  • "error": {
    },
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "recipientPhoneNumber": "string",
  • "regions": [
    ],
  • "send": 0,
  • "sendCurrency": "string",
  • "sender": {
    },
  • "shortNotes": "string",
  • "smsNumber": 0,
  • "smsUnlimited": true,
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    },
  • "voiceMinutes": 0,
  • "voiceUnlimited": true
}

Voucher

Digital Gift Card and Prepaid Utilities Catalog and Transaction Operations For catalog operations refer to the zendit catalog guide. For transactions refer to the zendit transaction guide. For webhooks refer to the zendit webhook guide.

Voucher Purchase Webhook

Request Body schema: application/json

Digital Gift Card and Utility purchase result

brand
string

Brand of Gift Card or Utility

object (dto.Confirmation)

Confirmation information for the gift or utility

cost
integer

Zendit price for partner

costCurrency
string

3 letter ISO code for currency of cost

country
string

Destination country for Gift Card or Utility

createdAt
string

Date/time transaction was created

object (dto.Error)

Error information encountered while processing transaction

Array of objects (dto.VoucherField)

Required fields for transaction

Array of objects (dto.TransactionLogItem)

Trace log for fulfillment of transaction

notes
string

Notes included about the gift card or utility offer

offerId
string

Catalog ID of the offer

price
integer

Price to customer for gift card or utility (when using the zendit pricing module)

priceCurrency
string

Currency of price charged to customer for gift card or utility (when using the zendit pricing module)

priceType
string (priceType)
Enum: "FIXED" "RANGE"

Price type for the gift card or utility (Fixed or Range)

productType
string (productType)
Enum: "TOPUP" "VOUCHER" "ESIM" "RECHARGE_SANDBOX" "RECHARGE_WITH_CREDIT_CARD"

Product type for gift card or utility

object (dto.VoucherReceipt)

Receipt for the gift card or utility

regions
Array of strings (regions)
Items Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

Regions for the gift card or utility

send
integer

Value sent to the recipient

sendCurrency
string

Currency of the value sent

shortNotes
string

Short notes for gift card or utility offer

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status of transaction

subTypes
Array of strings

Subtypes for the gift card or utility offer

transactionId
string

Transaction Id provided by partner

updatedAt
string

Date/Time of last update to transaction

object (dto.PurchaseValue)

Value and type of price used for purchase of ranged products

Responses

Request samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "error": {
    },
  • "fields": [
    ],
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "receipt": {
    },
  • "regions": [
    ],
  • "send": 0,
  • "sendCurrency": "string",
  • "shortNotes": "string",
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    }
}

Get list of voucher offers

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
number

Number of items to skip – use with limit for pagination

brand
string

Brand (Carrier for MTU) to filter

country
string

2 letter ISO code for the destination country to filter

regions
string (regions)
Enum: "Global" "Africa" "Asia" "Caribbean" "Central America" "Eastern Europe" "Western Europe" "North America" "Oceania" "South America" "South Asia" "Southeast Asia" "Middle East and North Africa"

String for the name of the region to filter

subType
string

Offer subtype to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/vouchers/offers?_limit=&_offset=&brand=&country=&subType="     

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Get a voucher offer by the offer ID

Authorizations:
ApiKey
path Parameters
offerId
required
string

Catalog Id to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/vouchers/offers/{offerId}"

Response samples

Content type
application/json
{
  • "brand": "string",
  • "cost": {
    },
  • "country": "string",
  • "createdAt": "string",
  • "enabled": true,
  • "notes": "string",
  • "offerId": "string",
  • "price": {
    },
  • "priceType": "string",
  • "productType": "TOPUP",
  • "regions": [
    ],
  • "requiredFields": [
    ],
  • "send": {
    },
  • "shortNotes": "string",
  • "subTypes": [
    ],
  • "updatedAt": "string"
}

Get list of transactions

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
number

Number of items to skip – use with limit for pagination

createdAt
string

Data filter – see Overview section for filtering by date

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/vouchers/purchases?_limit=&_offset=&createdAt=&status="      

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Create transaction for purchase

Authorizations:
ApiKey
Request Body schema: application/json
required
Array of objects (dto.VoucherField)

Fields required for offer

offerId
required
string

Catalog ID of the offer

transactionId
required
string

Transaction Id provided by partner

object (dto.PurchaseValue)

Purchase amount and type required for RANGE offers/omitted for FIXED offers

Responses

Request samples

Content type
application/json
{
  • "fields": [
    ],
  • "offerId": "string",
  • "transactionId": "string",
  • "value": {
    }
}

Response samples

Content type
application/json
{
  • "status": "string",
  • "transactionId": "string"
}

Get purchase transaction by id

Authorizations:
ApiKey
path Parameters
transactionId
required
string

Transaction Id to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/vouchers/purchases/{transactionId}"

Response samples

Content type
application/json
{
  • "brand": "string",
  • "confirmation": {
    },
  • "cost": 0,
  • "costCurrency": "string",
  • "country": "string",
  • "createdAt": "string",
  • "error": {
    },
  • "fields": [
    ],
  • "log": [
    ],
  • "notes": "string",
  • "offerId": "string",
  • "price": 0,
  • "priceCurrency": "string",
  • "priceType": "FIXED",
  • "productType": "TOPUP",
  • "receipt": {
    },
  • "regions": [
    ],
  • "send": 0,
  • "sendCurrency": "string",
  • "shortNotes": "string",
  • "status": "DONE",
  • "subTypes": [
    ],
  • "transactionId": "string",
  • "updatedAt": "string",
  • "value": {
    }
}

Transaction Status

Status of Zendit Transactions For transactions refer to the zendit transaction guide.

Transaction ShieldWall Webhook

Request Body schema: application/json

Transaction info for verification

amount
integer

Value of the transaction in Cost

createdAt
string

Date/Time the transaction was created

currency
string

3 letter ISO code for currency of the amount

object (dto.Error)

Error information for transaction

Array of objects (dto.TransactionLogItem)

Trace log for fulfillment of transaction

productType
string (productType)
Enum: "TOPUP" "VOUCHER" "ESIM" "RECHARGE_SANDBOX" "RECHARGE_WITH_CREDIT_CARD"

Product type for transaction

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status of transaction

transactionId
string

Transaction Id provided by partner

type
string (transactionType)
Enum: "DEBIT" "CREDIT"

Type of transaction (Credit or Debit)

updatedAt
string

Date/Time of last update to transaction

Responses

Request samples

Content type
application/json
{
  • "amount": 0,
  • "createdAt": "string",
  • "currency": "string",
  • "error": {
    },
  • "log": [
    ],
  • "productType": "TOPUP",
  • "status": "DONE",
  • "transactionId": "string",
  • "type": "DEBIT",
  • "updatedAt": "string"
}

Get list of transactions

Authorizations:
ApiKey
query Parameters
_limit
required
number

Number of items to return (Minimum 1, Maximum 1,024)

_offset
required
number

Number of items to skip – use with limit for pagination

createdAt
string

Data filter – see Overview section for filtering by date

productType
string (productType)
Enum: "TOPUP" "VOUCHER" "ESIM" "RECHARGE_SANDBOX" "RECHARGE_WITH_CREDIT_CARD"

Product type to filter

status
string (transactionStatus)
Enum: "DONE" "FAILED" "PENDING" "ACCEPTED" "AUTHORIZED" "IN_PROGRESS"

Status to filter

type
string (transactionType)
Enum: "DEBIT" "CREDIT"

Type of transaction to filter

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/transactions?_limit=&_offset=&createdAt=&productType=&status=&type="

Response samples

Content type
application/json
{
  • "limit": 0,
  • "list": [
    ],
  • "offset": 0,
  • "total": 0
}

Get transaction by id

Authorizations:
ApiKey
path Parameters
transactionId
required
string

Transaction Id to find

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/transactions/{transactionId}"

Response samples

Content type
application/json
{
  • "amount": 0,
  • "createdAt": "string",
  • "currency": "string",
  • "error": {
    },
  • "log": [
    ],
  • "productType": "TOPUP",
  • "status": "DONE",
  • "transactionId": "string",
  • "type": "DEBIT",
  • "updatedAt": "string"
}

Tools

Tools for Zendit API Tools currently includes the Phone Number Lookup tool that is currently in beta for select clients.

BETA Lookup an MSISDN.

Authorizations:
ApiKey
path Parameters
msisdn
required
string

MSISDN (phone number) to lookup in e.164 format

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/tools/{msisdn}"

Response samples

Content type
application/json
{
  • "brand": "string",
  • "country": "string",
  • "mobileCountryCode": "string",
  • "mobileNetworkCode": "string",
  • "msisdn": "string"
}

Reports

Transacion detail reports that can be downloaded in CSV format for a specified start datetime and ending at a specified end datetime

Generate a transaction report

Authorizations:
ApiKey
Request Body schema: application/json
endLt
required
string

End date for the report. Transactions returned will have a finish date less than this value (e.g. 2024-02-01T00:00:00Z would return all transactions less than the date/time specified.)

startGte
required
string

Start date for the report. Transactions returned will start at the date/time specified including the date/time that is specified and will return transactions with a finished date that is greater than or equal to sthe start date time.

Responses

Request samples

Content type
application/json
{
  • "endLt": "string",
  • "startGte": "string"
}

Response samples

Content type
application/json
{
  • "createdAt": "string",
  • "error": {
    },
  • "file": {
    },
  • "log": [
    ],
  • "period": {
    },
  • "reportId": "string",
  • "status": "REQUESTED",
  • "updatedAt": "string"
}

Get the status of a requested report

Authorizations:
ApiKey
path Parameters
reportId
required
string

Report Id to check status

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/json"\
"https://api.zendit.io/v1/reports/transactions/{reportId}"

Response samples

Content type
application/json
{
  • "createdAt": "string",
  • "error": {
    },
  • "file": {
    },
  • "log": [
    ],
  • "period": {
    },
  • "reportId": "string",
  • "status": "REQUESTED",
  • "updatedAt": "string"
}

Download a Report

Authorizations:
ApiKey
path Parameters
reportId
required
string

Report Id to check status

file
required
string

File name to download

Responses

Request samples

curl -X GET\
-H "Authorization: Bearer [[accessToken]]"\
-H "Accept: application/octet-stream"\
"https://api.zendit.io/v1/reports/transactions/{reportId}/{file}"

Response samples

Content type
application/json
{
  • "errorCode": "string",
  • "fields": {
    },
  • "message": "string"
}