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

# Retrieve exchange rates

> Retrieve a paginated list of the rates for one currency pair, one rate per day, newest first.

The rate includes the markup. It is the rate an invoice item dated on that day converts at. A day without a stored rate is left out. When `from_currency` and `to_currency` are the same, the list is empty.

This endpoint uses cursor-based pagination via `Link` headers. See [Pagination](/api/v3/pagination) for details.

> [!NOTE]
>
> OAuth2 scopes required: `read:invoice`. See [Scopes for OAuth apps](https://sendcloud.dev/api/v3/scopes.md).


## OpenAPI

````yaml /.openapi/v3/exchange-rates/openapi.yaml get /exchange-rates
openapi: 3.1.0
info:
  title: Exchange Rates API
  version: 3.0.0
  contact:
    name: Sendcloud API Support
    url: https://www.sendcloud.dev
    email: contact@sendcloud.com
  description: >-
    The Exchange Rates API lets you retrieve the daily rates Sendcloud uses to
    convert charges in another currency to the currency you are billed in.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://panel.sendcloud.sc/api/v3
    description: Sendcloud Production
security: []
tags:
  - name: Exchange Rates
    description: The daily rate for a currency pair, with the markup included.
paths:
  /exchange-rates:
    get:
      tags:
        - Exchange Rates
      summary: Retrieve exchange rates
      description: >-
        Retrieve a paginated list of the rates for one currency pair, one rate
        per day, newest first.


        The rate includes the markup. It is the rate an invoice item dated on
        that day converts at. A day without a stored rate is left out. When
        `from_currency` and `to_currency` are the same, the list is empty.


        This endpoint uses cursor-based pagination via `Link` headers. See
        [Pagination](/api/v3/pagination) for details.
      operationId: sc-public-v3-scp-get-exchange_rates
      parameters:
        - schema:
            type: string
          in: query
          name: from_currency
          required: true
          description: >-
            ISO 4217 code of the currency to convert from. Must be a currency
            Sendcloud bills in, else the request returns 400.
          example: GBP
        - schema:
            type: string
          in: query
          name: to_currency
          required: true
          description: >-
            ISO 4217 code of the currency to convert to. Must be a currency
            Sendcloud bills in, else the request returns 400.
          example: EUR
        - schema:
            type: string
            format: date
          in: query
          name: date_after
          description: >-
            Return rates for this day and later (inclusive). Without it, the
            list goes back to the first stored rate.
          example: '2026-10-01'
        - schema:
            type: string
            format: date
          in: query
          name: date_before
          description: >-
            Return rates for this day and earlier (inclusive). Defaults to today
            (UTC).
          example: '2026-10-31'
        - $ref: '#/components/parameters/Cursor'
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          in: query
          name: page_size
          description: The size of the page to fetch. Defaults to 20, max 100.
          example: 20
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                description: Retrieve exchange rates
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/exchange-rate'
                required:
                  - data
              examples:
                RetrieveExchangeRates:
                  summary: Retrieve exchange rates
                  value:
                    data:
                      - from_currency: GBP
                        to_currency: EUR
                        date: '2026-10-31'
                        rate: '1.15340000'
                      - from_currency: GBP
                        to_currency: EUR
                        date: '2026-10-30'
                        rate: '1.15210000'
                      - from_currency: GBP
                        to_currency: EUR
                        date: '2026-10-29'
                        rate: '1.14980000'
          headers:
            Link:
              description: >-
                The pagination links, according to the web linking specification
                (RFC8288).
              schema:
                type: string
                example: >-
                  <https://panel.sendcloud.sc/api/v3/exchange-rates?from_currency=GBP&to_currency=EUR&cursor=cj0xJnA9MjAyNi0xMC0yOQ%3D%3D>;
                  rel="prev",
                  <https://panel.sendcloud.sc/api/v3/exchange-rates?from_currency=GBP&to_currency=EUR&cursor=cD0yMDI2LTEwLTEw>;
                  rel="next"
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
              examples:
                UnsupportedCurrency:
                  summary: Unsupported currency
                  value:
                    errors:
                      - detail: Unsupported currency `USD`.
                        status: '400'
                        code: validation_error
                        source:
                          parameter: from_currency
                        meta:
                          currency: USD
                ReversedWindow:
                  summary: date_after later than date_before
                  value:
                    errors:
                      - detail: '`date_after` must not be later than `date_before`.'
                        status: '400'
                        code: validation_error
                        source:
                          parameter: date_after
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errors'
              examples:
                Unauthorized:
                  summary: Missing or invalid credentials
                  value:
                    errors:
                      - detail: Authentication credentials were not provided.
                        status: '401'
                        code: not_authenticated
        '429':
          description: Throttled
      security:
        - HTTPBasicAuth: []
        - OAuth2ClientCreds:
            - read:invoice
components:
  parameters:
    Cursor:
      in: query
      name: cursor
      description: >-
        The cursor query string is used as the pivot value to filter results. If
        no value is provided, the first page of results will be returned. To get
        this value, you must encode the offset, reverse and position into a
        base64 string.


        There are 3 possible parameters to encode:

        - `o`: Offset

        - `r`: Reverse

        - `p`: Position
          
        For example, `r=1&p=300` encoded as a base64 string would be
        `cj0xJnA9MzAw`. The query string would then be `cursor=cj0xJnA9MzAw`.
      schema:
        type: string
        example: cj0xJnA9MzAw
  schemas:
    exchange-rate:
      title: ExchangeRate
      description: The rate Sendcloud converts amounts at for one currency pair on one day.
      type: object
      properties:
        from_currency:
          type: string
          description: ISO 4217 code of the currency the amount is in.
          example: GBP
        to_currency:
          type: string
          description: ISO 4217 code of the currency the amount is converted to.
          example: EUR
        date:
          type: string
          format: date
          description: >-
            The day the rate applies to. An amount dated on this day (UTC)
            converts at this rate. It is the ECB reference rate of the day
            before.
          example: '2026-10-31'
        rate:
          type: string
          description: >-
            Units of `to_currency` per 1 unit of `from_currency`, as a decimal
            string with 8 decimal places. The markup is included: this is the
            rate your invoice items convert at.
          example: '1.15340000'
      required:
        - from_currency
        - to_currency
        - date
        - rate
    errors:
      title: Errors
      type: object
      description: A standardized format for errors in JSON:API responses.
      properties:
        errors:
          type:
            - array
            - object
          items:
            type: object
            allOf:
              - $ref: '#/components/schemas/ErrorObject'
            required:
              - status
              - code
              - detail
    ErrorObject:
      title: Error
      type: object
      description: Error in a JSON:API error format
      properties:
        id:
          type: string
          description: A unique identifier for the error.
        links:
          type: object
          description: >-
            A set of hyperlinks that provide additional information about the
            error.
          properties:
            about:
              type: string
              description: A URL that provides additional information about the error.
        status:
          type: string
          format: int32
          description: The HTTP status code of the error.
          minLength: 1
        code:
          type: string
          description: A unique error code for the error, in snake case format.
          minLength: 1
          enum:
            - unknown_field
            - invalid
            - forbidden
            - invalid_choice
            - min_value
            - 'null'
            - not_found
            - required
            - not_a_list
            - non_field_errors
            - authentication_failed
            - validation_error
            - parcel_announcement_error
        title:
          type: string
          description: A short, human-readable summary of the error.
          minLength: 1
        detail:
          type: string
          description: A human-readable explanation of the error.
          minLength: 1
        source:
          type: object
          description: >-
            An object that identifies the source of the error within the request
            payload.
          properties:
            pointer:
              type: string
              description: >-
                A `JSON` pointer to the location of the error within the request
                payload.
            parameter:
              type: string
              description: The name of the `query` parameter that caused the error.
            header:
              type: string
              description: The name of the `header` parameter that caused the error.
        meta:
          type: object
          description: Additional metadata about the error.
  securitySchemes:
    HTTPBasicAuth:
      type: http
      description: >-
        Basic Authentication using API key and secrets is currently the main
        authentication mechanism.
      scheme: basic
    OAuth2ClientCreds:
      type: oauth2
      description: >-
        OAuth2 is a standardized protocol for authorization that allows users to
        share their private resources stored on one site with another site
        without having to provide their credentials. OAuth2 Client Credentials
        Grant workflow. This workflow is typically used for server-to-server
        interactions that require authorization to access specific resources.
      flows:
        clientCredentials:
          tokenUrl: https://account.sendcloud.com/oauth2/token/
          scopes:
            read:analytics: View your shipping analytics
            read:audit-log: View your account's audit log
            read:brand: View your brands
            write:brand: Manage your brands
            write:carrier: Configure carriers and contracts
            read:checkout: View your dynamic checkout configurations and templates
            read:event-subscription: View your event subscriptions
            write:event-subscription: Create and manage your event subscriptions
            read:integration: View your integrations
            write:integration: Connect and manage integrations
            read:invoice: View your invoices
            read:notification: View your notifications
            write:notification: Manage your notifications
            read:operational-settings: >-
              View your warehouses, shipping lanes, and other operational
              settings
            write:operational-settings: >-
              Manage your warehouses, shipping lanes, and other operational
              settings
            read:order: View your orders
            write:order: Import and process your orders
            read:organization: View organization settings
            write:organization: Change organization settings
            read:parcel: View your shipments and their tracking status
            write:parcel: Create, announce, and cancel shipments
            read:pickup: View carrier pickups and the options available for scheduling them
            write:pickup: Schedule and manage carrier pickups
            read:price: View shipping prices
            write:product: Manage your product catalog
            read:return: View your returns
            write:return: Create and manage returns
            read:return-settings: View your return settings
            write:return-settings: Configure your return settings
            read:service-point: View carrier service points
            read:shipping-method: View shipping methods, products and prices
            read:shipping-rule: View your shipping rules
            write:shipping-rule: Create and manage shipping rules
            read:support-ticket: View your support tickets
            write:support-ticket: Manage your support tickets
            read:tracking-message: View your tracking notifications
            write:tracking-message: Manage your tracking notifications
            read:tracking-page: View your tracking page
            write:tracking-page: Customize your tracking page
            read:user: Read your basic account information

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.