Deposits

Get Deposit Swap Quote

Changed on

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.

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

Path parameters

depositIdstring required

The unique ID of the deposit.

Request body

fromCurrencyIdstring 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.

amountInstring 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".

senderAddressstring required

Payer wallet address. Used to plan the route on the DECENT path; ignored by the other providers but still required.

slippageBpsinteger

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).

depositCustomerIdstring

Required for MOONPAY, IRON and ONRAMPER. The deposit customer the fiat purchase is delivered to; must belong to this deposit.

quoteCurrencyCodestring

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.

paymentMethodIdstring

MOONPAY only. Identifies a specific saved card.

accessTokenstring

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.

countrystring

Required for ONRAMPER. Payer's ISO 3166-1 alpha-2 country code; ramp availability and fees vary by country.

onramperPaymentMethodstring

ONRAMPER only. Narrows the quote to a specific Onramper payment method id. Omitted, the best available ramp/method is priced.

Example request

{
  "fromCurrencyId": "63430c8348c610068bcdc482",
  "amountIn": "1000000",
  "senderAddress": "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1",
  "sdkQuote": {
    "sourceAmount": "25.00",
    "destinationAmount": "24.10",
    "moonpayFee": "0.65",
    "ecosystemFee": "0.00",
    "networkFee": "0.25",
    "defiFee": "0.00"
  },
  "country": "US"
}

Response

Swap quote retrieved successfully.

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.

amountInstring required

Input amount in fromCurrency minimal units, echoed from the request.

amountInUsdstring

Best-effort USD value of amountIn. Omitted when no fresh rate is available.

amountOutGrossstring

Quoted output in toCurrency minimal units before Helio fees. Absent on GLIDE, which reports only the post-fee amount.

amountOutNetstring required

Net amount the merchant receives after fees, in toCurrency minimal units. Always present.

amountOutUsdstring

Best-effort USD value of amountOutNet. Omitted when no fresh rate is available.

platformFeeBpsinteger required

Helio platform fee in basis points, excluding the affiliate portion and any payment-method surcharge.

platformFeeAmountstring

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.

affiliateFeeBpsinteger required

Affiliate fee in basis points, if any (otherwise 0).

affiliateFeeAmountstring

Affiliate fee in toCurrency minimal units. Absent on GLIDE.

processingFeeUsdstring

Processing fee in USD (Helio platform + affiliate, plus the provider's own processing fee on fiat paths). GLIDE, MOONPAY, IRON, ONRAMPER.

networkFeeUsdstring

Estimated network / gas cost in USD. "0" when the route is gas-sponsored. GLIDE, MOONPAY, IRON, ONRAMPER.

totalFeeUsdstring

All-in fee in USD. GLIDE, MOONPAY, IRON, ONRAMPER.

paymentMethodFeeBpsinteger

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*.

paymentMethodFeeAmountstring

Payment-method surcharge in toCurrency minimal units. HELIO only.

paymentMethodFeeUsdstring

Payment-method surcharge in USD, when a rate is available.

slippageBpsinteger

Slippage tolerance in basis points. DECENT (echoes the request) and MOONPAY.

exchangeRatenumber

Quoted rate (amountOut / amountIn, in whole units). 1 on HELIO. Informational; not used in settlement.

estimatedPriceImpactnumber

Estimated price impact for the route (percentage). DECENT only. Informational.

etaSecondsinteger

Estimated seconds until the transfer settles. GLIDE only.

expiresAtstring 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.

signaturestring

MOONPAY only. Opaque token the MoonPay payment frame needs to initialise.

Example response

{
  "amountInUsd": "14.02",
  "amountOutUsd": "13.67",
  "etaSeconds": 30,
  "paymentDisclosures": [
    {
      "id": "eea-crypto-asset-risk",
      "version": "1"
    }
  ],
  "challenge": {
    "kind": "frame"
  }
}

Changes

    • breaking

      added the pattern ^[1-9]\d*$ to the request property

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • breaking

      the response property became optional for the status

    • warning

      the request property's max was set to 10000.00

    • warning

      the request property's min was set to 0.00

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the non-success response with the status

    • info

      added the non-success response with the status

    • info

      added the non-success response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the required property to the response with the status