Vouchers
Purchase digital vouchers (gaming, streaming, gift cards, and airtime PINs) and receive the serial and secret instantly.
REST over HTTPS with JSON requests and responses. Intended for authorized distributors.
Synchronous operation: the response returns the sold item(s), including serialNumber and secretCode. Provide a unique externalId per purchase.
Authentication & headers
Every request must include the HTTP headers below, plus Content-Type: application/json on requests that send a body.
| Header | Description |
|---|---|
sessionId | Value provided by Whish. |
token | Value provided by Whish. |
language | Always set to en. |
User-Agent | Identifies your app. Use your own details, not Whish's. Format: AppName/version (website; contact-email). Example: AcmeStore/2.1 (https://acme.example; dev@acme.example). |
Environments
| Environment | Base URL | Purpose |
|---|---|---|
| Sandbox | https://api.sandbox.whish.money/itel-service/api | Testing, QA, integration verification. |
| Production | https://api.whish.money/itel-service/api | Live environment for real transactions. |
Response format
All endpoints return HTTP 200 with Content-Type: application/json and a shared envelope. Always branch on the status field in the body, not the HTTP status code.
| Field | Type | Description |
|---|---|---|
status | Boolean | true = success · false = failure. |
code | String | Operation-specific failure code; null on success. |
dialog | Object | Optional title / message to display to the user. |
data | Object | Response payload for the operation; shape varies per endpoint. |
actions / extra | Object | Reserved; typically null. |
Get balance
Returns the real balance of the account.
No parameters. Each session (sessionId) is tied to a single currency, so the balance is always returned in that session's currency. To work in both LBP and USD, use a separate session for each.
{
"status": true,
"code": null,
"dialog": null,
"actions": null,
"extra": null,
"data": {
"balance": 999790.646
}
}Purchase voucher
Purchases one or more vouchers of the given denomination and returns the item data (serial & secret).
Request body
| Field | Type | Description |
|---|---|---|
externalId | long | Unique ID provided by the third party (idempotency). |
denominationId | int | Denomination of the requested item. |
numberOfItems | int | Number of vouchers requested. |
{
"externalId": 987654,
"denominationId": 17002,
"numberOfItems": 1
}{
"status": true,
"code": null,
"dialog": null,
"actions": null,
"extra": null,
"data": {
"listOfSoldItems": [
{
"date": "2026-05-14 14:16:59",
"transactionId": 20224990,
"service": "iTUNES",
"denomination": "iTUNES $2 - USA",
"denominationValue": 3030.0,
"expiryDate": "2026-05-04",
"itemId": 64399932,
"serialNumber": "SBXITN8JBCXGOSUSNSC2PX",
"secretCode": "SBXSEC4AXLW54V7YO2MSMX2J",
"type": 5
}
]
}
}{
"status": false,
"code": "sales.requested_quantity_not_available_in_our_stock",
"dialog": {
"title": "Error",
"message": "Sorry, the requested quantity is not available in our stock right now."
},
"actions": null,
"extra": null,
"data": null
}Error codes
| Code | Description |
|---|---|
sales.requested_quantity_not_available_in_our_stock | Requested quantity not currently in stock. |
Test denominations
| Denomination ID | Denomination name |
|---|---|
17002 | iTUNES 2$ - USA |
17003 | iTUNES 3$ - USA |
17005 | iTUNES 5$ - USA |
40502 | DU PIN (AED 25) |
40503 | DU PIN (AED 55) |
40504 | DU PIN (AED 110) |
Postman & tools
Import the ready-made Postman collection for this API, set your credentials as collection variables (or attach a sandbox / production environment), and call every endpoint without writing code.
⤓ Download collectionAll downloads & environments
In Postman: Import → select the file → choose the Sandbox or Production environment → fill in your credentials. Requests use {{baseUrl}} and the credential variables provided.