FKASH DEVELOPER PLATFORM

Recharge API Documentation

Build recharge into your own Android app, iOS app, website or backend. Your clients use Fkash-issued credentials. Fkash securely relays eligible requests to Success TopUp.

Introduction

The Fkash API accepts UTF-8 JSON over HTTPS. The current API activation fee is ৳100.00. The administrator can change the fee or temporarily disable API access.

Current service status: Active
Base URLhttps://fkash.shop/api/v1

Authentication

Include your Fkash credentials in each JSON request. You can also use the X-FKASH-KEY and X-FKASH-SECRET headers.

FieldRequiredDescription
api_keyYesPublic key from your Fkash API dashboard
api_secretYesSecret shown when credentials are created or regenerated
client_nameRecommendedYour app or website name. It appears in admin API logs.
Important: Never put the Success TopUp key or secret in your client app. Fkash keeps upstream provider credentials server-side.

Operator codes

OperatorCode
GrameenphoneGP
RobiRB
AirtelAT
BanglalinkBL
TeletalkTT
SkittoSK
BrilliantBT
RyzeRY

Recharge

POSThttps://fkash.shop/api/v1/recharge

Submit a prepaid or postpaid recharge. Use a unique trxid for every transaction. Reusing the same trxid with identical details returns the existing transaction. Reusing it with different details returns HTTP 409.

FieldRequiredDescription
numberYes11-digit number, 01XXXXXXXXX
typeYesprepaid or postpaid
operatorYesOperator code
amountYesMinimum ৳9
package_idNoPackage or drive ID when applicable
trxidYesYour unique idempotency ID
client_nameNoApp/site name for audit logs
api_keyYesFkash API key
api_secretYesFkash API secret
{ "number": "01712345678", "type": "prepaid", "operator": "GP", "amount": 50, "trxid": "MYAPP-1713866625", "client_name": "My Recharge App", "api_key": "FKS_YOUR_KEY", "api_secret": "fks_YOUR_SECRET" }

Example response

{ "result": true, "status": "Processing", "app_status": "processing", "source": "api", "trxid": "MYAPP-1713866625", "number": "01712345678", "amount": 50, "message": "Recharge request accepted" }

Rank-based commission

API recharge uses the same recharge commission assigned to the user's Fkash rank. There is no separate API commission rate.

  • The full recharge amount is reserved from the Fkash wallet when the request is accepted.
  • The user's rank and commission percentage are snapshotted on the recharge order.
  • Commission is credited to the same Fkash wallet only after Success TopUp confirms Success.
  • Pending/Processing orders do not receive commission yet.
  • Failed/Cancel orders receive a one-time refund of the charged amount and no commission.
Example: Rank commission 1.5% + Recharge ৳100 Charged: ৳100.00 On Success commission credited: ৳1.50 Effective wallet cost after success: ৳98.50

Transaction status

POSThttps://fkash.shop/api/v1/status
{ "trxid": "MYAPP-1713866625", "api_key": "FKS_YOUR_KEY", "api_secret": "fks_YOUR_SECRET" }

Pending requests are checked against the provider. Final statuses are normalized to Fkash status values such as success, processing or cancel.

Balance

POSThttps://fkash.shop/api/v1/balance

This returns the API user's Fkash wallet balance and assigned recharge commission. It does not expose the master Success TopUp provider balance.

{ "api_key": "FKS_YOUR_KEY", "api_secret": "fks_YOUR_SECRET" }

Drive list

POSThttps://fkash.shop/api/v1/drives
{ "operator": "GP", "type": "drive", "api_key": "FKS_YOUR_KEY", "api_secret": "fks_YOUR_SECRET" }

Code examples

cURL

curl -X POST "https://fkash.shop/api/v1/recharge" \ -H "Content-Type: application/json" \ -d '{"number":"01712345678","type":"prepaid","operator":"GP","amount":50,"trxid":"MYAPP-001","client_name":"My App","api_key":"FKS_YOUR_KEY","api_secret":"fks_YOUR_SECRET"}'

Node.js

const axios = require('axios') const response = await axios.post('https://fkash.shop/api/v1/recharge', { number: '01712345678', type: 'prepaid', operator: 'GP', amount: 50, trxid: `MYAPP-${Date.now()}`, client_name: 'My App', api_key: process.env.FKASH_KEY, api_secret: process.env.FKASH_SECRET })

PHP

$payload = [ 'number' => '01712345678', 'type' => 'prepaid', 'operator' => 'GP', 'amount' => 50, 'trxid' => 'MYAPP-' . time(), 'client_name' => 'My App', 'api_key' => getenv('FKASH_KEY'), 'api_secret' => getenv('FKASH_SECRET'), ]; $response = Http::post('https://fkash.shop/api/v1/recharge', $payload);

Python

import os, time, requests payload = { "number": "01712345678", "type": "prepaid", "operator": "GP", "amount": 50, "trxid": f"MYAPP-{int(time.time())}", "client_name": "My App", "api_key": os.environ["FKASH_KEY"], "api_secret": os.environ["FKASH_SECRET"], } r = requests.post("https://fkash.shop/api/v1/recharge", json=payload, timeout=30) print(r.json())

Security and operations

  • Use HTTPS only in production.
  • Keep the API secret on your backend. Do not embed it in public JavaScript or publish it in an APK if the APK can be reverse engineered.
  • Use a unique trxid for every recharge.
  • Store the returned status and poll /status for pending transactions.
  • If credentials are exposed, regenerate them immediately from the Fkash API dashboard.
  • API requests, client name, destination number, IP, result and source are recorded for admin audit.
The Fkash admin can suspend an API account at any time without blocking the user's normal wallet account.