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

# Get Deposit Swap Quote

> Returns a swap quote for converting a given input amount into the deposit's settlement currency. Use this to show merchants swap rates and expected receive amounts before a customer pays.

<Info>
  **Note:** When using the production environment at [moonpay.hel.io](http://app.hel.io), set your API endpoint to `api.hel.io/v1` and generate API keys there. For the development environment, use `api.dev.hel.io/v1` and generate API keys from [moonpay.dev.hel.io](http://app.dev.hel.io).
</Info>

<Warning>
  **Constraints:**

  The destination currency is derived from the deposit and should not be provided. `fromCurrencyId` must differ from the settlement currency, and swaps must occur on the same blockchain, as cross-chain quotes are not supported. Quotes expire 30 seconds after issuance. No API key is required, but the endpoint is rate-limited.
</Warning>


## OpenAPI

````yaml POST /v1/deposits/{depositId}/swap-quote
openapi: 3.0.0
info:
  title: Helio Open API
  description: |-
    API schema and definitions for Helio API. <br/> 
          The API is using two types of Authentication, for dashboard endpoints we use <b>JSON Web Token (JWT)</b> that is generated by self custodial wallet signing a message from API.</br> 
          We also support authentication with <b>API Key and Secret</b> which can be generated on <a href='https://hel.io'>Helio dashboard</a>.
  version: 1.0.0
  contact: {}
servers:
  - description: Helio API (Mainnet)
    url: https://api.hel.io
  - description: Helio API (Devnet)
    url: https://api.dev.hel.io
security: []
tags:
  - name: Webhooks
  - name: Exports
  - name: Currencies
    description: >-
      Supported currencies endpoint, includes fiat and digital assets
      </br><i>Authentication: </i><b>None</b>
externalDocs:
  description: Helio product documentation
  url: https://docs.hel.io/
paths:
  /v1/deposits/{depositId}/swap-quote:
    post:
      tags:
        - Deposits
      summary: Get Deposit Swap Quote
      description: >-
        Returns a swap quote for converting a given input amount from
        `fromCurrencyId` into the deposit's settlement currency. The settlement
        currency is derived server-side from the deposit configuration (exactly
        one currency on the deposit). Use this to surface swap rates and
        expected receive amounts to merchants before a customer pays. Quotes
        expire 30 seconds after issue. Cross-chain swaps are not supported;
        `fromCurrencyId` and the deposit settlement currency must be on the same
        blockchain. No API key is required; this endpoint is rate-limited.
      operationId: DepositController_getSwapQuote
      parameters:
        - name: depositId
          in: path
          required: true
          description: The unique ID of the deposit.
          schema:
            type: string
          example: 6a0b1bb21ce2a93f5c1a4dbe
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDepositSwapQuote'
            example:
              fromCurrencyId: 63430c8348c610068bcdc482
              amountIn: '1000000'
              senderAddress: 5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1
              slippageBps: 100
      responses:
        '200':
          description: Swap quote retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepositSwapQuoteResponse'
              examples:
                swapQuote:
                  summary: Example swap quote response
                  value:
                    fromCurrency:
                      id: 63430c8348c610068bcdc482
                      symbol: ETH
                      name: Ethereum
                      decimals: 18
                      mintAddress: '0x0000000000000000000000000000000000000000'
                      coinMarketCapId: 1027
                      symbolPrefix: ''
                      type: DIGITAL
                      blockchain:
                        id: bc-base
                        name: Base
                        symbol: BASE
                        engine:
                          id: engine-evm
                          name: EVM
                    toCurrency:
                      id: 63430c8348c610068bcdc483
                      symbol: USDC
                      name: USD Coin
                      decimals: 6
                      mintAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
                      coinMarketCapId: 3408
                      symbolPrefix: ''
                      type: DIGITAL
                      blockchain:
                        id: bc-base
                        name: Base
                        symbol: BASE
                        engine:
                          id: engine-evm
                          name: EVM
                    amountIn: '1000000'
                    amountOutGross: '950000'
                    amountOutNet: '940500'
                    platformFeeBps: 50
                    platformFeeAmount: '4750'
                    affiliateFeeBps: 50
                    affiliateFeeAmount: '4750'
                    slippageBps: 100
                    exchangeRate: 0.95
                    estimatedPriceImpact: 0.001
                    expiresAt: '2026-05-14T13:58:13.608Z'
        '400':
          description: >-
            Invalid request or business rule violation (e.g. deposit disabled,
            same currency as settlement, cross-chain not supported, deposit has
            no or multiple settlement currencies).
          content:
            application/json:
              examples:
                depositDisabled:
                  summary: Deposit is disabled
                  value:
                    statusCode: 400
                    message: Deposit is disabled.
                    error: Bad Request
                noSwapNeeded:
                  summary: fromCurrencyId matches settlement currency
                  value:
                    statusCode: 400
                    message: >-
                      fromCurrencyId matches the deposit settlement currency —
                      no swap needed.
                    error: Bad Request
                crossChain:
                  summary: Cross-chain not supported
                  value:
                    statusCode: 400
                    message: >-
                      Cross-chain swap quotes are not yet supported on this
                      endpoint; fromCurrency and the deposit settlement currency
                      must be on the same blockchain.
                    error: Bad Request
        '422':
          description: Unable to fetch a swap quote from the routing provider at this time.
          content:
            application/json:
              examples:
                quoteUnavailable:
                  summary: Routing provider failure
                  value:
                    statusCode: 422
                    message: Unable to fetch swap quote at this time.
                    error: Unprocessable Entity
      security: []
components:
  schemas:
    CreateDepositSwapQuote:
      type: object
      description: Request body for fetching a deposit swap quote.
      required:
        - fromCurrencyId
        - amountIn
        - senderAddress
      properties:
        fromCurrencyId:
          type: string
          description: >-
            Currency ID the payer will send. Must differ from the deposit
            settlement currency. Retrieve available IDs via the Get Deposit
            Currencies endpoint.
        amountIn:
          type: string
          description: >-
            Input amount in fromCurrency base units as a positive int64 string,
            e.g. "1000000" = 1 USDC.
        senderAddress:
          type: string
          description: Wallet address used as the swap sender for routing.
        slippageBps:
          type: integer
          description: >-
            Slippage tolerance in basis points (1 bps = 0.01%). Forwarded to the
            routing provider.
          default: 100
    DepositSwapQuoteResponse:
      type: object
      description: >-
        Swap quote for converting an input amount into the deposit settlement
        currency.
      required:
        - fromCurrency
        - toCurrency
        - amountIn
        - amountOutGross
        - amountOutNet
        - platformFeeBps
        - platformFeeAmount
        - affiliateFeeBps
        - affiliateFeeAmount
        - slippageBps
        - expiresAt
      properties:
        fromCurrency:
          allOf:
            - $ref: '#/components/schemas/Currency'
          description: >-
            Enriched input currency. Same shape as items returned by GET
            /v1/currency/all.
        toCurrency:
          allOf:
            - $ref: '#/components/schemas/Currency'
          description: >-
            Enriched deposit settlement currency, derived server-side from the
            deposit.
        amountIn:
          type: string
          description: >-
            Input amount in `fromCurrency` minimal units, echoed from the
            request.
        amountOutGross:
          type: string
          description: >-
            Quoted output in `toCurrency` minimal units before Helio platform
            and affiliate fees.
        amountOutNet:
          type: string
          description: >-
            Net amount the merchant will receive after platform and affiliate
            fees (amountOutGross − platformFeeAmount − affiliateFeeAmount,
            floored at 0).
        platformFeeBps:
          type: integer
          description: Helio platform fee in basis points (1 bps = 0.01%).
        platformFeeAmount:
          type: string
          description: Helio platform fee amount in `toCurrency` minimal units.
        affiliateFeeBps:
          type: integer
          description: Affiliate fee in basis points, if any (otherwise 0).
        affiliateFeeAmount:
          type: string
          description: Affiliate fee amount in `toCurrency` minimal units.
        slippageBps:
          type: integer
          description: >-
            Slippage tolerance in basis points, echoed from the request (or the
            default of 100).
        exchangeRate:
          type: number
          description: >-
            Reported exchange rate (amountOut / amountIn). Informational; not
            used in settlement.
        estimatedPriceImpact:
          type: number
          description: Estimated price impact for the route (percentage). Informational.
        expiresAt:
          type: string
          format: date-time
          description: >-
            ISO-8601 timestamp after which this quote should not be relied upon
            (30 seconds from issue time).
    Currency:
      type: object
      properties:
        blockchain:
          $ref: '#/components/schemas/Blockchain'
        id:
          type: string
        symbol:
          type: string
        name:
          type: string
        mintAddress:
          type: string
        coinMarketCapId:
          type: number
        decimals:
          type: number
        minDecimals:
          type: number
        symbolPrefix:
          type: string
        order:
          type: number
        type:
          enum:
            - FIAT
            - DIGITAL
          type: string
        features:
          type: array
          items:
            type: string
            enum:
              - PAYMENT_PRICING
              - PAYMENT_RECIPIENT
              - SWAP
        iconUrl:
          type: string
      required:
        - blockchain
        - id
        - symbol
        - name
        - mintAddress
        - coinMarketCapId
        - decimals
        - order
    Blockchain:
      type: object
      properties:
        engine:
          $ref: '#/components/schemas/BlockchainEngine'
        id:
          type: string
        name:
          type: string
        symbol:
          type: string
          enum:
            - SOL
            - ETH
            - POLYGON
            - BASE
            - BITCOIN
      required:
        - engine
        - id
        - name
        - symbol
    BlockchainEngine:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - EVM
            - SOL
            - BTC
      required:
        - id
        - type

````