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

# Create Exchange Rate Quote

> <strong>Purpose:</strong><ul><p>The PayPal Exchange Rate Quote API enables businesses to dynamically display prices in multiple currencies by generating exchange rate quotes for currency pair.</p></ul><strong>Key Features:</strong><ul><p>FX Rate Guarantee: Guarantees exchange rates for a specified duration, ensuring stability and consistency in currency presentment scenarios.</p><p>Customizable Pricing: Provides flexible exchange rate options tailored to business needs, allowing customization through negotiated rates and dynamic pricing models to align with business requirements.</p><p>Provides functionality to source wholesale market rates with the addition of a percentage-based currency conversion fee. This enables the delivery of retail exchange rates without offering a rate guarantee.</p><p>FX Rate Revenue Markup: Offers merchants the flexibility to apply customized markups on exchange rates, allowing them to generate additional revenue from currency conversions. Enables businesses to define their own pricing strategies by setting adjustable markups based on transaction volume, customer segments, or market conditions, ensuring greater control over foreign exchange earnings while maintaining competitive pricing for end users.</p></ul><strong>Quote API Usage:</strong><ul><p>Need a Guaranteed Rate for a Certain Timeframe: Businesses want to lock in an exchange rate for a defined period to protect against market fluctuations and reduce the risk of FX volatility.</p><p>Offer Customers Stable, Upfront Pricing for a Limited Time: Displaying FX rates but ensuring the rate remains fixed for a short duration, allowing customers to complete their purchase without unexpected price changes.</p><p>Integrate with PayPal as Payment Processor for Real-Time Quoting Scenarios: Leveraging PayPal’s payment processing capabilities, ensuring seamless multi-currency support.</p></ul><strong>Sample Use cases:</strong> Multi-Currency Presentment, Real-Time Checkout Quotes, Subscription Pricing with Guaranteed Rate, Buy-Now-Price Guarantee for Cross-Border Seller.



## OpenAPI

````yaml /api-reference/currency_exchange_v2.json post /v2/pricing/quote-exchange-rates
openapi: 3.0.3
info:
  title: Currency Exchange
  description: The exchange currency API to convert one currency to another one.
  version: '2.17'
  contact: {}
servers:
  - url: https://api-m.sandbox.paypal.com
    description: PayPal Sandbox Environment
  - url: https://api-m.paypal.com
    description: PayPal Live Environment
security: []
tags:
  - name: exchange-currency
    description: Exchange currency.
  - name: quote-exchange-rates
    description: exchange rate quotes for currency pairs.
  - name: quote-exchange-rate-contract
    description: Quote Exchange rate contract for category/country.
  - name: linked-quote-exchange-rate-contract
    description: Link quote exchange rate contract to category/country.
externalDocs:
  url: https://developer.paypal.com/docs/api/pricing/v2/
paths:
  /v2/pricing/quote-exchange-rates:
    post:
      tags:
        - quote-exchange-rates
      summary: Create Exchange Rate Quote
      description: >-
        <strong>Purpose:</strong><ul><p>The PayPal Exchange Rate Quote API
        enables businesses to dynamically display prices in multiple currencies
        by generating exchange rate quotes for currency
        pair.</p></ul><strong>Key Features:</strong><ul><p>FX Rate Guarantee:
        Guarantees exchange rates for a specified duration, ensuring stability
        and consistency in currency presentment scenarios.</p><p>Customizable
        Pricing: Provides flexible exchange rate options tailored to business
        needs, allowing customization through negotiated rates and dynamic
        pricing models to align with business requirements.</p><p>Provides
        functionality to source wholesale market rates with the addition of a
        percentage-based currency conversion fee. This enables the delivery of
        retail exchange rates without offering a rate guarantee.</p><p>FX Rate
        Revenue Markup: Offers merchants the flexibility to apply customized
        markups on exchange rates, allowing them to generate additional revenue
        from currency conversions. Enables businesses to define their own
        pricing strategies by setting adjustable markups based on transaction
        volume, customer segments, or market conditions, ensuring greater
        control over foreign exchange earnings while maintaining competitive
        pricing for end users.</p></ul><strong>Quote API
        Usage:</strong><ul><p>Need a Guaranteed Rate for a Certain Timeframe:
        Businesses want to lock in an exchange rate for a defined period to
        protect against market fluctuations and reduce the risk of FX
        volatility.</p><p>Offer Customers Stable, Upfront Pricing for a Limited
        Time: Displaying FX rates but ensuring the rate remains fixed for a
        short duration, allowing customers to complete their purchase without
        unexpected price changes.</p><p>Integrate with PayPal as Payment
        Processor for Real-Time Quoting Scenarios: Leveraging PayPal’s payment
        processing capabilities, ensuring seamless multi-currency
        support.</p></ul><strong>Sample Use cases:</strong> Multi-Currency
        Presentment, Real-Time Checkout Quotes, Subscription Pricing with
        Guaranteed Rate, Buy-Now-Price Guarantee for Cross-Border Seller.
      operationId: quote_exchange_rates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/quote_exchange_rates_request'
      responses:
        '200':
          description: >-
            A successful request returns the HTTP `200 OK` status code and a
            JSON response body that shows quote exchange rate details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/quote_exchange_rates_response'
        '400':
          description: >-
            Request is not well-formed, syntactically incorrect, or violates
            schema.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '403':
          description: The authorization failed due to insufficient permissions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '422':
          description: >-
            The requested action could not be performed, semantically incorrect,
            or failed business validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        '500':
          description: An internal server error has occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
        default:
          description: The error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error'
      security:
        - Oauth2:
            - https://uri.paypal.com/services/pricing/quote-exchange-rates/read
