Binance

Binance spot limit orders can fill at a chosen price or better without filling their entire quantity

Binance spot limit orders set a price boundary for buying or selling an asset on the order book. A buy can execute at the limit price or lower; a sell can execute at the limit price or higher. Available matching orders determine how much fills. An accepted order can remain open without completing a trade, while a partially filled order has executed only some of its requested quantity. Funding requirements and pair-specific rules govern acceptance. The chosen time in force controls whether unmatched quantity can remain available for later execution or must expire after the immediate matching opportunity.

Last updated

Table of contents
Bottom line: Canceling a partially filled spot order leaves completed trades intact and stops further matching of the unfilled remainder once cancellation succeeds.

Price boundaries, quantities and available balances

Spot pairs distinguish the base asset, which is bought or sold, from the quote asset, which expresses its price. A limit order's quantity refers to the base asset, and its price is the quote-asset amount per unit of that asset. Multiplying the entered price by the quantity gives the order's notional value before fees. For a buy, that product also gives the maximum gross quote amount if the full fixed-price order fills. Actual spending follows executed prices and quantities, so partial execution consumes only the value of completed trades.

Available funds are the free balance that the order can use. Amounts locked in existing orders cannot fund another simultaneous order. A buy needs the quote asset; a sell needs the base asset.

Submission and acceptance records

A standard fixed-price API limit order specifies a trading pair, buy or sell direction, quantity, price and time in force. The pair must permit spot trading for the account. Applicable funding and trading rules govern whether the engine accepts the submission. A successful ACK response acknowledges placement and supplies an order identifier without fill details; subsequent order data establishes execution. A NEW status means that the engine accepted the order; it does not record a completed purchase or sale. Rejection prevents that submission from becoming an active order.

Submission and acceptance records (Binance)

Open full-size image

Why can a limit order remain unfilled?

A resting unfilled limit order has no eligible match available to it at the permitted price under its matching rules. The last traded price records an earlier transaction, whereas executable liquidity comes from the opposite side of the order book. A chart touching the limit does not establish that eligible counterpart orders actually reached this order.

A buy draws on sell offers at or below its limit; a sell draws on buy bids at or above it. Orders already ahead at the same price can consume the available quantity first.

Partial fills record completed trades while leaving some requested quantity unmatched. Available liquidity can run out before the intended amount completes, even if every executed trade respects the price boundary. Whether the remainder stays open depends on the validity instruction attached to that order.

Fill-by-fill fees and credited amounts

Trading commission follows executed fills and their applicable fee treatment. A limit order that immediately trades against resting orders executes those fills as a taker. A portion that rests on the book and later trades executes as a maker, so a GTC order can contain both kinds of fills. Cost inputs include executed quantity, execution price, maker or taker classification and the account's applicable commission schedule. Pair promotions and eligible fee-payment discounts can affect standard commission. The order label alone does not establish the final fee.

The gross asset amount that a trade exchanges can differ from the balance credited after commission. The commission amount and commission asset identify that deduction. Withdrawals move assets out of the exchange separately and have their own charges; a spot fill does not include an external transfer.

A quantity rejection before a spot buy

A quantity that fails the pair's LOT_SIZE filter must meet its quantity rules before a new order can succeed. Consider a hypothetical fixed-price buy whose submission returns an explicit quantity-filter rejection. The expected open order is absent because the engine rejected that request. Its quantity falls outside the allowed size range or does not fit the required increment. Waiting for the market to reach the limit cannot repair this mismatch.

The live pair configuration supplies its minimum quantity, maximum quantity and step size. A compatible revision must also meet applicable notional rules and fit the available quote balance. Changing quantity changes potential spending and the amount to which trading commission applies.

Order stage Acceptance or execution condition
Corrected submission The revised quantity meets applicable filters and funding requirements; order data confirms whether the engine accepted it.
Matching Eligible sell orders determine the filled quantity; a GTC remainder can stay open under its validity rules.
Order reconciliation Status, cumulative fills and commissions establish what executed and whether an active remainder exists.

The retry follows the explicit rejection and correction of the incompatible quantity. If the new submission is accepted but fills only partly, the revision solved acceptance alone. Completion still requires eligible liquidity. A different rejection, such as insufficient funding or an invalid notional value, requires correction of that specific condition.

Cancellation and the final execution record

Cancellation stops future matching of an order's remaining quantity once the engine confirms it; completed fills stay executed, including their commissions.

