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

# Get Quote

> Get an indicative quote for an off-ramp conversion. Wraps the upstream
 provider's quote API; stateless and not rate-locked.



## OpenAPI

````yaml /v2/openapi.yaml get /v2/conversions/quotes
openapi: 3.1.0
info:
  title: Bastion APIs
  version: '2.0'
servers:
  - url: https://api.prod.bastion.com
    description: Production environment
  - url: https://api.sandbox.bastion.io
    description: Sandbox environment
security:
  - auth: []
tags:
  - name: Bastion APIs
paths:
  /v2/conversions/quotes:
    get:
      tags:
        - Conversions
      summary: Get Quote
      description: |-
        Get an indicative quote for an off-ramp conversion. Wraps the upstream
         provider's quote API; stateless and not rate-locked.
      operationId: bastion.api.v2.API.GetQuote
      parameters:
        - name: source_currency
          in: query
          description: Source asset currency. Must be USDC or USDT.
          required: true
          schema:
            $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
            title: source_currency
        - name: source_chain
          in: query
          description: >-
            Source blockchain network. e.g., SOLANA_MAINNET, ETHEREUM_MAINNET,
            BASE_MAINNET.
          required: true
          schema:
            $ref: '#/components/schemas/bastion.common.Chain'
            title: source_chain
        - name: destination_currency
          in: query
          description: Destination fiat currency. e.g., MXN, INR.
          required: true
          schema:
            $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
            title: destination_currency
        - name: destination_country
          in: query
          description: >-
            Destination country (ISO 3166-1 alpha-2). Must form a supported
            corridor
             with destination_currency and payment_method.
          required: true
          schema:
            $ref: '#/components/schemas/bastion.common.Country'
            title: destination_country
        - name: payment_method
          in: query
          description: >-
            Payment rail. Must match an enabled corridor for the destination
            country.
          required: true
          schema:
            $ref: '#/components/schemas/bastion.api.v2.conversions.PaymentMethod'
            title: payment_method
        - name: source_amount
          in: query
          description: Amount of source currency (USDC or USDT) to convert.
          schema:
            type: string
            title: source_amount
        - name: destination_amount
          in: query
          description: Amount of destination fiat the recipient should receive.
          schema:
            type: string
            title: destination_amount
        - name: source_total_max
          in: query
          description: >-
            Max all-in source debit (wallet budget). Bastion solves principal +
            fees.
          schema:
            type: string
            title: source_total_max
        - name: fee_model
          in: query
          description: >-
            (OPTIONAL) Override fee model for this quote. Omit to use app config
            default.
          required: false
          schema:
            oneOf:
              - $ref: '#/components/schemas/bastion.common.FeeModel'
              - type: 'null'
            title: fee_model
        - name: developer_fee_percent
          in: query
          description: >-
            (OPTIONAL) Pin developer fee rate for this quote (e.g.
            first-remittance promo at 0.00).
          required: false
          schema:
            type: string
            title: developer_fee_percent
        - name: developer_fee_amount
          in: query
          description: >-
            (OPTIONAL) Flat developer fee override. Mutually exclusive with
            developer_fee_percent.
          required: false
          schema:
            type: string
            title: developer_fee_amount
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bastion.api.v2.conversions.Quote'
        '400':
          description: Bad request
        '401':
          description: Unauthorized Request
        '500':
          description: Internal server error
        '502':
          description: Upstream provider error
