
Success TopUp · Developer
Everything you need to integrateBangladesh mobile recharge into your app or backend—authentication, endpoints, examples, and a sandbox to test before you go live. Built for developers and resellers who want areliable, fast API without the guesswork.
The Success TopUp API accepts JSON payloads over HTTPS. Every request is sent to https://api.successtopup.com unless you are using the documentation sandbox (mock responses only).
Content-Type: application/jsonInclude your credentials in the JSON body of each request (not in the URL):
| Field | Description |
|---|---|
| successtopup_key | Public API key from your dashboard |
| successtopup_secret | Secret key — server-side only |
Test API URL (copy for Postman, curl, or another tool)
/api/sandbox/testSandbox mode: use POST with action + payload for mock responses.
Operation
Request body
Use in the operator field.
| Operator | Code |
|---|---|
| GP | |
| RB | |
| AT | |
| BL | |
| TT | |
| SK | |
| BT |
Minimal recharge call — swap in your keys.
const axios = require('axios');
await axios.post('https://api.successtopup.com/api/recharge', {
number: '01712345678',
type: 'prepaid',
operator: 'GP',
amount: 50,
trxid: String(Date.now()),
successtopup_key: process.env.STU_KEY,
successtopup_secret: process.env.STU_SECRET,
}, { headers: { 'Content-Type': 'application/json' } });Submit a prepaid or postpaid recharge. Use a unique trxid for every transaction.
| Name | Type | Required | Description |
|---|---|---|---|
| number | string | Yes | 11-digit mobile number (01XXXXXXXXX) |
| type | string | Yes | prepaid | postpaid (use prepaid for Skitto) |
| operator | string | Yes | BL, GP, RB, AT, TT, SK, BT |
| amount | number | Yes | Amount in Taka (required). Minimum 9; use the exact amount for drive/offer flows when combined with package_id. |
| package_id | string | No | Drive / package ID when buying a bundle |
| trxid | string | Yes | Unique id per request (idempotency) |
| successtopup_key | string | Yes | API key from dashboard |
| successtopup_secret | string | Yes | API secret from dashboard |
{
"result": true,
"message": "Recharge successful"
}Check the status of a recharge using the same trxid you sent. You can either poll this endpoint (pull) or set a webhook in API settings to receive status updates automatically (push).
Webhook setup and token verification: Webhook Security
| Name | Type | Required | Description |
|---|---|---|---|
| trxid | string | Yes | Transaction id from the recharge call |
| successtopup_key | string | Yes | API key |
| successtopup_secret | string | Yes | API secret |
{
"result": true,
"status": "Success"
}List offers (regular or drive) optionally filtered by operator.
| Name | Type | Required | Description |
|---|---|---|---|
| operator | string | No | GP | RB | AT | TT | BL | ALL |
| type | string | No | regular | drive |
| successtopup_key | string | Yes | API key |
| successtopup_secret | string | Yes | API secret |
{
"result": true,
"drives": []
}Return account balance and drive balance.
| Name | Type | Required | Description |
|---|---|---|---|
| successtopup_key | string | Yes | API key |
| successtopup_secret | string | Yes | API secret |
{
"result": true,
"balance": 0,
"driveBalance": 0
}Utility bill payment (see billOperator codes in your integration guide).
| Name | Type | Required | Description |
|---|---|---|---|
| billOperator | string | Yes | e.g. PBP, PBD, DSP, DSD, … |
| billNumber | string | Yes | Biller account number |
| billAmount | number | Yes | Amount > 0 |
| mobileNumber | string | Yes | 11-digit contact number |
| monthName | string | Yes | Billing month label |
| note | string | No | Optional note |
| trxid | string | Yes | Unique transaction id |
| successtopup_key | string | Yes | API key |
| successtopup_secret | string | Yes | API secret |
{
"result": true,
"message": "Bill payment transaction successful"
}If you set a Webhook Token in your API page, every webhook POST from Success TopUp includes this header:
x-webhook-token: YOUR_WEBHOOK_TOKENFrom recharge status updates, webhook payload is sent as a compact JSON object. Current statuses sent are Success, Cancel, and Processing.
{
"status": "Success",
"transactionId": "ST17138666251234",
"comment": "Recharge Success",
"note": "Recharge Success",
"updatedAt": "2026-04-23T10:15:12.000Z"
}This payload is pushed by cron when recharge status changes. For on-demand lookup, call /api/status with the same trxid.
Keep successtopup_secret on the server only. Never commit keys or expose them in client-side code. Rotate keys if compromised.