Success TopUp
Get app

Introduction

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).

  • Protocol: HTTPS
  • Encoding: UTF-8 JSON
  • Header: Content-Type: application/json

Authentication

Include your credentials in the JSON body of each request (not in the URL):

FieldDescription
successtopup_keyPublic API key from your dashboard
successtopup_secretSecret key — server-side only

Live Test

Test API URL (copy for Postman, curl, or another tool)

/api/sandbox/test

Sandbox mode: use POST with action + payload for mock responses.

Operation

Request body

JSON editorapplication/json

Operator codes

Use in the operator field.

OperatorCode
GrameenphoneGP
RobiRB
AirtelAT
BanglalinkBL
TeletalkTT
SkittoSK
BrilliantBT

Code examples

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' } });

Recharge

POST

Submit a prepaid or postpaid recharge. Use a unique trxid for every transaction.

https://api.successtopup.com/api/recharge

Body parameters

NameTypeRequiredDescription
numberstringYes11-digit mobile number (01XXXXXXXXX)
typestringYesprepaid | postpaid (use prepaid for Skitto)
operatorstringYesBL, GP, RB, AT, TT, SK, BT
amountnumberYesAmount in Taka (required). Minimum 9; use the exact amount for drive/offer flows when combined with package_id.
package_idstringNoDrive / package ID when buying a bundle
trxidstringYesUnique id per request (idempotency)
successtopup_keystringYesAPI key from dashboard
successtopup_secretstringYesAPI secret from dashboard

Example response

{
  "result": true,
  "message": "Recharge successful"
}

Transaction status

POST

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

https://api.successtopup.com/api/status

Body parameters

NameTypeRequiredDescription
trxidstringYesTransaction id from the recharge call
successtopup_keystringYesAPI key
successtopup_secretstringYesAPI secret

Example response

{
  "result": true,
  "status": "Success"
}

Drive list

POST

List offers (regular or drive) optionally filtered by operator.

https://api.successtopup.com/api/drives

Body parameters

NameTypeRequiredDescription
operatorstringNoGP | RB | AT | TT | BL | ALL
typestringNoregular | drive
successtopup_keystringYesAPI key
successtopup_secretstringYesAPI secret

Example response

{
  "result": true,
  "drives": []
}

Balance

POST

Return account balance and drive balance.

https://api.successtopup.com/api/balance

Body parameters

NameTypeRequiredDescription
successtopup_keystringYesAPI key
successtopup_secretstringYesAPI secret

Example response

{
  "result": true,
  "balance": 0,
  "driveBalance": 0
}

Bill payment

POST

Utility bill payment (see billOperator codes in your integration guide).

https://api.successtopup.com/api/bill-pay

Body parameters

NameTypeRequiredDescription
billOperatorstringYese.g. PBP, PBD, DSP, DSD, …
billNumberstringYesBiller account number
billAmountnumberYesAmount > 0
mobileNumberstringYes11-digit contact number
monthNamestringYesBilling month label
notestringNoOptional note
trxidstringYesUnique transaction id
successtopup_keystringYesAPI key
successtopup_secretstringYesAPI secret

Example response

{
  "result": true,
  "message": "Bill payment transaction successful"
}

Webhook

If you set a Webhook Token in your API page, every webhook POST from Success TopUp includes this header:

x-webhook-token: YOUR_WEBHOOK_TOKEN
  • Verify this header before processing the webhook payload.
  • If the token is missing or invalid, return HTTP 401/403 and ignore the request.
  • Rotate the token anytime from your API settings page.

Webhook payload

From 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.

Security

Keep successtopup_secret on the server only. Never commit keys or expose them in client-side code. Rotate keys if compromised.

Chat with us on WhatsApp