---
title: "Create Order"
method: POST
path: "/profiles/{profile_id}/orders"
tags: ["Orders"]
---

# Create Order

`POST /profiles/{profile_id}/orders`

For limit orders, create an order for buying or selling an asset:

- To buy, set `side = BUY` and set `base_amount` to the crypto amount you want to buy.
- To sell, set `side = SELL` and set `base_amount` to the crypto amount you want to sell.

For market orders, create an order for buying or selling an asset:

- To buy, set `side = BUY` and set `quote_amount` to the dollar amount you want to spend.
- To sell, set `side = SELL` and set `base_amount` to the crypto amount you want to sell.

There are five types of orders:

- Limit Orders: Buy or sell at a specified price or better. Execution not guaranteed. Taker orders will be rejected if price deviates 15% from midpoint.
- Post-Only Limit Orders: have the same properties as Limit Orders, but get rejected if they cross the orderbook.
- Market Orders: Operate as Immediate or Cancel (IOC) orders. Price is variable, executes at best available price at time of order.
- Stop Market Orders: Will convert to a market sell order with the specified quantity when the stop price is hit. The stop price does not guarantee that it will be executed at that price. Market conditions (price) might change between the order being triggered and order being executed. Currently only sell stop loss orders are supported.
- Stop Limit Orders: have a Stop Price which when hit, will convert to a limit sell order that will be executed at a specified price (or better)

Order size limits vary by asset and order type. For current limits, see
https://docs.paxos.com/guides/crypto-brokerage/orders-precision-rounding#order-limitations

## Path parameters

- `profile_id` string, required

## Request body

- ExchangePublicCreateOrderBody
  - `ref_id` string — The idempotence ID for order creation. Can be reused if the order has been closed for more than 24 hours.
  - `side` 'BUY' | 'SELL', required — Trade side.
  - `market` 'ETHEUR' | 'ETHSGD' | 'ETHUSD' | 'BTCEUR' | 'BTCSGD' | 'BTCUSD' | 'PAXGUSD' | 'BCHUSD' | 'LTCUSD' | 'USDPUSD' | 'LINKUSD' | 'AAVEUSD' | 'UNIUSD' | 'PEPEUSD' | 'TRUMPUSD' | 'SHIBUSD' | 'ARBUSD' | 'BONKUSD' | 'ENAUSD' | 'MNTUSD' | 'ONDOUSD' | 'PENGUUSD' | 'QNTUSD' | 'RENDERUSD' | 'SKYUSD' | 'WIFUSD' | 'WLDUSD' | 'DOGEUSD' | 'AVAXUSD' | 'SUIUSD' | 'POLUSD' | 'XLMUSD' | 'BNBUSD', required
  - `type` 'LIMIT' | 'MARKET' | 'POST_ONLY_LIMIT' | 'STOP_MARKET' | 'STOP_LIMIT', required — Trade type.
  - `base_amount` string — The base currency amount for any limit order or the exact amount to sell for a market sell order.
  - `price` string, decimal — The quote price.
  - `quote_amount` string — The quote currency amount of purchase for a market buy order.
  - `metadata` object — Metadata to store on the quote and created order. Up to 6 key/value pairs may be stored, with each key and value at most 100 characters.
  - `await_fill_millis` integer — The amount of time to wait for the order to fill, in milliseconds. When `await_fill_millis` is set to a non-zero value, the Create Order call does not return immediately on order creation. Instead, the call blocks until either: 1. The order has filled completely 2. The time `await_fill_millis` has elapsed The maximum wait timeout is 10 seconds (10000 milliseconds).
  - `time_in_force` 'GTC' | 'FOK' | 'IOC' | 'GTT' — How long an order will remain active before it expires. - Immediate-or-Cancel (IOC): Cancel if not executed immediately, partial fills allowed. - Good-Til-Canceled (GTC): Order can be canceled at any point until executed. - Good-Til-Time (GTT): Expires if not executed by a specified time. GTT must be greater than 10 seconds after the order is placed, otherwise the order will be rejected. - Fill-or-Kill (FOK): Fill entire order only or cancel entire order, does not allow for partial filling. **Time in Force validity for Order Types** | Order type | Immediate or Cancel (IOC) | Good Til Canceled (GTC) | Good Til Time (GTT) | Fill or Kill (FOK) | | --------------- | ------------------------- | ----------------------- | ------------------- | ------------------ | | Market Order | Default | - | - | - | | Limit Order | Valid | Default | Valid | Valid | | Post Only Limit | Valid | Default | Valid | Valid | | Stop Market | - | Default | Valid | - | | Stop Limit | - | Default | Valid | - |
  - `expiration_date` string, uint64 — The date the order will expire if not completed when specified time in force is GTT. Format is a unix timestamp in milliseconds (13-digits) UTC (total milliseconds that have elapsed since January 1st, 1970 UTC).
  - `identity_id` string — The end user that requests the trade. This field must be used in conjunction with `identity_account_id`, otherwise the order is rejected. Depending on your integration type, `identity_id` and `identity_account_id` may be required.
  - `identity_account_id` string — The account under which this order is placed. The provided identity must be allowed to trade on behalf of this account. This field must be used in conjunction with `identity_id`, otherwise the order is rejected. Depending on your integration type, `identity_account_id` and `identity_id` may be required.
  - `stop_price` string, decimal
  - `recipient_profile_id` string — The profileId that will receive settled currency (base for buy orders, quote for sell orders).
  - `self_match_prevention_id` string — The string field used to prevent matching against an opposite side order submitted by the same Crypto Brokerage customer. If this field is not submitted, an order that matches against another order submitted by the same customer will cancel the original resting order. Up to 36 characters are supported. This field requires additional permissions only available to certain accounts. Reach out to your Paxos Representative for more information.

