CHANGELOG for Binance SPOT Testnet
Last Updated: 2025-11-14
Note: All features here will only apply to the SPOT Testnet. This is not always synced with the live exchange.
2025-11-14
- All Market Tickers Stream (
!ticker@arr) has been deprecated; This means this will be removed both from the documentation and from our systems at a later date. More details to follow. - Please use
<symbol>@tickeror!miniTicker@arrinstead.
2025-11-12
- The steps on how to manage a local order book correctly has been corrected.
2025-11-11
SBE Market Data
- At 2025-11-11 07:00 UTC, the update speed of
<symbol>@depthand<symbol>@depth20streams will be changed to 50ms.- This change will apply automatically to all users of SBE Market Data and doesn't require any action.
- The total amount of data received per second will be increased (up to 2x).
- These new update speeds will take effect on the live exchange at 2025-11-26 07:00 UTC.
- SBE Market Data has been updated to reflect these changes.
2025-11-10
- "Last Updated" dates will be removed from all documents except for CHANGELOG.
- Moving forward, CHANGELOG will be the source of reference for when changes were made to any document.
2025-11-05
Data reset
All data on the Spot Test Network will be deleted today according to the periodic reset procedure. See F.A.Q. for more details.
2025-10-24
SBE
- SBE: schema 3:1 (spot_3_1.xml) has been updated to support listenToken Subscription Methods for Margin Trading.
REST and WebSocket API
Following the announcement from 2025-04-01, all documentation related with listenKey for use on wss://stream.binance.com has been removed.
Please refer to the list of requests and methods below for more information.
The features will remain available until a future retirement announcement is made.
REST API
POST /api/v3/userDataStreamPUT /api/v3/userDataStreamDELETE /api/v3/userDataStream
WebSocket API
userDataStream.startuserDataStream.pinguserDataStream.stop
2025-10-17
Notice: The following changes will be enabled at 2025-10-17 07:00 UTC
- An optional parameter,
symbolStatus, has been added to the following endpoints:- REST API
GET /api/v3/depthGET /api/v3/ticker/priceGET /api/v3/ticker/bookTickerGET /api/v3/ticker/24hrGET /api/v3/ticker/tradingDayGET /api/v3/ticker
- WebSocket API
depthticker.priceticker.bookticker.24hrticker.tradingDayticker
- REST API
- When the parameter
symbolStatus=<STATUS>is provided, only symbols whose trading status matches the specifiedSTATUSwill be included in the response:- If a single symbol is specified using the
symbol=<SYMBOL>parameter and its trading status does not match the givenSTATUS, the endpoint will return error code-1220 SYMBOL_DOES_NOT_MATCH_STATUS. - If multiple symbols are specified using the
symbols=[...]parameter, the response will be an array that excludes any symbols whose trading status does not matchSTATUS. If no symbols from the symbols parameter have a trading status that matchesSTATUS, the response is an empty array. - For endpoints where the
symbolandsymbolsparameters are optional, omitting these parameters is treated as if all symbols had been specified in thesymbols=[...]parameter. See the previous line for the behavior ofsymbolStatus=<STATUS>.
- If a single symbol is specified using the
2025-10-08
FIX API
Notice: The following changes will be enabled at 2025-10-08 07:00 UTC
- Updated QuickFIX Schema for FIX Market Data:
- Updated RecvWindow (25000) to reflect microsecond support announced on 2025-08-05.
- Updated InstrumentList
<y>message:- Added fields:
StartPriceRange,EndPriceRange. - Made the following fields optional:
MinTradeVol,MaxTradeVol,MinQtyIncrement,MarketMinTradeVol,MarketMaxTradeVol,MarketMinQtyIncrement,MinPriceIncrement.
- Added fields:
- The changes to InstrumentList
<y>are breaking changes. Please update to the new schema.
2025-10-01
Data reset
All data on the Spot Test Network will be deleted today according to the periodic reset procedure. See F.A.Q. for more details.
REST and WebSocket API:
- Reminder that SBE 2:1 schema will be retired on 2025-10-02, 6 months after being deprecated.
- The SBE lifecycle for Testnet has been updated to reflect this change.
2025-09-24
Notice: The following changes will be deployed on 2025-09-24, starting at 7:00 UTC and may take several hours to complete.
- Added an endpoint to retrieve the list of filters relevant to an account on a given symbol. This is the only endpoint that shows if an account has
MAX_ASSETfilters applied to it.- REST API:
GET /api/v3/myFilters - WebSocket API:
myFilters
- REST API:
- Comments in SBE: schema 3:1 (spot_3_1.xml) have been added, modified, and removed. Although there is no need for users of
3:1to update to this version of the file, we advise updating to maintain consistency. - Added documentation for filter
MAX_ASSET.- In
Testnetonly: all accounts have aMAX_ASSETfilter for assetJPYwith value set to1000000.
- In
2025-09-18
- Updated documentation for
recvWindowto reflect microsecond support announced on 2025-08-05.- REST API: Timing Security
- WebSocket API: Timing Security
2025-09-12
- The QuickFix schema for FIX Order Entry has been updated to support Pegged Orders.
- Updated FIX API Documentation for
RecvWindowin
2025-09-05
Data reset
All data on the Spot Test Network will be deleted today according to the periodic reset procedure. See F.A.Q. for more details.
2025-08-28
- Updated SBE FAQ section regarding legacy support to include more details on schema compatibility and explain
NonRepresentableandNonRepresentableMessage.
2025-08-26
- Updated "Request Security" documentation for REST API and WebSocket API with no functional changes.
2025-08-25
- SBE: schema 3:1 (spot_3_1.xml) will be updated on 2025-08-25 at 05:00 UTC
- The following fields have been renamed because the SbeTool code generator has been found to generate Java code that does not compile.
- Although only users impacted by this issue need to update the schema, we advise all users to upgrade to the latest version to maintain consistency.
- Message
MaxAssetFilter- field
limitExponentrenamed toqtyExponent - field
limitrenamed tomaxQty
- field
- The following fields have been renamed because the SbeTool code generator has been found to generate Java code that does not compile.
2025-08-19
userDataStream.subscribereturnssubscriptionIdin the responses.
This was missed in a previous changelog entry.
2025-08-07
- Updated FIX API documentation
- FIX Market Data limits: The subscription limit has always been present but was undocumented.
- On message processing order: Reworded and reformatted.
Notice: The following will be enabled on 2025-08-08, 07:00 UTC
- Filter
MAX_NUM_ORDER_LISTS, is enabled with the limit of 20 per symbol.
2025-08-05
Notice: The following changes will be deployed on 2025-08-06, starting 7:00 UTC and may take several hours to complete.
Please consult the Spot Test Network's homepage to be informed of the release completion.
General Changes
- The pegged order functionality is now available.
- Exchange Information requests emit the field
pegInstructionsAllowed. - The following conditional fields
pegPriceType,pegOffSetType,pegOffsetValues, andpeggedPriceappear in responses of the following requests if the order was a pegged order:- REST API
GET /api/v3/orderGET /api/v3/orderListGET /api/v3/openOrderListGET /api/v3/allOrdersDELETE /api/v3/orderDELETE /api/v3/orderListDELETE /api/v3/openOrdersPUT /api/v3/order/amend/keepPriority
- WebSocket API
order.statusorderList.statusallOrdersorder.cancelorderList.cancelopenOrders.cancelAllorder.amend.keepPriority
- REST API
- FIX API
OrdType(4)supports new valueP(PEGGED)- Tags
PegOffsetValue(211),PegPriceType(1094),PegMoveType(835), andPegOffsetType(836)have been added to the following messages:- NewOrderSingle
<D> - NewOrderList
<E> - OrderCancelRequestAndNewOrderSingle
<XCN> - When placing an order, the
ExecutionReport<8>message will echo backPegInstructions, with an extra optional fieldPeggedPrice (839).
- NewOrderSingle
- New error messages for pegged orders are added. Please see the Errors document for more information.
- Exchange Information requests emit the field
- Changes with
recvWindow:- A third check is made after your message leaves the message broker just before it is sent to the Matching Engine.
- This does not cover potential delays inside the Matching Engine itself.
recvWindowsupports microseconds.- The value is still specified in milliseconds, but can now take a decimal component to specify it with higher precision.
- This means that the parameter supports a maximum precision of 3 decimal places. (e.g. 6000.346)
- APIs affected:
- FIX API
- REST API
- WebSocket API
- A third check is made after your message leaves the message broker just before it is sent to the Matching Engine.
- The following requests have a new structure called
specialCommission. See Commission Rates.- REST API
GET /api/v3/account/commissionPOST /api/v3/order/testwithcomputeCommissionRates=truePOST /api/v3/sor/order/testwithcomputeCommissionRates=true
- WebSocket API
account.commissionorder.testwithcomputeCommissionRates=truesor.order.testwithcomputeCommissionRates=true
- REST API
- The new
MAX_NUM_ORDER_AMENDSfilter is enabled with a limit of 10 amendments per order. - New error codes
-1120and1211. See Errors for more information. - SBE: A new schema 3:1 (spot_3_1.xml) is available.
- The current schema 3:0 (spot_3_0.xml) is deprecated and will be retired in 6 months as per our schema deprecation policy.
- Changes in schema 3:1:
ExchangeInfoResponse: new fieldpegInstructionsAllowedExecutionReportEvent: new fieldspricePeg,pricePegOffsetLevel,peggedPriceUserDataStreamSubscribeResponse: new fieldsubscriptionId- New field
subscriptionIdfor all user data stream events. - Field
apiKeyrenamed tologgedOnApiKeyforWebSocketSessionLogonResponse,WebSocketSessionStatusResponseand WebSocketSessionLogoutResponse OrderTestWithCommissionsResponse: 2 new fieldsspecialCommissionForOrderMakerandspecialCommissionForOrderTakerAccountCommissionResponse: 4 new fieldsspecialCommissionMaker,specialCommissionTaker,specialCommissionBuyerandspecialCommissionSeller- Support for
EXCHANGE_MAX_NUM_ORDER_LISTS,MAX_NUM_ORDER_LISTS, andMAX_NUM_ORDER_AMENDSfilters. ExecutionReportEvent: fieldsrejectReasonandorigClientOrderIdnow show their default values in SBE format to match the JSON format.NonRepresentableMessage: New message added to represent a message that cannot be represented in this schema ID and version. Receipt of this message indicates that something should be available, but it is not representable using the SBE schema currently in use.
- Query order lists requests will first query the data in the cache, and if it cannot be found will query the database.
- REST API:
GET /api/v3/openOrderLists - WebSocket API:
openOrderLists.status
- REST API:
- Orders with cumulative quantity of 0 in the final state
EXPIRED_IN_MATCH(i.e. the order expired due to STP) will be archived after 90 days. - Bug fix: The Matching Engine no longer accepts order lists that exceed the order count filter limits. Affected filters:
MAX_NUM_ORDERSMAX_ALGO_ORDERSMAX_ICEBERG_ORDERSEXCHANGE_MAX_NUM_ORDERSEXCHANGE_MAX_ALGO_ORDERSEXCHANGE_MAX_ICEBERG_ORDERS
WebSocket API
- A single WebSocket connection can subscribe to multiple User Data Streams at once.
- Only one subscription per account is allowed on a single connection.
- Method
userDataStream.subscribe.signaturehas been added that allows you to subscribe to the User Data Stream without needing to login first.- This also doesn’t require an Ed25519 API Key, and can work with any API Key type.
- For SBE support you need to use schema 3:1 at least.
- Method
session.subscriptionshas been added that lists all the subscriptions active for the current session. - The meaning of the field
userDataStreamin the session requests has changed slightly.- Previously, this returned
trueif you were subscribed to the user data stream of your logged-on account. - Now it returns
trueif you have at least one active user data stream subscriptiontrue- If there is at least one subscription activefalse- If there are no active subscriptions
- Previously, this returned
userDataStream.unsubscribesupports closing multiple subscriptions.- When called with no parameter, this will close all subscriptions.
- When called with
subscriptionId, this will attempt to close the subscription matching that Id, if it exists. - The authorization for this request has been changed to
NONE.
User Data Stream
- Field
subscriptionIdhas been added to the User Data Stream events payload when listening through the WebSocket API. This will identify which subscription the event is coming from.
FIX API
- When a client sends a reject message, the FIX API will no longer send the client back a Reject
<3>message. Error messages are clearer when a tag is invalid, missing a value, or when the field value is empty or malformed- If the tag number was invalid, you will receive the error:
{"code": -1169, "msg": "Invalid tag number."} - If a valid tag was specified without a value, you will receive the error:
{"code": -1177, "msg": "Tag specified without a value."} - If the field value was empty or malformed, you will still receive the error:
{"code": -1102, "msg": "Field value was empty or malformed."}
- If the tag number was invalid, you will receive the error:
2025-07-02
Data reset
All data on the Spot Test Network will be deleted today according to the periodic reset procedure. (see F.A.Q. for more details)
2025-06-04
Data reset
All data on the Spot Test Network will be deleted today according to the periodic reset procedure. (see F.A.Q. for more details)
2025-05-28
- Documented API timeout value and error under General API Information for each API:
2025-05-22
REST and WebSocket API:
- Reminder that SBE 2:0 schema will be retired on 2025-05-28, 6 months after being deprecated.
- The SBE lifecycle for Testnet has been updated to reflect this change.
2025-05-21
Notice: The following changes will happen at 2025-05-21 7:00 UTC.
- The previous behavior of
recvWindowon FIX, REST, and WebSocket APIs will be augmented by an additional check.- To review, the existing behavior is:
- If
timestampis greater thanserverTime+ 1 second at receipt of the request, the request is rejected. Rejection by this check increments message limits (FIX API) and IP limits (REST and WebSocket APIs), but not Unfilled Order Count (order placement endpoints of all APIs). - If the difference between
timestampandserverTimeat receipt of the request is greater thanrecvWindow, the request is rejected. Rejection by this check increments message limits (FIX API) and IP limits (REST and WebSocket APIs) but not Unfilled Order Count (order placement endpoints of all APIs).
- If
- The additional check is:
- Just before a request is forwarded to the Matching Engine, if the difference between
timestampand the currentserverTimeis greater thanrecvWindow, the request is rejected. Rejection by this check increments message limits (FIX API), IP limits (REST and WebSocket APIs), and Unfilled Order Count (order placement endpoints of all APIs).
- Just before a request is forwarded to the Matching Engine, if the difference between
- The documentation for Timing security has been updated to reflect the additional check.
- To review, the existing behavior is:
- Fixed a bug in FIX Market Data message InstrumentList
<y>. Previously, the value ofNoRelatedSym(146)could have been incorrect.
2025-04-29
- Features that currently require an Ed25519 API key will soon be opened up to HMAC and RSA keys.
- For example, subscribing to User Data Stream in WebSocket API will be possible with any API key type before listenKeys are removed.
- Users are still encouraged to migrate to Ed25519 API keys as they are more secure and performant on Binance Spot Trading.
- More details to come.
2025-04-25
- Notice: The following changes will happen at 2025-04-25 09:00 UTC.
- The following request weights will be increased from 1 to 4:
- REST API:
PUT /api/v3/order/amend/keepPriority - WebSocket API:
order.amend.keepPriority - The documentation for both REST and WebSocket API has been updated to reflect the upcoming changes.
- REST API:
- Clarified that
SEQNUMin the FIX-API is a 32-bit unsigned integer that rolls over. This has been theSEQNUMdata type since the inception of the FIX-API.
2025-04-21
- Order Amend Keep Priority is now enabled on all symbols.
- Self-trade prevention mode
DECREMENTis now enabled on all symbols.
2025-04-01
Notice: The following changes will be deployed tomorrow April 2, 2025 starting at 7:00 UTC and may take several hours to complete.
Please consult the Spot Test Network's homepage to be informed of the release completion.
New Features
- Order Amend Keep Priority is now available.
- FIX API: New Order Entry Messages OrderAmendKeepPriorityRequest and OrderAmendReject
- REST API:
PUT /api/v3/order/amend/keepPriority - WebSocket API:
order.amend.keepPriority - You can check the new
allowAmendfield in Exchange Information Requests to see if it's enabled on a given symbol:- REST API:
GET /api/v3/exchangeInfo - WebSocket API:
exchangeInfo
- REST API:
- Self-trade prevention mode
DECREMENTis now available.- Instead of expiring one or both orders,
DECREMENTmode decreases the available quantity of both orders by increasing theprevented quantityof both orders by the amount of the prevented match. - This can expire the orders if their
filled quantity+prevented quantity>=order quantity. - You can check the
allowedSelfTradePreventionModesfield in Exchange Information Requests to see if this mode is enabled on a given symbol.
- Instead of expiring one or both orders,
General Changes
- Important: The following legacy URLs will be removed in May 2025. Please change to the new URLs as soon as possible:
| Legacy URL | Latest URL |
|---|---|
wss://testnet.binance.vision/ws-api/v3 | wss://ws-api.testnet.binance.vision/ws-api/v3 |
wss://testnet.binance.vision/ws | wss://stream.testnet.binance.vision/ws |
- Behavior when querying and/or canceling with
orderIdandorigClientOrderId/cancelOrigClientOrderId:- The behavior when both parameters were provided was not consistent across all endpoints.
- Moving forward, when both parameters are provided, the order is first searched for using its
orderId, and if found,origClientOrderId/cancelOrigClientOrderIdis checked against that order. If both conditions pass, the request succeeds. If both conditions are not met the request is rejected. - Affected requests:
- REST API:
GET /api/v3/orderDELETE /api/v3/orderPOST /api/v3/order/cancelReplace
- WebSocket API:
order.statusorder.cancelorder.cancelReplace
- FIX API
- OrderCancelRequest
<F> - OrderCancelRequestAndNewOrderSingle
<XCN>
- OrderCancelRequest
- REST API:
- Behavior when canceling with
listOrderIdandlistClientOrderId:- The behavior when both parameters were provided was not consistent across all endpoints.
- Moving forward, when both parameters are passed, the order list is first searched for using its
listOrderId, and if found,listClientOrderIdis checked against that order list. If both conditions are not met the request is rejected. - Affected requests:
- REST API
DELETE /api/v3/orderList
- WebSocket API
orderList.cancel
- REST API
- Previously, the request weight for myTrades was 20 regardless of the parameters provided. Now, if you provide
orderId, the request weight is 5.- REST API:
GET /api/v3/myTrades - WebSocket API:
myTrades
- REST API:
- If the unfilled order count for
intervalNum:DAYis exceeded, the unfilled order count forintervalNum:SECONDis no longer incremented. - Change when querying and deleting orders:
- When neither
orderIdnororigClientOrderIdare present, the request is now rejected with-1102instead of-1128. - Affected requests:
- REST API:
GET /api/v3/orderDELETE /api/v3/order
- WebSocket API
order.statusorder.cancel
- FIX API
- OrderCancelRequest
<F>
- OrderCancelRequest
- REST API:
- When neither
- New Error code
-2038for order amend keep priority requests that fail. - New messages for error code
-1034.
FIX API
- The QuickFix schema for FIX OE is updated to support the Order Amend Keep Priority feature and new STP mode,
DECREMENT. - FIX Order Entry connection limits will be a maximum of 10 concurrent connections per account.
- The connection rate limits are now enforced. Note that these limits are checked independently for both the account and the IP address.
- FIX Order Entry: 15 connection attempts within 30 seconds
- FIX Drop Copy: 15 connection attempts within 30 seconds
- FIX Market Data: 300 connection attempts within 300 seconds
- News
<B>contains a countdown until disconnection in the Headline field.- Following the completion of this update, when the server enters maintenance, a
Newsmessage will be sent to clients every 10 seconds for 10 minutes. After this period, clients will be logged out and their sessions will be closed.
- Following the completion of this update, when the server enters maintenance, a
- OrderCancelRequest
<F>and OrderCancelRequestAndNewOrderSingle<XCN>will now allow bothorderIdandclientOrderId. - FIX API verifies that
EncryptMethod(98)is 0 at Logon<A>.