PB

Pickbo MFS API Documentation

Professional integration guide for authentication, MFS service lookup, transaction submit and status tracking.

Sandbox Ready Production Ready Bearer Secured

Pickbo MFS API Reference

This documentation helps developers authenticate securely, check account balance, fetch active MFS services, submit MFS transactions, and track transaction status. Each endpoint includes request examples in cURL, PowerShell, Node.js, Python, Java, PHP and Ruby, along with response samples, validation rules and environment-specific URLs.

Production Auth https://auth.pickbo.com
Sandbox Auth https://sandbox-auth.pickbo.com
Production MFS https://topups.pickbo.com
Sandbox MFS https://sandbox-topups.pickbo.com
1

Create Token

Generate a Bearer access token using your client_id and client_secret.

2

Check Balance

Confirm your wallet balance before attempting any MFS transaction.

3

Check MFS

Fetch active MFS services and review type, charge, commission and amount limits.

4

Submit MFS

Submit a new MFS transaction using a valid service and recipient account number.

5

Track Status

Check transaction status using transaction_id and review admin note and approval data.

Important integration note

For authentication, the grant_type value must always be client_credentials. For MFS APIs, a valid token with mfs scope is required. Always call check_mfs first to validate service rules before using submit_mfs.

Authentication

Create Access Token

POST

Generate a Bearer access token using your client credentials. This token is required for all secured API requests, including MFS APIs.

Security & Request Details

Authorization method, validation notes and input structure.

Security Type
None
Scheme
This endpoint does not require Bearer token. Send client_id, client_secret and grant_type in JSON body.
Method
POST
1
Use this endpoint first before calling any secured endpoint.
2
The grant_type value must always be client_credentials.
3
grant_type is fixed and cannot be changed to any other value.
4
Use sandbox credentials for sandbox and production credentials for production.
Request Body Example
{
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "grant_type": "client_credentials"
}

Response Examples

Expand each response to see sample output.

{
    "access_token": "your_generated_access_token_here",
    "token_type": "Bearer",
    "expires_in": 2592000,
    "scope": "mfs"
}
{
    "error": "INVALID_REQUEST",
    "message": "client_id, client_secret, and grant_type are required. grant_type must be client_credentials."
}
{
    "error": "INVALID_CLIENT",
    "message": "Client authentication failed."
}
{
    "error": "CLIENT_INACTIVE",
    "message": "API client is not active."
}
POST
https://auth.pickbo.com/oauth-token.php

Request Samples

Switch between languages and copy the sample instantly.

curl --request POST \
  --url "https://auth.pickbo.com/oauth-token.php" \
  --header "Content-Type: application/json" \
  --data '{
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "grant_type": "client_credentials"
  }'
$headers = @{
    "Content-Type" = "application/json"
}

$body = @{
    client_id     = "your_client_id"
    client_secret = "your_client_secret"
    grant_type    = "client_credentials"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://auth.pickbo.com/oauth-token.php" `
    -Method POST `
    -Headers $headers `
    -Body $body
const fetch = require("node-fetch");

fetch("https://auth.pickbo.com/oauth-token.php", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    client_id: "your_client_id",
    client_secret: "your_client_secret",
    grant_type: "client_credentials"
  })
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests

url = "https://auth.pickbo.com/oauth-token.php"
payload = {
    "client_id": "your_client_id",
    "client_secret": "your_client_secret",
    "grant_type": "client_credentials"
}

response = requests.post(url, json=payload)
print(response.status_code)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"client_id\":\"your_client_id\",\"client_secret\":\"your_client_secret\",\"grant_type\":\"client_credentials\"}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://auth.pickbo.com/oauth-token.php"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
<?php

