Quidax Developer API: Error Reference
This error reference follows the API Reference categories and endpoint names. Errors are grouped by endpoint and include the HTTP status, application error code where present, error message, and meaning.
Messages containing {placeholders} include variable values such as IDs, currencies, amounts, limits, or failure reasons. English messages are shown where available. Wording may vary by language or payment provider. The trading IP-list error is marked as an English translation because its API message is in Chinese.
Error responses
Base URL: https://openapi.quidax.io/exchange-open-api/api/v1
Endpoint paths are relative to this base URL. Protected endpoints require Authorization: Bearer <api_key>. Use me for the parent account, or the ID of a sub-account linked to your account.
{
"status": "error",
"message": "Reference already exists",
"data": {
"code": "110112",
"message": "Reference already exists"
}
}
Application codes are strings and differ from HTTP status codes. Check the response body even when HTTP is 200. One code can describe several failures; use the endpoint and message to understand the error.
Validation messages may name fields in camelCase even when request fields use snake_case.
Some failures return Request could not be completed. Please try again later or contact support. with the applicable error code.
A failure response or timeout does not establish whether a transaction executed. Retrieve the transaction using its existing reference or ID before deciding whether to submit another request.
API categories
User Accounts
Create a Sub-account
POST /users
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 403 | E0106 | Sorry, this operation can only be performed by accounts registered as a business with Quidax. | Caller is not a business/merchant account. |
| 409 | E0101 | A sub account with this email already exists | Email is already registered. |
| 400 | 110112 | Sub-account not created. Provide valid first name and last name | Missing/invalid name: each name must satisfy the name requirements and length 1–100. |
| 400 | E0107 | Validation failed: email: Email must not be blank | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: email: must be a well-formed email address | Must satisfy email validation. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch parent account
GET /users/me
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Edit Sub-account details
PUT /users/{user_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Sub-account update failed: first name and last name are required and cannot be empty | A name is absent or blank. |
| 400 | 110112 | Sub-account update failed. Provide valid first name and last name | Provide valid first and last names. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch all Sub-accounts
GET /users
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | E0107 | Validation failed: must be greater than or equal to 1 | Page must be at least 1; per_page must be at least 1. |
| 400 | E0107 | Validation failed: must be less than or equal to 100 | per_page must not exceed 100. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 400 | E0107 | Validation failed: {message} | A query or path value does not satisfy validation requirements. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch Details of Subaccount
GET /users/{user_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Wallets
Fetch user wallets
GET /users/{user_id}/wallets
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch user wallet
GET /users/{user_id}/wallets/{currency}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Currency {currency} not available, Please check back later | Currency is unavailable for the requested wallet or address. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch Payment Address
GET /users/{user_id}/wallets/{currency}/address
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Currency {currency} not available, Please check back later | Currency is unavailable for the requested wallet or address. |
| 404 | E0604 | Could not retrieve or assign address for currency: {currency} | Address retrieval/assignment produced no usable address. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch Payment Addresses
GET /users/{user_id}/wallets/{currency}/addresses
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Currency {currency} not available, Please check back later | Currency is unavailable for the requested wallet or address. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch Payment Address by id
GET /users/{user_id}/wallets/{currency}/addresses/{address_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Currency {currency} not available, Please check back later | Currency is unavailable for the requested wallet or address. |
| 404 | E0604 | wallet address public id is required | Address ID is missing. |
| 404 | E0604 | wallet address with public id: {address_id} doesn't exist | Deposit address cannot be found by this ID. |
| 401 | E0107 | wallet address does not belong to user | Address belongs to another user. |
| 404 | E0604 | wallet address with public id: {address_id} doesn't exist for currency: {currency} | Address exists, but its currency does not match the requested wallet. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Create Payment Address for a cryptocurrency
POST /users/{user_id}/wallets/{currency}/addresses
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Currency {currency} not available, Please check back later | Currency is unavailable for the requested wallet or address. |
| 404 | E0604 | user and currency are required | A user account and currency are required. |
| 400 | E0612 | Blockchain deposits are not available for {currency} | Currency has no supported blockchain deposit route. |
| 404 | E0604 | Unable to generate wallet address for {currency} | No usable address was returned by address generation. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Withdrawals
Fetch Withdraws
GET /users/{user_id}/withdraws
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Invalid currency: {currency} | Filter currency is unknown or unsupported. |
| 400 | 110112 | Invalid state: {state}. Allowed values: processing, done, submitted, rejected, pending, cancelled, paying, failed, all | Unsupported withdrawal state. |
| 400 | 110112 | Invalid order_by: {order_by}. Allowed values: {allowed_set} | Direction must be asc or desc; the allowed values may be displayed in either order. |
| 400 | 110112 | Invalid start_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | Invalid end_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | start_date cannot be after end_date | Range starts after it ends. |
| 400 | 110112 | date range cannot exceed 180 days | Requested history range exceeds the allowed interval. |
| 400 | 110112 | Invalid type: {type}. Supported value: internal | Non-empty type is unsupported; the accepted special filter is internal. |
| 400 | 110112 | cursor is not valid | Cursor decoding/validation fails, including incompatible cursor content. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Cancel withdrawal
POST /users/{user_id}/withdraws/{withdrawal_id}/cancel
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | withdrawal entry with the id : {withdraw_id} doesn't exist | Cancellation cannot find that crypto withdrawal. |
| 400 | 110112 | Withdrawal Cannot be cancelled, current status: {status} | The withdrawal is no longer eligible for cancellation. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch a Withdrawal
GET /users/{user_id}/withdraws/{withdrawal_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 200 | 140017 | This feature is currently disabled for you. Please stay tuned for when it is enabled | Withdrawal lookup is unavailable for this account; inspect the error body despite HTTP 200. |
| 400 | 110112 | withdrawal with id {withdraw_id} does not exist | Withdrawal cannot be found within the requested account. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
If the response body has status: "error", treat the lookup as unsuccessful even when HTTP is 200.
Create Withdrawal
POST /users/{user_id}/withdraws
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 503 | 140017 | This feature is currently disabled for you. Please stay tuned for when it is enabled | API withdrawal creation is disabled for the merchant. |
| 400 | 110112 | Reference already exists | A withdrawal already uses that reference. Retrieve the existing transaction instead of assuming a new one was created. |
| 400 | 110112 | Reference {reference} already exists | A transaction already uses this reference. Retrieve that transaction before submitting again. |
| 400 | 110112 | This feature is currently disabled for you. Please stay tuned for when it is enabled | Crypto withdrawals are disabled for this account. |
| 400 | 110112 | Currency: {currency} with network: {network} not found | Currency/network combination is unsupported. |
| 400 | 110112 | Withdrawal is not allowed for currency: {currency} with network: {network} | Withdrawals are disabled for this currency/network. |
| 400 | 110112 | Currency is required | Currency is missing or blank. |
| 400 | 110112 | Invalid currency: {currency} | Unknown currency. |
| 400 | 110112 | Network is required | Required blockchain network is missing. |
| 400 | 110112 | Cannot not withdraw fiat as crypto | Fiat currency cannot be withdrawn through the crypto withdrawal option. |
| 400 | 110112 | Amount is required | Amount is missing. |
| 400 | 110112 | Invalid amount: {amount} | Amount cannot be parsed or is non-positive in the applicable creation path. |
| 400 | 110112 | Amount is too small after applying withdrawal precision | Truncation to supported precision leaves a non-positive amount. |
| 400 | 110112 | Unable to retrieve withdrawal fee for currency: {currency} | Withdrawal fee is currently unavailable. |
| 400 | 110112 | Withdrawal failed, please check the parameters and try again. | Withdrawal could not be processed. Check the request details. |
| 400 | 110112 | Transfer unavailable. Contact Quidax Support | Transfer is unavailable. Contact support. |
| 400 | E0107 | Validation failed: currency: Currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: amount: Amount is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: amount: Amount must not use scientific notation | Provide a plain numeric amount without scientific notation. |
| 400 | E0107 | Validation failed: reference: Reference is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: fundUid: Fund UID is required | Required; cannot be empty or whitespace. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Other withdrawal and transfer rejection messages:
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Not logged-in | Account authentication could not be verified for the withdrawal. |
| 400 | 110112 | It is forbidden to withdraw coins within 24 hours after modifying the login password. | Wait until the 24-hour restriction after changing the login password has ended. |
| 400 | 110112 | After modifying the fund password, withdrawal is prohibited within 24 hours | Wait until the 24-hour restriction after changing the fund password has ended. |
| 400 | 110112 | Transfers and withdrawals are prohibited for {hours} hours after modifying security settings | Transfers and withdrawals are temporarily restricted after a security-setting change. |
| 400 | 110112 | Your leveraged account ({market}) also has arrears, please pay off the debt before you operate. | Repay the outstanding leveraged-account debt before withdrawing or transferring. |
| 400 | 110112 | Parameter error | A withdrawal or transfer parameter is invalid. |
| 400 | 110112 | An unknown currency code | The requested currency code is unknown. |
| 400 | 110112 | Temporarily unavailable | The withdrawal or transfer operation is temporarily unavailable. |
| 400 | 110112 | Exceeded the maximum number of withdrawals on the day, please operate again tomorrow | The daily number of withdrawals has reached its limit. |
| 400 | 110112 | Exceeding the limit, the maximum withdrawable amount is {maximum} | The requested amount exceeds the available withdrawal allowance. |
| 400 | 110112 | Token withdrawal lower than the minimum withdrawal limit | The amount is below the minimum withdrawal limit. |
| 400 | 110112 | Token withdrawal higher than the single withdrawal limit | The amount exceeds the single-withdrawal limit. |
| 400 | 110112 | Tick address error | The withdrawal address is invalid. |
| 400 | 110112 | Withdrawal frozen | Withdrawals are frozen for the customer or parent account. |
| 400 | 110112 | Please verify your identity first | Complete identity verification before withdrawing. |
| 400 | 110112 | KYC is not approved for withdrawal. Please complete verification. | KYC is not approved for this withdrawal. |
| 400 | 110112 | Exceeds the amount that can be withdrawn ! | The amount exceeds the customer withdrawal quota. |
| 400 | 110112 | User does not exist | The recipient account for an internal transfer does not exist. |
| 400 | 110112 | Can not transfer to yourself | The sender and recipient are the same account. |
| 400 | 110112 | Transfers between these accounts are not permitted. | The requested account-to-account transfer is not allowed. |
| 400 | 110112 | volume precision error | An internal transfer amount exceeds the supported precision. |
| 400 | 110112 | Insufficient available balance | The available balance does not cover the internal transfer. |
| 400 | 110112 | INVALID TRANSACTION AMOUNT | The transfer amount must be greater than zero. |
| 400 | 110112 | Invalid amount input, please check and try again. | The supplied internal transfer amount is invalid. |
| 400 | 110112 | The amount is not within the allowed range for this transaction. | The internal transfer amount is outside the permitted range. |
| 400 | 110112 | Failed to validate transfer. Please try again. | The internal transfer could not be validated. |
Additional payment-provider or risk-review failures return HTTP 400 / 110112 with the specific failure reason. These messages vary by provider and transaction; there is no single fixed message.
Create Bank Withdraw
POST /users/{user_id}/withdraws
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 503 | 140017 | This feature is currently disabled for you. Please stay tuned for when it is enabled | API withdrawal creation is disabled for the merchant. |
| 400 | 110112 | Reference already exists | A withdrawal already uses that reference. Retrieve the existing transaction instead of assuming a new one was created. |
| 400 | 110112 | Fiat Withdrawal Feature is not enabled | Fiat withdrawal feature is disabled. |
| 400 | 110112 | Currency is required | Currency is missing or blank. |
| 400 | 110112 | Invalid currency: {currency} | Unknown currency. |
| 400 | 110112 | Amount is required | Amount is missing. |
| 400 | 110112 | Invalid amount: {amount} | Amount cannot be parsed or is non-positive in the applicable creation path. |
| 400 | 110112 | Amount is too small after applying withdrawal precision | Truncation to supported precision leaves a non-positive amount. |
| 400 | 110112 | Unable to retrieve withdrawal fee for currency: {currency} | Withdrawal fee is currently unavailable. |
| 400 | 110112 | Transaction amount is below the minimum allowed amount of {currency} {minimum} | Amount is below configured minimum. |
| 400 | 110112 | Transaction amount is above the maximum allowed amount of {currency} {maximum} | Amount exceeds configured maximum. |
| 400 | 110112 | Withdrawal channel is unavailable for this currency. Please try again later. | Fiat withdrawals are unavailable for this currency. |
| 400 | E0107 | Validation failed: currency: Currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: amount: Amount is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: amount: Amount must not use scientific notation | Provide a plain numeric amount without scientific notation. |
| 400 | E0107 | Validation failed: reference: Reference is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: fundUid: Fund UID is required | Required; cannot be empty or whitespace. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Other fiat withdrawal rejection messages:
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Current user does not allow to withdraw {currency} currency. | The account cannot withdraw the requested fiat currency. |
| 400 | 110112 | User does not exist | The account used for this withdrawal could not be found. |
| 400 | 110112 | Set up your 2FA to continue withdrawing. | Enable two-factor authentication before withdrawing. |
| 400 | 110112 | Your withdrawal is frozen, please contact customer service | Withdrawals are frozen for the account. Contact support. |
| 400 | 110112 | We notice that you have recently changed your fund password. In order to protect your assets, you cannot withdraw fiat currency at this time. Please try again later. | Fiat withdrawals are temporarily restricted after a fund-password change. |
| 400 | 110112 | KYC not valid, please complete KYC first | Complete valid KYC before making this fiat withdrawal. |
| 400 | 110112 | Your KYC level is insufficient to perform this withdrawal | The account KYC tier does not permit this withdrawal. |
| 400 | 110112 | Withdrawal channel is currently not available, please try again later | The fiat withdrawal channel is unavailable for this account or currency. |
| 400 | 110112 | Invalid currency for fiat withdrawal | The requested currency is not valid for fiat withdrawals. |
| 400 | 110112 | Withdrawal configuration not found | Fiat withdrawals cannot currently be configured for the requested currency. Contact support. |
| 400 | 110112 | You have reached your daily withdrawal limit for fiat currency. | The daily fiat withdrawal limit has been reached. |
| 400 | 110112 | Withdrawal amount exceeds daily limit | The requested amount exceeds the remaining daily withdrawal allowance. |
| 400 | 110112 | Insufficient balance | The available balance does not cover the amount and fees. |
| 400 | 110112 | Amount have to be greater than 0 | Provide an amount greater than zero. |
| 400 | 110112 | Cannot calculate fee | The withdrawal fee could not be calculated. |
| 400 | 110112 | Pre-check failed | The withdrawal eligibility check could not be completed. |
| 400 | 110112 | Withdrawal validation failed | The withdrawal request could not pass validation. |
| 400 | 110112 | We could not process your withdrawal at this time, please try again later | The fiat withdrawal could not be processed at this time. |
| 400 | 110112 | An abnormal system, please contact the administrator. | The fiat withdrawal failed because of a service error. Contact support if it persists. |
Additional payment-provider or risk-review failures return HTTP 400 / 110112 with the specific failure reason. These messages vary by provider and transaction; there is no single fixed message.
Fetch withdraw by reference
GET /users/{user_id}/withdraws/reference/{reference}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | withdrawal with reference {reference} does not exist | Withdrawal cannot be found by this reference within the requested account. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Verify Bank Account
POST /banks/verify_account
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Withdrawal channel is unavailable for this currency. Please try again later. | Withdrawals are unavailable for this currency. |
| 400 | 110112 | Bank account validation for this bank is not available at the moment, please try again later | Bank code cannot be resolved for the selected provider. |
| 400 | 110112 | We couldn't verify the account holder's name. Please double-check the account number or try again later. | Bank account verification could not be completed. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
A payment-provider rejection can also return HTTP 400 / 110112. The message contains the specific bank-verification reason and is not fixed.
List banks
GET /banks
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Currency %s not available, Please check back later | Currency is unavailable or could not be determined for the account. |
| 400 | 110112 | Withdrawal channel is unavailable for this currency. Please try again later. | Withdrawals are unavailable for this currency. |
| 400 | 110112 | Unable to fetch banks at the moment. Please try again later. | Bank list is temporarily unavailable. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Markets
List all markets
GET /markets
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
List market tickers
GET /markets/tickers
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch a market ticker
GET /markets/tickers/{market}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch k-line for a market
GET /markets/{market}/k
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
For candle requests, use a nonnegative timestamp and a limit between 1 and 10000. The supported periods are 1, 5, 15, 30, 60, 120, 240, 360, 720, 1440, 4320, and 10080. Invalid values can return a validation failure, including Invalid value; the response format may differ from the standard error envelope.
Fetch k-line data with pending trades for a market
GET /markets/{currency}/k_with_pending_trades/{trade_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
For candle requests, use a nonnegative timestamp and a limit between 1 and 10000. The supported periods are 1, 5, 15, 30, 60, 120, 240, 360, 720, 1440, 4320, and 10080. Invalid values can return a validation failure, including Invalid value; the response format may differ from the standard error envelope.
Fetch order-book items for a market
GET /markets/{currency}/order_book
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | E0107 | Validation failed: must be greater than or equal to 1 | ask_limit and bid_limit must be at least 1. |
| 400 | E0107 | Validation failed: must be less than or equal to 200 | ask_limit and bid_limit must not exceed 200. |
| 400 | E0107 | Validation failed: {message} | A query or path value does not satisfy validation requirements. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch depth data for a market
GET /markets/{currency}/depth
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | E0107 | Validation failed: must be greater than or equal to 1 | limit must be at least 1. |
| 400 | E0107 | Validation failed: {message} | A query or path value does not satisfy validation requirements. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Markets summary
GET /markets/summary
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Trades
Trades
GET /users/{user_id}/trades
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0104 | User with id {user_id} not found | Target account could not be found. |
| 400 | E0107 | Validation failed: must be greater than or equal to 10 | limit must be at least 10. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 400 | E0107 | Validation failed: {message} | A query or path value does not satisfy validation requirements. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch recent trades for a given market pair
GET /trades/{market_pair}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Deposits
Fetch deposits
GET /users/{user_id}/deposits
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Invalid currency: {currency} | Filter currency is unknown or unsupported. |
| 400 | 110112 | Invalid state: '{state}'. Accepted values: submitting, accepted, rejected, canceled, failed, checked, pending_aml_review | Unsupported state filter in the crypto deposit path. |
| 400 | 110112 | Invalid state: '{state}'. Accepted values: submitting, accepted, failed, canceled, pending_review, pending_aml_review, rejected | Unsupported state filter in the fiat deposit path. |
| 400 | 110112 | Invalid order_by: {order_by} | Sort direction is not supported. |
| 400 | 110112 | Invalid start_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | Invalid end_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | Invalid start_date format. Use ISO-8601 date or datetime in UTC | Date filter cannot be parsed in that path. |
| 400 | 110112 | Invalid end_date format. Use ISO-8601 date or datetime in UTC | Date filter cannot be parsed in that path. |
| 400 | 110112 | start_date cannot be after end_date | Range starts after it ends. |
| 400 | 110112 | date range cannot exceed 180 days | Requested history range exceeds the allowed interval. |
| 400 | 110112 | Invalid type: {type}. Supported value: internal | Non-empty type is unsupported; the accepted special filter is internal. |
| 400 | 110112 | cursor is not valid | Cursor decoding/validation fails, including incompatible cursor content. |
| 400 | 110112 | Unable to build cursor | Pagination could not be prepared. Contact support. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch a Deposit
GET /users/{user_id}/deposits/{deposit_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Deposit not found with id: {deposit_id} | No deposit with that public ID in the target user's scope. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Fetch deposits made by sub-users
GET /users/deposits/all
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Invalid currency: {currency} | Filter currency is unknown or unsupported. |
| 400 | 110112 | Invalid state: '{state}'. Accepted values: submitting, accepted, rejected, canceled, failed, checked, pending_aml_review | Unsupported state filter in the crypto deposit path. |
| 400 | 110112 | Invalid state: '{state}'. Accepted values: submitting, accepted, failed, canceled, pending_review, pending_aml_review, rejected | Unsupported state filter in the fiat deposit path. |
| 400 | 110112 | Invalid order_by: {order_by} | Sort direction is not supported. |
| 400 | 110112 | Invalid start_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | Invalid end_date format. Use ISO-8601 date or datetime | Date filter cannot be parsed. |
| 400 | 110112 | Invalid start_date format. Use ISO-8601 date or datetime in UTC | Date filter cannot be parsed in that path. |
| 400 | 110112 | Invalid end_date format. Use ISO-8601 date or datetime in UTC | Date filter cannot be parsed in that path. |
| 400 | 110112 | start_date cannot be after end_date | Range starts after it ends. |
| 400 | 110112 | date range cannot exceed 180 days | Requested history range exceeds the allowed interval. |
| 400 | 110112 | Invalid type: {type}. Supported value: internal | Non-empty type is unsupported; the accepted special filter is internal. |
| 400 | 110112 | cursor is not valid | Cursor decoding/validation fails, including incompatible cursor content. |
| 400 | 110112 | Unable to build cursor | Pagination could not be prepared. Contact support. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Swap
Create Instant swap
POST /users/{user_id}/swap_quotation
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | from_currency does not have a valid value | Source currency is unknown or unsupported. |
| 404 | E0605 | to_currency does not have a valid value | Unknown destination currency. |
| 400 | E0107 | from_amount is required | Selected quote amount is blank. |
| 400 | E0107 | to_amount is required | Selected quote amount is blank. |
| 400 | E0107 | from_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | to_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | from_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | to_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | Validation failed: fromCurrency: from_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: toCurrency: to_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: fromAmount: from_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: toAmount: to_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: validAmount: Either from_amount or to_amount must be provided, but not both. | Exactly one amount must be supplied. |
| 400 | E0107 | Validation failed: sameCurrencies: from_currency and to_currency must be different. | Source and destination currencies must differ. |
| 400 | E0107 | Unable to create quotation: Reason: Same-currency swaps are not allowed: {currency} | A swap must use different currencies. |
| 400 | E0107 | Unable to create quotation: Reason: Swap validation failed | Quotation could not satisfy the pricing or amount requirements. |
| 400 | E0107 | Unable to create quotation: Reason: InstSwapQuoteFail | No usable quotation could be produced. |
| 400 | E0107 | Unable to create quotation: Reason: Minimum {currency} value should be above {minimum} | Amount is below configured minimum. |
| 400 | E0107 | Unable to create quotation: Reason: Please input greater {currency} value | Precision/rounding leaves an unusable amount. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Additional quotation or execution failures can return HTTP 400 / E0107. The message starts with the quotation failure wording shown above and includes the specific reason.
Confirm Instant Swap
POST /users/{user_id}/swap_quotation/{quotation_id}/confirm
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | E0107 | Unable to confirm quotation: Reason: Swap for this quotation is already in flight | A confirmation request for this quotation is already being processed. |
| 400 | E0107 | Unable to confirm quotation: Reason: Quotation used or expired | Quotation is unavailable: it may have been used, expired, or be invalid. |
| 400 | E0107 | Unable to confirm quotation: Reason: Insufficient balance | Available balance does not cover the swap. |
| 400 | E0107 | Unable to confirm quotation: Reason: Failed to process quotation | Quotation could not be processed. Contact support if the problem persists. |
| 400 | E0107 | Unable to confirm quotation: Reason: Swap quotation not found | Quotation is unavailable. |
| 400 | E0107 | Unable to confirm quotation: Reason: An error occurred while confirming swap | Confirmation result could not be retrieved. Check the transaction before submitting again. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Additional quotation or execution failures can return HTTP 400 / E0107. The message starts with the quotation failure wording shown above and includes the specific reason.
Refresh Instant Swap Quotation
POST /users/{user_id}/swap_quotation/{quotation_id}/refresh
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | from_currency does not have a valid value | Source currency is unknown or unsupported. |
| 404 | E0605 | to_currency does not have a valid value | Unknown destination currency. |
| 400 | E0107 | from_amount is required | Selected quote amount is blank. |
| 400 | E0107 | to_amount is required | Selected quote amount is blank. |
| 400 | E0107 | from_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | to_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | from_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | to_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | Validation failed: fromCurrency: from_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: toCurrency: to_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: fromAmount: from_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: toAmount: to_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: validAmount: Either from_amount or to_amount must be provided, but not both. | Exactly one amount must be supplied. |
| 400 | E0107 | Validation failed: sameCurrencies: from_currency and to_currency must be different. | Source and destination currencies must differ. |
| 400 | E0107 | Unable to refresh quotation: Reason: Same-currency swaps are not allowed: {currency} | A swap must use different currencies. |
| 400 | E0107 | Unable to refresh quotation: Reason: InstSwapQuoteFail | No usable quotation could be produced. |
| 400 | E0107 | Unable to refresh quotation: Reason: Minimum {currency} value should be above {minimum} | Amount is below configured minimum. |
| 400 | E0107 | Unable to refresh quotation: Reason: Please input greater {currency} value | Precision/rounding leaves an unusable amount. |
| 400 | E0107 | Unable to refresh quotation: Reason: Quotation not found | Quotation cannot be found for the requested account. |
| 400 | E0107 | Unable to refresh quotation: Reason: Quotation has already been confirmed | Confirmed quotation cannot be refreshed. |
| 400 | E0107 | Unable to refresh quotation: Reason: Quotation has not expired yet | Refresh is restricted to expired quotations. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Additional quotation or execution failures can return HTTP 400 / E0107. The message starts with the quotation failure wording shown above and includes the specific reason.
Fetch Swap Transaction
GET /users/{user_id}/swap_transactions/{swap_transaction_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | Swap transaction not found. | Lookup is absent or belongs to a different user. |
| 404 | E0605 | Swap transaction data not found. | Swap transaction details are unavailable. Contact support. |
| 404 | E0605 | Swap quotation data not found. | Related quotation details are unavailable. Contact support. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Get swap transactions
GET /users/{user_id}/swap_transactions
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | E0107 | Validation failed: must be greater than or equal to 1 | Page and per_page must be at least 1. |
| 400 | E0107 | Validation failed: must be less than or equal to 100000 | Page must not exceed 100000. |
| 400 | E0107 | Validation failed: must be less than or equal to 100 | per_page must not exceed 100. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 400 | E0107 | Validation failed: {message} | A query or path value does not satisfy validation requirements. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Temporary swap quotation
POST /users/{user_id}/temporary_swap_quotation
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | E0605 | from_currency does not have a valid value | Source currency is unknown or unsupported. |
| 404 | E0605 | to_currency does not have a valid value | Unknown destination currency. |
| 400 | E0107 | from_amount is required | Selected quote amount is blank. |
| 400 | E0107 | to_amount is required | Selected quote amount is blank. |
| 400 | E0107 | from_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | to_amount must be a valid number | Selected amount cannot be parsed. |
| 400 | E0107 | from_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | to_amount must be greater than zero | Amount is zero or negative. |
| 400 | E0107 | Validation failed: fromCurrency: from_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: toCurrency: to_currency is required | Required; cannot be empty or whitespace. |
| 400 | E0107 | Validation failed: fromAmount: from_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: toAmount: to_amount must be a valid number | Must match plain unsigned decimal syntax. |
| 400 | E0107 | Validation failed: validAmount: Either from_amount or to_amount must be provided, but not both. | Exactly one amount must be supplied. |
| 400 | E0107 | Validation failed: sameCurrencies: from_currency and to_currency must be different. | Source and destination currencies must differ. |
| 400 | E0107 | Unable to refresh quotation: Reason: Same-currency swaps are not allowed: {currency} | A swap must use different currencies. |
| 400 | E0107 | Unable to refresh quotation: Reason: Swap validation failed | Quotation could not satisfy the pricing or amount requirements. |
| 400 | E0107 | Unable to refresh quotation: Reason: InstSwapQuoteFail | No usable quotation could be produced. |
| 400 | E0107 | Unable to refresh quotation: Reason: Minimum {currency} value should be above {minimum} | Amount is below configured minimum. |
| 400 | E0107 | Unable to refresh quotation: Reason: Please input greater {currency} value | Precision/rounding leaves an unusable amount. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 400 | E0107 | Validation failed: {field}: {message} | A request-body field does not satisfy validation requirements. Multiple errors may be joined with commas. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Additional quotation or execution failures can return HTTP 400 / E0107. The message starts with the quotation failure wording shown above and includes the specific reason.
Order
Create a sell or buy order
POST /users/{user_id}/orders
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Missing required parameter: volume | Volume is blank. |
| 400 | 110112 | Missing required parameter: market | Market is blank. |
| 400 | 110112 | Invalid market symbol: {market}; Invalid symbol: {symbol} | Market is unknown or unavailable. |
| 400 | 110112 | Invalid order side: {side} | Side is not recognized. |
| 400 | 110112 | Invalid order type: {type} | Order type is not recognized. |
| 400 | 110112 | Missing required parameter: price for limit order | Limit order has no price. |
| 400 | 110112 | This action is temporarily unavailable. | Trading is temporarily unavailable. |
| 400 | 110112 | Transactions are frozen | Trading is restricted for this account. |
| 400 | 110112 | The pair does not support market trading | Market orders are disabled for the pair. |
| 400 | 110112 | The maximum limit for positions has been exceeded | Position/holding rule rejects the order. |
| 400 | 110112 | The user is not on the allowed IP list | English translation of the Chinese API message. The request IP is not permitted for this trading operation. |
| 400 | 110112 | You have exceeded the maximum number of open orders ({limit}) | Open-order count limit exceeded. |
| 400 | 110112 | The order price is outside the allowable range: {percentage} | Limit price exceeds allowed deviation from reference price. |
| 400 | 110112 | The order price is outside the allowable range | Price/market-deviation guard rejects execution. |
| 400 | 110112 | Insufficient available balance. | Spendable balance does not cover the order. |
| 400 | 110112 | Order quantity exceeds the maximum limit. | Quantity exceeds configured order cap. |
| 400 | 110112 | Order frequency exceeded. | Trading frequency limit exceeded. |
| 400 | 110112 | Order creation failed, try again later. | Order could not be created. Check its status before submitting again. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 400 | 110112 | Request body is missing or unreadable | Send a valid JSON body in the expected format. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Additional order validation or processing failures return HTTP 400 / 110112 with the specific rejection reason.
Get all orders
GET /users/{user_id}/orders
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Get an order details
GET /users/{user_id}/orders/{order_id}
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 404 | 110043 | Order with ID: {order_id} doesn't exist | Order cannot be found or is not accessible to the requested account. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Cancel an order
POST /users/{user_id}/orders/{order_id}/cancel
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | exchange_lock | Trading is restricted for this account. |
| 404 | 110043 | Order with ID: {order_id} doesn't exist | Order cannot be found or is not accessible to the requested account. |
| 400 | 110112 | Unable to verify order | Order could not be verified for cancellation. Contact support. |
| 400 | 110112 | You can cancel the order only after {hours} hours. | Pair/user policy imposes a cancellation delay. |
| 400 | 110112 | Order cancellation failed | Cancellation could not be completed; the message provides the reason. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 404 | E0104 | Sub-account with ID: {user_id} doesn't exist | Account does not exist or is not accessible to this merchant. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Cancellation can also return HTTP 400 / 110112 with a transaction-specific failure reason.
Fees
Get crypto withdrawal fees
GET /users/me/fee_rule
| HTTP status | Error code | Error message | Meaning |
|---|---|---|---|
| 400 | 110112 | Currency is required | Currency is missing or blank. |
| 400 | 110112 | Currency: {currency} with network: {network} not found | Unknown coin/network combination. |
| 400 | 110112 | Unable to retrieve withdrawal fee for currency: {currency} with network: {network} | Withdrawal fee is currently unavailable. |
| 400 | 110112 | User is required | A target account is required. |
| 400 | 110112 | Amount must be greater than 0 | Amount is zero or negative. Provide a positive amount. |
| 401 | E0107 | Invalid api key | Authorization is missing or invalid, or the API key is disabled. |
| 401 | E0107 | api access blocked | Account API access is blocked and the block has not expired. |
| 401 | E0107 | ip not allowed | IP enforcement is enabled and the request IP is not permitted for the token. |
| 401 | E0107 | User not authenticated | Authentication is required for this operation. |
| 500 | E0000 | Internal server error | Request could not be completed. Contact support if the problem persists. |
| 503 | E0000 | Service temporarily unavailable. Please try again later. | Service is temporarily unavailable. |
| 504 | E0000 | Something went wrong. Please try again later. | Request timed out. |
| Other 4xx | May be absent | Response depends on the request failure | Missing query parameters, invalid query/path types, unsupported methods or content types, and unknown routes may use a different response format. |
Updated 6 days ago