## Response `200`

A successful response.

- Order
  - `id` string — The UUID of the order.
  - `profile_id` string — The profile ID the order is associated with.
  - `ref_id` string — The idempotence ID for order creation. Can be reused if the order has been closed for more than 24 hours.
  - `status` 'PENDING_SUBMISSION' | 'SUBMITTED' | 'OPEN' | 'FILLED' | 'CANCELLED' | 'REJECTED' | 'EXPIRED' — Status of the order. The `EXPIRED` status is only applicable for Smart Order Routing customers.
  - `side` 'BUY' | 'SELL' — Trade side.
  - `market` 'ETHEUR' | 'ETHSGD' | 'ETHUSD' | 'BTCEUR' | 'BTCSGD' | 'BTCUSD' | 'PAXGUSD' | 'BCHUSD' | 'LTCUSD' | 'USDPUSD' | 'LINKUSD' | 'AAVEUSD' | 'UNIUSD' | 'PEPEUSD' | 'TRUMPUSD' | 'SHIBUSD' | 'ARBUSD' | 'BONKUSD' | 'ENAUSD' | 'MNTUSD' | 'ONDOUSD' | 'PENGUUSD' | 'QNTUSD' | 'RENDERUSD' | 'SKYUSD' | 'WIFUSD' | 'WLDUSD' | 'DOGEUSD' | 'AVAXUSD' | 'SUIUSD' | 'POLUSD' | 'XLMUSD' | 'BNBUSD'
  - `type` 'LIMIT' | 'MARKET' | 'POST_ONLY_LIMIT' | 'STOP_MARKET' | 'STOP_LIMIT' — Trade type.
  - `base_amount` string, decimal — The base amount or purchase amount for a market sell order.
  - `price` string, decimal — The quote price.
  - `quote_amount` string, decimal — The quote amount of purchase for a market buy order.
  - `metadata` object — Client-specified metadata.
  - `created_at` string, date-time — The time at which the order was created.
  - `modified_at` string, date-time — The time at which the order was last modified.
  - `amount_filled` string, decimal — The amount that was filled.
  - `volume_weighted_average_price` string, decimal — The volume-weighted average price.
  - `time_in_force` 'GTC' | 'FOK' | 'IOC' | 'GTT' — How long an order will remain active before it expires. - Immediate-or-Cancel (IOC): Cancel if not executed immediately, partial fills allowed. - Good-Til-Canceled (GTC): Order can be canceled at any point until executed. - Good-Til-Time (GTT): Expires if not executed by a specified time. GTT must be greater than 10 seconds after the order is placed, otherwise the order will be rejected. - Fill-or-Kill (FOK): Fill entire order only or cancel entire order, does not allow for partial filling. **Time in Force validity for Order Types** | Order type | Immediate or Cancel (IOC) | Good Til Canceled (GTC) | Good Til Time (GTT) | Fill or Kill (FOK) | | --------------- | ------------------------- | ----------------------- | ------------------- | ------------------ | | Market Order | Default | - | - | - | | Limit Order | Valid | Default | Valid | Valid | | Post Only Limit | Valid | Default | Valid | Valid | | Stop Market | - | Default | Valid | - | | Stop Limit | - | Default | Valid | - |
  - `expiration_date` string, date-time — The date the order will expire if not completed when specified time in force is GTT.
  - `identity_id` string — The end user that requests the trade. This field must be used in conjunction with `identity_account_id`, otherwise the order is rejected. Depending on your integration type, `identity_id` and `identity_account_id` may be required.
  - `identity_account_id` string — The account under which this order is placed. The provided identity must be allowed to trade on behalf of this account. This field must be used in conjunction with `identity_id`, otherwise the order is rejected. Depending on your integration type, `identity_account_id` and `identity_id` may be required.
  - `stop_price` string, decimal
  - `recipient_profile_id` string — The profileId that will receive settled currency (base for buy orders, quote for sell orders).
  - `is_triggered` boolean — Returns `true` when a stop order has been triggered.

## Other responses

- `400` — Bad Request
- `403` — Could not create order
- `409` — Order already created

---

[API](https://skmtc.net/paxos/apis/paxos-api.md) · [All operations](https://skmtc.net/paxos/apis/paxos-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/paxos/paxos-api/versions/0687ca8c9a8d/schema)
