Medusa Currencies API

A store can use unlimited currencies, and each region must be associated with at least one currency. Currencies are defined by the Currency Module. Currency API Routes allow admins to list and update currencies.

Operations 4

GET /admin/currencies List Currencies #
GET /admin/currencies/{code} Get a Currency #
GET /store/currencies List Currencies #
GET /store/currencies/{code} Get a Currency #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/medusa-currencies-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

medusa-currencies-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Medusa Currencies API
  version: 2.19.0
  description: 'Operations tagged Currencies across 2 of this provider''s published API definitions: medusa-admin-openapi.yaml, medusa-store-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: http://localhost:9000
- url: https://api.medusajs.com
tags:
- name: Currencies
  description: 'A store can use unlimited currencies, and each region must be associated with at least one currency.


    Currencies are defined by the Currency Module. Currency API Routes allow admins to list and update currencies.

    '
  externalDocs:
    description: Learn more about the Currency Module
    url: https://docs.medusajs.com/resources/commerce-modules/currency
  x-associatedSchema:
    $ref: '#/components/schemas/AdminCurrency'
paths:
  /admin/currencies:
    get:
      operationId: GetCurrencies
      summary: List Currencies
      description: Retrieve a list of currencies. The currencies can be filtered by fields such as `id`. The currencies can also be sorted or paginated.
      x-authenticated: true
      parameters:
      - name: fields
        in: query
        description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
        required: false
        schema:
          type: string
          title: fields
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          externalDocs:
            url: '#select-fields-and-relations'
      - name: offset
        in: query
        description: The number of items to skip when retrieving a list.
        required: false
        schema:
          type: number
          title: offset
          description: The number of items to skip when retrieving a list.
          externalDocs:
            url: '#pagination'
      - name: limit
        in: query
        description: Limit the number of items returned in the list.
        required: false
        schema:
          type: number
          title: limit
          description: Limit the number of items returned in the list.
          externalDocs:
            url: '#pagination'
      - name: order
        in: query
        description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        required: false
        schema:
          type: string
          title: order
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
      - name: q
        in: query
        description: The search term to filter the currency's searchable properties by.
        required: false
        schema:
          type: string
          title: q
          description: The search term to filter the currency's searchable properties by.
      - name: code
        in: query
        required: false
        schema:
          oneOf:
          - type: string
            title: code
            description: Filter by a currency code.
          - type: array
            description: Filter by currency codes.
            items:
              type: string
              title: code
              description: A currency code.
      - name: $and
        in: query
        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
        required: false
        schema:
          type: array
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          items:
            type: object
          title: $and
      - name: $or
        in: query
        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
        required: false
        schema:
          type: array
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          items:
            type: object
          title: $or
      - name: with_deleted
        in: query
        description: Whether to include deleted records in the result.
        required: false
        schema:
          type: boolean
          title: with_deleted
          description: Whether to include deleted records in the result.
      security:
      - api_token: []
      - cookie_auth: []
      - jwt_token: []
      x-codeSamples:
      - lang: JavaScript
        label: JS SDK
        source: "import Medusa from \"@medusajs/js-sdk\"\n\nexport const sdk = new Medusa({\n  baseUrl: import.meta.env.VITE_BACKEND_URL || \"/\",\n  debug: import.meta.env.DEV,\n  auth: {\n    type: \"session\",\n  },\n})\n\nsdk.admin.currency.list()\n.then(({ currencies, count, limit, offset }) => {\n  console.log(currencies)\n})"
      - lang: Shell
        label: cURL
        source: 'curl ''{backend_url}/admin/currencies'' \

          -H ''Authorization: Bearer {jwt_token}'''
      tags:
      - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCurrencyListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    servers:
    - url: http://localhost:9000
    - url: https://api.medusajs.com
  /admin/currencies/{code}:
    get:
      operationId: GetCurrenciesCode
      summary: Get a Currency
      description: Retrieve a currency by its code. You can expand the currency's relations or select the fields that should be returned using the query parameters.
      x-authenticated: true
      parameters:
      - name: code
        in: path
        description: The currency's code.
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
        required: false
        schema:
          type: string
          title: fields
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          externalDocs:
            url: '#select-fields-and-relations'
      security:
      - api_token: []
      - cookie_auth: []
      - jwt_token: []
      x-codeSamples:
      - lang: JavaScript
        label: JS SDK
        source: "import Medusa from \"@medusajs/js-sdk\"\n\nexport const sdk = new Medusa({\n  baseUrl: import.meta.env.VITE_BACKEND_URL || \"/\",\n  debug: import.meta.env.DEV,\n  auth: {\n    type: \"session\",\n  },\n})\n\nsdk.admin.currency.retrieve(\"usd\")\n.then(({ currency }) => {\n  console.log(currency)\n})"
      - lang: Shell
        label: cURL
        source: 'curl ''{backend_url}/admin/currencies/{code}'' \

          -H ''Authorization: Bearer {jwt_token}'''
      tags:
      - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminCurrencyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    servers:
    - url: http://localhost:9000
    - url: https://api.medusajs.com
  /store/currencies:
    get:
      operationId: GetCurrencies
      summary: List Currencies
      description: Retrieve a list of currencies. The currencies can be filtered by fields such as `code`. The currencies can also be sorted or paginated.
      x-authenticated: false
      parameters:
      - name: x-publishable-api-key
        in: header
        description: Publishable API Key created in the Medusa Admin.
        required: true
        schema:
          type: string
          externalDocs:
            url: https://docs.medusajs.com/api/store#publishable-api-key
      - name: x-medusa-locale
        in: header
        description: The locale in BCP 47 format to retrieve localized content.
        required: false
        schema:
          type: string
          example: en-US
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/translation/storefront
            description: Learn more in the Serve Translations in Storefront guide.
      - name: fields
        in: query
        description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
        required: false
        schema:
          type: string
          title: fields
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          externalDocs:
            url: '#select-fields-and-relations'
      - name: offset
        in: query
        description: The number of items to skip when retrieving a list.
        required: false
        schema:
          type: number
          title: offset
          description: The number of items to skip when retrieving a list.
          externalDocs:
            url: '#pagination'
      - name: limit
        in: query
        description: Limit the number of items returned in the list.
        required: false
        schema:
          type: number
          title: limit
          description: Limit the number of items returned in the list.
          externalDocs:
            url: '#pagination'
      - name: order
        in: query
        description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
        required: false
        schema:
          type: string
          title: order
          description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
      - name: q
        in: query
        description: Search term to filter the currency's searchable properties.
        required: false
        schema:
          type: string
          title: q
          description: Search term to filter the currency's searchable properties.
      - name: code
        in: query
        required: false
        schema:
          oneOf:
          - type: string
            title: code
            description: Filter by a currency code.
          - type: array
            description: Filter by currency codes.
            items:
              type: string
              title: code
              description: A currency code.
      - name: $and
        in: query
        description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
        required: false
        schema:
          type: array
          description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
          items:
            type: object
          title: $and
      - name: $or
        in: query
        description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
        required: false
        schema:
          type: array
          description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
          items:
            type: object
          title: $or
      - name: with_deleted
        in: query
        description: Whether to include deleted records in the result.
        required: false
        schema:
          type: boolean
          title: with_deleted
          description: Whether to include deleted records in the result.
      - name: locale
        in: query
        description: The locale in BCP 47 format to retrieve localized content.
        required: false
        schema:
          type: string
          example: en-US
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/translation/storefront
            description: Learn more in the Serve Translations in Storefront guide.
      x-codeSamples:
      - lang: Shell
        label: cURL
        source: 'curl ''{backend_url}/store/currencies'' \

          -H ''x-publishable-api-key: {your_publishable_api_key}'''
      tags:
      - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreCurrencyListResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    servers:
    - url: http://localhost:9000
    - url: https://api.medusajs.com
  /store/currencies/{code}:
    get:
      operationId: GetCurrenciesCode
      summary: Get a Currency
      description: Retrieve a currency by its code. You can expand the currency's relations or select the fields that should be returned.
      x-authenticated: false
      parameters:
      - name: code
        in: path
        description: The currency's code.
        required: true
        schema:
          type: string
      - name: x-publishable-api-key
        in: header
        description: Publishable API Key created in the Medusa Admin.
        required: true
        schema:
          type: string
          externalDocs:
            url: https://docs.medusajs.com/api/store#publishable-api-key
      - name: x-medusa-locale
        in: header
        description: The locale in BCP 47 format to retrieve localized content.
        required: false
        schema:
          type: string
          example: en-US
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/translation/storefront
            description: Learn more in the Serve Translations in Storefront guide.
      - name: fields
        in: query
        description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
        required: false
        schema:
          type: string
          title: fields
          description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default fields. without prefix it will replace the entire default fields.
          externalDocs:
            url: '#select-fields-and-relations'
      - name: locale
        in: query
        description: The locale in BCP 47 format to retrieve localized content.
        required: false
        schema:
          type: string
          example: en-US
          externalDocs:
            url: https://docs.medusajs.com/resources/commerce-modules/translation/storefront
            description: Learn more in the Serve Translations in Storefront guide.
      x-codeSamples:
      - lang: Shell
        label: cURL
        source: 'curl ''{backend_url}/store/currencies/{code}'' \

          -H ''x-publishable-api-key: {your_publishable_api_key}'''
      tags:
      - Currencies
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreCurrencyResponse'
        '400':
          $ref: '#/components/responses/400_error'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/not_found_error'
        '409':
          $ref: '#/components/responses/invalid_state_error'
        '422':
          $ref: '#/components/responses/invalid_request_error'
        '500':
          $ref: '#/components/responses/500_error'
    servers:
    - url: http://localhost:9000
    - url: https://api.medusajs.com
