
# Error codes

JSON payload error:

```json
{
  "code": -4000,
  "msg": "Please contact the administrator."
}
```

Errors consist of two parts: an error code and a message. The code is standardized, while the message may vary.

## 40xx—Broker-related errors

### -4000 SYSTEM_ERROR
- Try again later, or contact customer support.

### -4001 UNKNOWN_ERROR
- System error, retry later.

### -4002 BROKER_NOT_BROKER_ACCOUNT
- Not a broker account, no permission.

## 43xx—Broker sub-account errors

| Error code | HTTP status | Description |
|:-----------|:------------|:------------|
| -4300 | 500 | Broker service error. Try again later. |
| -4301 | 400 | Parameter validation failed. |
| -4302 | 400 | Email domain is not on the broker's allowlist. |
| -4303 | 400 | End-user limit exceeded. |
| -4304 | 400 | Email already exists. |
| -4305 | 400 | An IP allowlist is required when enabling non-read-only permissions. |
| -4306 | 400 | Invalid referral code. |
| -4307 | 404 | User not found. |
| -4308 | 403 | The target user does not belong to the requesting partner. |
| -4309 | 400 | API key limit exceeded. |
| -4310 | 400 | The IP allowlist cannot contain more than 10 IP addresses. |
| -4311 | 404 | API key not found. |
| -4312 | 403 | The current IP is not on the allowlist for broker API access. |

## 24xx—Wallet errors

| Error code | HTTP status | Description |
|:-----------|:------------|:------------|
| -2400 | 400 | Invalid wallet request parameters. |
| -2401 | 429 | Too many requests. Try again later. |
| -2402 | 503 | Wallet service is temporarily unavailable. Try again later. |
| -2403 | 400 | User not found. |
| -2404 | 403 | Withdrawals are restricted for 24 hours after multiple incorrect fund password attempts. |
| -2405 | 403 | Withdrawals are restricted for 24 hours after security settings are changed. |
| -2406 | 403 | Operation restricted. |
| -2407 | 503 | User service error. Try again later. |
| -2408 | 403 | Operation is not allowed for the current user. |
| -2409 | 503 | Wallet system error. Try again later. |
| -2410 | 400 | Invalid wallet parameters. |
| -2411 | 400 | Wallet parameter validation failed. |
| -2412 | 400 | Asset not supported. |
| -2413 | 400 | Insufficient balance. |
| -2414 | 400 | Withdrawal amount is below min. |
| -2415 | 400 | Withdrawal amount is insufficient to cover the fee. |
| -2416 | 400 | Withdrawal limit exceeded. |
| -2417 | 400 | Withdrawals are not enabled for this asset or network. |
| -2418 | 400 | Address does not belong to this user. |
| -2419 | 400 | Order under review. |
| -2420 | 400 | Invalid withdrawal address. |
| -2421 | 403 | Identity verification is required for the current IP. |
| -2422 | 500 | Wallet returned an unmapped error. |
| -2423 | 503 | Wallet service unavailable due to a timeout, network error, or deserialization error. |
| -2424 | 500 | Wallet returned successfully with empty data. |
| -2425 | 403 | API access restricted. |
| -2426 | 403 | User account is frozen. |
| -2427 | 403 | Wallet operation failed after identity verification. |
| -2428 | 403 | Identity verification is required for this account. |
| -2430 | 503 | Asset network configuration is unavailable. |
| -2431 | 400 | Asset not supported: coin does not exist. |
| -2432 | 400 | The network is not supported for the specified asset. |
| -2433 | 400 | Deposits are not enabled for the specified asset or network. |
| -2434 | 400 | Withdrawals are not enabled for the specified asset or network. |
| -2435 | 400 | `addressTag` is required for this asset network. |
| -2436 | 400 | Withdrawal address validation failed. |
| -2437 | 400 | Withdrawal amount is below the min. for this network. |
| -2438 | 400 | `accountList` contains an unsupported account type. |
| -2439 | 400 | Invalid `clientWithdrawId` format. |
| -2440 | 400 | Recipient UID for the internal transfer does not exist. |

## Asset transfer errors

| Error code | HTTP status | Description |
|:-----------|:------------|:------------|
| -1140 | 400 | Missing required parameter, invalid account type, or `transferCoinId` is not a positive integer. |
| -1160 | 400 | Amount precision exceeds the precision configured for the asset. |
| -2442 | 500 | Asset transfer failed. |
| -2443 | 503 | Asset transfer is processing. Retry with the same `bizId`. |
| -2444 | 400 | Source and destination accounts are the same. |
| -2445 | 409 | `bizId` has already been used with different request parameters. |
| -2446 | 400 | Legacy spot accounts are not supported. Use `SPOT`. |
| -2447 | 400 | Invalid `bizId` format. |
