Create Order

Creates an order to buy or sell a specific trading pair.

Check the proper endpoint based on your region.
The examples in this page is written using Singapore fiat code(SGD). Set the quote currency to match your region. The base_url differs by country/region. Make sure to specify the correct region value for your environment.

- Singapore (sg): https://sg-api.upbit.com
- Indonesia (id): https://id-api.upbit.com
- Thailand (th): https://th-api.upbit.com

Order Type

The available order types are as follows.

Limit Order

A limit order is a type of order that is executed only when the buy/sell price set by the user or a more favorable price is reached. It allows control over the upper and lower limits of the execution price; however, execution is not guaranteed as the market price may not reach the specified limit price.

The table below provides an easy reference for the parameters available when creating limit buy/sell order requests. For detailed explanations of each parameter, please refer to the Request Body section below.
Parameter Required Description
market Required Trading pair code. Enter in the format SGD-BTC.
side Required Enter bid for buy orders, ask for sell orders.
ord_type Required limit
volume Required Order quantity. For example, entering 0.1 means buying/selling 0.1 units of the asset at the limit price.
price Required Order price based on the quote currency. For example, when buying/selling 1 BTC at 1000,000 SGD per BTC in the SGD-BTC market, enter 1000000.
time_in_force Optional ioc, fok, post_only. The post_only option cannot be used together with the smp_type option.
smp_type Optional Self-Match Prevention option. cancel_maker, cancel_taker, reduce.
identifier Optional User-defined order ID that can be used for querying or deleting orders.

Market Orders

Market orders are order types that are executed immediately at the most favorable current market price. While rapid execution is guaranteed, the execution price may vary depending on market conditions.

Refer to the table below to easily verify the parameters available when creating a market buy order request. Do not include the volume parameter (either set its value to null or omit the key entirely). For detailed explanations of each parameter, see the Request Body section below.
Parameter Required Description
market Required Pair code. Enter in the format {Fiat}-BTC.
side Required bid
ord_type Required price
price Required Total order amount based on the quote currency. For example, entering 1000000 in the SGD-BTC pair will buy BTC worth 1 million SGD at market price.
smp_type Optional Self-Match Prevention option. cancel_maker, cancel_taker, reduce
identifier Optional Custom order ID for query or cancellation.
Refer to the table below to easily verify the parameters available when creating a market sell order request. Do not include the price parameter (either set its value to null or omit the key entirely). For detailed explanations of each parameter, see the Request Body section below.
Parameter Required Description
market Required Pair code. Enter in the format {Fiat}-BTC.
side Required ask
ord_type Required market
volume Required Sell order quantity. For example, entering 0.1 in the SGD-BTC pair will sell 0.1 BTC at market price.
smp_type Optional Self-Match Prevention option. cancel_maker, cancel_taker, reduce
identifier Optional Custom order ID for query or cancellation.

Best Limit Orders

Best Limit orders are a type of order that uses the most favorable opposing price currently available in the market. While complete execution is not always guaranteed, this order type is useful when you want to quickly enter the order book at the best possible price.

Please refer to the table below to easily check the available parameters when creating a best limit buy order request. The volume parameter is not provided (either set to null or omitted). For detailed explanations of each parameter, please refer to the Request Body section below.
Parameter Required Description
market Required Trading pair code. Enter in the format SGD-BTC.
side Required bid
ord_type Required best
price Required Specifies the total order amount based on the quote asset. A buy order is created for the quantity equivalent to the specified amount at the best ask price. For example, in the SGD-BTC pair, specifying 1000000 creates a buy order for BTC worth 1,000,000 SGD at the best ask price.
time_in_force Required ioc, fok
smp_type Optional Self-Match Prevention option. cancel_maker, cancel_taker, reduce
identifier Optional User-defined order ID for query or deletion.
Please refer to the table below to easily check the available parameters when creating a best limit sell order request. The price parameter is not provided (either set to null or omitted). For detailed explanations of each parameter, please refer to the Request Body section below.
Parameter Required Description
market Required Pair code. Enter in the format SGD-BTC.
side Required ask
ord_type Required best
volume Required Sell order quantity. For example, entering 0.1 in the SGD-BTC pair creates an order to sell 0.1 BTC at the best ask price.
time_in_force Required ioc, fok
smp_type Optional Self-Match Prevention option. cancel_maker, cancel_taker, reduce
identifier Optional User-defined order ID for query or deletion.

