Payout API
The technical guide for senangPay's Payout API feature. For authorised merchants only.
This API is available only to authorised Enterprise Package merchants. Please contact our support team to whitelist your server’s outgoing IP address.
- Payout payee limit: 1000
- Payout max. amount per bank account: RM 100,000.00
- Payout min. amount per bank account: RM10.00
- Daily cutoff time: 11:45 pm MYT

1. Endpoint
| Item | Endpoint |
| Production | https://api.senangpay.my/payout_api |
2. Authorisation header (Basic Auth)
|
Type |
Parameter |
|
Username |
<your-merchant-id> As listed on the profile settings page. |
|
Password |
None, leave empty |
3. Request parameter (JSON)
|
hash |
A string hashed with your secret key (from your profile setting page) with SHA256 in the following format: <secret-key><merchant-id><timestamp> *without the < > character |
|
timestamp |
1676620609 |
|
callback_url (optional) |
Specify a url for file response after payout API submission E.g: https://myweb.com/payout |
|
order_id (optional) |
Merchant specified unique ID E.g: 1129933 |
|
data |
“data”: [{ “Name”: “John”, “Email”: “banking@merchant.com”, “Bank Name”: “Maybank”, “eBanker Code”: “MBBEMYKL”, “Account Number”: 1234535647, “Account Type”: 1, “Amount”: 120 }] ● Account Type value: 1 – Saving Account 2 – Current Account |
4. Response Parameter (JSON)
A. No authentication provided
|
Parameter |
Value |
|
status |
0 |
|
msg |
Invalid Merchant |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
B. Invalid request parameter
|
Parameter |
Value |
|
status |
0 |
|
msg |
Depends on the request parameter |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
C. Timestamp more than 60 seconds
|
Parameter |
Value |
|
status |
0 |
|
msg |
Request timed out |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
D. Mass payment feature disabled
|
Parameter |
Value |
|
status |
0 |
|
msg |
Merchant mass payment feature is not enabled |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
E. Invalid hash
|
Parameter |
Value |
|
status |
0 |
|
msg |
Invalid hash |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
F. Invalid merchant
|
Parameter |
Value |
|
status |
0 |
|
msg |
Invalid Merchant |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
G. Cut-off time
|
Parameter |
Value |
|
status |
0 |
|
msg |
Cut-off date exceeded. |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
H. Failed to insert batch
|
Parameter |
Value |
|
status |
0 |
|
msg |
Failed to create Mass Payment Batch. |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
I. Batch already exists
|
Parameter |
Value |
|
status |
0 |
|
msg |
Too many requests. Please try again later. |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
J. Failed to insert payment data
|
Parameter |
Value |
|
status |
0 |
|
msg |
Failed to create Mass Payment List. |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
K. Empty array data
|
Parameter |
Value |
|
status |
0 |
|
msg |
Failed, Empty Data Provided |
|
ref_number |
|
|
order_id |
|
|
total_count |
|
|
total_amount |
L. Success
|
Parameter |
Value |
|
status |
1 |
|
msg |
Success |
|
ref_number |
1155742H_BULKDUITNOW2_10810_20230328_HH_051727 |
|
order_id |
xxxxx |
|
total_count |
20 |
|
total_amount |
500.00 |
5. Callback Response
You will receive a response post parameter if you send ‘callback_url’ together with the request body.
The response data will be sent within 45 minutes of a successful Payout API transaction.
6. Response Parameter for callback
|
Parameter |
value |
|
status |
2 (pending) 1(success) 0(failed) |
|
message |
*description if any* Possible messages: “Please check details of Payee #” “File Rejected” |
|
ref_number |
23577_20230327_HH_065830 |
|
order_id |
xxxxxx |
|
total_amount |
100.00 |
|
total_count |
5 |
|
hash |
xxxxxxxxxxxx |
7. Verify callback hash
- String to be hashed:
$str, {secret_key}{ref_number}{status}
hash_hmac(‘SHA256′, $str, {secret_key})
Bank eBanker Codes
1. This refers to the list of supported banks for payout.
2. The eBanker Code parameter to be included in your request body is as follows:
| Bank | eBanker code |
| Affin Bank Berhad | PHBMMYKL |
| Alliance Bank Malaysia Berhad | MFBBMYKL |
| AL-Rahji | RJHIMYKL |
| Ambank Malaysia Berhad | ARBKMYKL |
| Bank Islam Malaysia Berhad | BIMBMYKL |
| Bank Kerjasama Rakyat Malaysia Berhad | BKRMMYKL |
| Bank Muamalat Malaysia Bhd | BMMBMYKL |
| Bank of America (M) Berhad | BOFAMY2X |
| Bank of China (M) Berhad | BKCHMYKL |
| Agrobank | AGOBMYKL |
| Bank Simpanan Nasional Berhad | BSNAMYK1 |
| Bank of Tokyo-Mitsubishi UFJ (M) Berhad | BOTKMYKX |
| BNP Paribas Malaysia Berhad | BNPAMYKL |
| CIMB Bank Berhad | CIBBMYKL |
| Citibank Berhad | CITIMYKL |
| Deutsche Bank (Malaysia) Berhad | DEUTMYKL |
| Hong Leong Bank Berhad | HLBBMYKL |
| HSBC Bank Malaysia Berhad | HBMBMYKL |
| Indsutrial and Commercial Bank of China (M) Berhad | ICBKMYKL |
| JP Morgan Chase Bank Berhad | CHASMYKX |
| Kuwait Finance House | KFHOMYKL |
| Maybank Berhad | MBBEMYKL |
| Mizuho Bank (Malaysia) Berhad | MHCBMYKA |
| OCBC Bank Berhad | OCBCMYKL |
| Public Bank Berhad | PBBEMYKL |
| RHB Bank Berhad | RHBBMYKL |
| Standard Chartered Bank Malaysia Berhad | SCBLMYKX |
| Sumitomo Mitsui Banking Corporation (M) Berhad | SMBCMYKL |
| United Overseas Bank Berhad (UOB) | UOVBMYKL |
| MBSB Bank Berhad | AFBQMYKL |
| Finexus Cards Sdn. Bhd. | FNXSMYNB |
| Touch ‘n Go eWallet | TNGDMYNB |
| China Construction Bank (M) Berhad | PCBCMYKL |
8. Payout and Withdrawal Terms
Payout and withdrawal arrangements are subject to the commercial terms determined during the merchant onboarding or offering process by the senangPay Commercial team.
Merchants may withdraw funds to their registered bank accounts by submitting the required bank details. Up to five (5) personal bank accounts can be registered for withdrawal purposes. Further details will be provided during the merchant onboarding process.