Currencycloud Quotes API

Create new quotes to use for held rates conversions.

OpenAPI Specification

currencycloud-quotes-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: api-onboarding Account Usage Quotes API
  version: v1
  description: Create new quotes to use for held rates conversions.
servers:
- url: /onboarding
  description: Relative URL
- url: https://api.currencycloud.com/onboarding
  description: Production server (uses live data)
- url: https://devapi.currencycloud.com/onboarding
  description: Dev server (uses test data)
tags:
- name: Quotes
  description: Create new quotes to use for held rates conversions.
paths:
  /quotes/create:
    post:
      tags:
      - Quotes
      x-throttling-tier: Unlimited
      x-api-group: convert
      summary: Create Held Rate Quote
      description: '<p style="color:#FF5000;"><strong>BETA</strong></p><br> <p style="border-width:3px; border-style:solid; border-color:#FF5000; padding: 1em;">Please note that this endpoint is currently in beta. For additional details, please contact your Account Manager or our <a href="mailto:support@currencycloud.com">support team</a>.</p><br> Requests a new quote for the specified held-rate period and returns the details of the quote on success.'
      operationId: CreateQuoteConversion
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: X-Auth-Token
        in: header
        required: true
        type: string
        description: Authentication token.
      - name: buy_currency
        in: formData
        required: true
        type: string
        description: Three-character ISO code of the currency being purchased.
      - name: sell_currency
        in: formData
        required: true
        type: string
        description: Three-character ISO code of the currency being sold.
      - name: fixed_side
        in: formData
        required: true
        type: string
        enum:
        - buy
        - sell
        description: Fix the buy or sell currency.
      - name: amount
        in: formData
        required: true
        type: string
        description: Amount of the fixed buy or sell currency.
      - name: hold_period
        in: formData
        required: true
        type: string
        description: 'The length of time for which the quote should remain valid. This value must be pre-configured for your account and should be provided using one of the supported units: seconds (s) or  minutes (m). For example: 30s, 3m.'
      - name: conversion_date
        in: formData
        required: false
        type: string
        format: date
        description: Earliest delivery date in UTC time zone. Format YYYY-MM-DD.
      - name: conversion_date_preference
        in: formData
        required: false
        type: string
        enum:
        - earliest
        - next_day
        - default
        - optimize_liquidity
        description: Available and required only if conversion_date is not provided. Not currently supported for APAC currencies.<br> Must be one of the following:<br> - 'earliest' for earliest available conversion date. Make sure there is sufficient time to send funds to Currencycloud.<br> - 'next_day' for next day available conversion date - T+1.<br> - 'default' for conversion - T+1 for APAC, T+2 for everywhere else.<br> - 'optimize_liquidity' for maximizing chances of getting a successful rate. Most relevant for exotic pairs. Conversion is within one or two working days depending on currencies.
      - name: on_behalf_of
        in: formData
        required: false
        type: string
        description: A contact UUID for the sub-account you're acting on behalf of.
      responses:
        '200':
          description: Success.
          schema:
            $ref: '#/definitions/HeldRateQuote'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '400':
          description: Client error.
          x-errors:
          - code: unique_value_parameters
            category: base
            message: 'Following parameters should not have same values: sell_currency, buy_currency'
            params: '{ "parameters" => "sell_currency, buy_currency" }'
          - code: fixed_side_not_in_range
            category: fixed_side
            message: 'fixed_side should be in range: sell, buy'
            params: '{ "range" => "sell, buy" }'
          - code: fixed_side_is_required
            category: fixed_side
            message: fixed_side is required
            params: ''
          - code: conversion_date_type_is_wrong
            category: conversion_date
            message: conversion_date should be of date type
            params: '{ "type" => "date" }'
          - code: sell_currency_is_in_invalid_format
            category: sell_currency
            message: sell_currency is in invalid format
            params: ''
          - code: sell_currency_is_required
            category: sell_currency
            message: sell_currency is required
            params: ''
          - code: amount_type_is_wrong
            category: amount
            message: amount should be of numeric type
            params: '{ "type" => "numeric" }'
          - code: amount_is_required
            category: amount
            message: amount is required
            params: ''
          - code: amount_is_too_small
            category: amount
            message: amount can not be smaller than 1
            params: '{ "minvalue" => 1 }'
          - code: buy_currency_is_in_invalid_format
            category: buy_currency
            message: buy_currency is in invalid format
            params: ''
          - code: buy_currency_is_required
            category: buy_currency
            message: buy_currency is required
            params: ''
          - code: on_behalf_of_self
            category: on_behalf_of
            message: You cannot act on behalf of your own Contact
            params: ''
          - code: contact_not_found
            category: on_behalf_of
            message: Contact was not found for this id
            params: ''
          - code: amount_is_in_invalid_format
            category: amount
            message: amount should be of numeric type with 2 dp
            params: '{ "type" => "numeric_with_precision", "precision" => 2 }'
          - code: invalid_conversion_date_preference
            category: base
            message: not a valid conversion date preference, possible options are earliest, optimize_liquidity, default, next_day
            params: ''
          - code: hold_period_is_required
            category: hold_period
            message: hold_period is required
            params: ''
          - code: ccy_pair_is_not_tradeable
            category: currency_pair
            message: Given currency pair is not tradeable
            params: ''
          - code: crossing_cutoff_time
            category: base
            message: Hold period extends beyond the cut-off-time for the requested delivery date
            params: ''
          - code: held_rate_not_enabled
            category: base
            message: Held Rates Product is not enabled for this account
            params: ''
          - code: invalid_conversion_date
            category: base
            message: Conversion date is not valid for this currency pair
            params: ''
          - code: invalid_conversion_date_combination
            category: base
            message: One of conversion_date or conversion_date_preference must be specified
            params: ''
          - code: invalid_decimals
            category: base
            message: amount should be specified with a valid number of decimal places
            params: ''
          - code: invalid_delivery_date
            category: base
            message: The delivery date you have requested cannot be met for this currency pair
            params: ''
          - code: invalid_hold_period
            category: base
            message: Requested hold_period is invalid for this account
            params: ''
          - code: missing_client_spread_table_data
            category: base
            message: Sorry, the online client pricing for the amount of the currency pair you are trying to trade has not been set up - please contact us
            params: ''
          - code: quote_could_not_be_created
            category: base
            message: Quote could not be created
            params: ''
          schema:
            $ref: '#/definitions/HeldRateQuoteError'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '401':
          description: Unauthorized.
          x-errors:
          - code: invalid_supplied_credentials
            category: username
            message: Authentication failed with the supplied credentials
            params: ''
          schema:
            $ref: '#/definitions/UnauthorizedError'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '404':
          description: Resource not found.
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '500':
          description: Internal server error
          x-errors:
          - code: internal_server_error
            category: base
            message: Internal server error
            params: ''
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '503':
          description: Service is temporarily unavailable
          x-errors:
          - code: service_unavailable
            category: base
            message: Service is temporarily unavailable
            params: ''
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        default:
          description: Unexpected error.
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
components:
  securitySchemes:
    AuthToken:
      type: apiKey
      in: header
      name: X-Auth-Token
