FlexiloadBD / API Docs

FlexiloadBD Developer API

Connect your application to offer mobile recharge, data packages, MFS transfers, drive packages, and bill payments through a single REST API.

Base URLhttp://flexiloadbd.net/api/gateway/v1
Versionv1
Formatapplication/json
TimezoneAsia/Dhaka
Authentication

Add your token to every request:
Authorization: Bearer {your_token}

Generate your token from your dashboard → API Token page.

Rate Limits

Balance · Packages · Status
60 requests / minute

Transactions (/request)
30 requests / minute

Response Format

All responses return JSON.
Success: "status": true
Error: "status": false + "message"

GET

Balance

/api/gateway/v1/balance

Returns your current wallet balances. No request body needed.

Example Request
curl -X GET "http://flexiloadbd.net/api/gateway/v1/balance" \
     -H "Authorization: Bearer {your_token}" \
     -H "Accept: application/json"
$response = Http::withToken('your_token')
    ->get('http://flexiloadbd.net/api/gateway/v1/balance');

$data = $response->json();
const res = await fetch('http://flexiloadbd.net/api/gateway/v1/balance', {
    headers: {
        'Authorization': `Bearer ${token}`,
        'Accept': 'application/json'
    }
});
const data = await res.json();
Response
{
    "status": true,
    "data": {
        "flexiload_balance": 500.00,
        "drive_balance":     0.00,
        "bank_balance":      0.00
    }
}
POST

Package List

/api/gateway/v1/packages

Returns available data or drive packages for an operator. Use the returned id as package_id when calling /request.

Parameters
ParameterTypeRequiredDescription
operator_codestringrequiredOperator code — e.g. GP, BL, RB
typestringoptionalFilter: data · combo · minutes · rate · drive
Example Request
curl -X POST "http://flexiloadbd.net/api/gateway/v1/packages" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{"operator_code": "GP", "type": "data"}'
$response = Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/packages', [
        'operator_code' => 'GP',
        'type'          => 'data',
    ]);
const res = await fetch('http://flexiloadbd.net/api/gateway/v1/packages', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({ operator_code: 'GP', type: 'data' })
});
Response
{
    "status": true,
    "data": [
        { "id": 1, "name": "1 GB – 30 Days", "price": 149, "commission": 5.00, "type": "data", "tag": "HOT" },
        { "id": 2, "name": "3 GB – 7 Days",  "price": 65,  "commission": 2.00, "type": "data", "tag": null  }
    ]
}

commission — আপনার role অনুযায়ী প্রতিটি package-এ যে টাকা ফেরত পাবেন।

POST

Send Request

/api/gateway/v1/request

Single endpoint for all transaction types. Use the type field to specify the operation.

Recharge
Data
Drive
MFS
Bill
ref_id optional — Your unique reference ID for tracking. Use it later in /status.
sub_type optional — Transaction sub-type for specific flow control. See each type's parameter table for supported values.
Parameters — Recharge
ParameterTypeDescription
typestringrequiredValue: recharge
operator_codestringrequiredGP · BL · RB · AT · TT
phonestringrequiredRecipient mobile number (11 digits)
amountnumericrequiredRecharge amount in BDT
sub_typestringoptionalPrepaid · Postpaid · Personal · Agent
ref_idstringoptionalYour own reference ID
Example
curl -X POST "http://flexiloadbd.net/api/gateway/v1/request" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{
       "type":          "recharge",
       "operator_code": "GP",
       "phone":         "01711111111",
       "amount":        100,
       "sub_type":      "Postpaid",
       "ref_id":        "ORD-2026-001"
     }'
$response = Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/request', [
        'type'          => 'recharge',
        'operator_code' => 'GP',
        'phone'         => '01711111111',
        'amount'        => 100,
        'sub_type'      => 'Postpaid',   // optional: Prepaid | Postpaid | Personal | Agent
        'ref_id'        => 'ORD-2026-001',
    ]);
const res = await fetch('http://flexiloadbd.net/api/gateway/v1/request', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        type: 'recharge', operator_code: 'GP',
        phone: '01711111111', amount: 100,
        ref_id: 'ORD-2026-001'
    })
});
Parameters — Data Package
ParameterTypeDescription
typestringrequiredValue: data
operator_codestringrequiredGP · BL · RB
phonestringrequiredRecipient mobile number
package_idintegerrequiredPackage id from /packages
ref_idstringoptionalYour own reference ID
Example
curl -X POST "http://flexiloadbd.net/api/gateway/v1/request" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{
       "type":          "data",
       "operator_code": "GP",
       "phone":         "01711111111",
       "package_id":    3
     }'
Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/request', [
        'type'          => 'data',
        'operator_code' => 'GP',
        'phone'         => '01711111111',
        'package_id'    => 3,
    ]);
