Skip to main content

Error Codes

MixPay uses two code namespaces:

  • top-level API response code reports whether an API request was accepted;
  • payments_result.data.failureCode reports why an accepted payment order reached failed.

Do not treat them as interchangeable. failureCode is returned as a string, while the top-level API code is normally a number.

Global error response

Global error response, example:

{
"code": 10008,
"success": false,
"message": "The system is under maintenance and cannot be paid temporarily. If you have any questions, please contact customer service.",
"data": [],
"timestampMs": 1635734004508
}

API response codes

CodeMessage
-1Server error, please try again later.
2000Insufficient permissions.
404The payment link you visited does not exist.
1017Parameter error.
1429Your request frequency is too high, please try again later.
10000Mixin authorization expired.
10001User does not exist.
10002The currency does not exist or does not supported exchanging.
10003Does not support this quote asset.
10004The price is too low.
10005The price is too high.
10006The transfer amount exceeds 1000 USDT.
10007We can not provide service to you.
10008Payments are suspended temporarily due to system maintenance. Please contact customer service if you have any questions.
10009Withdrawals are suspended temporarily due to system maintenance. If you have any questions, please contact customer service.
10010Insufficient balance of assets.
10011Parameter error
10020The trace or merchant order has already completed, or is already attached to an order that cannot be recreated.
10032For the payment-cancellation endpoint, the payment cannot be cancelled in its current state; the endpoint returns HTTP 409. Other endpoints can reuse this API code with endpoint-specific meaning.
10033The same user can be added only 3 times in 24 hours.
10034Price exception, please try again later.
10035The multisigId does not belong to the token.
10036The robot does not exist.
10037This is not a robot.
10039This is not your robot and cannot be bound.
10040The robot is already bound.
10041The threshold cannot exceed the number of payees.
10042More than 20 multi-signature group bindings.
10043More than 20 robot bindings.
10044Please set the name of this multi-signature group first.
10061The callback URL must use HTTPS.
10062The requested order does not exist.
10063The requested expiration is below the accepted minimum.
10064The requested expiration exceeds the accepted maximum.
10065The trace has expired or is already in a terminal failed state and cannot create another payment.
10084The trace is not available for the requested operation.
10131The requested callback event is invalid.

The API response message is intended for diagnostics and can change. Branch on the endpoint and code together.

Payment-result failure codes

For current order-level failures, payments_result returns one of these values when data.status === "failed":

failureCodeMeaning
40000No valid payment was received before the payment deadline, or a fully recognized payment did not obtain the required confirmations before the server-side confirmation deadline.
40020A wrong payment asset was received and the payment cannot be corrected.
40024The payment deadline passed while the recognized amount was insufficient.
40025The payment could not be completed because market-volatility or settlement-loss checks failed.
40027The payment could not be completed because the requested settlement asset was restricted or unavailable under strict settlement requirements.
40032The payment was cancelled.
10095The payment was rejected during risk, compliance, or manual review.

Historical and refund-derived records can expose additional compatibility values. See the complete Failure codes section, including its unknown-code fallback guidance.

Cancellation codes

For payment cancellation, 10032 and 40032 describe different stages. 10032 is the immediate API error returned when cancellation is not allowed. 40032 is the payment-result failure code after a cancellation is accepted and the order reaches failed.

A failed result does not mean that a refund has completed. Refund and settlement processing have separate lifecycles.

Reason for refund

The following codes can appear in legacy refund flows. New payment integrations should use the payment-result table above for terminal order handling.

CodeMessage
10002This currency does not exist or is not supported for exchange.
10003The Quote currency in Memo is abnormal and not available.
10011Parameter error.
10021The payee in Memo does not support the settlement currency in Memo.
10052Settlement currency is not available in Memo.
10053The current payment currency cannot be used as quote currency.
10054The current payment currency is not available.
10055The settlement currency in Memo has been removed.
10057The current payment currency has been removed.
10056The current quote currency has been removed.
10066The payee in Memo does not support the settlement currency in Memo.
10067The payee in Memo does not support payment in the current currency.
10068The payee in Memo does not support using the current payment currency as the quote currency.
10069The current payment currency does not meet the minimum limit.
10070The current payment currency does not meet the maximum limit.
10071The current payment currency does not meet the minimum limit.
10072The current payment currency does not meet the maximum limit.
10074The payeeId is not available.
40000Payment deadline or confirmation deadline exceeded.
40001The payee does not exist in the url.
40002The asset in url does not exist or does not support exchanging.
40003The transfer amount exceeds 1000 USDT.
40005The minimum number of decimal places in url exceeds the limit.
40006The minimum number of integer digits in url exceeds the limit.
40008Insufficient balance of assets.
40009Server error.
40011The system is temporarily out of service.
40012Withdrawal methods with memo do not exist.
40013Withdrawal assets with memo do not exist.
40014The withdrawal address with memo does not exist.
40015You currently have an incomplete withdrawal, please complete it first and then try again.
40016The withdrawal amount is too large.
40017The Withdrawal amount is too small.
40018Transfer amount is too small.
40019Transfer amount is too large.
40020Wrong payment asset.
40021Double payment.
40022TraceId does not exist.
40023Payee does not exist in Memo.
40024Payment deadline passed with an insufficient amount.
40025Too much market volatility.
40027Your payment fails due to transaction restrictions on settlement assets.