Skip to content
LogoLogo

Payout Errors

All errors from the merchant API have the same body:

{ "code": "INSUFFICIENT_BALANCE", "message": "…", "requestId": "…" }

Use code to identify the error. message is text for persons, and BLOX can change it at any time. Do not parse message. BLOX uses requestId to find the request. Give the requestId to BLOX when you report a 5xx response.

A new code is not a breaking change. A change to a code, or the removal of a code, is a breaking change.

For authentication errors and the shared HTTP envelope, refer to Errors.

Codes

StatuscodeMeaning / action
400VALIDATION_FAILEDThe body does not agree with the schema. For example, the body contains both beneficiaryId and beneficiary, or neither of them. message gives the incorrect fields.
400INVALID_REQUESTThe Idempotency-Key is missing or not valid. Or, the bank rejected the beneficiary account as not valid, dormant, closed, or blocked. This check occurs at registration, on an inline beneficiary, and on the verify route. Or, the amount minus the fee is less than the RM1 minimum.
400INSUFFICIENT_BALANCEAdd funds to your prefund balance with a dashboard top-up or a bank transfer. Then send the request again.
400UNKNOWN_BENEFICIARYThe beneficiaryId does not agree with an active beneficiary on your account. Or, the inline bankCode is not in your /v1/payouts/active-banks list.
400BENEFICIARY_NAME_MISMATCHBLOX returns this code only if you sent nameCheck. The beneficiary name does not agree with the bank record at the level that you requested. BLOX never returns the name from the bank. If you requested strict and the name passes loose, message tells you. Correct the name, then send the request again with a new Idempotency-Key.
400NAME_CHECK_UNAVAILABLEYou sent nameCheck, but the bank cannot check the name for this account. The bank is not in the range of the check, or the bank returned no holder name. To register the beneficiary without verification, send the request again without nameCheck.
400LIMIT_EXCEEDEDThe payout is more than a daily or monthly payout limit of your account.
403LIMIT_EXCEEDEDYour account has the maximum number of active beneficiaries. The default maximum is 10,000. Only a new destination increases the number. An inline beneficiary with a destination that you used before does not increase it. Delete the beneficiaries that you do not pay, or ask BLOX to increase the maximum.
401UNAUTHORIZEDThe API key is missing or not known, the signature headers are missing, or the signature is not valid. A signature with a created time more than 300 seconds before or after the BLOX time is also not valid. Sign the request again with a new created value and the digest of the current body.
403FEATURE_DISABLEDPayouts are not enabled on your account. Ask BLOX for help.
403ACCOUNT_FROZEN / ACCOUNT_SUSPENDED / ACCOUNT_PENDING_VERIFICATIONThe status of your account stops all payments out of the account. Read requests continue to operate. Ask BLOX for help.
403ACCOUNT_TERMINATEDBLOX blocks all routes, including read requests.
404NOT_FOUNDThe payoutId is not known, or the payout is on a different account.
422CONFLICTYou used the Idempotency-Key before with a different body.
429RATE_LIMITEDYou sent more than 300 create requests in one minute. Wait, then send the request again.
503SERVICE_UNAVAILABLEBLOX stopped payout creation for a period. BLOX did not create a payout and did not debit your prefund balance. Send the request again later with the same Idempotency-Key. BLOX also returns this code when it cannot connect to the bank for a beneficiary check, with or without nameCheck.
5xxINTERNAL_ERRORAn unexpected error occurred at BLOX. message does not give details. Give the requestId to BLOX.

Retry guidance

ResponseRetry withWhy
401Do not retryCorrect your signature or API key first.
4xxA new Idempotency-KeyFor 24 hours, BLOX returns the same rejection for the same key.
429The same keyBLOX did not process the request.
500, 503, timeoutThe same keyThe same key prevents one create request from making two payouts.

API failures on the dashboard

The dashboard shows each 4xx response to a payout API request that changes data. You can see these responses on the payout API failures page for 30 days. Each entry shows the requestId, method, path, status, code, message, and the Idempotency-Key that you sent. The page marks a response that repeats an earlier result for the same Idempotency-Key.

You can search by requestId or Idempotency-Key, and filter by status or code. The page does not show the request body. The page does not show 401, 429, and 5xx responses. For these responses, give the requestId to BLOX.