Payout API
Tips
Payout API is used to initiate transfer requests to e-wallets or bank accounts.
- All requests are
Post
requests, and the data format isjson
Brief Description
- None
Request URL
/v1/payproPK/payout
Request Method
- POST
Header
Header | Required | Type | Description |
---|---|---|---|
merchantNo | Yes | string | None |
Request Body Parameters
Parameter Name | Required | Type | Description |
---|---|---|---|
tradeNo | Yes | string | Unique identifier (recommended format: YYYYMMDDHHMMSS + random number) |
amount | Yes | string | Payment amount (no decimals allowed, minimum amount is 1 PKR) |
name | Yes | string | Recipient's name |
customerCert | Yes | string | Recipient's identification number (CNIC - 13 digits - format XXXXX-YYYYYY-Z) with strong validation |
Yes | string | Recipient's email | |
mobile | Yes | string | Payer's mobile number (10-digit number starting with 3) with strong validation |
accountType | Yes | string | Recipient's account type (BANK or WALLET) |
bankName | Yes | string | Bank name code, see the bank support list (real verification required) |
bankNumber | Yes | string | Recipient's bank account number (real verification required) |
notifyUrl | Yes | string | Asynchronous callback URL |
remark | Yes | string | Request remarks |
timestamp | Yes | string | Timestamp (e.g., 1715941383720) |
sign | Yes | string | Generate the sign by sorting the body fields alphabetically to form key1=value1key2=value2, then use the app secret as salt for MD5 encryption; the final sign should be in lowercase. |
Example of Request Parameters
{
"amount": "5000",
"tradeNo": "order67890",
"name": "Jane Doe",
"customerCert": "1730123456789",
"email": "[email protected]",
"mobile": "3115112345",
"accountType": "BANK",
"bankName": "ALLIED_BANK_LIMITED",
"bankNumber": "9876543210",
"notifyUrl": "https://yourcallbackurl.com/notify",
"remark": "Payment for invoice #1001",
"timestamp": "1730057564",
"sign": "xxxx"
}
Response Result
Parameter Name | Required | Type | Description |
---|---|---|---|
msg | Yes | string | Request result (when returning "success", it only indicates that this request was successful; it should not be used for merchant-side logic judgment) |
code | Yes | string | Request response code (when returning "0000", it only indicates that this request was successful; it should not be used for merchant-side logic judgment). For specific error codes, please refer to the business error code enumeration. |
timestamp | Yes | string | Transaction timestamp |
success | Yes | string | Transaction result |
data | Yes | Object | Returned object |
data.platFormTradeNo | Yes | string | paypro transaction number, unique |
data.status | Yes | string | Request result; merchants can use it for logical processing. When the result is "0000", it indicates that the transaction is successful; "0015" indicates processing; all others are error codes and can be treated as failures. |
data.desc | Yes | string | Error description |
data.remark | Yes | string | Content returned from the request (returned as is) |
Example of Successful Return
{
"msg": "success",
"code": "0000",
"data": {
"platFormTradeNo": "dxy6779lhk4vofur",
"remark": "Payment for invoice #1001",
"status": "0015",
"desc": "CREATED"
},
"success": true,
"timestamp": 1731656734898
}