Orders

Place an order

Places a new order for an instrument. After the request is accepted, the order is processed asynchronously — use the returned id to poll for status or subscribe to order webhook events.

See the Orders guide (TOL / BYOL / Omnibus) for order lifecycle details.

post/orders

Headers

idempotency-keystring uuid required
Example:ccb07f42-4104-44ad-8e1f-c660bb7b269c

A UUID to be used as an idempotency key. This prevents a duplicate request from being replayed. https://docs.upvest.co/documentation/concepts/api_concepts/idempotency

Request body

user_idstring uuid

The ID of the user. Either user ID or business ID must be specified.

business_idstring uuid

The ID of the business. Either user ID or business ID must be specified.

account_idstring uuid required

The ID of the account that owns the order

cash_amountstring

Cash amount for a nominal order, not required if a share quantity is specified.

currency'EUR' | 'GBP' | 'USD'

The currency for the order.

side'BUY' | 'SELL' required

Side of the order.

  • BUY — purchases the specified instrument.
  • SELL — disposes of the specified instrument.
instrument_idstring required

International securities identification number defined by ISO 6166.

instrument_id_type'ISIN' required

The type of the ID used in the request.

  • ISIN -
order_type'MARKET' | 'LIMIT' | 'STOP'

Type of the order.

  • MARKET — executes immediately at the best available market price.
  • LIMIT — executes only at or better than the specified limit_price.
  • STOP — triggers when the market price reaches stop_price, then executes at the prevailing market price.
quantitystring

Quantity of securities for the order. Only required if the cash amount is not specified.

user_instrument_fit_acknowledgementboolean

Only applicable if the user has failed the instrument fit check for the instrument type being ordered. True if the user has acknowledged their willingness to trade.

limit_pricestring

The limit price for orders of the type 'limit'.

stop_pricestring

The stop price for orders of the type 'stop'.

expiry_datestring

The order expiration date (last day the order can trade) in the YYYY-MM-DD format. The expiry date can only be set for LIMIT and STOP orders. RFC 3339, section 5.6 RFC 3339. The default value is order creation date + 359 days

client_referencestring

Immutable reference to the API flow that initiated the order. For client initiated API flows, this is a client provided ID. For internal initiations, it is set to the ID of the related object.

execution_flow'STRAIGHT_THROUGH' | 'BLOCK'

Execution flow for order processing. Defaults to STRAIGHT_THROUGH if not specified.

  • STRAIGHT_THROUGH — the order is routed and executed directly without manual intervention.
  • BLOCK — the order is bundled with other orders for block execution.
decision_maker_idstring

ID of the user behind the decision to place an order. Required only if different from the user_id. (e.g. child account order placed by a guardian)

Response

The request for the order creation has been accepted for processing.

idstring uuid required

Unique identifier for an order. Universally Unique Identifier (UUID).

created_atstring date-time required

Date and time when the resource was created. RFC 3339-5, ISO8601 UTC

updated_atstring date-time required

Date and time when the resource was last updated. RFC 3339-5, ISO8601 UTC

user_idstring uuid

The ID of the user. Either user ID or business ID must be specified.

business_idstring uuid

The ID of the business. Either user ID or business ID must be specified.

account_idstring uuid required

The ID of the account that owns the order

cash_amountstring required

Cash amount for a nominal order, not required if a share quantity is specified.

currency'EUR' | 'GBP' | 'USD' required

The currency for the order.

side'BUY' | 'SELL' required

Side of the order.

  • BUY — purchases the specified instrument.
  • SELL — disposes of the specified instrument.
instrument_idstring required

International securities identification number defined by ISO 6166.

instrument_id_type'ISIN' required

The type of the ID used in the request.

  • ISIN -
order_type'MARKET' | 'LIMIT' | 'STOP' required

Type of the order.

  • MARKET — executes immediately at the best available market price.
  • LIMIT — executes only at or better than the specified limit_price.
  • STOP — triggers when the market price reaches stop_price, then executes at the prevailing market price.
quantitystring required

Quantity of securities for the order. Only required if the cash amount is not specified.

user_instrument_fit_acknowledgementboolean

Only applicable if the user has failed the instrument fit check for the instrument type being ordered. True if the user has acknowledged their willingness to trade.

limit_pricestring

The limit price for orders of the type 'limit'.

stop_pricestring

The stop price for orders of the type 'stop'.

expiry_datestring

The order expiration date (last day the order can trade) in the YYYY-MM-DD format. The expiry date can only be set for LIMIT and STOP orders. RFC 3339, section 5.6 RFC 3339. The default value is order creation date + 359 days

status'NEW' | 'PROCESSING' | 'FILLED' | 'CANCELLED' required

The execution status of the order.

  • NEW — the order has been received and validated, awaiting routing.
  • PROCESSING — the order is being routed for execution.
  • FILLED — the order has been fully executed.
  • CANCELLED — the order was cancelled before being fully executed.
feestring required
cancellation_reason'CANCELLED_BY_CLIENT' | 'CANCELLED_BY_UPVEST_OPERATIONS' | 'CANCELLED_BY_TRADING_PARTNER' | 'CANCELLED_BY_UPVEST_PLATFORM'

Reason for order cancellation. Present only when status is CANCELLED.

  • CANCELLED_BY_CLIENT — cancelled at the end user's or client's request via the API.
  • CANCELLED_BY_UPVEST_OPERATIONS — cancelled by Upvest operations.
  • CANCELLED_BY_TRADING_PARTNER — cancelled by the executing partner.
  • CANCELLED_BY_UPVEST_PLATFORM — cancelled automatically by the Upvest platform.
initiation_flow'API' | 'PORTFOLIO' | 'CASH_DIVIDEND_REINVESTMENT' | 'PORTFOLIO_REBALANCING' | 'SELL_TO_COVER_FEES' | 'SELL_TO_COVER_TAXES' | 'ACCOUNT_LIQUIDATION' | 'UPVEST_OPERATIONS' | 'SAVINGS_PLAN' | 'CLIENT_OPERATIONS' required

Identifies what triggered the order.

  • API — initiated directly via the client API.
  • PORTFOLIO — initiated by a portfolio rebalancing flow.
  • CASH_DIVIDEND_REINVESTMENT — initiated as part of dividend reinvestment.
  • PORTFOLIO_REBALANCING — initiated by an automated rebalancing.
  • SELL_TO_COVER_FEES — initiated automatically to cover outstanding fees.
  • SELL_TO_COVER_TAXES — initiated automatically to cover tax obligations.
  • ACCOUNT_LIQUIDATION — initiated as part of an account liquidation.
  • UPVEST_OPERATIONS — initiated by Upvest operations.
  • SAVINGS_PLAN — initiated by a savings plan execution.
  • CLIENT_OPERATIONS — initiated by client operations.
execution_flow'STRAIGHT_THROUGH' | 'BLOCK'

Execution flow for order processing. Defaults to STRAIGHT_THROUGH if not specified.

  • STRAIGHT_THROUGH — the order is routed and executed directly without manual intervention.
  • BLOCK — the order is bundled with other orders for block execution.
client_referencestring

Immutable reference to the API flow that initiated the order. For client initiated API flows, this is a client provided ID. For internal initiations, it is set to the ID of the related object.

decision_maker_idstring

ID of the user behind the decision to place an order. Required only if different from the user_id. (e.g. child account order placed by a guardian)

Changes

No recorded changes to this endpoint across all 7 revisions of this API.