components:
  schemas:
    quote_exchange_rates_request:
      type: object
      title: Request Object for quoting exchange rates.
      description: Request Object for quoting exchange rates.
      properties:
        organization:
          description: >-
            Organization this managed account belongs to, in the partner's
            hierarchy, in the form of a path.
          type: string
          pattern: ^\w{2,20}(\/\w{2,20})*$
          maxLength: 100
          minLength: 2
        quote_items:
          $ref: '#/components/schemas/quote_item_list'
      required:
        - quote_items
    quote_exchange_rates_response:
      type: object
      title: Response Object for quoting exchange rates.
      description: Response Object for quoting exchange rates.
      properties:
        exchange_rate_quotes:
          $ref: '#/components/schemas/rate_detail_list'
      required:
        - exchange_rate_quotes
    error:
      type: object
      title: Error
      description: The error details.
      properties:
        name:
          type: string
          description: The human-readable, unique name of the error.
        message:
          type: string
          description: The message that describes the error.
        debug_id:
          type: string
          description: The PayPal internal ID. Used for correlation purposes.
        information_link:
          type: string
          description: >-
            The information link, or URI, that shows detailed information about
            this error for the developer.
          readOnly: true
        details:
          $ref: '#/components/schemas/error_details_list'
        links:
          $ref: '#/components/schemas/link_description_list'
      required:
        - name
        - message
        - debug_id
    quote_item_list:
      type: array
      description: >-
        Parameters required to request an exchange rate, passed in the
        quote_items array:
        <ul><li>base_currency</li><li>base_amount</li><li>quote_currency</li><li>markup_percent</li><li>fx_id.</li></ul>
      items:
        $ref: '#/components/schemas/quote_item'
      maxItems: 250
      minItems: 1
    rate_detail_list:
      description: Exchange rate details, specified as an array of object.
      type: array
      items:
        $ref: '#/components/schemas/rate_detail'
      maxItems: 500
      minItems: 1
    error_details_list:
      type: array
      description: An array of additional details about the error.
      items:
        $ref: '#/components/schemas/error_details-2'
    link_description_list:
      type: array
      description: >-
        An array of request-related [HATEOAS
        links](/api/rest/responses/#hateoas-links).
      readOnly: true
      items:
        $ref: '#/components/schemas/link_description'
    quote_item:
      type: object
      title: Request object for exchange rate quote.
      description: Request object for exchange rate quote.
      properties:
        base_currency:
          $ref: '#/components/schemas/currency_code'
          description: >-
            The currency code of the base amount to be converted for the
            presentment and in which the final transaction amount needs to be
            settled into merchant PayPal business account. This could be your
            primary currency, or any other PayPal supported holding currency.
            You can find currency codes
            [here](/docs/reports/reference/paypal-supported-currencies).
        base_amount:
          description: >-
            Product price in base currency. If not provided, PayPal returns only
            the exchange rate and does not calculate the
            <code>quote_amount</code>.
          type: string
          maxLength: 32
          minLength: 1
          pattern: ^([0-9]+[.][0-9]+)$
        quote_currency:
          $ref: '#/components/schemas/currency_code'
          description: >-
            The currency code in which the conversion should take place using
            this API. This is the currency in which the transaction is
            performed, and the transaction amount gets converted into base
            currency.
        markup_percent:
          $ref: '#/components/schemas/percentage'
          description: >-
            The percentage of the merchant or partner spread to be included as
            part of the exchange rate. markup_percent can range from 0 to 100.
        fx_id:
          description: Unique identifier that links a quoted FX rate to an order.
          pattern: ^[ -~]+$
          type: string
          maxLength: 4000
          minLength: 1
    rate_detail:
      type: object
      title: Response object for fx service exchange currency.
      description: >-
        Exchange rate details, specified as an object with the following
        parameters:
        <ul><li>base_amount</li><li>quote_amount</li><li>exchange_rate</li><li>expiry_time</li><li>rate_refresh_time</li><li>fx_id.</li></ul>
      properties:
        base_amount:
          $ref: '#/components/schemas/money'
          description: >-
            The amount that needs to be converted. If this parameter was not
            passed in the request, the value of base_amount is considered as 1
            by default.
        quote_amount:
          $ref: '#/components/schemas/money'
          description: The amount in desired currency after conversion.
        exchange_rate:
          description: >-
            Conversion rate between the base and quote currencies. Includes
            markup if <code>markup_percent</code> is provided in the request.
          type: string
          pattern: ^([0-9]+[.][0-9]+)$
          maxLength: 32
          minLength: 1
        fx_id:
          description: >-
            Unique identifier that links a quoted FX rate to an order. Must be
            passed in further API calls.
          pattern: ^[ -~]+$
          type: string
          maxLength: 4000
          minLength: 1
        expiry_time:
          $ref: '#/components/schemas/date_time'
          description: >-
            The time until exchange_rate will be valid for settlement. It is
            represented in ISO 8601. The time is determined at the time of
            contract agreement.
        rate_refresh_time:
          $ref: '#/components/schemas/date_time'
          description: >-
            The time at which new exchange rates will be available next for this
            currency pair. The frequency is determined at the time of contract
            agreement.
        update_time:
          $ref: '#/components/schemas/date_time'
          description: >-
            The time at which the exchange rate was last updated. The time is
            represented in ISO 8601.
      required:
        - base_amount
        - quote_amount
        - exchange_rate
    error_details-2:
      title: Error Details
      type: object
      description: The error details. Required for client-side `4XX` errors.
      properties:
        field:
          type: string
          description: >-
            The field that caused the error. If this field is in the body, set
            this value to the field's JSON pointer value. Required for
            client-side errors.
        value:
          type: string
          description: The value of the field that caused the error.
        location:
          type: string
          description: >-
            The location of the field that caused the error. Value is `body`,
            `path`, or `query`.
          default: body
        issue:
          type: string
          description: The unique, fine-grained application-level error code.
        description:
          type: string
          description: >-
            The human-readable description for an issue. The description can
            change over the lifetime of an API, so clients must not depend on
            this value.
      required:
        - issue
    link_description:
      type: object
      title: Link Description
      description: >-
        The request-related [HATEOAS link](/api/rest/responses/#hateoas-links)
        information.
      required:
        - href
        - rel
      properties:
        href:
          type: string
          description: >-
            The complete target URL. To make the related call, combine the
            method with this [URI
            Template-formatted](https://tools.ietf.org/html/rfc6570) link. For
            pre-processing, include the `$`, `(`, and `)` characters. The `href`
            is the key HATEOAS component that links a completed call with a
            subsequent call.
        rel:
          type: string
          description: >-
            The [link relation
            type](https://tools.ietf.org/html/rfc5988#section-4), which serves
            as an ID for a link that unambiguously describes the semantics of
            the link. See [Link
            Relations](https://www.iana.org/assignments/link-relations/link-relations.xhtml).
        method:
          type: string
          description: The HTTP method required to make the related call.
          enum:
            - GET
            - POST
            - PUT
            - DELETE
            - HEAD
            - CONNECT
            - OPTIONS
            - PATCH
    currency_code:
      description: >-
        The [3-character ISO-4217 currency
        code](/api/rest/reference/currency-codes/) that identifies the currency.
      type: string
      minLength: 3
      maxLength: 3
      x-security-classification:
        data_class: class4
        data_category: INTRINSIC
    percentage:
      type: string
      description: >-
        The percentage, as a fixed-point, signed decimal number. For example,
        define a 19.99% interest rate as `19.99`.
      format: ppaas_common_percentage_v2
      pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$
    money:
      type: object
      title: Money
      description: >-
        The currency and amount for a financial transaction, such as a balance
        or payment due.
      properties:
        currency_code:
          $ref: '#/components/schemas/currency_code'
        value:
          type: string
          description: >-
            The value, which might be:<ul><li>An integer for currencies like
            `JPY` that are not typically fractional.</li><li>A decimal fraction
            for currencies like `TND` that are subdivided into
            thousandths.</li></ul>For the required number of decimal places for
            a currency code, see [Currency
            Codes](/api/rest/reference/currency-codes/).
          maxLength: 32
          pattern: ^((-?[0-9]+)|(-?([0-9]+)?[.][0-9]+))$
      required:
        - currency_code
        - value
    date_time:
      type: string
      description: >-
        The date and time, in [Internet date and time
        format](https://tools.ietf.org/html/rfc3339#section-5.6). Seconds are
        required while fractional seconds are
        optional.<blockquote><strong>Note:</strong> The regular expression
        provides guidance but does not reject all invalid dates.</blockquote>
      format: ppaas_date_time_v3
      minLength: 20
      maxLength: 64
      pattern: >-
        ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])[T,t]([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)([.][0-9]+)?([Zz]|[+-][0-9]{2}:[0-9]{2})$
  securitySchemes:
    Oauth2:
      type: oauth2
      description: Oauth 2.0 authentication
      flows:
        clientCredentials:
          tokenUrl: /v1/oauth2/token
          scopes:
            https://uri.paypal.com/services/pricing/exchange-currency/read: >-
              This privilege allows client to get SELL and BUY rate through
              exchange-currency API.
            https://uri.paypal.com/services/pricing/quote-exchange-rates/read: >-
              This privilege allows client to get quote the exchange rate for
              merchants and tenants.
            https://uri.paypal.com/services/pricing/quote-exchange-rates/readwrite: >-
              This privilege allows client to update the quote exchange rate for
              merchants and tenants.

````