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

# Get quote

> Retrieves a quote for converting between assets. Supports three quote types:
- **Onramp**: fiat → crypto (`sourceAsset`: fiat currency code, `targetAsset`: asset identifier)
- **Offramp**: crypto → fiat (`sourceAsset`: asset identifier, `targetAsset`: fiat currency code)
- **Swap**: crypto → crypto (`sourceAsset`: asset identifier, `targetAsset`: asset identifier)

**Finding supported assets:** use `GET /ramp/assets` to list the supported
assets for quotes, ramps, and swaps, along with their `identifier` values.

Crypto assets use the `CODE:ISSUER` format (e.g.
`USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`) — use the `identifier`
from the `/ramp/assets` response. Fiat currencies use standard codes (e.g. `MXN`). The
quote includes exchange rates, fees, and expiration information.

**`customerId`:** the org the quote is for. When you transact as your own org, use the `id` from `GET /ramp/me`. For child customers, use their org UUID.



## OpenAPI

````yaml /openapi.json post /ramp/quote
openapi: 3.1.0
info:
  title: Etherfuse FX API
  description: Partner-facing ramp API for onramps, offramps, swaps, and KYC.
  license:
    name: Proprietary
  version: 1.0.0
servers:
  - url: https://api.sand.etherfuse.com
    description: Sandbox
security:
  - ApiKeyAuth: []
tags:
  - name: Authentication
    description: >-
      Partner JWT authentication — exchange a JWT for an access token, or launch
      a user into the app.
  - name: Lookup
    description: >-
      Public reference data: exchange rates, stablebonds, bond costs, country
      codes.
  - name: Assets
    description: Rampable stablecoins and stablebonds available per blockchain.
  - name: Onboarding
    description: Hosted and programmatic customer onboarding.
  - name: Agreements
    description: Legal agreement acceptance during onboarding.
  - name: Bank Accounts
    description: Register and retrieve customer bank accounts.
  - name: Quotes
    description: Price quotes for onramps, offramps, and swaps.
  - name: Orders
    description: Create, track, and manage ramp orders.
  - name: Swaps
    description: Crypto-to-crypto swaps.
  - name: Sponsored
    description: Token approvals for sponsored (gasless) offramps.
  - name: Customers
    description: Customer (child-organization) records.
  - name: Wallets
    description: Register and manage customer wallets.
  - name: KYC
    description: Submit and check customer KYC status.
  - name: Webhooks
    description: Event notification subscriptions.
  - name: Organizations
    description: Organization identity, child orgs, and partner fees.
paths:
  /ramp/quote:
    post:
      tags:
        - Quotes
      summary: Get quote
      description: >-
        Retrieves a quote for converting between assets. Supports three quote
        types:

        - **Onramp**: fiat → crypto (`sourceAsset`: fiat currency code,
        `targetAsset`: asset identifier)

        - **Offramp**: crypto → fiat (`sourceAsset`: asset identifier,
        `targetAsset`: fiat currency code)

        - **Swap**: crypto → crypto (`sourceAsset`: asset identifier,
        `targetAsset`: asset identifier)


        **Finding supported assets:** use `GET /ramp/assets` to list the
        supported

        assets for quotes, ramps, and swaps, along with their `identifier`
        values.


        Crypto assets use the `CODE:ISSUER` format (e.g.

        `USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN`) — use
        the `identifier`

        from the `/ramp/assets` response. Fiat currencies use standard codes
        (e.g. `MXN`). The

        quote includes exchange rates, fees, and expiration information.


        **`customerId`:** the org the quote is for. When you transact as your
        own org, use the `id` from `GET /ramp/me`. For child customers, use
        their org UUID.
      operationId: quote
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiCreateQuotePayload'
        required: true
      responses:
        '200':
          description: The created quote
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateQuoteResponse'
        '400':
          description: Invalid request
