Error Codes
Error Codes
Every response carries an error_code. error_code == 0 means success; any
other value indicates a failure. Determine success from error_code, not from
the HTTP status code alone.
| error_code | Meaning | Description | Suggested handling |
|---|---|---|---|
0 | Success | — | — |
90000 | Invalid parameters | Missing required field, empty EVM payout note, sign_mode not waas, missing X-Idempotency-Key, invalid email, missing or inconsistent allowlist fields, invoice missing payer / due_date, return_url that is not an https URL with a host, or an address-book chain_type that is empty or whitespace. | Fix the request parameters and retry. |
90001 | Unauthorized | Authentication failed or merchant identity is missing. | Check your API Key and signature. |
90102 | Merchant profile incomplete | Invoice PDF needs a merchant name and login email, and one of them is missing. | Finish the merchant profile in Console, then download again. |
90111 | Invalid receiving chain | receiving_network is not supported, the receiving address is not bound to the chain, an allowlisted chain is invalid, or an address-book chain_type is not evm, solana, or tron after alias normalization (eth / ethereum, sol, trx). | Correct the chain. |
90112 | Wallet not found | Address is not a hosted wallet on your account (receiving_address on payin, source_wallet / source_address / refund_from_address on payout and refund). | Use an address from List wallets. |
90120 | Invalid receiving token | The token (symbol + contract address) is not supported, an allowlisted token is invalid, or an update sent a receiving chain without the token pair. | Correct the receiving token / allowlist. |
90129 | Address book group limit | The merchant already has 20 address groups. | Delete a group before creating another. |
90130 | Address book entry limit | The group would exceed 100 addresses, or one request sent more than 500 raw entries. | Split the import or remove addresses. |
90131 | Address group not found | group_id does not exist on this merchant. | Use an id from List groups. |
90132 | Address entry not found | entry_id does not exist on this merchant. | Read the group detail and use an entry_id from it. |
90133 | Invalid address book address | The address does not match the group's chain_type (evm, solana, or tron). | Fix the address or use another group. |
90134 | Duplicate address book address | Updating one entry would collide with another address in the same group. Create and append skip duplicates instead of returning this code. | Keep the existing entry or change the address. |
90201 | Resource not found | The payin order, Payment Link, or Invoice id is not on your account. For refunds this includes passing a refund_id where an ord_… id is required. | Use an id you created. |
90207 | Insufficient balance | Hosted wallet cannot cover the refund payout plus fees. | Top up the paying wallet and quote again. |
90209 | Edit locked | A Payment Link update changed a locked amount or receiving field, or an Invoice update ran while edit_state.code is FULLY_LOCKED. | Read edit_state and send only editable fields, or create a new resource. |
90210 | Refund not allowed | Payin is not success, already fully refunded, or otherwise not refundable. | Pick a paid order with remaining refundable balance. |
90211 | Invalid refund amount | Quote refund_amount is malformed, exceeds order amount − successful refunds, or was omitted after a successful partial refund (omit means original order amount, not the remainder). | Send a valid amount, or quote with Get Refund Info refundable_amount. |
90214 | Invalid refund address | An address-collected payin quote omitted refund_to_address, sent an address for the wrong chain, or sent the order's collect address. | Send a destination on the refund target chain. Wallet-collected orders ignore this field. |
90212 | Refund quote expired | Prepare used an expired quote session. | Call quote again; use the new refund_id. |
90213 | Pending refund exists | The order already has an in-flight refund, or prepare echoed a different refund_id. | Wait for the pending refund to finish, or continue that refund_id. |
90309 | Security check failed | Risk-control headers on create/prepare, or transaction / merchant-stamp verification on authorize. | Retry with the latest param_json; confirm the origin key. |
90604 | Invalid merchant stamp | Stamp failed, echoed param_json / TRX raw_txs do not match step ②, or waas_timestamp is not the value folded into merchant_sign (including outside the ±60 second window). | Echo param_json byte-for-byte; on TRX payouts also echo create raw_txs. Sign the SHA-256 of param_json, a vertical bar, and waas_timestamp. |
90605 | Origin key missing | No origin key is bound for this merchant. | Bind the origin key in Console. |
90606 | Missing merchant stamp | merchant_sign is empty. | Send Base64(Ed25519). |
80000 – 80099 | System error | The service is temporarily unavailable or hit an internal error. | Retry later; if it persists, contact support with the trace. |
note
80000–80099are transient or internal server-side errors. Clients do not need to distinguish specific values — treat them as retryable system errors.msgis for troubleshooting only and is not meant to be shown to end users. When reporting an issue, include thetracevalue.