AK Pay Gateway

Complete API Documentation v1
BASE URL: https://www.akpay.space/

Payment Gateway Integration

REST API

AK Pay provides secure, high-availability payment solutions for Bangladesh (bkash, nagad, rocket), India (UPI), and Pakistan (easypaisa, jazzcash). All endpoints require MD5 signature authentication.


Signature Workflow

  1. Remove sign parameter from request array
  2. Sort remaining parameters alphabetically by key
  3. Create query string: key1=value1&key2=value2...
  4. Append &key=YOUR_SECRET_KEY
  5. Generate MD5 hash (lowercase) → final signature
function generateSign($params, $secretKey) {
    unset($params['sign']);
    ksort($params);
    $str = http_build_query($params) . '&key=' . $secretKey;
    return strtolower(md5($str));
}

Supported Payment Methods

CountryMethods
🇧🇩 Bangladeshbkash, nagad, rocket
🇮🇳 Indiaupi
🇵🇰 Pakistaneasypaisa, jazzcash

Create Payment Order

POST /v1/collect
ParameterRequiredDescription
mchId✓Your merchant ID
out_trade_no✓Unique order ID
money✓Amount, e.g., "100.00"
pay_type✓bkash, nagad, rocket, upi, easypaisa, jazzcash
currency✓BDT, INR, PKR
notify_url✓Webhook callback URL (HTTPS)
returnUrl✓User redirect after payment
sign✓MD5 signature
{
  "mchId": "test123",
  "out_trade_no": "ORD_1703123456",
  "money": "250.00",
  "pay_type": "bkash",
  "currency": "BDT",
  "notify_url": "https://yourdomain.com/callback",
  "returnUrl": "https://yourdomain.com/success",
  "sign": "abcd1234..."
}

Success Response

{"code":0,"msg":"success","data":{"url":"https://payment-page-url.com/xxx","transaction_Id":"TXN123456789"}}

Check Order Status

POST /v1/order
{"mchId":"your_merchant_id","out_trade_no":"ORD001","sign":"md5_signature"}

Response

{"code":0,"data":{"out_trade_no":"ORD001","status":"1","amount":"100","transaction_id":"TXN123"}}

Status Codes

0 → Pending 1 → Success 2 → Failed

Withdrawal Request

POST /v1/payout
ParamRequiredDescription
account✓Customer mobile number
userName✓Full name
money✓Withdrawal amount
pay_type✓BKASH, NAGAD, ROCKET, UPI
{
  "mchId": "merchant123",
  "out_trade_no": "WD001",
  "money": "500",
  "pay_type": "BKASH",
  "currency": "BDT",
  "account": "01XXXXXXXXX",
  "userName": "John Doe",
  "notify_url": "https://yourdomain.com/payout_callback",
  "sign": "..."
}

Success Response

{"code":200,"message":"success","data":{"out_trade_no":"WD001","amount":"500","status":"processing","transaction_id":"POUT123"}}

Payment Callback

POST JSON to notify_url
Callbacks are sent as application/json with POST. Return exactly "ok".

✅ Success Callback

{"status":"success","out_trade_no":"ORD001","mchId":"merchant","pay_money":250,"real_amount":245,"merchant_rate":2,"currency":"BDT","timestamp":1703123456,"transaction_id":"TXN123","sign":"..."}

❌ Failed Callback

{"status":"failed","out_trade_no":"ORD001","mchId":"merchant","pay_money":250,"timestamp":1703123456,"message":"Payment failed","sign":"..."}

Payout Callbacks

// Success: {"status":"success","out_trade_no":"WD001","amount":500,"real_amount":500,"currency":"BDT","type":"payout","transaction_id":"POUT123","sign":"..."}
// Failed: {"status":"failed","out_trade_no":"WD001","amount":500,"currency":"BDT","type":"payout","message":"Insufficient balance","sign":"..."}
// Handler example
$data = json_decode(file_get_contents('php://input'), true);
if ($data['status'] === 'success') { echo "ok"; } else { echo "fail"; }

Error Codes

0 Success
5 Signature error
6 Order exists
7 Order not found
9 Insufficient balance
11 Channel maintenance
16 IP not whitelisted
400 Bad request
401 Unauthorized

Live Tester

Click to generate signature