Error codes are grouped by business flow because Payment, Crypto Withdrawal, and Fiat Payout use different endpoints and response semantics.
| Business flow | API scope | Error behavior |
|---|---|---|
| Payment (Acquiring) | /v1/acquiring/* | Uses the standard code, message, and optional detail response |
| Crypto Withdrawal | /v2/funds/withdraw* | Core business errors can use HTTP 200 with a non-zero application code |
| Fiat Payout | /v2/payouts* | Returns a stable data.error identifier and a data.retryable hint |
These codes apply to order, payment, and subscription operations documented in Acquiring API Documentation.
Minimum amount: Crypto acquiring orders must be greater than
0.1. Fiat payment methods (card, Apple Pay, and Google Pay) require an amount of at least16.
Code | Description |
|---|---|
| 400 | Invalid request parameters |
| 40001 | request_id must be a valid UUID |
| 40002 | Invalid expiration time: expires_at must be in the future |
| 40003 | amount must be positive |
| 40004 | Amount supports up to 6 decimal places |
| 40005 | Missing expires_in parameter |
| 40006 | amount must be greater than 0.1 |
| 40007 | Chain or token not in supported list |
| 40008 | success_url does not meet specifications |
| 40009 | failure_url does not meet specifications |
| 40010 | Invalid amount: no matching payment method was found |
| 40013 | Payment methods not enabled: the requested payment methods are not available for this merchant, or the merchant only has Pay With Card enabled but the amount is too small |
Code | Description |
|---|---|
| 401 | Authentication failed or invalid signature |
Code | Description |
|---|---|
| 403 | Request rejected by policy |
| 46001 | KYC verification required to create this payment |
Code | Description |
|---|---|
| 404 | Object does not exist |
| 40401 | Order does not exist |
| 40402 | Payment does not exist |
Code | Description |
|---|---|
| 40901 | request_id duplicate |
| 40902 | client_reference duplicate |
| 40903 | An active payment already exists; use it or wait for it to expire |
| 40904 | Payment processing, cannot create a new payment |
| 40905 | Token unauthorized to operate this order |
| 40906 | Order expired |
| 40907 | Order completed or expired, cannot create payment |
| 40908 | Cannot create payment due to a pending payment |
| 40909 | An ongoing on-ramp order already exists for this order |
| 40910 | Amount is below the minimum allowed for Pay With Card |
| 40911 | Amount is above the maximum allowed for Pay With Card |
| 40912 | Your region is not supported for purchase |
Code | Description |
|---|---|
| 500 | Internal exception; contact the support team |
These codes apply to organization crypto withdrawals documented in Fund API Documentation.
Code | HTTP Status | Description |
|---|---|---|
401 | 401 | The application could not authenticate the API key |
403 | 403 | The API key lacks fund.withdraw, the IP whitelist rejected the request, or withdrawal is disabled for the selected chain/token pair |
30001 | 200 | The core withdrawal configuration rejected the selected token |
30002 | 200 | The organization's source fund account does not exist |
30003 | 200 | The source account's available balance is insufficient |
30005 | 200 | The amount exceeds the remaining daily withdrawal limit |
30007 | 200 | The amount is below the minimum or is not greater than the applicable fees |
30012 | 200 | No withdrawal fee configuration is available for the selected chain/token pair |
30013 | 400 or 200 | A request parameter is invalid, such as the UUID, chain/token pair, amount, precision, source currency, or wallet address |
30022 | 200 | The destination is an internal Infini address; use an internal transfer instead |
30023 | 200 | The usable balance is insufficient after accounting for locked or reserved funds |
30034 | 200 | source_currency is USD, but the organization does not have a USD Cash Account |
80016 | 200 | A required asset price or exchange rate is temporarily unavailable |
500 | 500 | An unexpected internal or downstream service error occurred |
Core fund-service errors use the standard application envelope and may have HTTP 200 even when code is non-zero. HMAC failures rejected by the gateway may not include an application error code.
These codes apply to bank-account payouts documented in Fiat Payout API Documentation. This summary uses code for program control. See the detailed Payout API table for data.error, endpoint scope, and retryability metadata.
Code | HTTP Status | Description |
|---|---|---|
30013 | 400 | A request field is missing, malformed, unsupported, or inconsistent. Correct the field and submit again. |
401 | 401 | HMAC or application authentication failed. Check the API key, signature, date, digest, and signed request target. |
403 | 403 | The API key lacks the required permission, the IP policy rejected the request, or the organization cannot access the resource. |
40302 | 403 | The organization does not have a USD payout account. |
404 | 404 | The quote_id or payout_id does not exist for the authenticated organization. |
409 | 409 | The client_reference_id was already used with different business data. Use a new reference for a different logical payout. |
40901 | 409 | The quote has already been consumed. Request a new quote. |
40902 | 409 | The quote is no longer active. Request a new quote. |
40903 | 409 | Another payout submission is executing for the organization. Retry with a short randomized delay. |
40904 | 409 | The USD payout account configuration is inconsistent. Contact Infini support. |
42201 | 422 | The selected amount_mode and fee_paid_by combination is unsupported. |
42202 | 422 | The quote expired. Request a new quote; do not retry the expired quote_id. |
42204 | 422 | Quote calculation or its bound destination snapshot is temporarily unavailable. Request a new quote after a short delay. |
42205 | 422 | The amount exceeds the supported payout amount. Lower the amount. |
42206 | 422 | sending_amount must be greater than 100 USD. Increase the amount. |
42207 | 422 | The organization's available USD balance is insufficient for sending_amount. Add funds before creating another payout. |
42208 | 422 | The payout would exceed the account's shared daily withdrawal limit. Wait for the next limit window or lower the amount. |
100014 | 503 | Payout execution or provider liquidity is temporarily unavailable. Retry later with the same client_reference_id for the same logical payout. |
500 | 500 | An unexpected internal error occurred. Retry safely; if it persists, contact Infini support with the request ID. |