This endpoint requires the "trade" permission.
|price||Price per bitcoin|
|size||Amount of BTC to buy or sell|
|post_only||[optional]** Post only flag|
time_in_force to be
** Invalid when
|size||[optional]* Desired amount in BTC|
|funds||[optional]* Desired amount of quote currency to use|
* One of
funds is required.
product_id must match a valid product. The products list is available via the /products endpoint.
client_oid field must be a UUID generated by your trading application. This field value will be broadcast in the public feed for
received messages. You can use this field to identify your orders in the public feed.
client_oid is different than the server-assigned order id. If you are consuming the public feed and see a
received message with your
client_oid, you should record the server-assigned
order_id as it will be used for future order status updates. The
client_oid will NOT be used after the
received message is sent.
The server-assigned order id is also returned as the
id field to this HTTP POST request.
When placing an order, you can specify the order type. The order type you specify will influence which other order parameters are required as well as how your order will be executed by the matching engine. If
type is not specified, the order will default to a
limit orders are both the default and basic order type. A limit order requires specifying a
size is the number of bitcoin to buy or sell, and the
price is the price per bitcoin. The limit order will be filled at the price specified or better. A sell order can be filled at the specified price per bitcoin or a higher price per bitcoin and a buy order can be filled at the specified price or a lower price depending on market conditions. If market conditions cannot fill the limit order immediately, then the limit order will become part of the open order book until filled by another incoming order or canceled by the user.
market orders differ from limit orders in that they provide no pricing guarantees. They however do provide a way to buy or sell specific amounts of bitcoin or fiat without having to specify the price. Market orders execute immediately and no part of the market order will go on the open order book. Market orders are always considered
takers and incur taker fees. When placing a market order you can specify
size. Funds will limit how much of your quote currency account balance is used and size will limit the bitcoin amount transacted.
Stop orders become active and wait to trigger based on the movement of the last trade price.
There are two types of stop orders,
stop loss and
stop: 'loss': Triggers when the last trade price changes to a value at or below the
stop: 'entry': Triggers when the last trade price changes to a value at or above the
Note that when stop orders are triggered, they execute as limit orders and are therefore subject to holds.
The price must be specified in
quote_increment product units. The quote increment is the smallest unit of price. For the BTC-USD product, the quote increment is
0.01 or 1 penny. Prices less than 1 penny will not be accepted, and no fractional penny prices will be accepted. Not required for
The size must be greater than the
base_min_size for the product and no larger than the
base_max_size. The size can be in incremented in units of
size indicates the amount of BTC (or base currency) to buy or sell.
size indicates the amount of base currency to buy or sell. The size must be no less than the
base_min_size and no larger than the
base_max_size for the product. However, for post-only limit orders, there is no enforced
base_max_size. The size can be in any increment of the base currency (e.g. BTC for the BTC-USD product).
Note: There is no max size restriction for post_only limit orders.
The funds field is optionally used for
market orders. When specified it indicates how much of the product quote currency to buy or sell. For example, a market buy for
funds specified as
150.00 will spend
150 USD to buy BTC (including any fees). If the funds field is not specified for a market buy order,
size must be specified and Coinbase Exchange will use available funds in your account to buy bitcoin.
A market sell order can also specify the
funds is specified, it will limit the sell to the amount of
funds specified. You can use
funds with sell orders to limit the amount of quote currency funds received.
Time in force policies provide guarantees about the lifetime of an order. There are four policies: good till canceled
GTC, good till time
GTT, immediate or cancel
IOC, and fill or kill
GTC Good till canceled orders remain open on the book until canceled. This is the default behavior if no policy is specified.
GTT Good till time orders remain open on the book until canceled or the allotted
cancel_after is depleted on the matching engine.
GTT orders are guaranteed to cancel before any other order is processed after the
cancel_after timestamp which is returned by the API. A
day is considered 24 hours.
IOC Immediate or cancel orders instantly cancel the remaining size of the limit order instead of opening it on the book.
FOK Fill or kill orders are rejected if the entire size cannot be matched.
* Note, match also refers to self trades.
The post-only flag indicates that the order should only make liquidity. If any part of the order results in taking liquidity, the order will be rejected and no part of it will execute.
buy orders, we will hold
price x size x (1 + fee-percent) USD. For
sell orders, we will hold the number of Bitcoin you wish to sell. Actual fees are assessed at time of trade. If you cancel a partially filled or unfilled order, any remaining funds will be released from hold.
buy orders where
funds is specified, the
funds amount will be put on hold. If only
size is specified, all of your account balance (in the quote account) will be put on hold for the duration of the market order (usually a trivially short time). For a
sell order, the
size in BTC will be put on hold. If
size is not specified (and only
funds is specified), your entire BTC balance will be on hold for the duration of the market order.
Self-trading is not allowed on Coinbase Exchange. Two orders from the same user will not be allowed to match with one another. To change the self-trade behavior, specify the
|dc||Decrease and Cancel (default)|
See the self-trade prevention documentation for details about these fields.
The HTTP Request will respond when an order is either rejected (insufficient funds, invalid parameters, etc) or received (accepted by the matching engine). A
200 response indicates that the order was received and is active. Active orders may execute immediately (depending on price and market conditions) either partially or fully. A partial execution will put the remaining size of the order in the
open state. An order that is filled completely, will go into the
Users listening to streaming market data are encouraged to use the
client_oid field to identify their
received messages in the feed. The REST response with a server
order_id may come after the
received message in the public data feed.
A successful order will be assigned an order id. A successful order is defined as one that has been accepted by the matching engine.
Open orders do not expire and will remain open until they are either filled or canceled.