GuidesAPI Reference
DocumentationLog In


These release notes list changes to all Coinbase Exchange and Coinbase Pro products.


Modify Order Request (G) is now available for testing in the public sandbox. It will go to production in a few weeks.

Modify Order Request is an implementation of the Order Replace Request outlined in the FIX 4.2 protocol. You can send a single request to modify the price or size of an existing order using the FIX API.

In conjunction, we added two new fields (old_price,new_price) to the websocket Full Channel Change message.


Modify Order Requests that amend size down will retain queue priority in the Exchange order book.


Example FIX Request:

BeginString=FIX.4.2 BodyLength=265 MsgType=ORDER_CANCEL_REPLACE_REQUEST MsgSeqNum=17 SenderCompID=00000000100000000000000000000003 SendingTime=20220609-04:01:48.757 TargetCompID=Coinbase ClOrdID=907b6ae6-bcbe-441a-b7bb-d932afdb9edb OrderID=71de0cdf-938f-495b-9fad-108837bde704 OrderQty=2 OrdType=LIMIT OrigClOrdID=907b6ae6-bcbe-441a-b7bb-d932afdb9eda Price=100.00 Side=BUY Symbol=ETH-USD TransactTime=20220609-04:01:48.757 CheckSum=107
37OrderIDUnique identifier of most recent order as assigned by broker
41OrigClOrdIDClOrdID <11> of previous order (NOT initial order of the day) when canceling or replacing an order
11ClOrdIDUnique identifier of replacement order as assigned by institution.
55SymbolMust match original order
54SideMust match original side
38OrderQtyTotal Intended Order Quantity (including the amount already executed for this chain of orders)
60TransactTimeTime this order request was initiated/released by the trader or trading system
40OrdTypeOnly limit orders are supported for now (2)
44PricePrice per share

Websocket Full Channel Change Message

Example of a change message from a Modify Order Request:

  "old_size": "80",
  "new_size": "80",
  "old_price": "7",
  "new_price": "6",
  "order_id": "c3f16063-77b1-408f-a743-88b7bc20cdcd",
  "type": "change",
  "side": "buy",
  "product_id": "ETH-USD",
  "time": "2022-06-06T22:55:43.433114Z",
  "sequence": 24753


Lifted maximum and minimum order size limits. With this change:

  • Market orders are no longer subject to max or min size checks unless market funds are specified.
  • Limit orders are now subject to notional minimum size checks only. We repurposed the existing API parameter, min_market_funds, to represent this value.

Price Protection Points serve as a dynamic and real-time protection against slippage for large-sized orders.

The following API parameters have been deprecated (and will be removed June 30):

API ParameterDescription
base_max_sizeBase order size max (limit orders)
base_min_sizeBase order size min (limit orders)
max_market_fundsQuote order size max (market orders)

Affected APIs are Get all known trading pairs and Create a new order.


Changes were made to Coinbase Pro:

  • We disabled the Coinbase Pro API, Deposit from Coinbase account, which lets you deposit funds from a Coinbase retail account into Coinbase Pro. The endpoint /deposits/coinbase-account now returns a 403 when called from a Coinbase Pro account.

    All other payment methods into Coinbase Pro remain the same and Coinbase Exchange is not affected.

  • Creating a new API Key on Coinbase Pro with the Transfer permission has new requirements (the use of old API keys will remain the same):

    • You must enable non-SMS 2FA.
    • You must allowlist all receive addresses for your transfers.

    Creating new API Keys on Coinbase Exchange is not affected by this change.


  • Added cancel reason to the FIX and websocket feeds.
  • For FIX, we enhanced the Execution Report to include the cancel reason using the Text field.
  • For the websocket feed, we added a new cancel_reason field for authenticated messages by the user, accessible in the Full and User channels.

Supported cancel reasons are:

101:Time In Force
102:Self Trade Prevention
104:Price Bound Order Protection
105:Insufficient Funds"
106:Insufficient Liquidity


  • Updated the maximum number of portfolios (or profiles) to 25.


  • Updated the maximum number of portfolios (or profiles) to 15.


  • Added FIX message tags: cumQty, leaveQty, AvgPx


  • REST API will enforce case sensitivity for all URLs.
    • Example: should be Note the lowercase t in ticker.
    • This does not apply to URL parameters, just the URL itself: is valid as the the URL is lowercase. Query parameters such as product_id can have values with capitals. However would be invalid as the O in /Orders is not the same URL as specified in its docs.


  • Web Socket API users are notified when the client is actively disconnected for having a full buffer, or for being too slow to consume or read messages.


  • GET and POST responses for the /orders endpoint will return client order id as client_oid if exists.


  • FIX API will now enforce CheckSum validations for incoming FIX messages.


  • All reports can be generated in parallel. Clients are no longer restricted to only have 3 reports being created at a time. Now clients can have up to 3 accounts reports and 3 fills reports per product generating at a time.


  • Return the full aggregated order book for Level 2 queries under the GET /products/<product-id>/book endpoint.


  • Reduced the set of fields returned by orders in "pending" status for GET /orders, GET /orders/<id>, and GET /orders/client:<client_oid> APIs. See List Orders documentation for more details. Orders with non-pending statuses will be unaffected by this change.


  • Return client order ID rather than order ID in successful cancel order response for REST API endpoint DELETE /orders/client:<client_oid>.


  • Require the field Symbol(55) on the following FIX API messages: OrderCancelRequeset(F) and OrderStatusRequest(H). Messages (F) and (H) without Symbol(55) will be rejected.


  • Add pagination support for the GET /fills endpoint.


  • Increased the maximum number of FIX connections allowed per profile from 5 to 7.


  • Added sendingTime 5 minute validation.


  • Added fx_stablecoin to products.


  • Order Cancel Batch Request(U4) will accept optional ClOrdID(11) field for each cancel request. The provided ClOrdID(11) will be included in Order Cancel Reject(9) for partial reject.


  • Order Cancel Batch Request(U4) will now return Order Cancel Reject(9) for partial rejected cancel request.


  • Added failed status to reports.


  • Our API endpoints were moved to from

Production URLs

ProductOld URLNew URL
FIX APItcp+ssl://
Web Socket APIwss://

Sandbox URLs

ProductOld URLNew URL
FIX APItcp+ssl://
Web Socket APIwss://


  • API FIX - Order Cancel Request (F) endpoint requires the Symbol field now.


  • /fills custom rate limit.


  • Increased public and private rate limits.


  • Increase pagination limit from 100 to 1000.


  • Updated max profiles to 10 and max API keys to 200.


  • The Trailing Volume endpoint has been deprecated in favor of the Fees endpoint to get the latest volumes.


  • Now recommending that clients opt to batch cancel orders by profile rather than session due to recent performance optimizations.


  • HandlInst in API FIX is no longer required.


  • Addition of max_withdrawal_amount field in the /currencies endpoint.


  • Authed users subscribed to the Websocket Full or User channel will now receive their order fee rates on match messages. Details can be found in documentation for the Full channel.


  • Addition of cancel_code field on canceled withdrawals.


  • Addition of an endpoint to provide estimates of network fees for crypto withdrawals.
  • Addition of a parameter for crypto withdrawals to specify if the network fee should be added / deducted from the requested amount.
  • 'fee' and 'subtotal' fields added to responses for crypto withdrawals.


  • The candles endpoint no longer has custom rate limits. It now shares the same rate limit with every other public endpoint.


  • The maximum number of open orders (i.e. limit orders + stop orders) per product per profile will be 500. Profiles that exceed this threshold will be unable to place new orders on that product until the number of open orders is below 500.



  • Generate an address for crypto deposits. See reference here.


  • Expose min_market_funds, max_market_funds fields in the /products endpoint.


  • Users can retrieve information regarding their transfer, buy, and sell limits at /users/self/exchange-limits. Refer to the Limits API for more information.


  • Fill execution reports will show fee rates associated with the user's order. Please refer to the FIX ExecutionReport API for details on format.


  • Execution Reports from Order Status Requests will return ClOrdID, if it is supplied, even if the order isn't found.


  • Activate messages on the Websocket feed will no longer expose taker_fee_rate.


  • Rate limiting changing from a per user basis to per profile basis.


  • Order Status Request no longer allows the wildcard option.
  • Order Status Request returns pending and done orders when you use OrderID or ClOrdID.
  • Scheduled disconnects are on Mondays and Thursdays at 11 AM Pacific Time.