Parameters — Drive Package
ParameterTypeDescription
typestringrequiredValue: drive
operator_codestringrequiredBL · GP · RB
phonestringrequiredRecipient mobile number
package_idintegerrequiredPackage id from /packages?type=drive
ref_idstringoptionalYour own reference ID
Parameters — MFS Transfer
ParameterTypeDescription
typestringrequiredValue: mfs
operator_codestringrequiredBK (Bkash) · NG (Nagad) · RK (Rocket)
phonestringrequiredRecipient wallet number
amountnumericrequiredTransfer amount in BDT
sub_typestringoptionalAgent — agent/merchant transfer
ref_idstringoptionalYour own reference ID
Example
curl -X POST "http://flexiloadbd.net/api/gateway/v1/request" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{
       "type":          "mfs",
       "operator_code": "BK",
       "phone":         "01811111111",
       "amount":        500
     }'
Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/request', [
        'type'          => 'mfs',
        'operator_code' => 'BK',
        'phone'         => '01811111111',
        'amount'        => 500,
    ]);
Parameters — Bill Payment
ParameterTypeDescription
typestringrequiredValue: bill
operator_codestringrequiredDESCO · DPDC · TITAS
bill_numberstringrequiredCustomer / meter account number
monthstringrequiredBill month in MM format: 0112
amountnumericrequiredBill amount in BDT
phonestringconditionalRequired by some operators
ref_idstringoptionalYour own reference ID
Example
curl -X POST "http://flexiloadbd.net/api/gateway/v1/request" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{
       "type":          "bill",
       "operator_code": "DESCO",
       "bill_number":   "1234567890",
       "month":         "04",
       "amount":        850
     }'
Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/request', [
        'type'          => 'bill',
        'operator_code' => 'DESCO',
        'bill_number'   => '1234567890',
        'month'         => '04',
        'amount'        => 850,
    ]);
Response (all types)
{
    "status":      true,
    "trx_id":      "TRX202604281234001",
    "ref_id":      "ORD-2026-001",
    "type":        "recharge",
    "operator":    "Grameenphone",
    "phone":       "01711111111",
    "bill_number": null,
    "package":     null,
    "amount":      100,
    "payable":     100,
    "balance":     400.00,
    "trx_status":  "Pending",
    "message":     "Message/Failed Reason/Pin/Note",
    "created_at":  "2026-04-28T12:34:01.000000Z"
}
POST

Transaction Status

/api/gateway/v1/status

Check the current status of a transaction. Pass either trx_id (our ID) or ref_id (your own ID) — one is required.

ParameterTypeDescription
trx_idstringone ofTransaction ID returned from /request
ref_idstringone ofYour reference ID passed during submit
Example
curl -X POST "http://flexiloadbd.net/api/gateway/v1/status" \
     -H "Authorization: Bearer {your_token}" \
     -H "Content-Type: application/json" \
     -d '{"trx_id": "TRX202604281234001"}'

# or by ref_id:
     -d '{"ref_id": "ORD-2026-001"}'
Http::withToken('your_token')
    ->post('http://flexiloadbd.net/api/gateway/v1/status', [
        'trx_id' => 'TRX202604281234001',
    ]);
Transaction Status Values
Pending Processing Success Failed
Response
{
    "status":        true,
    "trx_id":        "TRX202604281234001",
    "ref_id":        "ORD-2026-001",
    "type":          "recharge",
    "sub_type":      "Postpaid",
    "operator":      "Grameenphone",
    "operator_code": "GP",
    "phone":         "01711111111",
    "bill_number":   null,
    "package_name":  null,
    "amount":        100,
    "payable":       100,
    "trx_status":    "Success",
    "message":       "Message/Failed Reason/Pin/Note",
    "created_at":    "2026-04-28T12:34:01.000000Z"
}

Operator Code Reference

Mobile
MFS
Bill

Bangladesh

OperatorCodeNumber Prefix
GrameenphoneGP017, 013
RobiRB018
AirtelAT016
BanglalinkBL019, 014
SkittoSK013
TeletalkTT015
OperatorCodeNumber Prefix
bKashBK018, 019, 017 …
NagadNG018, 019, 017 …
RocketRK018, 019, 017 …

⚡ Electricity

OperatorCodeType
Palli BidyutPBPPrepaid
Palli BidyutPBDPostpaid
DESCODSPPrepaid
DESCODSDPostpaid

🔥 Gas

OperatorCode
Jalalabad GasJLB
Sundarban GasSBG
Bakhrabad GasBRD

🌐 Internet

OperatorCode
Amber ITART

Error Codes

HTTPstatusCommon Cause
401falseMissing or invalid API token
403falseAccount inactive or API access not enabled
404falseTransaction not found (/status)
422falseValidation error · Insufficient balance · Duplicate transaction · Operator not found or not active · Service not available
429falseRate limit exceeded