components:
  schemas:
    bastion.api.v2.conversions.ConversionCurrency:
      type: string
      title: ConversionCurrency
      enum:
        - CONVERSION_CURRENCY_UNSPECIFIED
        - USDC
        - USD
        - MXN
        - INR
        - KRW
        - USDT
        - GHS
        - EUR
      description: |-
        Currency of a conversion.
         The currency can be a stablecoin or a fiat currency.
      example: USDC
    bastion.common.Chain:
      type: string
      title: Chain
      enum:
        - CHAIN_UNSPECIFIED
        - ETHEREUM_MAINNET
        - POLYGON_MAINNET
        - ETHEREUM_TESTNET
        - OPTIMISM_SEPOLIA
        - BASE_MAINNET
        - BASE_SEPOLIA
        - OPTIMISM_MAINNET
        - POLYGON_AMOY
        - SOLANA_MAINNET
        - SOLANA_DEVNET
      description: Chain identifier
      example: ETHEREUM_MAINNET
    bastion.common.Country:
      type: string
      title: Country
      enum:
        - US
      description: ISO 3166-1 alpha-2 country code.
      example: US
    bastion.api.v2.conversions.PaymentMethod:
      type: string
      title: PaymentMethod
      enum:
        - PAYMENT_METHOD_UNSPECIFIED
        - BLOCKCHAIN
        - WIRE
        - SPEI
        - IMPS_FIRC
        - BANK_TRANSFER
        - SEPA
      description: Transfer mechanism for the conversion.
      example: BLOCKCHAIN
    bastion.common.FeeModel:
      type: string
      title: FeeModel
      enum:
        - FEE_MODEL_UNSPECIFIED
        - INCLUSIVE
        - DEDUCTED
        - ON_TOP
      description: Fee model for a conversion.
      example: INCLUSIVE
    bastion.api.v2.conversions.Quote:
      type: object
      properties:
        exchange_rate:
          type: string
          title: exchange_rate
          description: FX rate applied.
        limits:
          $ref: '#/components/schemas/bastion.api.v2.conversions.QuoteLimits'
          title: limits
          description: Per-corridor transaction limits.
        source:
          $ref: '#/components/schemas/bastion.api.v2.conversions.QuoteSource'
          title: source
          description: Source side of the quote.
        destination:
          $ref: '#/components/schemas/bastion.api.v2.conversions.QuoteDestination'
          title: destination
          description: Destination side of the quote.
        fees_total:
          type: string
          title: fees_total
          description: Total fees as a decimal string.
        fees_total_currency:
          $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
          title: fees_total_currency
          description: Currency that fees_total is denominated in.
        fees:
          type: array
          items:
            $ref: '#/components/schemas/bastion.api.v2.conversions.Fee'
          title: fees
          description: Itemized fee breakdown.
        fee_model:
          $ref: '#/components/schemas/bastion.common.FeeModel'
          title: fee_model
          description: Fee model applied to this quote.
          readOnly: true
        id:
          type: string
          title: id
          description: Bastion quote identifier. Submit as ConversionRequest.quote_id.
          readOnly: true
        locked:
          type: boolean
          title: locked
          description: >-
            When true, exchange_rate and fees_total are guaranteed until
            expires_at.
             When false, pricing is indicative only and upstream rates may drift between
             quote and submit (Walapay/Borderless quotes are typically stable ~5-10
             minutes in practice, but Bastion does not enforce a rate lock at launch).
             Always false at launch. Off-ramp submit requires quote_id with matching
             source/destination/fee inputs regardless of locked; locked only controls
             rate/fee guarantee, not whether submit validates quote binding.
          readOnly: true
        expires_at:
          type: string
          title: expires_at
          description: >-
            Quote expiry (RFC 3339). Submit after this time is rejected with
            QUOTE_EXPIRED.
          readOnly: true
      title: Quote
      additionalProperties: false
      description: >-
        Indicative pricing for an off-ramp conversion. Each quote is persisted
        and
         must be referenced by quote_id on submit. Not rate-locked at launch.
    bastion.api.v2.conversions.QuoteLimits:
      type: object
      properties:
        min_amount:
          type:
            - string
            - 'null'
          title: min_amount
          description: >-
            Minimum transaction amount for the corridor. May be null upstream;
            we
             omit the field if not present.
        max_amount:
          type:
            - string
            - 'null'
          title: max_amount
          description: >-
            Maximum transaction amount for the corridor. Nullable when the
            upstream
             provider does not define an upper bound; clients should treat the absence
             of this field as "no upper bound".
        currency:
          $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
          title: currency
          description: >-
            Currency the limits are denominated in (typically the destination
            fiat).
      title: QuoteLimits
      additionalProperties: false
      description: >-
        Per-corridor transaction limits passed through from the upstream
        provider.
    bastion.api.v2.conversions.QuoteSource:
      type: object
      properties:
        amount:
          type: string
          title: amount
          description: Source amount as a decimal string (e.g. "25.00").
        currency:
          $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
          title: currency
          description: Source asset currency.
        chain:
          $ref: '#/components/schemas/bastion.common.Chain'
          title: chain
          description: Source blockchain network. Present for crypto sources.
        payment_method:
          $ref: '#/components/schemas/bastion.api.v2.conversions.PaymentMethod'
          title: payment_method
          description: Transfer mechanism for the source side (BLOCKCHAIN for off-ramp).
        total:
          type: string
          title: total
          description: >-
            All-in wallet debit in source currency (principal plus fees where
            applicable).
          readOnly: true
      title: QuoteSource
      additionalProperties: false
      description: 'Source side of a quote: the asset being sent.'
    bastion.api.v2.conversions.QuoteDestination:
      type: object
      properties:
        amount:
          type: string
          title: amount
          description: Destination amount as a decimal string (e.g. "410.55").
        currency:
          $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
          title: currency
          description: Destination fiat currency.
        country:
          $ref: '#/components/schemas/bastion.common.Country'
          title: country
          description: >-
            Destination country (ISO 3166-1 alpha-2). Present for fiat
            destinations.
        payment_method:
          $ref: '#/components/schemas/bastion.api.v2.conversions.PaymentMethod'
          title: payment_method
          description: Payment rail on the destination side (e.g. SPEI, WIRE, IMPS_FIRC).
      title: QuoteDestination
      additionalProperties: false
      description: 'Destination side of a quote: the fiat being received.'
    bastion.api.v2.conversions.Fee:
      type: object
      properties:
        amount:
          type: string
          title: amount
          description: Fee amount as a decimal string (e.g. "2.50").
        currency:
          $ref: '#/components/schemas/bastion.api.v2.conversions.ConversionCurrency'
          title: currency
          description: Currency the fee is denominated in.
        type:
          $ref: '#/components/schemas/bastion.common.FeeType'
          title: type
          description: Category of the fee (e.g. platform fee).
        fee_percent:
          type: string
          title: fee_percent
          description: >-
            Percentage rate on the DEVELOPER line (informational; omitted on
            PLATFORM).
          readOnly: true
      title: Fee
      additionalProperties: false
      description: Individual fee line item on a conversion.
    bastion.common.FeeType:
      type: string
      title: FeeType
      enum:
        - FEE_TYPE_UNSPECIFIED
        - PLATFORM
        - DEVELOPER
      description: Type of fee charged on a conversion.
      example: PLATFORM
  securitySchemes:
    auth:
      type: http
      description: Bearer authentication with an API token
      scheme: bearer

````

## Related topics

- [Off-ramp: Withdraw stablecoin internationally](/guides/quickstarts/off-ramp/international-bank-account.md)
- [Conversions API overview](/v2/api-reference/conversions/overview.md)
- [Supported off-ramp payout countries](/guides/getting-started/supported-off-ramp-payout-countries.md)
- [Stablecoin on-ramp and off-ramp conversions](/guides/concepts/stablecoin-conversions.md)
- [Get Conversion](/v2/api-reference/conversions/get-conversion.md)
