> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ramphub.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

Use this page when code looks right but the integration still fails in staging or production.

> **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-key` is 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`, and `fiatCurrency` match a supported corridor.
* For buy quotes, send `fiatAmount` and omit `tokenAmount`.
* For sell quotes, send `tokenAmount` and omit `fiatAmount`.
* 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 `bankCode` and `accountNumber` are correct.
* Use `bankName` only 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-status` only when a callback is delayed or the user refreshes.
* Do not guess settlement state locally.
