How to use this page Start at the top and move downward. Most failures are either auth, payload shape, or a callback/recovery issue.
Authentication fails
- Confirm
x-api-keyis on every developer request. - Keep the API key on your server only.
- Match test keys to sandbox traffic and live keys to live traffic.
- If you rotated the key, update the backend environment and redeploy.
Quote or order creation returns no route
- Confirm
side,asset,chain, andfiatCurrencymatch a supported corridor. - For buy quotes, send
fiatAmountand omittokenAmount. - For sell quotes, send
tokenAmountand omitfiatAmount. - If the quote still fails, check the provider list in the catalog response.
Callback URL is rejected
- Use a public
https://URL only. - Do not use
localhost, private IPs, private hostnames, or placeholder domains. - Make sure the callback host is reachable from the internet.
- If you are testing locally, use a public tunnel or a staging host.
Bank resolution fails
- Confirm
bankCodeandaccountNumberare correct. - Use
bankNameonly as an optional helper. - Resolve the bank again right before you create the sell order.
Webhooks do not arrive
- Verify the receiver accepts public POST requests.
- Verify the signature against the raw request body.
- Keep delivery handling idempotent.
- Persist the delivery id so retries do not double-apply the same event.
Status stays pending
- Treat webhooks first.
- Use
monitor-statusonly when a callback is delayed or the user refreshes. - Do not guess settlement state locally.