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

# Deposit Quote

<div className="venue-tags" aria-label="Supported venues">
  <span className="venue-tag">Hyperliquid</span>
  <span className="venue-tag">Polymarket</span>
</div>

Issues a short-lived, server-authenticated quote for an enabled multi-step deposit route.

## Endpoint

```text theme={null}
POST /info
```

## Request Body

| Parameter        | Type   | Description                                                                |
| ---------------- | ------ | -------------------------------------------------------------------------- |
| `type`\*         | string | Must be `"protocolTransferQuote"`                                          |
| `user`\*         | string | User account address, e.g., `"0x3333333333333333333333333333333333333333"` |
| `source`\*       | object | Exact first-step source returned by `protocolTransferRoutes`               |
| `destination`\*  | object | Exact final destination returned by `protocolTransferRoutes`               |
| `sourceAmount`\* | string | Base-unit amount, e.g., `"100000000"` for 100 USDC                         |

```json theme={null}
{
  "type": "protocolTransferQuote",
  "user": "0x3333333333333333333333333333333333333333",
  "source": {
    "kind": "hyperliquid",
    "dex": "",
    "asset": "0x00012710"
  },
  "destination": {
    "kind": "chain",
    "networkId": "eip155:137",
    "address": "0x2222222222222222222222222222222222222222",
    "asset": "0x800101c011a7e12a19f7b1f670d46f03b03f3342e82dfb"
  },
  "sourceAmount": "100000000"
}
```

`100000000` base units is 100 USDC.

## Response

<Tabs sync={false}>
  <Tab title="200: Quote">
    ```json theme={null}
    {
      "quote": {
        "terms": {
          "schemaVersion": 1,
          "quoteNonce": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
          "transferId": "0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
          "userAddress": "0x3333333333333333333333333333333333333333",
          "authorizationDomain": "notional:mainnet",
          "fundingAsset": "0x00012710",
          "issuedAt": 1785254400000,
          "expiresAt": 1785254460000,
          "steps": [
            {
              "source": {
                "kind": "hyperliquid",
                "dex": "",
                "asset": "0x00012710"
              },
              "destination": {
                "kind": "chain",
                "networkId": "eip155:999",
                "address": "0x1111111111111111111111111111111111111111",
                "asset": "0x800201b88339cb7199b77e23db6e890353e22632ba630f"
              },
              "sourceAmount": "100000000",
              "expectedDestinationAmount": "100000000",
              "minimumDestinationAmount": "100000000"
            },
            {
              "source": {
                "kind": "chain",
                "networkId": "eip155:999",
                "address": "0x1111111111111111111111111111111111111111",
                "asset": "0x800201b88339cb7199b77e23db6e890353e22632ba630f"
              },
              "destination": {
                "kind": "chain",
                "networkId": "eip155:137",
                "address": "0x2222222222222222222222222222222222222222",
                "asset": "0x800101c011a7e12a19f7b1f670d46f03b03f3342e82dfb"
              },
              "sourceAmount": "100000000",
              "expectedDestinationAmount": "99500000",
              "minimumDestinationAmount": "99000000",
              "provider": {
                "providerQuoteId": "quote-example",
                "statusLookupCommitment": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
                "paymentInstruction": {
                  "networkId": "eip155:999",
                  "depositAddress": "0x4444444444444444444444444444444444444444",
                  "asset": "0x800201b88339cb7199b77e23db6e890353e22632ba630f",
                  "amount": "100000000"
                },
                "fees": [],
                "expiresAt": 1785254460000
              }
            }
          ]
        },
        "mac": "0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
      }
    }
    ```
  </Tab>

  <Tab title="429: Rate Limited">
    ```json theme={null}
    {
      "error": "Protocol transfer quote rate limit exceeded",
      "code": "BACKPRESSURE",
      "timestamp": 1785254400000
    }
    ```
  </Tab>

  <Tab title="503: Unavailable">
    ```json theme={null}
    {
      "error": "Protocol transfer quotes are unavailable",
      "code": "SERVICE_UNAVAILABLE",
      "timestamp": 1785254400000
    }
    ```
  </Tab>
</Tabs>

The values above illustrate the response shape. Quote amounts, addresses, identifiers, and
timestamps are generated by the active deployment.

## Quote Semantics

* Quotes expire 60 seconds after issuance.
* `expectedDestinationAmount` is informational.
* `minimumDestinationAmount` is the enforced lower bound for completing that step.
* All step and fee amounts are unsigned integers in the asset's smallest unit. USDC and pUSD use 6
  decimals, so `"1000000"` means 1 USDC or 1 pUSD.
* `mac` is an authentication code that lets the server detect any change to `terms`.
* The transfer is attributed to `terms.userAddress`; that same user must sign execution.

<Warning>
  Preserve the entire `quote` object. Do not edit, omit, recalculate, or replace any term before
  putting it in `executeProtocolTransfer`.
</Warning>

## Errors

* `400`: malformed request, unsupported route, amount below the provider minimum, or a deposit that
  exceeds the configured risk limit.
* `429`: the quote limit was reached. The current limits are 10 quotes per user per minute and 60
  quotes globally per minute.
* `503`: protocol transfers, the quote provider, or quote capacity are temporarily unavailable.
  At most 16 quote requests are processed at once.
