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

# Retrieve sellable currencies

> Returns the currencies this business can price a payment plan in. `sellable_currencies`
is the set `payment_plans[].currency` accepts on `POST /v1/commerce/products` today; any
other code is refused with 422. `default_currency` is the one COPE stamps on a plan sent
without a currency, and is `null` when the business has no sellable currency yet or several
and no declared default.

`platform_currencies` lists every currency COPE can charge in. For each platform currency
the business cannot sell in, `exchange_rates` carries the current platform rate into each
currency it can, so a catalog priced in the former can be converted with the same rate
checkout uses. The list is empty when the business already sells in every platform currency.
Rates are a convenience next to the currency facts: when the rate provider is unavailable
the response is still 200 and `exchange_rates` is empty.

`rate` is a decimal string at full precision; `quoted_at` is when COPE answered.

Requires the `products` permission at `read`. An API key holds a permission at the lower of its own level (`read` for a read-only key) and its holder's role; a key without it is refused with 403.



## OpenAPI

````yaml /api-reference/commerce-v1.openapi.json get /v1/commerce/currencies
openapi: 3.0.3
info:
  description: >-
    Public REST API for COPE vendor integrations. Authenticate with a COPE API
    key and call the endpoints described below.
  title: COPE Public API
  version: v1
servers:
  - description: Production
    url: https://api.cope.com
security:
  - cope_sk: []
paths:
  /v1/commerce/currencies:
    get:
      tags:
        - Currencies
      summary: Retrieve sellable currencies
      description: >-
        Returns the currencies this business can price a payment plan in.
        `sellable_currencies`

        is the set `payment_plans[].currency` accepts on `POST
        /v1/commerce/products` today; any

        other code is refused with 422. `default_currency` is the one COPE
        stamps on a plan sent

        without a currency, and is `null` when the business has no sellable
        currency yet or several

        and no declared default.


        `platform_currencies` lists every currency COPE can charge in. For each
        platform currency

        the business cannot sell in, `exchange_rates` carries the current
        platform rate into each

        currency it can, so a catalog priced in the former can be converted with
        the same rate

        checkout uses. The list is empty when the business already sells in
        every platform currency.

        Rates are a convenience next to the currency facts: when the rate
        provider is unavailable

        the response is still 200 and `exchange_rates` is empty.


        `rate` is a decimal string at full precision; `quoted_at` is when COPE
        answered.


        Requires the `products` permission at `read`. An API key holds a
        permission at the lower of its own level (`read` for a read-only key)
        and its holder's role; a key without it is refused with 403.
      operationId: commerce.currencies.retrieve
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  data:
                    additionalProperties: false
                    properties:
                      default_currency:
                        nullable: true
                        type: string
                      exchange_rates:
                        items:
                          additionalProperties: false
                          properties:
                            from:
                              type: string
                            quoted_at:
                              format: date-time
                              type: string
                            rate:
                              type: string
                            to:
                              type: string
                          required:
                            - from
                            - to
                            - rate
                            - quoted_at
                          type: object
                        type: array
                      platform_currencies:
                        items:
                          type: string
                        type: array
                      sellable_currencies:
                        items:
                          type: string
                        type: array
                    required:
                      - default_currency
                      - sellable_currencies
                      - platform_currencies
                      - exchange_rates
                    type: object
                required:
                  - data
                type: object
          description: Successful response
        '400':
          content:
            application/problem+json:
              examples:
                unparsable_request:
                  summary: Unparsable request
                  value:
                    code: invalid_request
                    detail: >-
                      The request could not be parsed. Check the query string
                      and the request body.
                    request_id: 0b6e3f2a-8c4d-4f1e-9a7b-5d2c8e1f4a90
                    status: 400
                    title: Invalid Request
                    type: https://docs.cope.com/errors/invalid_request
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Invalid request
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Missing or invalid bearer token
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: Bearer token is not authorized for this route
        '503':
          content:
            application/problem+json:
              examples:
                user_not_ready:
                  summary: The key's user is not available yet
                  value:
                    code: user_not_ready
                    detail: Retry after 2 seconds
                    errors:
                      - code: user_not_ready
                        detail: Retry after 2 seconds
                    request_id: 0b6e3f2a-8c4d-4f1e-9a7b-5d2c8e1f4a90
                    status: 503
                    title: User Not Ready
                    type: https://docs.cope.com/errors/user_not_ready
                tenant_not_ready:
                  summary: The key's business is not available yet
                  value:
                    code: tenant_not_ready
                    detail: Retry after 2 seconds
                    errors:
                      - code: tenant_not_ready
                        detail: Retry after 2 seconds
                    request_id: 0b6e3f2a-8c4d-4f1e-9a7b-5d2c8e1f4a90
                    status: 503
                    title: Tenant Not Ready
                    type: https://docs.cope.com/errors/tenant_not_ready
              schema:
                $ref: '#/components/schemas/PublicProblemDetail'
          description: >-
            The API key is valid but its user or business is not available to
            this API yet (`user_not_ready`, `tenant_not_ready`). Retry after the
            `Retry-After` seconds.
      security:
        - cope_sk: []
components:
  schemas:
    PublicProblemDetail:
      additionalProperties: false
      properties:
        code:
          type: string
        detail:
          nullable: true
          type: string
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                type: string
              detail:
                type: string
              param:
                type: string
            required:
              - code
              - detail
            type: object
          type: array
        request_id:
          description: >-
            Correlates this response with COPE's logs; the response also carries
            it as `X-Request-Id`. It is the `X-Request-Id` you sent when that is
            1-128 letters, digits, `_`, `@` or `-`, and otherwise one COPE
            generated. Quote it when you contact support.
          type: string
        status:
          type: integer
        title:
          type: string
        type:
          type: string
      required:
        - type
        - title
        - status
        - code
        - request_id
      type: object
  securitySchemes:
    cope_sk:
      description: >-
        Bearer credential for the public API: a live COPE API key (`ck_live_*`;
        keys issued earlier as `cope_sk_live_*` keep working). Dashboard sign-in
        tokens are not accepted.
      scheme: bearer
      type: http

````

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