Currencycloud Accounts API

Create, search and update your Currencycloud account and any associated sub-accounts. Also provides you with the ability to use your own reference IDs for easy reconciliation with your internal systems.

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/currencycloud-accounts-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 email required.

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

OpenAPI Specification

currencycloud-accounts-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: api-onboarding Account Usage Accounts API
  version: v1
  description: Create, search and update your Currencycloud account and any associated sub-accounts. Also provides you with the ability to use your own reference IDs for easy reconciliation with your internal systems.
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: Accounts
  description: Create, search and update your Currencycloud account and any associated sub-accounts. Also provides you with the ability to use your own reference IDs for easy reconciliation with your internal systems.
paths:
  /accounts/create:
    post:
      tags:
      - Accounts
      x-api-group: manage
      summary: Create Account
      description: Creates a new sub-account. Returns the new account entity on success.
      operationId: CreateAccount
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: X-Auth-Token
        in: header
        required: true
        type: string
        description: Authentication token
        minLength: 32
      - name: account_name
        in: formData
        required: true
        type: string
        description: Account name.
        pattern: \S+
        minLength: 1
        maxLength: 150
      - name: legal_entity_type
        in: formData
        required: true
        type: string
        enum:
        - company
        - individual
        description: Legal entity.
      - name: street
        in: formData
        required: true
        type: string
        description: First line of address.
        maxLength: 150
      - name: city
        in: formData
        required: true
        type: string
        description: City
        maxLength: 100
      - name: postal_code
        in: formData
        required: false
        type: string
        description: Postal code. Required for sub-accounts on our outsourced KYC model, also required where country code = "US", "CA" or "MX".
        maxLength: 20
      - name: country
        in: formData
        required: true
        type: string
        description: Two-letter ISO country code.
        format: iso3166-1-alpha-2
        pattern: ^[A-Z]{2}$
      - name: brand
        in: formData
        required: false
        type: string
        description: The value of this field is used for white labeling the Currencycloud user interface. If nothing is specified then the account will inherit the house account's brand.
        minLength: 1
        maxLength: 255
      - name: your_reference
        in: formData
        required: false
        type: string
        description: User-generated reference code.
        minLength: 1
        maxLength: 255
      - name: status
        in: formData
        required: false
        type: string
        enum:
        - disabled
        - enabled
        default: enabled
        description: Account status.
      - name: state_or_province
        in: formData
        required: false
        type: string
        description: State or province two-letter ISO 3166 code. Only applicable to some countries, required where country code = "US", "CA" or "MX".
        maxLength: 100
      - name: spread_table
        in: formData
        required: false
        type: string
        default: flat_0.00
        description: The name of the spread table assigned to the account. This is needed if they intend to apply markup.
        maxLength: 100
      - name: api_trading
        in: formData
        required: false
        type: boolean
        description: Allow the account to make trades via the Currencycloud API.
      - name: online_trading
        in: formData
        required: false
        type: boolean
        description: Allow the account to make trades via Currencycloud Direct.
      - name: phone_trading
        in: formData
        required: false
        type: boolean
        description: Allow the account to make trades via phone.
      - name: identification_type
        in: formData
        required: false
        type: string
        enum:
        - none
        - others
        - asylum_registration_card
        - citizenship_papers
        - consular_id
        - credential_de_elector
        - drivers_license
        - drivers_license_canadian
        - employer_identification_number
        - existing_credit_card_details
        - green_card
        - immigration_status_document
        - indigenous_card
        - international_driving_licence
        - matricula_consular
        - municipality_identity_card
        - national_health_insurance_card
        - national_id
        - national_identity_card
        - passport
        - passport_card
        - postal_identity_card
        - private_operators_card
        - professional_qualification_card
        - proof_of_citizenship
        - registro_federal_de_contribuyentes
        - residence_permit
        - residence_status_document
        - service_id_card
        - social_insurance_number
        - social_security_card
        - social_security_number
        - tax_id
        - visa
        - voter_id
        - work_permit
        - incorporation_number
        description: A legal document that verifies the identity of the account owner. Required for individual sub-accounts on our outsourced KYC model, optional otherwise.
      - name: identification_value
        in: formData
        required: false
        type: string
        description: Unique reference code for the identification document, such as a passport number. Required if "identification_type" is provided.
        minLength: 1
        maxLength: 255
      - name: terms_and_conditions_accepted
        in: formData
        required: false
        type: boolean
        description: Acceptance of the terms and conditions. Required for sub-accounts that are on our Outsourced KYC model, optional otherwise.
      - name: industry_type
        in: formData
        required: false
        maxLength: 255
        type: string
        description: The industry the account operates in. Required if "linked_account_id" is present. Required if extended compliance fields are present.
      - name: business_website_url
        in: formData
        required: false
        type: string
        maxLength: 400
        description: A fully qualified URL (including scheme) indicating a marketplace homepage, a link to a government page concerning the company or the literal string 'no_website_available'. Required if extended compliance fields are present.
      - name: identification_expiration
        in: formData
        required: false
        type: string
        format: date
        description: 'The expiration date for the identification information provided. Format YYYY-MM-DD. Part of extended compliance for "legal_entity_type: individual" accounts.'
      - name: identification_issuer
        in: formData
        maxLength: 255
        required: false
        type: string
        description: 'ISO country code indicating the issuer of the identification information provided. Part of extended compliance for "legal_entity_type: individual" accounts.'
      - name: country_of_citizenship
        in: formData
        required: false
        type: string
        description: 'ISO country code indicating the citizenship of the individual the account belongs to. Provide the longest held citizenship for individuals with multiple. Part of extended compliance for "legal_entity_type: individual" accounts.'
      - name: country_of_incorporation
        in: formData
        required: false
        type: string
        maxLength: 2
        minLength: 2
        description: 'Two-letter ISO country code indicating the country the company is incorpated in. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: date_of_incorporation
        in: formData
        required: false
        type: string
        format: date
        description: 'Date of the company''s incorporation. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: legal_entity_sub_type
        in: formData
        required: false
        type: string
        description: 'The type of company this account represents. Part of extended compliance for "legal_entity_type: company" accounts.'
        enum:
        - sole_trader
        - limited_liability_company
        - public_limited_company
        - limited_liability_partnership
        - unincorporated_partnership
        - unregistered_charity
        - registered_charity
        - trust
        - company_with_nominee_shareholders_or_shares_in_bearer_form
        - scottish_limited_partnership
        - other
      - name: trading_address_street
        in: formData
        required: false
        type: string
        maxLength: 150
        description: 'The street portion of the company''s trading address. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: trading_address_city
        in: formData
        required: false
        type: string
        description: 'The city portion of the company''s trading address. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: trading_address_state
        in: formData
        required: false
        type: string
        maxLength: 100
        description: 'The state portion of the company''s trading address. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: trading_address_postalcode
        in: formData
        required: false
        type: string
        maxLength: 20
        description: 'The postal code portion of the company''s trading address. Part of extended compliance for "legal_entity_type: company" accounts.'
      - name: trading_address_country
        in: formData
        required: false
        maxLength: 2
        minLength: 2
        type: string
        description: 'Two-letter ISO country code representing the country portion of the company''s trading address. Part of extended compliance for accounts with "legal_entity_type: company".'
      - name: tax_identification
        in: formData
        required: false
        type: string
        maxLength: 100
        description: 'Tax identification number for the company. Part of extended compliance for accounts with "legal_entity_type: company". Required for companies based in "US" or "AU".'
      - name: national_identification
        in: formData
        required: false
        type: string
        maxLength: 100
        description: 'National identification (e.g SSN for U.S. individuals). Part of extended compliance for "legal_entity_type: individual" accounts. Required for "US" based companies.'
      - name: customer_risk
        in: formData
        required: false
        type: string
        description: 'The risk classification for this account''s expected behaviour. Part of extended compliance for "legal_entity_type: individual | company" accounts.'
        enum:
        - LOW
        - MEDIUM
        - HIGH
      - name: expected_monthly_activity_volume
        in: formData
        required: false
        type: number
        description: 'The expected number of money moving actions this account will conduct monthly. Part of extended compliance for "legal_entity_type: individual | company" accounts.'
      - name: expected_monthly_activity_value
        in: formData
        required: false
        type: number
        description: 'The expected sum value of money moving actions this account will conduct monthly. The currency basis of the value is submitted as part of "expected_transaction_currencies". Part of extended compliance for "legal_entity_type: individual | company" accounts.'
      - name: expected_transaction_currencies[]
        in: formData
        required: false
        description: 'An array holding a single ISO currency code for the expected currency this account will mainly transact in. Part of extended compliance for "legal_entity_type: individual | company" accounts.'
        type: array
        items:
          type: string
      - name: expected_transaction_countries[]
        in: formData
        required: false
        type: array
        description: Array of two-letter ISO-3166 country codes indicating the countries this account is expected to transact to and from.
        items:
          type: string
          minLength: 2
          maxLength: 2
      responses:
        '200':
          description: Success.
          schema:
            $ref: '#/definitions/Account'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '400':
          description: Client error.
          x-errors:
          - code: account_name_is_too_short
            category: account_name
            message: account_name can not be shorter than 1 character(s)
            params: '{ "minlength" => 1 }'
          - code: account_name_is_too_long
            category: account_name
            message: account_name can not be longer than 150 character(s)
            params: '{ "maxlength" => 150 }'
          - code: account_name_is_required
            category: account_name
            message: account_name is required
            params: ''
          - code: brand_is_too_short
            category: brand
            message: brand can not be shorter than 1 character(s)
            params: '{ "minlength" => 1 }'
          - code: brand_is_too_long
            category: brand
            message: brand can not be longer than 255 character(s)
            params: '{ "maxlength" => 255 }'
          - code: brand_not_found
            category: brand
            message: Brand non_existing_brand wasn't found
            params: '{ "brand" => "non_existing_brand" }'
          - code: brand_account_not_broker
            category: brand
            message: Account doesn't have broker permissions
            params: '{ "brand" => "wrong_brand" }'
          - code: your_reference_is_too_long
            category: your_reference
            message: your_reference can not be longer than 25 character(s)
            params: '{ "maxlength" => 25 }'
          - code: status_not_in_range
            category: status
            message: 'status should be in range: enabled, disabled'
            params: '{ "range" => "enabled, disabled" }'
          - code: legal_entity_type_not_in_range
            category: legal_entity_type
            message: 'legal_entity_type should be in range: individual, company'
            params: '{ "range" => "individual, company" }'
          - code: legal_entity_type_is_required
            category: legal_entity_type
            message: Legal entity type is required
            params: ''
          - code: street_is_too_long
            category: street
            message: street can not be longer than 150 character(s)
            params: '{ "maxlength" => 150 }'
          - code: street_is_required
            category: street
            message: Street is required
            params: ''
          - code: city_is_too_long
            category: city
            message: city can not be longer than 100 character(s)
            params: '{ "maxlength" => 100 }'
          - code: city_is_required
            category: city
            message: City is required.
            params: ''
          - code: postal_code_is_too_long
            category: postal_code
            message: postal_code can not be longer than 20 character(s)
            params: '{ "maxlength" => 20 }'
          - code: postal_code_is_required
            category: postal_code
            message: Postal code is required.
            params: ''
          - code: state_or_province_is_too_long
            category: state_or_province
            message: state_or_province can not be longer than 100 character(s)
            params: '{ "maxlength" => 100 }'
          - code: country_is_in_invalid_format
            category: country
            message: country is not a valid ISO 3166-1 Alpha-2 country code
            params: '{ "maxlength" => 2 }'
          - code: country_is_required
            category: country
            message: Country is required
            params: ''
          - code: spread_table_is_too_long
            category: spread_table
            message: spread_table can not be longer than 100 character(s)
            params: '{ "maxlength" => 100 }'
          - code: identification_type_is_missing
            category: identification_type
            message: identification_type is missing
            params: ''
          - code: identification_type_is_invalid
            category: identification_type
            message: identification_type is invalid
            params: ''
          - code: identification_value_is_missing
            category: identification_value
            message: identification_value is missing
            params: ''
          - code: identification_value_is_invalid
            category: identification_value
            message: identification_value is invalid
            params: ''
          - code: state_or_province_is_required
            category: state_or_province
            message: State or province is required for US, CA and MX
            params: ''
          - code: terms_and_conditions_accepted_is_required
            category: terms_and_conditions_accepted
            message: Terms and conditions accepted is required
            params: ''
          - code: invalid_extra_parameters
            category: base
            message: Invalid extra parameters extra_parameter
            params: '{ "parameters" => "extra_parameter" }'
          schema:
            $ref: '#/definitions/CreateAccountError'
          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.
        '429':
          description: Too many requests.
          x-errors:
          - code: too_many_requests
            category: base
            message: Too many requests have been made to the api. Please refer to the Developer Center for more information
            params: ''
          schema:
            $ref: '#/definitions/RateLimitError'
          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 temporary 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.
  /accounts/{id}:
    get:
      tags:
      - Accounts
      x-api-group: manage
      summary: Get Account
      description: Gets an account or sub-account owned by the authenticated user.
      operationId: GetAccount
      produces:
      - application/json
      parameters:
      - name: X-Auth-Token
        in: header
        required: true
        type: string
        description: Authentication token
      - name: id
        in: path
        required: true
        type: string
        description: Account UUID, returned by the create account endpoint.
      - name: on_behalf_of
        in: query
        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/Account'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '400':
          description: Client error.
          x-errors:
          - code: id_is_not_valid_uuid
            category: id
            message: id should be in UUID format
            params: ''
          - code: account_not_found
            category: id
            message: Account was not found for this id
            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: ''
          schema:
            $ref: '#/definitions/GetAccountError'
          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.
          schema:
            $ref: '#/definitions/NotFoundError'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '429':
          description: Too many requests.
          x-errors:
          - code: too_many_requests
            category: base
            message: Too many requests have been made to the api. Please refer to the Developer Center for more information
            params: ''
          schema:
            $ref: '#/definitions/RateLimitError'
          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 temporary 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.
    post:
      tags:
      - Accounts
      x-api-group: manage
      summary: Update Account
      description: Updates a sub-account owned by the authenticated user. The updated account entity is returned on success.
      operationId: UpdateAccount
      consumes:
      - multipart/form-data
      produces:
      - application/json
      parameters:
      - name: X-Auth-Token
        in: header
        required: true
        type: string
        description: Authentication token
      - name: id
        in: path
        required: true
        type: string
        description: Account UUID, returned by the create account endpoint.
      - name: account_name
        in: formData
        required: false
        type: string
        description: Account name.
      - name: legal_entity_type
        in: formData
        required: false
        type: string
        enum:
        - company
        - individual
        description: Legal entity.
      - name: brand
        in: formData
        required: false
        type: string
        description: The value of this field is used for white labeling the Currencycloud user interface.
      - name: your_reference
        in: formData
        required: false
        type: string
        description: User-generated reference code.
      - name: status
        in: formData
        required: false
        type: string
        enum:
        - disabled
        - enabled
        default: enabled
        description: Status of the account.
      - name: street
        in: formData
        required: false
        type: string
        description: First line of address.
      - name: city
        in: formData
        required: false
        type: string
        description: City name
      - name: state_or_province
        in: formData
        required: false
        type: string
        description: State or province two-letter ISO 3166 code. Only applicable to some countries.
      - name: postal_code
        in: formData
        required: false
        type: string
        description: Postal code.
      - name: country
        in: formData
        required: false
        type: string
        description: Two-letter ISO country code.
      - name: spread_table
        in: formData
        required: false
        type: string
        default: fxcg_rfx_default
        description: The name of the spread table assigned to the account.
      - name: api_trading
        in: formData
        required: false
        type: boolean
        default: true
        description: Whether trading via the Currencycloud API is to be enabled on the account.
      - name: online_trading
        in: formData
        required: false
        type: boolean
        default: true
        description: Enable online trading on the account.
      - name: phone_trading
        in: formData
        required: false
        default: true
        type: boolean
        description: Enable phone trading on the account.
      - name: identification_type
        in: formData
        required: false
        type: string
        enum:
        - none
        - others
        - asylum_registration_card
        - citizenship_papers
        - consular_id
        - credential_de_elector
        - drivers_license
        - drivers_license_canadian
        - employer_identification_number
        - existing_credit_card_details
        - green_card
        - immigration_status_document
        - indigenous_card
        - international_driving_licence
        - matricula_consular
        - municipality_identity_card
        - national_health_insurance_card
        - national_id
        - national_identity_card
        - passport
        - passport_card
        - postal_identity_card
        - private_operators_card
        - professional_qualification_card
        - proof_of_citizenship
        - registro_federal_de_contribuyentes
        - residence_permit
        - residence_status_document
        - service_id_card
        - social_insurance_number
        - social_security_card
        - social_security_number
        - tax_id
        - visa
        - voter_id
        - work_permit
        - incorporation_number
        description: A legal document that verifies the identity of the account owner.
      - name: identification_value
        in: formData
        required: false
        type: string
        description: A unique reference code for the identification document, such as a passport number.
        maxLength: 255
      - name: terms_and_conditions_accepted
        in: formData
        required: false
        type: boolean
        description: Acceptance of the terms and conditions.
      - name: identification_expiration
        in: formData
        required: false
        type: string
        format: date
        description: 'The expiration date for the identification information provided. Format YYYY-MM-DD. Part of extended compliance for "legal_entity_type: individual" accounts.'
      - name: identification_issuer
        in: formData
        required: false
        type: string
        maxLength: 255
        description: 'ISO country code indicating the issuer of the identification information provided. Part of extended compliance for "legal_entity_type: individual" accounts.'
      - name: legal_entity_sub_type
        in: formData
        required: false
        type: string
        description: 'The type of company this account represents. Part of extended compliance for "legal_entity_type: company" accounts'
        enum:
        - sole_trader
        - limited_liability_company
        - public_limited_company
        - limited_liability_partnership
        - unincorporated_partnership
        - unregistered_charity
        - registered_charity
        - trust
        - company_with_nominee_shareholders_or_shares_in_bearer_form
        - scottish_limited_partnership
        - other
      responses:
        '200':
          description: Success.
          schema:
            $ref: '#/definitions/Account'
          headers:
            X-Request-Id:
              type: string
              description: A unique reference for the request.
        '400':
          description: Client error.
          x-errors:
          - code: at_least_one_parameter
            category: base
            message: 'At least one parameter should be present: account_name, brand, your_reference, status, street, city, state_or_province, postal_code, country, spread_table, legal_entity_type, identification_type, identification_value, api_trading, online_trading, phone_trading or terms_and_conditions_accepted.'
            params: '{ account_name, brand, your_reference, status, street, city, state_or_province, postal_code, country, spread_table, legal_entity_type, identification_type, identification_value, api_trading, online_trading, phone_trading, terms_and_conditions_accepted }'
          - code: id_is_not_valid_uuid
            category: id
            message: id should be in UUID format
            params: ''
          - code: account_name_is_too_short
            category: account_name
            message: account_name can not be shorter than 1 character(s)
            params: '{ "minlength" => 1}'
          - code: account_name_is_too_long
            category: account_name
            message: account_name can not be longer than 150 character(s)
            params: '{ "maxlength" => 150 }'
          - code: account_name_is_in_invalid_format
            category: account_name
            message: account_name is in invalid format
            params: ''
          - code: brand_is_too_long
            category: brand
            message: brand can not be longer than 255 character(s)
            params: '{ "maxlength" => 255 }'
          - code: brand_not_found
            category: brand
            message: Brand non_existing_brand wasn't found
            params: '{ "brand" => "non_existing_brand" }'
          - code: brand_account_not_broker
            category: brand
            message: Account doesn't have broker permissions
            params: '{ "brand" => "wrong_brand" }'
          - code: permission_denied
            category: permissions
            message: Permission denied
            params: ''
          - code: your_reference_is_too_long
            category: your_reference
            message: your_reference can not be longer than 25 character(s)
            params: '{ "maxlength" => 25 }'
          - code: legal_entity_type_not_in_range
            category: legal_entity_type
            message: 'legal_entity_type shoul

# --- truncated at 32 KB (107 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/currencycloud/refs/heads/main/openapi/currencycloud-accounts-api-openapi.yml