---
title: "Get Deposit Swap Quote"
method: POST
path: "/v1/deposits/{depositId}/swap-quote"
tags: ["Deposits"]
---

# Get Deposit Swap Quote

`POST /v1/deposits/{depositId}/swap-quote`

## Request

- Base URL: `https://api.hel.io`
- URL: `https://api.hel.io/v1/deposits/{depositId}/swap-quote`
- Auth: none required

Returns a quote for funding a deposit: how much the merchant receives in the deposit's settlement currency for a given input amount, and the fees involved. The settlement currency is derived from the deposit, which must have exactly one accepted currency.

**Crypto funding** — omit `provider`. The server picks who prices the quote from the merchant's deposit wallet provider and the currency pair: `GLIDE`, `DECENT` (a swap is needed) or `HELIO` (same currency, direct sweep). Same-currency and cross-chain pairs are both supported.

**Fiat funding** — set `provider` to `MOONPAY`, `IRON` or `ONRAMPER` with that provider's required fields.

Crypto-path quotes are estimates for display; they are not locked or redeemed at settlement. No API key is required; this endpoint is rate-limited.

## Path parameters

- `depositId` string, required

## Request body

- CreateDepositSwapQuote: Request body for fetching a deposit swap quote. For crypto funding send only the common fields and omit `provider`. For fiat funding set `provider` and the fields that provider requires.
  - `fromCurrencyId` string, required: Currency ID the payer funds with. A digital currency for crypto funding (may be on a different chain from, or the same as, the deposit settlement currency), or a fiat currency for `MOONPAY` / `IRON` / `ONRAMPER`. Retrieve IDs via the Get Deposit Currencies endpoint.
  - `amountIn` string, required: Input amount in `fromCurrency` minimal units as a positive integer string, using the currency's `decimals` from GET /v1/currency/all. E.g. `"1000000"` = 1 USDC (6 decimals); fiat currencies also use minimal units, so 25 USD (6 decimals) is `"25000000"`.
  - `senderAddress` string, required: Payer wallet address. Used to plan the route on the `DECENT` path; ignored by the other providers but still required.
  - `slippageBps` integer: Slippage tolerance in basis points (1 bps = 0.01%). Forwarded to Decent; ignored elsewhere.
  - `paymentMethod` 'CRYPTO' | 'ONRAMP' | 'COINBASE' | 'BINANCE': How the deposit wallet will be funded. When the settling sweep charges a payment-method surcharge (e.g. `COINBASE` on the `GLIDE` and `HELIO` paths) the quote includes it in `paymentMethodFee*` so it matches what settles. Omitted or `CRYPTO`: no surcharge.
  - `provider` 'MOONPAY' | 'IRON' | 'ONRAMPER': Fiat provider to quote. Omit for crypto funding: requesting `GLIDE`, `DECENT` or `HELIO` returns 400. `MOONPAY` is the hosted card / wallet / bank checkout; `IRON` is a virtual bank account the payer wires to; `ONRAMPER` is an onramp aggregator (pricing preview only).
  - `depositCustomerId` string: Required for `MOONPAY`, `IRON` and `ONRAMPER`. The deposit customer the fiat purchase is delivered to; must belong to this deposit.
  - `quoteCurrencyCode` string: Required for `MOONPAY` (MoonPay currency code, e.g. `usdc_sol`) and `ONRAMPER` (Onramper crypto id, e.g. `usdc_solana`). Passed through to the provider; must match the deposit settlement asset.
  - `paymentMethodType` 'apple_pay' | 'card' | 'ach' | 'fps' | 'fps_open_banking' | 'google_pay' | 'sepa' | 'sepa_open_banking' | 'pix' | 'paypal' | 'venmo' | 'revolut_pay' | 'moonpay_balance' | 'interac': Required for `MOONPAY`. MoonPay prices per payment method.
  - `paymentMethodId` string: `MOONPAY` only. Identifies a specific saved card.
  - `accessToken` string: `MOONPAY` only. The customer's MoonPay Platform access token, held by the MoonPay web SDK after `getConnection()`. Required for an executable quote; without it (and without `sdkQuote`) the server returns a public preview price. The single-use token from the session endpoint is not accepted.
  - `sdkQuote` MoonPaySdkQuote: MOONPAY only. The quote the client already holds from the MoonPay headless SDK. When sent, the server prices from it (applying only Helio fees) instead of fetching its own quote. Decimal strings in MoonPay units: source fiat for `sourceAmount` and fees, crypto for `destinationAmount`.
    - `sourceAmount` string, required: What the customer is charged, including MoonPay fees. Must equal `amountIn` once converted to minimal units.
    - `destinationAmount` string, required: Crypto MoonPay delivers to the deposit wallet, before the Helio sweep. Must be greater than zero.
    - `moonpayFee` string
    - `ecosystemFee` string
    - `networkFee` string
    - `defiFee` string
  - `country` string: Required for `ONRAMPER`. Payer's ISO 3166-1 alpha-2 country code; ramp availability and fees vary by country.
  - `onramperPaymentMethod` string: `ONRAMPER` only. Narrows the quote to a specific Onramper payment method id. Omitted, the best available ramp/method is priced.