definitions:
  UnauthorizedError:
    type: object
    description: Authorization error.
    required:
    - error_code
    - error_messages
    properties:
      error_code:
        type: string
        description: A high-level error code for the whole request.
        enum:
        - auth_failed
      error_messages:
        type: object
        description: Detailed error information for individual input parameters that failed validation. Object keys are the names of the invalid input parameters. Each parameter may have one or more reasons why it failed.
        additionalProperties:
          type: array
          items:
            type: object
            description: An object that represents one of the reasons why the input parameter failed.
            required:
            - code
            - message
            properties:
              code:
                type: string
                description: A unique code that identifies this error. It can be used for translations.
              message:
                type: string
                description: An explanation of the error in English.
              params:
                type: object
                default: {}
                description: Relevant validation rules that failed. This can be used for translations.
                example:
                  minlength: 1
                  maxlength: 255
    example:
      error_code: auth_failed
      error_messages:
        api_key:
        - code: invalid_supplied_credentials
          message: Authentication failed with the supplied credentials
          params: {}
  HeldRateQuoteError:
    type: object
    description: 'Client error information for the Create Quote endpoint.

      '
    required:
    - error_code
    - error_messages
    properties:
      error_code:
        type: string
        description: A high-level error code for the whole request.
      error_messages:
        type: object
        description: Detailed error information for individual input parameters that failed validation. Object keys are the names of the invalid input parameters. Each parameter may have one or more reasons why it failed.
        additionalProperties:
          type: array
          items:
            type: object
            description: An object that represents one of the reasons why the input parameter failed.
            required:
            - code
            - message
            properties:
              code:
                type: string
                description: A unique code that identifies this error. It can be used for translations.
              message:
                type: string
                description: An explanation of the error in English.
              params:
                type: object
                default: {}
                description: Relevant validation rules that failed. This can be used for translations.
                example:
                  minlength: 1
                  maxlength: 255
  HeldRateQuote:
    type: object
    description: Detailed held rate quote information.
    properties:
      buy_currency:
        type: string
      client_buy_amount:
        type: string
      client_rate:
        type: string
      client_sell_amount:
        type: string
      core_rate:
        type: string
      created_at:
        type: string
      currency_pair:
        type: string
      deposit_amount:
        type: string
      deposit_currency:
        type: string
      deposit_required:
        type: boolean
      expires_at:
        type: string
      fixed_side:
        type: string
      mid_market_rate:
        type: string
      partner_buy_amount:
        type: string
      partner_rate:
        type: string
      partner_sell_amount:
        type: string
      quote_id:
        type: string
      sell_currency:
        type: string
      settlement_cut_off_time:
        type: string
    example:
      buy_currency: USD
      client_buy_amount: '118.56'
      client_rate: '1.1856'
      client_sell_amount: '100.0'
      core_rate: '1.1858'
      created_at: '2025-08-11T08:10:21Z'
      currency_pair: EURUSD
      deposit_amount: '0.0'
      deposit_currency: EUR
      deposit_required: false
      expires_at: '2025-08-11T08:15:21Z'
      fixed_side: sell
      mid_market_rate: '1.0146'
      partner_buy_amount: '118.56'
      partner_rate: '1.1856'
      partner_sell_amount: '100.0'
      quote_id: 3c25ce4a-3552-45bb-869e-406c795052aa
      sell_currency: EUR
      settlement_cut_off_time: '2025-08-13T15:30:00Z'