Order Execution Conditions (time_in_force)

As an order option, this specifies how the order is handled depending on the execution situation at the time of order creation.

Option Parameter Value Description
IOC (Immediate or Cancel) ioc Partially executes only the quantity immediately executable under limit order conditions, canceling the remaining quantity. This option is available for Limit and Best Limit orders.
FOK (Fill or Kill) fok Executes the order only if the entire order quantity can be filled under limit order conditions; otherwise, cancels the entire order. This option is available for Limit and Best Limit orders.
Post Only post_only Cancels the order without execution if any portion or the entire order can be immediately filled under limit order conditions. The order is created only if it can become a maker order, preventing execution as a taker order. This option is available only for Limit orders (ord_type=limit) and cannot be used with the Self-Match Prevention (SMP) option.

Self-Matching Prevention (SMP) Option

smp_type can be configured to enable the desired mode for preventing self-matching of orders. For more details about SMP, please refer Self-Match Prevention page.

  • If the SMP modes set for the maker and taker orders differ, the taker order mode will take precedence.
  • When an order is created with an SMP mode, if an existing order or the new order is fully or partially canceled to prevent self-matching, the canceled order quantity and amount will be returned in the order creation response fields prevented_volume and prevented_locked.

  • Option Parameter Value Description
    Cancel Maker Order cancel_maker Cancels the maker order. In other words, when self-matching conditions are met upon new order creation, the previously created order is canceled to prevent matching.
    Cancel Taker Order cancel_taker Cancels the taker order. That is, when self-matching conditions are met upon new order creation, the newly created order is canceled to prevent matching.
    Adjust Order Quantity reduce When self-matching conditions are met upon new order creation, the order quantities of the existing and new orders are reduced to prevent matching. If the remaining quantity reaches zero, the order is canceled.

    Asset Lock During Pending Order Execution

    When an order is created, the quote asset for buy orders or the base asset for sell orders involved in the order is immediately put into a locked state, making it unavailable for other uses. This mechanism ensures that the user’s balance remains valid at the time of order execution. You can check the locked asset status by calling the Get Account Balance API. The asset lock is maintained until one of the following conditions is met:

    • The order is fully executed
    • The order is canceled by the user
    • time_in_force The order expires according to the time_in_force condition

    Example: When creating a limit buy order in the SGD-BTC market, the specified SGD amount remains locked until the order is executed.


    Order Price Unit and Minimum Order Amount

    The order price unit and minimum order amount available for use when placing an order vary depending on the market (quote asset) and the base asset price. Please refer to the guide below for market-specific price policies.


    Identifier

    This is a unique identifier assigned by the user’s client application to identify the order, separate from the UUID used internally by the Upbit system to uniquely identify the order. It is useful when you wish to manage (query and cancel) orders based on a user-defined unique order ID scheme. Each order must be assigned a value that is unique across all orders within the user’s account, and once an identifier value has been used, it cannot be reused regardless of whether the order was created or executed.


    Form-based POST requests are no longer supported from March 1, 2022.
    Due to the end of Form support, POST requests sent using URL-encoded Form data are no longer guaranteed to work properly. Please ensure that the request body is sent strictly in JSON format.

    Rate Limit
    Up to 8 calls per second are allowed. Rate is measured per account and shared within the 'order' group.

    API Key Permission
    This API requires authentication and an API Key with the [Order Placement] permission.
    If you encounter an out_of_scope error, please verify permission settings in the API Key Management page.
    Language
    URL