## Response `200`

Swap quote retrieved successfully.

- DepositSwapQuoteResponse: Quote for funding a deposit. Which optional fields are present depends on `provider` — see the provider table on the page.
  - `provider` 'GLIDE' | 'DECENT' | 'HELIO' | 'MOONPAY' | 'IRON' | 'ONRAMPER', required: Who prices (and settles) the quote. `GLIDE`, `DECENT` and `HELIO` are crypto paths chosen server-side from the merchant's deposit wallet provider and the currency pair; they cannot be requested. `MOONPAY`, `IRON` and `ONRAMPER` are fiat paths the client requests explicitly.
  - `fromCurrency` Currency, required
    - `blockchain` Blockchain, required
      - `engine` BlockchainEngine, required
        - `id` string, required
        - `type` 'EVM' | 'SOL' | 'BTC', required
      - `id` string, required
      - `name` string, required
      - `symbol` 'SOL' | 'ETH' | 'POLYGON' | 'BASE' | 'BITCOIN', required
    - `id` string, required
    - `symbol` string, required
    - `name` string, required
    - `mintAddress` string, required
    - `coinMarketCapId` number, required
    - `decimals` number, required
    - `minDecimals` number
    - `symbolPrefix` string
    - `order` number, required
    - `type` 'FIAT' | 'DIGITAL'
    - `features` string[]
    - `iconUrl` string
  - `toCurrency` Currency, required
    - `blockchain` Blockchain, required
      - `engine` BlockchainEngine, required
        - `id` string, required
        - `type` 'EVM' | 'SOL' | 'BTC', required
      - `id` string, required
      - `name` string, required
      - `symbol` 'SOL' | 'ETH' | 'POLYGON' | 'BASE' | 'BITCOIN', required
    - `id` string, required
    - `symbol` string, required
    - `name` string, required
    - `mintAddress` string, required
    - `coinMarketCapId` number, required
    - `decimals` number, required
    - `minDecimals` number
    - `symbolPrefix` string
    - `order` number, required
    - `type` 'FIAT' | 'DIGITAL'
    - `features` string[]
    - `iconUrl` string
  - `amountIn` string, required: Input amount in `fromCurrency` minimal units, echoed from the request.
  - `amountInUsd` string: Best-effort USD value of `amountIn`. Omitted when no fresh rate is available.
  - `amountOutGross` string: Quoted output in `toCurrency` minimal units before Helio fees. Absent on `GLIDE`, which reports only the post-fee amount.
  - `amountOutNet` string, required: Net amount the merchant receives after fees, in `toCurrency` minimal units. Always present.
  - `amountOutUsd` string: Best-effort USD value of `amountOutNet`. Omitted when no fresh rate is available.
  - `platformFeeBps` integer, required: Helio platform fee in basis points, excluding the affiliate portion and any payment-method surcharge.
  - `platformFeeAmount` string: Helio platform fee in `toCurrency` minimal units. Absent on `GLIDE` (see `processingFeeUsd`). On `HELIO` it can include a fixed Solana rent surcharge, so do not re-derive it from `platformFeeBps`.
  - `affiliateFeeBps` integer, required: Affiliate fee in basis points, if any (otherwise 0).
  - `affiliateFeeAmount` string: Affiliate fee in `toCurrency` minimal units. Absent on `GLIDE`.
  - `processingFeeUsd` string: Processing fee in USD (Helio platform + affiliate, plus the provider's own processing fee on fiat paths). `GLIDE`, `MOONPAY`, `IRON`, `ONRAMPER`.
  - `networkFeeUsd` string: Estimated network / gas cost in USD. `"0"` when the route is gas-sponsored. `GLIDE`, `MOONPAY`, `IRON`, `ONRAMPER`.
  - `totalFeeUsd` string: All-in fee in USD. `GLIDE`, `MOONPAY`, `IRON`, `ONRAMPER`.
  - `paymentMethodFeeBps` integer: Payment-method surcharge in basis points (e.g. 30 for a Coinbase deposit). Only when the request set `paymentMethod` and the settling sweep charges it (`GLIDE`, `HELIO`). Not included in `platformFee*`.
  - `paymentMethodFeeAmount` string: Payment-method surcharge in `toCurrency` minimal units. `HELIO` only.
  - `paymentMethodFeeUsd` string: Payment-method surcharge in USD, when a rate is available.
  - `slippageBps` integer: Slippage tolerance in basis points. `DECENT` (echoes the request) and `MOONPAY`.
  - `exchangeRate` number: Quoted rate (`amountOut / amountIn`, in whole units). `1` on `HELIO`. Informational; not used in settlement.
  - `estimatedPriceImpact` number: Estimated price impact for the route (percentage). `DECENT` only. Informational.
  - `etaSeconds` integer: Estimated seconds until the transfer settles. `GLIDE` only.
  - `expiresAt` string, date-time, required: Timestamp after which the quote should not be relied upon. 30 seconds from issue on every path except `MOONPAY`, where it is MoonPay's own expiry.
  - `exchangeRateType` 'fixed' | 'floating': `MOONPAY` only. `fixed` locks the rate at quote time (card, Apple Pay, Google Pay); `floating` is an estimate confirmed at settlement (bank transfers) and must be presented to the customer as an estimate.
  - `signature` string: `MOONPAY` only. Opaque token the MoonPay payment frame needs to initialise.
  - `paymentDisclosures` MoonPayPaymentDisclosure[]: `MOONPAY` only. Disclosures that must be rendered verbatim to the customer before they pay. Empty when none apply.
    - `id` string, required
    - `version` string, required
  - `challenge` MoonPayQuoteChallenge: A MoonPay-hosted frame the customer must complete before the quote can proceed (e.g. identity verification to raise guest-checkout limits).
    - `kind` string, required: Only `frame` today.
    - `url` string, required: Fully formed frame URL. Render directly; do not parse.

## Other responses

- `400`: Invalid request or business rule violation: deposit disabled, deposit has no or multiple accepted currencies, unknown `fromCurrencyId`, a server-side provider was requested, a fiat provider's required field is missing, or the fiat provider is not enabled for the merchant.
- `403`: `depositCustomerId` does not belong to this deposit, or the customer is not eligible for the fiat provider.
- `404`: Deposit not found.
- `422`: The provider responded but no usable quote exists for this pair or deposit (e.g. no route found, no settlement amount, no settlement recipient address).
- `502`: The pricing provider could not be reached or errored. Safe to retry.

## Changes

- **2026-11-03** `5988f1c713e0`: 5 breaking, 2 warning, 27 info
  - added the pattern `^[1-9]\d*$` to the request property `amountIn`
  - the response property `affiliateFeeAmount` became optional for the status `200`
  - the response property `amountOutGross` became optional for the status `200`
  - the response property `platformFeeAmount` became optional for the status `200`
  - …30 more

[Operation history](https://skmtc.dev/hel/apis/helio-open-api/changes/v1/deposits/:depositId/swap-quote/post.md)

---

[API](https://skmtc.dev/hel/apis/helio-open-api.md) - [All operations](https://skmtc.dev/hel/apis/helio-open-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hel/apis/helio-open-api/revisions/5988f1c713e0?raw)
