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

# Quote a deposit

> POST /deposit/quote - price a cross-chain deposit and get a routable quote.

Prices a cross-chain deposit for a given source, destination, and amount. The quote
it returns is the input to [`/deposit/transaction`](/api-reference/deposit-transaction).

## Request

<ParamField body="source" type="object" required>
  Where the funds come from.

  <Expandable title="source">
    <ParamField body="address" type="string" required>
      The user's EVM wallet address on the source chain.
    </ParamField>

    <ParamField body="chain" type="number" required>
      Source chain id (e.g. `10` for Optimism, `42161` for Arbitrum).
    </ParamField>

    <ParamField body="token" type="string" required>
      The source token contract address on the source chain (e.g. USDC).
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="destination" type="object" required>
  Where the funds land.

  <Expandable title="destination">
    <ParamField body="address" type="string" required>
      The recipient EVM address. In the non-custodial flow this is the user's own
      wallet.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="amount" type="string" required>
  Amount to deposit, as a decimal string in the source token's smallest unit
  (e.g. `"5000000"` = 5 USDC).
</ParamField>

<ParamField body="method" type="string" required>
  Funding method. Only `"crypto"` is supported in the preview.
</ParamField>

## Response

<ResponseField name="provider" type="string">
  Opaque identifier for the route source. Treat it as a black box and pass it back
  unchanged to `/deposit/transaction` and `/deposit/status`.
</ResponseField>

<ResponseField name="outAmount" type="string">
  The amount that will be delivered at the destination, as a decimal string in the
  destination token's smallest unit (USDC).
</ResponseField>

<ResponseField name="validUntil" type="number">
  Optional. Unix timestamp (seconds) after which the quote may no longer be valid.
</ResponseField>

<ResponseField name="payload" type="object">
  Opaque route data. Do not inspect or modify it - pass the whole quote object back
  to `/deposit/transaction`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "$RHEON_API/deposit/quote" \
    -H "Content-Type: application/json" \
    -d '{
      "source": {
        "address": "0x1111111111111111111111111111111111111111",
        "chain": 10,
        "token": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85"
      },
      "destination": {
        "address": "0x2222222222222222222222222222222222222222"
      },
      "amount": "5000000",
      "method": "crypto"
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "provider": "rheon-router",
    "outAmount": "4986000",
    "validUntil": 1720800000,
    "payload": { "route": "..." }
  }
  ```

  ```json 400 no_route theme={null}
  {
    "error": {
      "code": "no_route",
      "message": "No route available for this pair."
    }
  }
  ```
</ResponseExample>

## Errors

| HTTP | `code`            | When                                                            |
| ---- | ----------------- | --------------------------------------------------------------- |
| 400  | `invalid_request` | A field is missing or malformed, or `method` is not `"crypto"`. |
| 400  | `no_route`        | No provider can route this source/destination pair.             |
| 429  | `rate_limited`    | Over the rate limit (5 requests / 10s / IP).                    |
| 500  | `internal`        | Unexpected server error.                                        |
