What ccxt/ccxt shipped
Written by FoxPlug from the repository's own releases; not affiliated with Ccxt. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/ccxt/ccxt; Ccxt did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Rust CI no longer rebuilds every venue Core for ccxt-base unit tests, which had taken about 2.5 minutes under the test profile. Pull request #31125
- Go, Java, C# and Rust printers now emit native operations from typed ts/src code instead of runtime helper calls, cutting runtime helper calls by 66.3 percent. Pull request #30988
- Critical Dependabot alerts without open PRs were patched, including the Next.js and certifi advisories, with next moved from 16.3.8 to 16.3.9. Pull request #31097
- The base-spec docs now inline Supported exchanges lists and drop the handlebars doc templates, replacing about 24.5k DOM nodes and a 548-entry table of contents. Pull request #31139
- Revolutx gained conditional orders and take profit/stop loss orders through
order_configuration.conditionalandorder_configuration.tpslon POST /api/1.0/orders. Pull request #31102 - Hitbtc pro gained unWatchTrades and unWatchOHLCV, inherited by bequant, so watched pairs no longer stream until the client is closed. Pull request #31100
- Bitget watchOrders now reports cumulative filled and cost instead of reading per-fill fields. Pull request #31094
- Go liquidation caches stay nil until a handler creates them, fixing a Ws Static tests step that hung until the 30m job limit. Pull request #31092
- Java defaulted its liquidations cache to null so WebSocket tests stop hanging. Pull request #31107
- The hand-written OrderRouter client in all six ports accepts an optional userAgent config option sent as the User-Agent header. Pull request #31076
Why it matters
This week fixed several reliability problems that affect everyday use: websocket test hangs in Go and Java, watchOrders reporting the wrong cumulative values on bitget, and a Python TypeError on coinbaseinternational that broke all private calls. It also changed the ports' generated code so Go, Java, C# and Rust emit native operations rather than runtime helper calls, and made rust unit-test runs faster. Users also get new order types on revolutx and unsubscribe methods on hitbtc and bequant.
Changelog entry
- Release v4.5.92. Release
- Release go/v4.5.92. Release
- Ci(rust): stop recompiling every venue Core for ccxt-base unit tests. Pull request #31125
- Go/java/cs/rust: type ts/src so printers emit native ops (-66.3% runtime helper calls). Pull request #30988
- Fix(security): patch critical Dependabot alerts without open PRs (next, certifi). Pull request #31097
- Docs: inline base-spec Supported exchanges lists, drop handlebars doc templates. Pull request #31139
- Feat(revolutx): conditional and take profit/stop loss orders. Pull request #31102
- Feat(hitbtc): add unWatchTrades and unWatchOHLCV. Pull request #31100
- Fix(bitget): watchOrders reports the cumulative filled and cost. Pull request #31094
- Fix(go): leave liquidation caches nil until a handler creates them. Pull request #31092
- Fix(java): default liquidations cache to null so WS tests stop hanging. Pull request #31107
- Feat(base): OrderRouter userAgent option. Pull request #31076
V4.5.92 is out. Ports now emit native ops instead of runtime helper calls (-66.3%). Fixed Go and Java websocket hangs, bitget watchOrders cumulative filled and cost, a coinbaseinternational Python TypeError on private calls, and patched critical dependency alerts. New: revolutx c
Release v4.5.92 is out. Typed ts/src lets the Go, Java, C# and Rust printers emit native operations instead of runtime helper calls, a 66.3% reduction. Rust unit tests no longer rebuild every venue Core. Reliability fixes this week: Go liquidation caches stay nil until a handler creates them and Java defaults its cache to null, ending websocket test hangs; bitget watchOrders reports cumulative filled and cost; a coinbaseinternational Python TypeError that broke all private calls is fixed. Critical dependency alerts without open PRs were patched, and the base-spec docs page got lighter. New features: revolutx conditional and take profit/stop loss orders, hitbtc and bequant unWatchTrades and unWatchOHLCV, and an optional userAgent option on OrderRouter in all six ports.
Week of October 26, 2026
What shipped
- Released v4.5.91, bundling batch 3 pull requests with fixes to blofin funding rate intervals, WebSocket object identity across balance and orderbook updates, and the Go/C# static WebSocket. Release
- Krakenfutures parseTicker now parses high, low, vwap and quote volume, which previously came back null, and inverse markets also report baseVolume. Pull request #30995
- Coinbase private WebSocket channels, including watchOrders, now accept Ed25519 CDP API keys instead of failing with an unsupported key format error. Pull request #31002
- Bybit watchLiquidations now reports the side of the liquidation order rather than Bybit's raw position side field. Pull request #31042
- Coinbase now enables fetchL2OrderBook, since
product_bookalready returns aggregated price levels and the base implementation works without changes. Pull request #31028 - Lbank now supports unWatchTrades and unWatchOHLCV, so watched pairs stop streaming once unsubscribed instead of running until the client closes. Pull request #31031
- Blofin now has unWatchTrades, unWatchTradesForSymbols, unWatchOHLCV and unWatchOHLCVForSymbols for unsubscribing from active streams. Pull request #31021
- Kraken spot WebSocket v2 now supports unWatchTrades, unWatchTradesForSymbols and unWatchOHLCV by sending v2 unsubscribe requests. Pull request #31008
- Paradex now parses spot markets correctly instead of as linear swaps, and fixes createOrders results, fetchIndexOHLCV and WebSocket error routing. Pull request #30886
- Modetrade gained parseOpenInterest, fetchOpenInterest and fetchOpenInterests on its public futures endpoints. Pull request #31010
Why it matters
This week adds unsubscription to several more venues that previously kept streaming watched pairs for the life of the client, and it fixes parsing gaps that returned null or empty data on krakenfutures, bitstamp and okx funding history. WebSocket auth and reliability also improved on coinbase, mexc and lighter, while new fetchOrder and open interest methods expand what modetrade and blofin users can call.
Changelog entry
- Release v4.5.91 with batch 3 pull requests and WebSocket fixes. Release
- Bybit: report the liquidation order side in watchLiquidations. Pull request #31042
- Krakenfutures: parse high, low, vwap and quote volume in parseTicker. Pull request #30995
- Coinbase: support Ed25519 CDP keys in websocket auth. Pull request #31002
- Coinbase: enable fetchL2OrderBook. Pull request #31028
- Lbank: add unWatchTrades and unWatchOHLCV. Pull request #31031
- Blofin: add unWatchTrades and unWatchOHLCV plus ForSymbols variants. Pull request #31021
- Poloniex: add unWatchTrades, unWatchTradesForSymbols and unWatchOHLCV. Pull request #31026
- Kraken: add unWatchTrades, unWatchTradesForSymbols and unWatchOHLCV. Pull request #31008
- Paradex: fix spot markets, createOrders results, index OHLCV and ws error routing. Pull request #30886
- Modetrade: add fetchOpenInterest and fetchOpenInterests. Pull request #31010
- Okx: send instId, begin and end in fetchFundingHistory. Pull request #30993
V4.5.91 is out. Krakenfutures tickers now fill high, low, vwap and quote volume. Coinbase accepts Ed25519 CDP keys for private WebSocket auth and enables fetchL2OrderBook. Unwatch landed for lbank, blofin, poloniex, kraken and gate. Bybit watchLiquidations reports the order side.
V4.5.91 is released. This week focuses on WebSocket subscriptions you can actually stop: lbank, blofin, poloniex, kraken and gate now support unwatch methods, and bitget advertises the unwatch methods it already implemented. Ticker and trade parsing improved on krakenfutures and bitstamp, and okx fetchFundingHistory now sends instId, begin and end. Coinbase accepts Ed25519 CDP keys for private WebSocket channels and enables fetchL2OrderBook. Bybit watchLiquidations now reports the liquidation order side, and modetrade adds fetchOpenInterest and fetchOpenInterests.
Week of October 19, 2026
What shipped
- Release v4.5.90 shipped with kucoin private API fixes from live tests, pagination stop fixes in Go, response header handling in Rust handleErrors, bingx order rejection mapping, and more. Release
- The generator now emits native code instead of runtime helpers in Go, Java, C# and Rust, cutting Rust non-plumbing code by 67 percent, Java by 60 percent, C# by 53 percent and Go by 38 percent. Pull request #30919
- The Go port dropped the ExchangeTyped and BaseExchangeTyped hop and generates base typed methods directly on Exchange and BaseExchange, removing 54 thousand lines. Pull request #30964
- Websocket handlers across 13 exchanges now update the stored balance and orderbook objects in place instead of replacing them, keeping object identity across updates. Pull request #30940
- OKX gained editOrders and fetchMySettlementHistory plus fixes for OCO, settlement and websocket behavior. Pull request #30914
- Kucoin and kucoinfutures private API issues found while live testing a classic mainnet account were fixed, including fetchOrder trigger and clientOrderId handling. Pull request #30922
- Coinbaseinternational was updated to the global derivatives platform. Pull request #30343
- A new top-level exchange was added for the Polymarket perps public REST API covering markets, tickers, orderbook, trades, OHLCV, funding, open interest and fees. Pull request #30268
- Bingx stale test skips were refreshed against live runs, removing obsolete skips and adding concrete ones. Pull request #30909
- Go cursor, incremental and dynamic pagination now stop when a break fires instead of re-requesting the first page until paginationCalls runs out. Pull request #30924
Why it matters
This week brings a release with several exchange fixes plus large generator and typed-method changes in the Go, Java, C# and Rust ports. Users of those ports get smaller generated code and typed async channels, while exchange users get fixes for kucoin, bingx, blofin, OKX, coinbaseinternational and a new Polymarket perps exchange.
Changelog entry
- Release v4.5.90 with kucoin private API fixes, Go pagination stop fixes, Rust handleErrors headers, bingx rejection mapping and more Release
- Generator emits native code instead of runtime helpers in Go, Java, C# and Rust, cutting non-plumbing lines by 38 to 67 percent Pull request #30919
- Go port drops ExchangeTyped and generates base typed methods directly on Exchange and BaseExchange, removing 54 thousand lines Pull request #30964
- Websocket handlers on 13 exchanges keep balance and orderbook object identity across updates Pull request #30940
- OKX adds editOrders and fetchMySettlementHistory plus OCO, settlement and websocket fixes Pull request #30914
- Kucoin and kucoinfutures private API fixes from live testing, including fetchOrder trigger and clientOrderId Pull request #30922
- Coinbaseinternational updated to the global derivatives platform Pull request #30343
- New top-level exchange for the Polymarket perps public REST API Pull request #30268
- Go cursor, incremental and dynamic pagination stop when a break fires Pull request #30924
- Bingx stale test skips refreshed against live runs Pull request #30909
- Bingx maps order rejection codes 101205 and 101400 to InvalidOrder Pull request #30947
- Blofin parseFundingRate fills the funding rate interval from fundingInterval and fundingIntervalUnit Pull request #30969
V4.5.90 ships kucoin private API fixes, Go pagination stop fixes, Rust header handling in handleErrors and bingx rejection mapping. Separate work emits native code in Go, Java, C# and Rust and removes ExchangeTyped in Go.
This week ccxt shipped release v4.5.90 with kucoin private API fixes from live tests, Go pagination fixes, Rust response header handling in handleErrors, bingx order rejection mapping and more. Alongside the release, the generator now emits native code instead of runtime helpers in Go, Java, C# and Rust, reducing non-plumbing code in those ports. The Go port also dropped the ExchangeTyped hop, placing base typed methods directly on Exchange and BaseExchange. Websocket handlers across 13 exchanges now keep balance and orderbook object identity across updates, and a new top-level exchange was added for the Polymarket perps public REST API.
Week of October 12, 2026
What shipped
- Derive was migrated from the retired v2 API to v3 for both REST and WebSocket, with all fixtures refreshed from live v3 captures. Pull request #30733
- Binance future now means only dated delivery contracts, with USDⓈ-M perpetuals selected via swap and linear subtype and COIN-M via inverse. Pull request #30858
- Paradex gained watchMyTrades, watchPositions and watchBalance over WebSocket in both SBE and JSON. Pull request #30880
- Poloniex gained fetchTransfer and fetchTransfers with a full parseTransfer, and transfer no longer sends toAccount equal to fromAccount when the target name is unknown. Pull request #30853
- BingX gained fetchBidsAsks reading the previously unused spot and swap bookTicker endpoints. Pull request #30895
- Gate fetchLeverageTiers now reads actual leverage tiers for all contracts instead of emulating them from deprecated risk-limit fields. Pull request #30882
- Coinbase fetchBalance now follows the v3 account cursor while
has_nextis true, so currencies on later pages are no longer missing. Pull request #30772 - SafePosition now derives isolated position fields for linear and inverse contracts, with position relationship tests added. Pull request #30873
- The Python client now counts aiohttp per-message overhead when draining the WebSocket buffer, fixing leaked buffer size. Pull request #30877
Why it matters
This week fixed a long list of correctness bugs that users hit in normal use: missing balance pages on Coinbase, null last prices on Toobit, empty WebSocket frames on BingX swap streams, undefined leverage tier symbols on Bybit and wrong funding amounts on Pacifica. It also moved Derive to its v3 API after v2 was retired and aligned the Binance future market type, both of which change how existing code selects markets and endpoints. Several order book handlers were also guarded against missing books to stop undefined errors during unWatch or cached clears.
Changelog entry
- Derive: migrate to api v3 for REST and WebSocket, with refreshed fixtures Pull request #30733
- Binance: future means dated contracts only; USDⓈ-M perpetuals use swap with linear subtype Pull request #30858
- Paradex: add watchMyTrades, watchPositions and watchBalance over WebSocket Pull request #30880
- Poloniex: add fetchTransfer and fetchTransfers with full parseTransfer Pull request #30853
- Bingx: add fetchBidsAsks using the spot and swap bookTicker endpoints Pull request #30895
- Gate: fetch actual leverage tiers for all contracts Pull request #30882
- Coinbase: follow the v3 account cursor in fetchBalance Pull request #30772
- Base: derive isolated position fields in safePosition Pull request #30873
- Toobit: read last price from the p field so fetchLastPrices no longer returns null Pull request #30851
- Poloniex: skip WebSocket order book deltas when the stored book is undefined Pull request #30893
- Release: v4.5.88 Release
This week: Derive migrated to v3 API, Binance future now means dated contracts only, Paradex added private WebSocket methods, Poloniex and BingX gained new endpoints, and fixes landed for Coinbase balance paging, Gate leverage tiers and order book crashes.
This week's changes to the project: Derive was migrated from its retired v2 API to v3 across REST and WebSocket, with fixtures recaptured live. Binance future now selects only dated delivery contracts, while USDⓈ-M perpetuals use swap with the linear subtype and COIN-M uses inverse. Paradex added watchMyTrades, watchPositions and watchBalance over WebSocket. Poloniex added fetchTransfer and fetchTransfers, BingX added fetchBidsAsks, and Gate now reads actual leverage tiers for all contracts. Fixes include Coinbase fetchBalance following the v3 cursor, Toobit last prices, BingX swap WebSocket frames, and order book handlers on Bittrade and Poloniex guarded against missing books. Release v4.5.88 was published.
Week of October 5, 2026
What shipped
- The Rust build was reworked so the hand-written engine runtime lives in ccxt-core instead of being duplicated across roughly 200 generated venues, and transpile worker fan-out is capped so runners are not killed by out-of-memory errors. Pull request #30723
- Swap trigger orders on mexc now work end to end: market trigger orders are no longer sent to planorder/place as priced limit orders, the bare numeric id in the planorder/place response is read, and cancelOrder now handles the trigger param through planorder/cancel. Pull request #30795
- Portfolio margin UM conditional orders on binance were migrated from the old /papi/v1/um/conditional paths that now return 404 to the UM algo API, with the @see docstring links synced to the current docs catalog. Pull request #30753
- On bitget UTA accounts fetchFundingRates and fetchFundingIntervals now use v3/market/current-fund-rate instead of the v2 public endpoints that could not resolve UTA coin-margined market ids like BTCUSD_CM. Pull request #30752
- On bitget UTA accounts fetchOHLCV now routes older windows to v3/market/history-candles, because v3/market/candles only returns recent rows such as 60 days for 1h and 30 days for 1m. Pull request #30738
- Hyperliquid gained fetchMyLiquidations and watchMyLiquidations for the per-account case, reading user fills from userFills or userFillsByTime and the userFills websocket channel and keeping the fills where liquidation.liquidatedUser is the user. Pull request #30758
- Bingx deposit and withdrawal status is now parsed per direction, since status 6 means chain uploaded for deposits but completed for withdrawals, so an in-flight deposit no longer looks credited. Pull request #30745
- On binance portfolio margin, the -2014 and -2015 codes now resolve to AuthenticationError like they do on the other APIs, instead of the OperationFailed classification the portfolio margin override used. Pull request #30749
- Latoken parseTicker now resolves ticker symbols from the currency ids. Pull request #30746
- The python package pins for orjson and certifi were loosened so they can be updated independently when using ccxt as a library. Pull request #30755
Why it matters
Several exchange integrations were repaired this week: mexc swap trigger orders, binance portfolio margin conditional orders and error codes, and bitget UTA funding rate and candle history calls that previously returned empty results for older windows. Hyperliquid also gained per-account liquidation methods built on user fills. A Rust build change moves the engine runtime into ccxt-core and caps transpile workers, which lowers build memory and compile time for people building the project.
Changelog entry
- Perf(rust,transpiler): optimize build memory, compile time and iteration speed Pull request #30723
- Fix(mexc): place, list and cancel swap trigger orders Pull request #30795
- Fix(binance): migrate pm um conditional orders to algo api + docs links Pull request #30753
- Fix(bitget): route uta fetchFundingRates to v3 current-fund-rate Pull request #30752
- Fix(bitget): route uta fetchOHLCV to history-candles for old windows Pull request #30738
- Feat(hyperliquid): add fetchMyLiquidations and watchMyLiquidations Pull request #30758
- Fix(bingx): parse deposit and withdrawal status by direction Pull request #30745
- Fix(binance): portfolio margin -2014/-2015 map to AuthenticationError Pull request #30749
- Fix(latoken): resolve ticker symbols from the currency ids in parseTicker Pull request #30746
- Chore(python): losely pin orjson and certifi Pull request #30755
- Docs(blog): add Meet CCXT Terminal launch post Pull request #30748
This week: mexc swap trigger orders fixed, binance PM conditional orders moved to the UM algo API, bitget UTA funding rates and old OHLCV windows routed correctly, hyperliquid fetchMyLiquidations and watchMyLiquidations added, bingx deposit/withdrawal status fixed, and Rust build
Changes landed this week across several integrations. On mexc, swap trigger orders now place, list and cancel correctly, including reading the order id from planorder/place and handling the trigger param on cancel. On binance, portfolio margin UM conditional orders moved to the UM algo API because the old conditional paths return 404, and the -2014/-2015 codes now map to AuthenticationError for PM like they do elsewhere. On bitget, UTA fetchFundingRates and fetchFundingIntervals use v3/market/current-fund-rate, and UTA fetchOHLCV routes old windows to history-candles. Hyperliquid gained fetchMyLiquidations and watchMyLiquidations. Bingx deposit and withdrawal status is parsed by direction, latoken resolves ticker symbols from currency ids, and the Rust build now keeps the engine runtime in
Week of September 28, 2026
What shipped
- Release v4.5.85 with fixes across rust error handling, bybiteu defaults, zebpay swap endpoints, and other exchange updates. Release
- Binance: cancelOrderWs now correctly cancels conditional orders on linear dated futures. Pull request #30742
- Binance: derivatives updates for CM-UM integration including cost calculation changes across all contract market types. Pull request #30685
- Pacifica: added fetchTradingFees using account-wide fee levels. Pull request #30739
- Pacifica: added fetchDeposits and fetchWithdrawals methods. Pull request #30697
- Blofin: added fetchDepositAddress, fetchCurrencies, fetchDepositWithdrawFees, fetchDeposit, and fetchWithdrawal. Pull request #30703
- Python: Future.race() no longer stacks multiple _swallow handlers on pending losers. Pull request #30732
- OKX, MyOKX, OKXUs: websocket port changed from 8443 to 443. Pull request #30715
- C#: strict typing campaign wave 4 with typed locals, params, returns and native bool/string emission. Pull request #30530
- Go: ParseTicker, ParseOHLCV, ParseOrder now return typed structs with typed WS caches. Pull request #30698
Why it matters
This week brings release 4.5.85 with critical fixes for order cancellation, derivatives pricing, and websocket connectivity across multiple exchanges. New methods for Pacifica and Blofin improve trading and account management capabilities. Language-specific improvements in Python, Go, and C# strengthen reliability and type safety across the project.
Changelog entry
- Release v4.5.85 Release
- Fix(binance): cancelOrderWs cancels conditional orders on dated futures Pull request #30742
- Fix(binance): derivatives updates for CM-UM integration Pull request #30685
- Feat(pacifica): add fetchTradingFees Pull request #30739
- Feat(pacifica): add fetchDeposits and fetchWithdrawals Pull request #30697
- Feat(blofin): fetchDepositAddress, fetchCurrencies, fetchDepositWithdrawFees, fetchDeposit, fetchWithdrawal Pull request #30703
- Refactor(okx,myokx,okxus): change 8443 to 443 port for WS Pull request #30715
- Fix(python): stop Future.race stacking _swallow on pending losers Pull request #30732
- C#: stricter typing — typed locals/params/returns, native bool/string emission Pull request #30530
- Feat(go): typed Ticker/OHLCV/Order struct returns and typed ws ticker caches Pull request #30698
- Fix(latoken): map invalid API key and UNAUTHORIZED replies to AuthenticationError Pull request #30741
- Fix(bingx): route inverse swap transfers to the Coin-M account Pull request #30730
Ccxt 4.5.85 ships: Binance derivatives CM-UM integration fixes, Pacifica and Blofin deposit/withdrawal methods, OKX websocket port migration, Python future race fix, and language-specific type improvements.
Ccxt 4.5.85 is live. Key updates: Binance conditional order cancellation and CM-UM integration fixes, new Pacifica and Blofin trading and account methods, OKX websocket 8443→443 migration, Python Future.race stacking fix, and C#/Go type safety improvements. Validated across spot and derivatives markets.
Week of September 21, 2026
What shipped
- PHP variable prefixes in string literals are no longer incorrectly escaped, fixing signed requests and response parsing in PHP. Pull request #30657
- Multiple exchanges now use incrementingNonce() to prevent nonce reuse errors when requests land in the same millisecond. Pull request #30558
- WOO exchange now reports executed order cost correctly instead of the reserved quote amount. Pull request #30606
- BingX spot order history now forwards since and until time filters to the API. Pull request #30596
- OKX stop/trigger orders now correctly ignore false trigger params when routing requests. Pull request #30575
- Bitget added fetchDeposit and fetchWithdrawal methods for single deposit/withdrawal lookups by ID. Pull request #30559
- Apex fetchOHLCV now enforces the 200 candle limit. Pull request #30586
- Bitvavo fetchOHLCV now enforces the 1440 candle limit. Pull request #30587
- Bullish watchBalance now maintains object identity across WebSocket snapshot and update frames. Pull request #30595
- Blog content is now publicly served from ccxt.com/blog with proper SEO metadata. Pull request #30653
Why it matters
This week focused on fixing critical data integrity issues across exchanges, particularly in order cost reporting and nonce handling that could cause silent failures. Several exchanges received API parameter fixes and limit enforcement updates that improve data accuracy and prevent malformed requests.
Changelog entry
- Fix(build): keep php variable-prefix rules out of string literals Pull request #30657
- Feat(incrementingNonce): nonce/salt updated in multiple exchanges Pull request #30558
- Fix(woo): report the executed cost of an order, not the quote it reserved Pull request #30606
- Fix(bingx): forward spot order history time filters Pull request #30596
- Fix(okx): ignore a false trigger param when routing order requests Pull request #30575
- Feat(bitget): add fetchDeposit and fetchWithdrawal Pull request #30559
- Fix(apex): fetchOHLCV max limit Pull request #30586
- Fix(bitvavo): fetchOHLCV max limit & fixture Pull request #30587
- Fix(bullish): keep object identity across ws updates - watchBalance Pull request #30595
- Fix(coinbaseinternational): fetchOHLCV since calculation Pull request #30588
- Fix(hyperliquid): send buy TWAP orders as buys Pull request #30650
- Fix(bybiteu): default to spot markets and spot type Pull request #30605
- Fix(pacifica): fill the average price of a filled order in fetchOrder Pull request #30572
- Fix(zaif): pass since and limit to closed orders Pull request #30579
- Fix(mexc): parse futures maker trades Pull request #30578
- Feat(binance): fx markets subType edits Pull request #30623
- Feat(binance): FX swap tests and FAQ Pull request #30614
V4.5.84 shipped: fixed PHP string escaping in signed requests, added incrementingNonce to prevent reuse errors, corrected WOO order costs, and improved time filter forwarding across multiple exchanges.
Ccxt v4.5.84 is out. This release fixes critical issues: PHP signed requests no longer mangle string literals, WOO orders report accurate executed costs, and multiple exchanges now prevent nonce reuse errors when requests arrive in the same millisecond. Also improved time filter handling for BingX, OKX trigger order routing, and API limit enforcement for Apex and Bitvavo.
Week of September 14, 2026
What shipped
- Offline test suites now run 40% to 79% faster across all six language ports without removing, skipping or weakening any tests. Pull request #30553
- Added incrementingNonce helper for exchanges that need duplicate-nonce handling. Pull request #30423
- Bitget fetchLedger now routes UTA (v3) accounts to the correct endpoints instead of returning errors. Pull request #30414
- Kraken Futures now supports fetchPositionsHistory to retrieve position update events including opens, closes, increases, decreases and settlements. Pull request #30503
- Added Bybit Indonesia (bybitid) as a new regional exchange endpoint. Pull request #30501
- Modetrade deposit and ledger parsing fixed to read correct field names for transactions and asset history. Pull request #30537
- Bithumb now supports OPEN-API-PARTNER authentication method. Pull request #30496
- BingX fetchPositionsHistory capability correctly advertises as unsupported while keeping single-symbol fetchPositionHistory enabled. Pull request #30407
- BingX public swap trades now preserve fillId to prevent undefined unified trade IDs. Pull request #30554
- Go printer now emits gofmt-clean output natively, removing the need for gofmt spawning in CI. Pull request #30515
Why it matters
Test performance improvements reduce development feedback time significantly. Exchange adapter fixes restore broken functionality for deposits, ledgers and position history across multiple venues. New features like incrementing nonce support and regional endpoints expand compatibility with more exchanges and use cases.
Changelog entry
- Perf(tests): cut offline test-suite runtime across all six ports (-40% to -79%) Pull request #30553
- Feat(Exchange): add incrementingNonce helper for duplicate-nonce venues Pull request #30423
- Feat(bitget): UTA (v3) ledger endpoints for fetchLedger Pull request #30414
- Feat(krakenfutures): add fetchPositionsHistory Pull request #30503
- Feat(bybitid): add Bybit Indonesia Pull request #30501
- Fix(modetrade): read the real asset-history fields in transactions and ledger Pull request #30537
- Feat(bithumb): add OPEN-API-PARTNER Pull request #30496
- Fix(bingx): disable unsupported fetchPositionsHistory capability Pull request #30407
- Fix(bingx): preserve public swap trade fill IDs Pull request #30554
- Go: printer emits gofmt-clean output natively, gofmt removed from CI Pull request #30515
V4.5.81 shipped: offline tests 40-79% faster, Bitget/Kraken position history fixed, incrementing nonce support, Bybit Indonesia added, Go printer emits gofmt-clean natively.
V4.5.81 is live with major improvements: offline test suites now run 40-79% faster without weakening any tests. Bitget ledger routing and Kraken position history are restored. New support for incrementing nonce handling and Bybit Indonesia regional endpoint. Go code generation now produces gofmt-compliant output natively.