The Quidax API uses standard HTTP status codes to indicate whether a request succeeded or failed.

Error CodeStatusMeaningCommon CausesFix
400Bad requestYour request is missing a required field or contains an invalid value. We couldn't process it as sent.Missing currency, amount, or fund_uid on a withdrawal
Unsupported currency ticker (e.g. usdc misspelled or not in the allowed list)
Sending a market order without specifying the market pair
Providing amount as a number instead of a string
Check all required body and path params against the endpoint's spec
Verify the currency ticker is in the supported currencies list
Ensure amount is passed as a string (e.g. "0.0001")
401UnauthorizedWe could not authenticate the request. Your API key is missing, invalid, or has been revoked.Authorization header not set or malformed (must be Bearer )
Using a test key against the production base URL or vice versa
API key has been regenerated on the dashboard but old key is still in use
Set the header exactly as Authorization: Bearer s3cr3tk3y
Regenerate your key from the Quidax developer dashboard if it may have been compromised
Never expose your key client-side — always call from your server
403ForbiddenYour key is valid, but the authenticated account doesn't have permission to perform this specific action.Attempting to withdraw from or manage a sub-account that doesn't belong to your master account
Trying to cancel an order or withdrawal that belongs to a different user
Using a sub-account key to perform master-account-only actions
Use me as user_id for master account actions; use the actual sub-account ID for sub-account actions
Confirm the sub-account was created under the authenticated master account
404Not FoundThe resource you requested doesn't exist — either the ID is wrong or the record was never created.Fetching a withdrawal, order, or swap using an ID that doesn't exist or belongs to another account
Requesting a wallet for a currency that hasn't been initialised yet for that sub-account
Looking up a payment address before one has been generated (addresses are created on demand)
For payment addresses, call the Fetch Payment Address endpoint first to trigger address generation
Double-check the ID in your path params — use the id field returned in prior API responses
Ensure the resource belongs to the authenticated account making the request
429Too Many RequestsYou've exceeded the rate limit for the endpoint.Exceeding 300 requests/min across general endpoints
Exceeding 20 requests/sec on the wallet address generation endpoint (POST /wallets/{currency}/addresses)
Polling deposit or order status in a tight loop instead of using webhooks
Implement exponential backoff with retry on 429 responses
Queue and batch requests rather than sending in parallel bursts
Use webhooks (e.g. deposit.successful, withdraw.successful) instead of polling
5XXServer ErrorAn unexpected error occurred on our side. The request may have been received but the outcome is uncertain.Temporary infrastructure issues on our end
Calling over plain HTTP instead of HTTPS (causes a 301 redirect that can surface as a 5XX)
A swap quotation being confirmed after the 15-second validity window has expired
Always use https:// — non-TLS requests return 301 and can leak your API key
For swaps: confirm within 15 seconds or call Refresh Instant Swap before confirming
Retry with backoff; if it persists, contact Quidax technical support