Sandbox Testing
The sandbox does not send money to banks. It simulates the bank results. The last 4 digits of the beneficiary destination set the result. The destination is the account number of a bank beneficiary, or the proxyValue of a DuitNow proxy beneficiary. A proxy payout and a bank payout have the same test results. For example, a payout to a mobile number that ends in 1111 is reversed.
Base URL
https://api.sandbox.blox.my
Test Account Suffixes
Account number or proxyValue ends with | Result |
|---|---|
| All other digits | The payout settles (SETTLED) in about 20 seconds. |
1111 | The bank reverses the payout before settlement (REVERSED). The full amount returns to your prefund balance. |
2222 | The payout settles. About 2–3 minutes later, the bank returns it (RETURNED). |
3333 | The payout stays INITIATED. It does not settle. |
9999 | The bank rejects the account. Beneficiary creation and inline payouts return 400 INVALID_REQUEST, with or without nameCheck. |
8888 | The bank has a different name. With nameCheck (strict or loose), the request returns 400 BENEFICIARY_NAME_MISMATCH. Without nameCheck, the beneficiary is registered without verification. |
7777 | The bank has your name with different word breaks (ACME SDN BHD becomes ACMESDNBHD). nameCheck: "strict" fails, and the message tells you that "loose" passes. "loose" passes. Without nameCheck, the beneficiary is registered as verified. A difference in punctuation only does not cause a strict failure. |
These suffixes operate at each bank check: POST /v1/payouts/beneficiaries, POST /v1/payouts/beneficiaries/{id}/verify, and POST /v1/payouts with an inline beneficiary. A payout to a beneficiary that passed the bank check settles in the same way as a payout with any other suffix.
Prefund Funding
A top-up that you create in the dashboard completes automatically after about 10 seconds.
To simulate a failed FPX payment, use an amount with a sen value that ends in 99 (for example, RM100.99). The top-up completes as failed, and BLOX does not add the amount to your balance.
End-to-end Test Script
1. Fund
- Create a
RM50,000top-up in the dashboard (Payouts → Top up). - Wait about 10 seconds.
- Send
GET /v1/payout/prefund/balance. Make sure thatavailableis"5000000".
2. Successful payout
Send POST /v1/payouts to an account that ends in a suffix that is not in the table, for example 0000.
- You get
payout.created(INITIATED), thenpayout.updated(SETTLED) in about 20 seconds.
3. Reversal
Send POST /v1/payouts to an account that ends in 1111.
- You get
payout.created(INITIATED), thenpayout.updated(REVERSED). - All of the amount that BLOX debited from your prefund balance returns, including the fee.
4. Return after settlement
Send POST /v1/payouts to an account that ends in 2222.
- You get
payout.created(INITIATED), thenpayout.updated(SETTLED). About 2 minutes later, you getpayout.updated(RETURNED). netAmountreturns to your prefund balance. BLOX keeps the fee.
5. Pending payout
Send POST /v1/payouts to an account that ends in 3333.
- You get only
payout.created(INITIATED). The payout does not settle.
6. Failed funding
Create a top-up of RM100.99 in the dashboard. After about 10 seconds, make sure that the balance did not change.