The technical guide for senangPay's Payout API feature. For authorised merchants only.d
This API is restricted to authorised merchants only. Please request to whitelist your server's outgoing IP address from our support team.
- 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 |
A. Payout Charges
1. Each Payout is to be charged 0.7% of the amount for every single payout.
2. If the single payout amount is less than RM 143.00, a minimum of RM 1.00 will be charged.
B. Withdrawal to own account
1. To initiate withdrawal to your own bank accounts without charges, please submit these details to our team:
- Bank Account Number
- Bank Account Type (savings or current)
- Bank Code
- Bank Beneficiary Name
*You can submit up to five (5) of your own accounts.
2. The system does not validate Name against the bank account, as long as the bank account number is correct.