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

# List exchange rates (NOT IMPLEMENTED)

> **NOTICE: Multi-currency support is NOT implemented in Arcus.**

This endpoint accepts reads for forward-compatibility but exchange rate data has no business
effect on any transaction. All GL posting paths operate in a single functional currency (USD).
Storing exchange rates here does NOT cause Arcus to convert invoice amounts, revalue open AR/AP
balances, or post FX gain/loss journal entries. Those mechanisms do not exist in Arcus today.

This endpoint returns HTTP 501 Not Implemented unless `entities.settings.multi_currency_enabled`
is true (which no entity has set, as of 2026-05-22).

Returns all exchange rate records for the entity, sorted by effective date descending. Each
record includes the source currency code, target currency code (the entity's functional
currency), rate value, and effective date. Multiple rates for the same currency pair may
exist with different effective dates; the most recent rate before a transaction date is used.
Requires `settings:read` scope.




## OpenAPI

````yaml /openapi.yaml get /exchange-rates
openapi: 3.1.0
info:
  title: Arcus ERP Public API
  version: 1.0.0
  description: >
    Arcus ERP public REST API. Designed for external integrations and data
    migration.


    **Authentication.** Bearer token (API key) via the `Authorization` header.

    Format: `Authorization: Bearer ark_live_ent_<code>_<random>` (or
    `ark_test_*` for sandbox).

    API keys are issued per-entity in **Settings > Developers > API Keys**.


    **Entity scoping.** The entity is encoded in the API key prefix; routes are
    flat

    (e.g. `/v1/accounts`, `/v1/orders`, `/v1/products`). A small set of platform
    endpoints

    (migration, reconciliation, events, webhook endpoints, API keys) use the

    `/v1/entities/{entity_id}/...` form -- those are noted in their tags.


    **Key capabilities.**
      - Related-resource hydration via `?expand[]=` (see `x-arcus-expand` on each resource).
      - Cursor-based pagination (`starting_after` / `ending_before` / `limit`).
      - Idempotency via the `Idempotency-Key` header.
      - Webhook events for asynchronous notification.
      - Conditional requests / ETag for cache validation.
servers:
  - url: https://api.arcuserp.com/v1
    description: Arcus ERP API (accepts both live `ark_live_*` and test `ark_test_*` keys)
  - url: https://dev-api.arcuserp.com/v1
    description: >-
      Dev sandbox API (test-only data, accepts `ark_test_*` keys against dev
      RDS)
security: []
paths:
  /exchange-rates:
    get:
      tags:
        - Masters
      summary: List exchange rates (NOT IMPLEMENTED)
      description: >
        **NOTICE: Multi-currency support is NOT implemented in Arcus.**


        This endpoint accepts reads for forward-compatibility but exchange rate
        data has no business

        effect on any transaction. All GL posting paths operate in a single
        functional currency (USD).

        Storing exchange rates here does NOT cause Arcus to convert invoice
        amounts, revalue open AR/AP

        balances, or post FX gain/loss journal entries. Those mechanisms do not
        exist in Arcus today.


        This endpoint returns HTTP 501 Not Implemented unless
        `entities.settings.multi_currency_enabled`

        is true (which no entity has set, as of 2026-05-22).


        Returns all exchange rate records for the entity, sorted by effective
        date descending. Each

        record includes the source currency code, target currency code (the
        entity's functional

        currency), rate value, and effective date. Multiple rates for the same
        currency pair may

        exist with different effective dates; the most recent rate before a
        transaction date is used.

        Requires `settings:read` scope.
      operationId: listExchangeRates
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
        - name: after
          in: query
          schema:
            type: string
        - name: from_currency
          in: query
          description: Filter by source currency. Accepts ISO-4217 code (e.g. USD) or UUID.
          schema:
            type: string
        - name: to_currency
          in: query
          description: Filter by target currency. Accepts ISO-4217 code (e.g. GBP) or UUID.
          schema:
            type: string
        - name: from_currency_id
          in: query
          description: >-
            Filter by source currency UUID (canonical form). Use from_currency
            for code-based lookup.
          schema:
            type: string
            format: uuid
        - name: to_currency_id
          in: query
          description: Filter by target currency UUID (canonical form).
          schema:
            type: string
            format: uuid
        - name: as_of_date_gte
          in: query
          schema:
            type: string
            format: date
        - name: as_of_date_lte
          in: query
          schema:
            type: string
            format: date
      responses:
        '200':
          description: List of exchange rates
          content:
            application/json:
              schema:
                type: object
                properties:
                  object:
                    type: string
                    example: list
                  data:
                    type: array
                    items:
                      type: object
                  has_more:
                    type: boolean
                  url:
                    type: string
                    example: /v1/exchange-rates
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
      security:
        - ApiKeyAuth: []
components:
  responses:
    Error:
      description: Error response (400/401/403/404/409/422/429/500)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
  schemas:
    ErrorEnvelope:
      type: object
      description: |
        Canonical error response envelope. All API errors use this shape.
      required:
        - error
        - code
      properties:
        error:
          type: string
          description: Machine-readable error key
          example: not_found
        code:
          type: string
          description: Machine-readable error code (often same as error)
          example: not_found
        type:
          type: string
          enum:
            - validation_error
            - permission_error
            - not_found
            - conflict
            - rate_limit
            - internal
            - expand_error
            - not_implemented
          example: not_found
        hint:
          type: string
          description: Human-readable one-sentence explanation (English)
          example: >-
            The requested order does not exist or does not belong to this
            entity.
        param:
          type: string
          description: The parameter that caused the error, if applicable
          example: expand[0]
        required:
          type: string
          description: The scope required (only on insufficient_scope errors)
          example: accounts:read
        request_id:
          type: string
          description: >-
            Unique request ID for support tracing (maps to CloudWatch log
            stream)
          example: req_abc123
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: |
        API key issued per entity via Settings > Developers > API Keys.
        Each key carries scopes (e.g. orders:read, products:write).
        Bearer token format: Authorization: Bearer ark_live_ent_<code>_<random>
        Test keys use ark_test_ent_<code>_<random>. Both are issued per entity
        via Settings > Developers > API Keys.

````