$url = "https://auth.pickbo.com/oauth-token.php";
$payload = [
    "client_id" => "your_client_id",
    "client_secret" => "your_client_secret",
    "grant_type" => "client_credentials"
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status . PHP_EOL;
echo $response;
require "net/http"
require "json"
require "uri"

uri = URI("https://auth.pickbo.com/oauth-token.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
request.body = {
  client_id: "your_client_id",
  client_secret: "your_client_secret",
  grant_type: "client_credentials"
}.to_json

response = http.request(request)
puts response.code
puts response.body
Ready to Integrate
https://auth.pickbo.com/oauth-token.php https://sandbox-auth.pickbo.com/oauth-token.php
Account

View Account Balance

GET

Retrieve the current account balance and basic user details for the authenticated account before submitting MFS transactions.

Security & Request Details

Authorization method, validation notes and input structure.

Security Type
HTTP Bearer Token
Scheme
Authorization: Bearer YOUR_ACCESS_TOKEN
Method
GET
1
A valid Bearer token is required.
2
Use this endpoint to confirm wallet balance before making MFS requests.
3
Sandbox environment may return sandbox wallet information depending on your implementation.

Response Examples

Expand each response to see sample output.

{
    "balance": 5000,
    "currencyCode": "USD",
    "user": {
        "name": "John Doe",
        "username": "johnapi"
    }
}
{
    "error": "UNAUTHORIZED",
    "message": "Invalid or expired access token."
}
{
    "error": "METHOD_NOT_ALLOWED",
    "message": "Only GET method is allowed."
}
GET
https://topups.pickbo.com/accounts/balance.php

Request Samples

Switch between languages and copy the sample instantly.

curl --request GET \
  --url "https://topups.pickbo.com/accounts/balance.php" \
  --header "Accept: application/json" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN"
$headers = @{
    "Accept" = "application/json"
    "Authorization" = "Bearer YOUR_ACCESS_TOKEN"
}

Invoke-RestMethod -Uri "https://topups.pickbo.com/accounts/balance.php" `
    -Method GET `
    -Headers $headers
const fetch = require("node-fetch");

fetch("https://topups.pickbo.com/accounts/balance.php", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
  }
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests

url = "https://topups.pickbo.com/accounts/balance.php"
headers = {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}

response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://topups.pickbo.com/accounts/balance.php"))
            .header("Accept", "application/json")
            .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
            .GET()
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
<?php

$ch = curl_init("https://topups.pickbo.com/accounts/balance.php");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Accept: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ],
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status . PHP_EOL;
echo $response;
require "net/http"
require "uri"

uri = URI("https://topups.pickbo.com/accounts/balance.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri.request_uri)
request["Accept"] = "application/json"
request["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"

response = http.request(request)
puts response.code
puts response.body
Ready to Integrate
https://topups.pickbo.com/accounts/balance.php https://sandbox-topups.pickbo.com/accounts/balance.php
MFS

Check MFS Services

POST

Fetch all active MFS services. You may optionally filter by transaction type such as cash_in or send_money.

Security & Request Details

Authorization method, validation notes and input structure.

Security Type
HTTP Bearer Token
Scheme
Authorization: Bearer YOUR_ACCESS_TOKEN
Method
POST
1
A valid Bearer token with mfs scope is required.
2
action is required and must be check_mfs.
3
type is optional. Supported values are cash_in and send_money.
4
If type is omitted, all active MFS services may be returned depending on implementation.
Request Body Example
{
    "action": "check_mfs",
    "type": "cash_in"
}

Response Examples

Expand each response to see sample output.

{
    "success": true,
    "message": "MFS list fetched successfully.",
    "data": {
        "count": 2,
        "services": [
            {
                "id": 1,
                "name": "bKash",
                "slug": "bkash",
                "type": "cash_in",
                "currency_code": "BDT",
                "commission_percent": "0.20",
                "charge_percent": null,
                "charge_fixed": "0.00",
                "minimum_transfer": "1000.00",
                "maximum_transfer": "25000.00",
                "description": "bKash cash in service",
                "sort_order": 1
            },
            {
                "id": 2,
                "name": "bKash",
                "slug": "bkash",
                "type": "send_money",
                "currency_code": "BDT",
                "commission_percent": "0.00",
                "charge_percent": null,
                "charge_fixed": "5.00",
                "minimum_transfer": "1000.00",
                "maximum_transfer": "25000.00",
                "description": "bKash send money service",
                "sort_order": 2
            }
        ]
    }
}
{
    "success": false,
    "message": "Unauthorized."
}
{
    "success": false,
    "message": "Insufficient scope. Required scope: mfs"
}
{
    "success": false,
    "message": "action is required."
}
POST
https://topups.pickbo.com/topups/mfs.php

Request Samples

Switch between languages and copy the sample instantly.

curl --request POST \
  --url "https://topups.pickbo.com/topups/mfs.php" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --data '{
    "action": "check_mfs",
    "type": "cash_in"
  }'
$headers = @{
    "Accept" = "application/json"
    "Content-Type" = "application/json"
    "Authorization" = "Bearer YOUR_ACCESS_TOKEN"
}

$body = @{
    action = "check_mfs"
    type   = "cash_in"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://topups.pickbo.com/topups/mfs.php" `
    -Method POST `
    -Headers $headers `
    -Body $body
const fetch = require("node-fetch");

fetch("https://topups.pickbo.com/topups/mfs.php", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
  },
  body: JSON.stringify({
    action: "check_mfs",
    type: "cash_in"
  })
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests

url = "https://topups.pickbo.com/topups/mfs.php"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
payload = {
    "action": "check_mfs",
    "type": "cash_in"
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"action\":\"check_mfs\",\"type\":\"cash_in\"}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://topups.pickbo.com/topups/mfs.php"))
            .header("Accept", "application/json")
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
<?php

$url = "https://topups.pickbo.com/topups/mfs.php";
$payload = [
    "action" => "check_mfs",
    "type" => "cash_in"
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Accept: application/json",
        "Content-Type: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status . PHP_EOL;
echo $response;
require "net/http"
require "json"
require "uri"

uri = URI("https://topups.pickbo.com/topups/mfs.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request["Accept"] = "application/json"
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
request.body = {
  action: "check_mfs",
  type: "cash_in"
}.to_json

response = http.request(request)
puts response.code
puts response.body
Ready to Integrate
https://topups.pickbo.com/topups/mfs.php https://sandbox-topups.pickbo.com/topups/mfs.php
MFS

Submit MFS Transaction

POST

Submit a new MFS transaction. The system calculates amount conversion, charge, commission, and wallet debit automatically based on service and currency configuration.

Security & Request Details

Authorization method, validation notes and input structure.

Security Type
HTTP Bearer Token
Scheme
Authorization: Bearer YOUR_ACCESS_TOKEN
Method
POST
1
A valid Bearer token with mfs scope is required.
2
action must be submit_mfs.
3
service_id, amount and account_number are required.
4
amount is submitted in service currency, for example BDT.
5
In sandbox, transaction may be auto-approved depending on your sandbox configuration.
6
In production, transaction may stay pending until admin verification.
Request Body Example
{
    "action": "submit_mfs",
    "service_id": 1,
    "amount": 1000,
    "account_number": "01328884749",
    "account_name": "Test User"
}

Response Examples

Expand each response to see sample output.

{
    "success": true,
    "message": "MFS request submitted successfully. Please wait for admin verification.",
    "data": {
        "transaction_id": "MFS-C8EWQ48T49KY",
        "status": "pending",
        "service": {
            "id": 1,
            "name": "bKash",
            "slug": "bkash",
            "type": "cash_in",
            "currency_code": "BDT"
        },
        "exchange_rate": "113.000000",
        "request_amount": "1000.00",
        "request_amount_currency": "BDT",
        "request_amount_usd": "8.85",
        "charge": "0.00",
        "charge_currency": "BDT",
        "charge_usd": "0.00",
        "commission_percent": "0.20",
        "commission": "2.00",
        "commission_currency": "BDT",
        "commission_usd": "0.02",
        "debit_amount_usd": "8.85",
        "receive_amount": "1000.00",
        "receive_amount_currency": "BDT",
        "account_number": "01328884749",
        "account_name": "Test User",
        "wallet_balance_before": "100.00",
        "wallet_balance_after": "91.15"
    }
}
{
    "success": false,
    "message": "Unauthorized."
}
{
    "success": false,
    "message": "Insufficient scope. Required scope: mfs"
}
{
    "success": false,
    "message": "MFS service not found."
}
{
    "success": false,
    "message": "service_id, amount and account_number are required."
}
{
    "success": false,
    "message": "Internal server error."
}
POST
https://topups.pickbo.com/topups/mfs.php

Request Samples

Switch between languages and copy the sample instantly.

curl --request POST \
  --url "https://topups.pickbo.com/topups/mfs.php" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --data '{
    "action": "submit_mfs",
    "service_id": 1,
    "amount": 1000,
    "account_number": "01328884749",
    "account_name": "Test User"
  }'
$headers = @{
    "Accept" = "application/json"
    "Content-Type" = "application/json"
    "Authorization" = "Bearer YOUR_ACCESS_TOKEN"
}

$body = @{
    action         = "submit_mfs"
    service_id     = 1
    amount         = 1000
    account_number = "01328884749"
    account_name   = "Test User"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://topups.pickbo.com/topups/mfs.php" `
    -Method POST `
    -Headers $headers `
    -Body $body
const fetch = require("node-fetch");

fetch("https://topups.pickbo.com/topups/mfs.php", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
  },
  body: JSON.stringify({
    action: "submit_mfs",
    service_id: 1,
    amount: 1000,
    account_number: "01328884749",
    account_name: "Test User"
  })
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests

url = "https://topups.pickbo.com/topups/mfs.php"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
payload = {
    "action": "submit_mfs",
    "service_id": 1,
    "amount": 1000,
    "account_number": "01328884749",
    "account_name": "Test User"
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"action\":\"submit_mfs\",\"service_id\":1,\"amount\":1000,\"account_number\":\"01328884749\",\"account_name\":\"Test User\"}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://topups.pickbo.com/topups/mfs.php"))
            .header("Accept", "application/json")
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
<?php

$url = "https://topups.pickbo.com/topups/mfs.php";
$payload = [
    "action" => "submit_mfs",
    "service_id" => 1,
    "amount" => 1000,
    "account_number" => "01328884749",
    "account_name" => "Test User"
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Accept: application/json",
        "Content-Type: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status . PHP_EOL;
echo $response;
require "net/http"
require "json"
require "uri"

uri = URI("https://topups.pickbo.com/topups/mfs.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request["Accept"] = "application/json"
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
request.body = {
  action: "submit_mfs",
  service_id: 1,
  amount: 1000,
  account_number: "01328884749",
  account_name: "Test User"
}.to_json

response = http.request(request)
puts response.code
puts response.body
Ready to Integrate
https://topups.pickbo.com/topups/mfs.php https://sandbox-topups.pickbo.com/topups/mfs.php
MFS

Check MFS Transaction Status

POST

Check the current status of an existing MFS transaction using transaction_id.

Security & Request Details

Authorization method, validation notes and input structure.

Security Type
HTTP Bearer Token
Scheme
Authorization: Bearer YOUR_ACCESS_TOKEN
Method
POST
1
A valid Bearer token with mfs scope is required.
2
action must be check_status.
3
transaction_id is required.
4
Response includes service, amount, charge, commission, admin note and approval details if available.
Request Body Example
{
    "action": "check_status",
    "transaction_id": "MFS-C8EWQ48T49KY"
}

Response Examples

Expand each response to see sample output.

{
    "success": true,
    "message": "Transaction status fetched successfully.",
    "data": {
        "transaction_id": "MFS-C8EWQ48T49KY",
        "status": "approved",
        "service": {
            "id": 1,
            "name": "bKash",
            "slug": "bkash",
            "type": "cash_in",
            "currency_code": "BDT"
        },
        "exchange_rate": "113.000000",
        "request_amount_usd": "8.85",
        "request_amount": "1000.00",
        "request_amount_currency": "BDT",
        "charge_usd": "0.00",
        "charge": "0.00",
        "charge_currency": "BDT",
        "commission_percent": "0.20",
        "commission_usd": "0.02",
        "commission": "2.00",
        "commission_currency": "BDT",
        "debit_amount_usd": "8.85",
        "receive_amount": "1000.00",
        "receive_amount_currency": "BDT",
        "account_number": "01328884749",
        "account_name": "Test User",
        "submitted_at": "2026-03-21 10:48:37",
        "updated_at": "2026-03-21 11:02:38",
        "admin_note": "Cashin transferred successfully",
        "provider_trx_id": "11111111111",
        "sender_number": "111111111111",
        "approved_at": "2026-03-21 11:02:31"
    }
}
{
    "success": false,
    "message": "Transaction not found."
}
{
    "success": false,
    "message": "transaction_id is required."
}
{
    "success": false,
    "message": "Unauthorized."
}
POST
https://topups.pickbo.com/topups/mfs.php

Request Samples

Switch between languages and copy the sample instantly.

curl --request POST \
  --url "https://topups.pickbo.com/topups/mfs.php" \
  --header "Accept: application/json" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  --data '{
    "action": "check_status",
    "transaction_id": "MFS-C8EWQ48T49KY"
  }'
$headers = @{
    "Accept" = "application/json"
    "Content-Type" = "application/json"
    "Authorization" = "Bearer YOUR_ACCESS_TOKEN"
}

$body = @{
    action         = "check_status"
    transaction_id = "MFS-C8EWQ48T49KY"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://topups.pickbo.com/topups/mfs.php" `
    -Method POST `
    -Headers $headers `
    -Body $body
const fetch = require("node-fetch");

fetch("https://topups.pickbo.com/topups/mfs.php", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
  },
  body: JSON.stringify({
    action: "check_status",
    transaction_id: "MFS-C8EWQ48T49KY"
  })
})
  .then(res => res.json())
  .then(data => console.log(data))
  .catch(err => console.error(err));
import requests

url = "https://topups.pickbo.com/topups/mfs.php"
headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
payload = {
    "action": "check_status",
    "transaction_id": "MFS-C8EWQ48T49KY"
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        String json = "{\"action\":\"check_status\",\"transaction_id\":\"MFS-C8EWQ48T49KY\"}";

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://topups.pickbo.com/topups/mfs.php"))
            .header("Accept", "application/json")
            .header("Content-Type", "application/json")
            .header("Authorization", "Bearer YOUR_ACCESS_TOKEN")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpClient client = HttpClient.newHttpClient();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}
<?php

$url = "https://topups.pickbo.com/topups/mfs.php";
$payload = [
    "action" => "check_status",
    "transaction_id" => "MFS-C8EWQ48T49KY"
];

$ch = curl_init($url);
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Accept: application/json",
        "Content-Type: application/json",
        "Authorization: Bearer YOUR_ACCESS_TOKEN"
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo $status . PHP_EOL;
echo $response;
require "net/http"
require "json"
require "uri"

uri = URI("https://topups.pickbo.com/topups/mfs.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request["Accept"] = "application/json"
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_ACCESS_TOKEN"
request.body = {
  action: "check_status",
  transaction_id: "MFS-C8EWQ48T49KY"
}.to_json

response = http.request(request)
puts response.code
puts response.body
Ready to Integrate
https://topups.pickbo.com/topups/mfs.php https://sandbox-topups.pickbo.com/topups/mfs.php