Skip to content

Pakistan Payout

Merchant API prefix: /api/v1/merchant. Auth: Signature.

Country & currency

countryCode and currency are inferred from your merchant account. Do not send them on create.

notifyUrl

notifyUrl is for platform → merchant notifications only. See Webhook guide.

Create payout

Creates a Pakistan payout. On success, freezes wallet netAmount (amount + fee).

Endpoint

ItemValue
MethodPOST
Path/api/v1/merchant/payout/create

Request body

FieldTypeRequiredNotes
merchantOrderNostringyesUnique
amountstring/numberyesBeneficiary amount
bankCodestringyesUppercase channel code; see payout bankCode enum
payee_realnamestringyesPayee name
payee_accountstringyesBank account or wallet number
payee_mobilestringrecommendedPayee mobile
payee_emailstringrecommendedPayee email
payee_id_nostringrecommendedPayee ID (CNIC)
notifyUrlstringnoCompletion webhook; falls back to default callbackUrl
remarkstringnoRemark
extJsonobjectnoExtensions; do not use metadata

Deprecated fields

Do not send countryCode, currency, metadata, or legacy receiverName, receiverAccount, receiverBankCode, receiverBankName, receiverPhone.

Compatibility

The legacy bankName field is still accepted for compatibility, but it is ignored for routing, fee matching, and upstream requests. New integrations should send bankCode only.

Payee field rules

bankCode typePrimary fieldNotes
Wallet (JAZZCASH, EASYPAISA)payee_mobilepayee_account may duplicate wallet number
Bank (all other codes)payee_accountpayee_mobile still recommended

Full bankCode list: Appendix.

Response data

FieldNotes
orderNoPlatform order id (PO prefix)
merchantOrderNoYour order id
amount / feeAmount / netAmountAmount strings
payoutTaskIdLinked payout task (P2P mode)
statusMay be created, processing, market_available, etc.
createdAtCreated time

Request example (wallet)

json
{
  "merchantOrderNo": "PKPAYOUT20260622001",
  "amount": "500.00",
  "bankCode": "JAZZCASH",
  "payee_realname": "Ali Khan",
  "payee_account": "03001234567",
  "payee_mobile": "03001234567",
  "payee_email": "pay@example.com",
  "payee_id_no": "8220296123456",
  "notifyUrl": "https://merchant.example.com/pk/payout/cb",
  "remark": "payout",
  "extJson": {}
}

Request example (bank)

json
{
  "merchantOrderNo": "PKPAYOUT20260622002",
  "amount": "50000.00",
  "bankCode": "HBL",
  "payee_realname": "Ali Khan",
  "payee_account": "0123456789012",
  "payee_mobile": "03001234567",
  "payee_email": "pay@example.com",
  "payee_id_no": "4220112345678",
  "notifyUrl": "https://merchant.example.com/pk/payout/cb",
  "extJson": {}
}

cURL example

bash
API_BASE="https://api.soranopro.com"
BODY='{"merchantOrderNo":"PKPAYOUT20260622001","amount":"500.00","bankCode":"JAZZCASH","payee_realname":"Ali Khan","payee_account":"03001234567","payee_mobile":"03001234567","payee_email":"pay@example.com","payee_id_no":"8220296123456","notifyUrl":"https://merchant.example.com/pk/payout/cb","extJson":{}}'

curl -X POST "${API_BASE}/api/v1/merchant/payout/create" \
  -H "Content-Type: application/json" \
  -H "X-Merchant-No: M42" \
  -H "X-Timestamp: 1718198400" \
  -H "X-Nonce: $(uuidgen)" \
  -H "X-Sign: ${SIGN}" \
  -d "${BODY}"

Response example

json
{
  "code": 0,
  "msg": "ok",
  "data": {
    "orderNo": "PO20260622120000999999",
    "merchantOrderNo": "PKPAYOUT20260622001",
    "amount": "500.00",
    "feeAmount": "5.00",
    "netAmount": "505.00",
    "status": "processing",
    "createdAt": "2026-06-22T14:00:00Z"
  }
}

Common errors

msg (example)Cause
merchant balance insufficientInsufficient wallet balance
merchant order no already existsDuplicate merchantOrderNo
upstream bank mapping not foundUnsupported bankCode

Check merchant wallet before create: balance >= netAmount.

Query payout

ItemValue
MethodGET
Path/api/v1/merchant/payout/query

Query: orderNo or merchantOrderNo.

Webhook (completed)

See Webhook guide.

On status=completed, platform POSTs to notifyUrl or default callbackUrl.

json
{
  "orderType": "payout",
  "orderNo": "PO20260622120000999999",
  "merchantOrderNo": "PKPAYOUT20260622001",
  "status": "completed",
  "amount": "500.00",
  "feeAmount": "5.00",
  "netAmount": "505.00",
  "completedAt": 1718198400
}

Respond HTTP 200 + body OK.

Order status

statusNotes
createdCreated
market_availableListed on task market (P2P)
processingIn progress
completedPaid + webhook
failedFailed
cancelledCancelled, freeze released

Released under the MIT License.

2-1-2 Nihonbashi-Hongokucho,Chuo-ku,Tokyo