A cancel request can race with another fill. Submitting the request therefore differs from receiving a confirmed canceled status. The final order record shows cumulative executed quantity, which can remain positive after cancellation. FILLED means the requested quantity has completed; CANCELED confirms cancellation of the outstanding order. EXPIRED records closure under order rules or an exchange action. Terminal status alone does not identify the net asset amount that reached the balance.

Execution reports separate the last fill from cumulative totals. Average execution price equals cumulative quote value divided by cumulative filled base quantity when a fill exists, and excludes commission. Commission deductions can explain a balance difference without changing the order's filled quantity.

Time in force and maker-only execution

Time in force determines how a limit order handles unmatched quantity and how long it can remain eligible to trade. The Spot API supports GTC, IOC and FOK instructions. Their immediate matching rules differ, even though the entered limit still bounds execution prices. Available controls can vary between trading interfaces.

Orders that remain on the book

GTC (Good Til Canceled) allows an unmatched portion to remain on the order book until execution or cancellation, subject to exchange actions that can end it. It provides no guaranteed fill time. An open remainder continues to tie up the balance allocated to it.

Immediate matching instructions

IOC and FOK differ in whether their immediate execution permits a partial fill.

Partial immediate execution

IOC (Immediate or Cancel) allows partial immediate execution within the limit, then expires any unfilled remainder. Completed fills remain trades even when the final order status is EXPIRED.

Full immediate execution

FOK (Fill or Kill) requires the full requested quantity to fill immediately within the limit. If that condition fails, the order expires without a partial trade. The requirement concerns total quantity, which can match across eligible orders.

Maker-only submission

The API's LIMIT_MAKER order type enforces post-only submission by rejecting any order that would immediately trade as a taker. Eligible counterpart orders still determine whether an accepted maker-only order eventually fills.

Binance: quick answers

Does a spot limit order require a stop price?

An ordinary spot limit order does not require a stop price. A stop-limit order adds a trigger condition before its limit component can start matching. The trigger price and execution limit have different jobs. Adding a stop changes when matching can begin, while execution still requires eligible counterpart orders.

How does an iceberg setting change a spot limit order?

An iceberg order displays only part of its total quantity on the order book. Further portions become visible as the displayed portion executes. Supported API limit orders use icebergQty to specify that visible portion and require GTC validity. Pair support and applicable quantity and iceberg-part filters constrain the setting.

Will canceling an unfilled order restore the API order-rate allowance?

Canceling an order does not reduce the unfilled-order count used by the API's ORDERS rate limit. That interval-based count differs from the number of orders currently open. An order's first fill, partial or complete, can reduce the count, while expiration of the applicable interval resets its allowance. Repeated cancellation therefore does not bypass that placement limit.

Is a successful test order placed on the live order book?

A successful API test order is validated without being sent to the matching engine. It cannot produce a live fill or reserve a place in the order book. Its result therefore establishes only the tested request's validation outcome; actual matching and execution require a live order submission.

What does EXPIRED_IN_MATCH mean for a limit order?

EXPIRED_IN_MATCH indicates that self-trade prevention expired the order during matching. The relevant match can involve the same account or accounts sharing a tradeGroupId. Allowed prevention modes depend on the symbol's configuration. Prevented quantity is separate from executed quantity, so expiration does not establish that the entire requested amount traded.

Do I need to cancel a spot limit order to reduce its quantity?

A supported Order Amend Keep Priority request can reduce an existing open order's quantity without cancellation or loss of its queue priority. The symbol must permit this operation, indicated by amendAllowed. The operation leaves the order price unchanged. If the amendment is rejected, the existing order remains unchanged.

What should I do if a limit-order API request times out?

A timeout can leave the order's execution status unknown even when the matching engine processed the request. Check the order update stream or query the original order's status before submitting another order. An unknown response differs from an explicit rejection, and repeating the trade without resolving it can create duplicate exposure.

Which API limit-order settings derive a price from the order book?

Supported pegged API limit orders derive their price from an order-book reference. PRIMARY_PEG uses the best price on the order's own side; MARKET_PEG uses the opposite side. Providing pegPriceType makes the fixed price field optional. Offset settings can select another price level, subject to the pair's support for pegged instructions. For LIMIT orders, PRIMARY_PEG requires GTC. Pegged LIMIT_MAKER orders permit only PRIMARY_PEG.