Fiat Withdrawal
Withdraw fiat from your BLOX wallet balance to a linked bank account.
POST /v1/wallet/fiat/withdraw
Initiate a withdrawal to your bank account.
Authentication
This endpoint requires API Key + RFC 9421 Signature.
| Header | Required | Description |
|---|---|---|
blox-api-key | Yes | Your API key |
Content-Type | Yes | application/json |
Content-Digest | Yes | SHA-256 hash of request body |
Signature-Input | Yes | RFC 9421 signature parameters |
Signature | Yes | RFC 9421 cryptographic signature |
Request Body
{
"bankAccountId": "ba_clxyz1234567890abcdef",
"amount": 50000,
"reference": "WD-2026-0001",
"note": "Monthly settlement"
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
bankAccountId | string (UUID) | Yes | ID of the linked bank account |
amount | integer | Yes | Amount in cents (min 1000 = 10.00, max 100000000 = 1,000,000.00) |
reference | string | No | Your reference ID (max 32 chars) |
note | string | No | Internal note for this withdrawal |
Response
Success Response (201 Created)
{
"id": "wd_clxyz1234567890abcdef",
"status": "CREATED",
"type": "FIAT_WITHDRAWAL",
"amount": "50000",
"currency": "MYR",
"bankAccount": {
"id": "ba_clxyz1234567890abcdef",
"bankName": "Maybank",
"accountNumber": "****1234",
"accountHolder": "Your Company Sdn Bhd"
},
"reference": "WD-2026-0001",
"createdAt": "2026-01-16T10:30:00.000Z",
"estimatedArrival": "2026-01-17T17:00:00.000Z"
}Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique withdrawal ID |
status | string | Current withdrawal status |
type | string | Transaction type (FIAT_WITHDRAWAL) |
amount | string | Amount to withdraw (in cents) |
currency | string | Currency (MYR) |
bankAccount | object | Destination bank account |
bankAccount.id | string | Bank account ID |
bankAccount.bankName | string | Bank name |
bankAccount.accountNumber | string | Masked account number |
bankAccount.accountHolder | string | Account holder name |
reference | string | Your reference ID |
createdAt | string | ISO 8601 creation timestamp |
estimatedArrival | string | Estimated bank arrival time |
Withdrawal Status Values
| Status | Description |
|---|---|
CREATED | Withdrawal request received |
PROCESSING | Withdrawal in progress |
PENDING | Sent to bank, awaiting credit |
COMPLETED | Successfully deposited to bank |
FAILED | Withdrawal failed |
REJECTED | Rejected (compliance or bank issue) |
List Bank Accounts
Get your linked bank accounts to use for withdrawals.
GET /v1/wallet/bank-accountsAuthentication
This endpoint requires API Key only (no signature required for GET requests).
Example Request
curl "https://api.blox.my/v1/wallet/bank-accounts" \
-H "blox-api-key: $BLOX_API_KEY"Response
{
"data": [
{
"id": "ba_clxyz1234567890abcdef",
"bankName": "Maybank",
"accountNumber": "****1234",
"accountHolder": "Your Company Sdn Bhd",
"status": "ACTIVE"
}
]
}Error Responses
Insufficient Balance (400)
{
"statusCode": 400,
"error": "Bad Request",
"message": "Insufficient balance",
"details": {
"available": "25000",
"requested": "50000"
}
}Invalid Bank Account (400)
{
"statusCode": 400,
"error": "Bad Request",
"message": "Bank account not found or inactive"
}Limit Exceeded (400)
{
"statusCode": 400,
"error": "Bad Request",
"message": "Daily withdrawal limit exceeded",
"details": {
"dailyLimit": "5000000",
"usedToday": "4800000",
"available": "200000"
}
}Example
Create Withdrawal
curl -X POST "https://api.blox.my/v1/wallet/fiat/withdraw" \
-H "blox-api-key: $BLOX_API_KEY" \
-H "Content-Type: application/json" \
-H "Content-Digest: sha-256=:$CONTENT_DIGEST:" \
-H "Signature-Input: sig1=(@method @path content-digest content-type);created=$TIMESTAMP;keyid=\"$KEY_ID\";alg=\"ed25519\"" \
-H "Signature: sig1=:$SIGNATURE:" \
-d '{
"bankAccountId": "ba_clxyz1234567890abcdef",
"amount": 50000,
"reference": "WD-2026-0001"
}'Check Withdrawal Status
Use the wallet transactions endpoint to check withdrawal status:
curl "https://api.blox.my/v1/wallet/transactions" \
-H "blox-api-key: $BLOX_API_KEY"Processing Timeline
| Stage | Timeline |
|---|---|
| Request to processing | Immediate |
| Sent to bank | Same business day (before 5 PM) |
| Bank credit | T+1 working day |
Requests after banking hours (5 PM MYT) or on weekends are processed on the next working day.
Limits
| Limit Type | Standard | Business |
|---|---|---|
| Minimum | RM 10 | RM 10 |
| Per Transaction | RM 50,000 | RM 500,000 |
| Daily | RM 50,000 | RM 500,000 |
| Monthly | RM 500,000 | RM 5,000,000 |
Last updated