components:
  examples:
    invalid_data_error:
      summary: Invalid Data Error
      value:
        message: first_name must be a string
        type: invalid_data
    not_allowed_error:
      summary: Not Allowed Error
      value:
        message: Discount must be set to dynamic
        type: not_allowed
    database_error:
      summary: Database Error
      value:
        code: api_error
        message: An error occured while hashing password
        type: database_error
    default_error:
      summary: Default Error
      value:
        code: unknown_error
        message: An unknown error occurred.
        type: unknown_error
    invalid_argument_error:
      summary: Invalid Argument Error
      value:
        message: cart.total must be defined
        type: unexpected_state
    unexpected_state_error:
      summary: Unexpected State Error
      value:
        message: cart.total must be defined
        type: unexpected_state
  schemas:
    AdminCurrencyListResponse:
      type: object
      description: The paginated list of currencies.
      x-schemaName: AdminCurrencyListResponse
      required:
      - limit
      - offset
      - count
      - currencies
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total number of items.
        currencies:
          type: array
          description: The list of currencies.
          items:
            $ref: '#/components/schemas/AdminCurrency'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
    Error:
      title: Response Error
      type: object
      properties:
        code:
          type: string
          description: A slug code to indicate the type of the error.
          enum:
          - invalid_state_error
          - invalid_request_error
          - api_error
          - unknown_error
        message:
          type: string
          description: Description of the error that occurred.
          example: first_name must be a string
        type:
          type: string
          description: A slug indicating the type of the error.
          enum:
          - QueryRunnerAlreadyReleasedError
          - TransactionAlreadyStartedError
          - TransactionNotStartedError
          - conflict
          - unauthorized
          - payment_authorization_error
          - duplicate_error
          - not_allowed
          - invalid_data
          - not_found
          - database_error
          - unexpected_state
          - invalid_argument
          - unknown_error
    AdminCurrency:
      type: object
      description: The currency's currencies.
      x-schemaName: AdminCurrency
      required:
      - code
      - symbol
      - symbol_native
      - name
      - decimal_digits
      - rounding
      - created_at
      - updated_at
      - deleted_at
      properties:
        code:
          type: string
          title: code
          description: The currency's code.
          example: usd
        symbol:
          type: string
          title: symbol
          description: The currency's symbol.
          example: $
        symbol_native:
          type: string
          title: symbol_native
          description: The currency's native symbol, if different than the symbol.
          example: $
        name:
          type: string
          title: name
          description: The currency's name.
        decimal_digits:
          type: number
          title: decimal_digits
          description: The number of digits after the decimal for prices in this currency.
        rounding:
          type: number
          title: rounding
          description: The rounding percision applied on prices in this currency.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The currency's creation date.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The currency's update date.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The currency's deletion date.
    AdminCurrencyResponse:
      type: object
      description: The currency's details.
      x-schemaName: AdminCurrencyResponse
      required:
      - currency
      properties:
        currency:
          $ref: '#/components/schemas/AdminCurrency'
    StoreCurrencyResponse:
      type: object
      description: The currency's details.
      x-schemaName: StoreCurrencyResponse
      required:
      - currency
      properties:
        currency:
          $ref: '#/components/schemas/StoreCurrency'
    StoreCurrency:
      type: object
      description: The currency's details.
      x-schemaName: StoreCurrency
      required:
      - code
      - symbol
      - symbol_native
      - name
      - decimal_digits
      - rounding
      - created_at
      - updated_at
      - deleted_at
      properties:
        code:
          type: string
          title: code
          description: The currency's code.
          example: usd
        symbol:
          type: string
          title: symbol
          description: The currency's symbol.
        symbol_native:
          type: string
          title: symbol_native
          description: The currency's symbol native.
        name:
          type: string
          title: name
          description: The currency's name.
        decimal_digits:
          type: number
          title: decimal_digits
          description: The currency's decimal digits.
        rounding:
          type: number
          title: rounding
          description: The currency's rounding.
        created_at:
          type: string
          format: date-time
          title: created_at
          description: The date the currency was created.
        updated_at:
          type: string
          format: date-time
          title: updated_at
          description: The date the currency was updated.
        deleted_at:
          type: string
          format: date-time
          title: deleted_at
          description: The date the currency was deleted.
    StoreCurrencyListResponse:
      type: object
      description: The paginated list of currencies.
      x-schemaName: StoreCurrencyListResponse
      required:
      - limit
      - offset
      - count
      - currencies
      properties:
        limit:
          type: number
          title: limit
          description: The maximum number of items returned.
        offset:
          type: number
          title: offset
          description: The number of items skipped before retrieving the returned items.
        count:
          type: number
          title: count
          description: The total count of items.
        currencies:
          type: array
          description: The list of currencies.
          items:
            $ref: '#/components/schemas/StoreCurrency'
        estimate_count:
          type: number
          title: estimate_count
          description: The estimated count retrieved from the PostgreSQL query planner, which may be inaccurate.
          x-featureFlag: index_engine
  responses:
    invalid_request_error:
      description: Invalid Request Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: invalid_request_error
            message: Discount with code TEST already exists.
            type: duplicate_error
    unauthorized:
      description: User is not authorized. Must log in first
      content:
        text/plain:
          schema:
            type: string
            default: Unauthorized
            example: Unauthorized
    400_error:
      description: Client Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            not_allowed:
              $ref: '#/components/examples/not_allowed_error'
            invalid_data:
              $ref: '#/components/examples/invalid_data_error'
    500_error:
      description: Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            database:
              $ref: '#/components/examples/database_error'
            unexpected_state:
              $ref: '#/components/examples/unexpected_state_error'
            invalid_argument:
              $ref: '#/components/examples/invalid_argument_error'
            default_error:
              $ref: '#/components/examples/default_error'
    invalid_state_error:
      description: Invalid State Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: unknown_error
            message: The request conflicted with another request. You may retry the request with the provided Idempotency-Key.
            type: QueryRunnerAlreadyReleasedError
    not_found_error:
      description: Not Found Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Entity with id 1 was not found
            type: not_found
  securitySchemes:
    api_token:
      type: http
      x-displayName: API Token
      scheme: basic
    jwt_token:
      type: http
      x-displayName: JWT Token
      scheme: bearer
    cookie_auth:
      type: apiKey
      in: cookie
      name: connect.sid
      x-displayName: Cookie Session ID
    reset_password:
      type: http
      x-displayName: Reset Password Token
      scheme: bearer
      x-is-auth: false
x-refined-from:
- medusa-admin-openapi.yaml
- medusa-store-openapi.yaml