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
RyzeRY

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 (Brilliant Connect), RY (Ryze SIM)
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 | SK | BT | RY | 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. Use a billOperator code from the list in this section.

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

Body parameters

NameTypeRequiredDescription
billOperatorstringYesExact code from the operator list below (case-sensitive), e.g. pbp, dsp, DAWA
billNumberstringYesBiller account number
billAmountnumberYesAmount > 0
mobileNumberstringYes11-digit contact number
monthNamestringYesBilling month label
notestringNoOptional note
trxidstringYesUnique transaction id
successtopup_keystringYesAPI key
successtopup_secretstringYesAPI secret

Operator codes

Use the code as shown in billOperator (case-sensitive).

Palli Bidyut (prepaid)pbp
Palli Bidyut (Postpaid)pbd
DESCO (Prepaid)dsp
DESCO (Postpaid)dsd
NESCO (Prepaid)nsp
NESCO (Postpaid)nsd
DPDC (Prepaid)dpp
DPDC (Postpaid)dpd
Titas Gasttg
Karnaphuli Gaskrp
Jalalabad gasjlb
Sundarban Gassbg
Bakhrabad Gasbrd
Amber IT (internet)art
DADhaka WASADAWA

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