components:
  schemas:
    ApiCreateQuotePayload:
      type: object
      required:
        - quoteId
        - customerId
        - blockchain
        - quoteAssets
        - sourceAmount
      properties:
        blockchain:
          $ref: '#/components/schemas/Blockchain'
          description: blockchain identifier (stellar, solana)
        customerId:
          type: string
          format: uuid
          description: >-
            Organization the quote is for. Use `GET /ramp/me` → `id` when
            quoting for your own org; use a child customer's org UUID when
            quoting on their behalf.
        partnerFeeBps:
          type:
            - integer
            - 'null'
          format: int32
          minimum: 0
          maximum: 500
          description: >-
            Optional partner fee override in basis points (0–500). Applied
            directly as this quote's partner fee — there is no separate enable
            step. Resolution order: this per-quote override > your
            organization's default (partnerFeeDefaultBps) > 0. The resulting
            partner fee is folded into the quote's feeBps/feeAmount; it is not
            returned as a separate field on the response.
        quoteAssets:
          $ref: '#/components/schemas/QuoteAssets'
        quoteId:
          type: string
          format: uuid
        sourceAmount:
          type: string
        walletAddress:
          type:
            - string
            - 'null'
          description: >-
            Optional Stellar wallet address. When provided for Stellar onramps,
            enables

            trustline check and setup fee calculation.
      example:
        blockchain: stellar
        customerId: a1b2c3d4-e5f6-7890-abcd-ef1234567890
        quoteAssets:
          sourceAsset: MXN
          targetAsset: USDC:GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
          type: onramp
        quoteId: 3f2a1b0c-9d8e-7f6a-5b4c-3d2e1f0a9b8c
        sourceAmount: '1000'
        walletAddress: GDUKMGUGD3V6VXTU2RLAUM7A2FABLMHCPWTMDHKP7HHJ6FCZKEY4PVWL
    CreateQuoteResponse:
      type: object
      required:
        - quoteId
        - blockchain
        - quoteAssets
        - sourceAmount
        - destinationAmount
        - createdAt
        - updatedAt
        - exchangeRate
        - nominalRate
        - feeBps
        - feeAmount
        - requiresSwap
      properties:
        blockchain:
          $ref: '#/components/schemas/Blockchain'
        createdAt:
          type: string
          format: date-time
        destinationAmount:
          type: string
          description: >-
            The amount of the destination asset the customer receives. Already
            net of all fees (platform fee plus any partner fee):
            destinationAmount = sourceAmount × exchangeRate. Do not subtract a
            fee from it again.
        etherfuseMidMarketRate:
          type:
            - string
            - 'null'
          description: |-
            FX mid-market rate from a currency provider (e.g., USD/MXN). Only
            populated for cross-currency quotes. Absent on direct stablebond
            ramps and wraps — use `nominal_rate` for the pre-fee rate there.
        exchangeRate:
          type: string
          description: >-
            The effective, fee-inclusive rate the customer receives — all fees
            (platform and partner) are already reflected. Multiply by
            sourceAmount to get destinationAmount. For the raw pre-fee rate, use
            nominalRate.
        expiresAt:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Timestamp when the quote expires, as an RFC 3339 / ISO 8601 string
            (e.g. 2025-12-17T18:31:46Z) — never an epoch number. Quotes are
            valid for 2 minutes from creation.
        feeAmount:
          type: string
          description: >-
            Fee amount, equal to sourceAmount × feeBps, denominated in the
            source asset's currency (e.g., fiat for onramps; the source token
            for offramps and swaps — USDC when selling USDC, the bond token when
            selling a bond). Includes any partner fee.
        feeBps:
          type: string
          description: >-
            Total fee in basis points (e.g., 20 = 0.20%). Combined fee that
            already includes any partner fee — subtract the partnerFeeBps you
            sent on the request to get the Etherfuse platform portion. The
            partner fee is not itemized separately on the quote response.
        nominalRate:
          type: string
          description: >-
            Pre-fee rate. `exchange_rate` is the effective rate after fees;

            `nominal_rate` is the underlying market rate before any Etherfuse
            fee

            deduction. UIs that want to render the raw market relationship
            cleanly

            (e.g., "1 MXN = 1 MEXe" with the fee row shown separately) should
            read

            this field. Always populated.
        quoteAssets:
          $ref: '#/components/schemas/QuoteAssets'
        quoteId:
          type: string
          format: uuid
        requiresSwap:
          type: boolean
          description: >-
            Whether this quote requires an on-chain swap (true for FX ramps,
            false for stablebond ramps)
        sourceAmount:
          type: string
        updatedAt:
          type: string
          format: date-time
      example:
        blockchain: stellar
        createdAt: '2026-05-02T09:14:00Z'
        destinationAmount: '58.42'
        etherfuseMidMarketRate: '17.15'
        exchangeRate: '17.12'
        expiresAt: '2026-05-02T09:16:00Z'
        feeAmount: '2.00'
        feeBps: '20'
        nominalRate: '17.15'
        quoteAssets:
          sourceAsset: MXN
          targetAsset: USDC:GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5
          type: onramp
        quoteId: 3f2a1b0c-9d8e-7f6a-5b4c-3d2e1f0a9b8c
        requiresSwap: true
        sourceAmount: '1000'
        updatedAt: '2026-05-02T09:14:00Z'
    Blockchain:
      type: string
      description: |-
        Canonical blockchain enum for API serialization.
        Use this type for JSON APIs and WebSocket messages.
        For database storage, convert to `BlockchainType`.
      enum:
        - stellar
        - solana
        - base
        - polygon
        - monad
    QuoteAssets:
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/OnrampAssets'
              description: 'Fiat → crypto: pay in fiat, receive a stablecoin/token on-chain.'
            - type: object
              required:
                - type
              properties:
                type:
                  type: string
                  enum:
                    - onramp
          title: Onramp
          description: 'Fiat → crypto: pay in fiat, receive a stablecoin/token on-chain.'
        - allOf:
            - $ref: '#/components/schemas/OfframpAssets'
              description: >-
                Crypto → fiat: send a token on-chain, receive fiat in a bank
                account.
            - type: object
              required:
                - type
              properties:
                type:
                  type: string
                  enum:
                    - offramp
          title: Offramp
          description: >-
            Crypto → fiat: send a token on-chain, receive fiat in a bank
            account.
        - allOf:
            - $ref: '#/components/schemas/SwapAssets'
              description: 'Crypto → crypto: swap one on-chain asset for another.'
            - type: object
              required:
                - type
              properties:
                type:
                  type: string
                  enum:
                    - swap
          title: Swap
          description: 'Crypto → crypto: swap one on-chain asset for another.'
    OnrampAssets:
      type: object
      title: Onramp
      required:
        - sourceAsset
        - targetAsset
      properties:
        sourceAsset:
          $ref: '#/components/schemas/QuoteFiat'
        targetAsset:
          type: string
          description: >-
            This should be the asset identifier for the destination blockchain
            that you are targeting
    OfframpAssets:
      type: object
      title: Offramp
      required:
        - sourceAsset
        - targetAsset
      properties:
        sourceAsset:
          type: string
          description: >-
            This should be the asset identifier for the source blockchain that
            you are originating from
        targetAsset:
          $ref: '#/components/schemas/QuoteFiat'
    SwapAssets:
      type: object
      title: Swap
      required:
        - sourceAsset
        - targetAsset
      properties:
        sourceAsset:
          type: string
          description: >-
            This should be the asset identifier for the blockchain that you are
            using
        targetAsset:
          type: string
          description: >-
            This should be the asset identifier for the blockchain that you are
            using
    QuoteFiat:
      type: string
      enum:
        - MXN
        - BRL
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: API key sent in the Authorization header.

````