P2P Trading 6.4.1
Latest1 October 2026
This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.
P2P Trading v6.4.1
Release Date: October 1, 2026 Tags: PRICING, OFFERS, MODERATION, CHAT, ESCROW, NATIONAL CURRENCIES
Overview
"Track the market" offers follow the market for the first time. Until now a track-the-market offer kept the price it was published at, while its page told takers the price moves. A new job re-prices every active one once a minute — and on the first run after the update, offers published long ago can move by as much as the market has since. Upgrade Notes lists the offers to look at.
A maker can no longer approve their own pending offer by saving it, a finished trade's chat stays open so customers can answer Support, and offers whose asset is a national currency have their limits, escrow and wording put right.
Requires Core v6.8.2, released with it: the two-factor check on release, the trade-room chat state and the re-pricing job's scheduling are in Core.
Update Instructions
pnpm updatorUpdate Core 6.8.2 in the same window. There is no schema change and no script to run. One new setting, "Chat After a Trade Ends (hours)", works from its default.
Upgrade Notes
"Track the market" offers move to today's price
From the first minute after the update, the job re-prices every active track-the-market offer to today's rate and the margin implied by its stored prices. Nothing is paused and makers are not told.
- An offer published weeks ago can move by as much as the market has since.
- Offers a maker re-saved on their edit page before this update lost their margin then, and now trade at the bare market rate until the maker enters it again.
- Offers an admin saved in the offer editor before this update may have been turned into fixed-price offers. The job does not touch them; some may be trading at their margin figure as the price (a +3% offer at a price of 3). The editor shows a note only where the stored figures disagree. Review the offers your admins edited.
- Offers a maker put on the board by saving their own pending offer, before this update, stay live; nothing reverts them.
Finished trades' chats open again
"Chat After a Trade Ends (hours)" defaults to 168 when it has never been saved. On update, every trade that ended in the last seven days — and every finished trade of any age on which Support wrote in the last seven days — takes messages again, and a trader's reply on a trade Support has written on notifies every Admin and Super Admin, in-app and by push.
- To keep the old behaviour, set it to
0under P2P settings → Trading → Chat.
Added
A job that re-prices "Track the market" offers
- Added the scheduled job "Re-price Track-the-market P2P offers", every minute while P2P is enabled. It re-prices every active track-the-market offer from the platform's own rate and the offer's margin; paused, draft and pending offers are left alone, and an offer on a pair with no market rate keeps its last price.
Delivery and read ticks in the trade chat
- Added ticks on your own messages in the trade chat: one grey tick when the server has the message, two grey when the other trader's device has it, two green when they have had the chat on screen. Support messages are not ticked, and an admin viewing the case does not mark anything as read.
Changed
A finished trade's chat stays open
Both chat routes refused every message and image once a trade was completed, cancelled or expired, while Support could still write — so a customer could not answer a question Support had just asked them.
- Changed a trade's chat to stay open after the trade ends — for seven days by
default, and for that long again after every Support message. Every Admin and
Super Admin is notified (in-app and push) when a trader replies on a finished
trade Support has written on. The new setting is "Chat After a Trade Ends
(hours)" (P2P settings → Trading → Chat), from 0 to 720;
0keeps the old behaviour.
A trade opens at the price the taker was shown
- Changed trades opened from the website to open at the price the taker saw, or not at all. If the offer's price changed while the form was open — a maker's edit, or the per-minute re-pricing of track-the-market offers — the trade is refused with a "price changed" message and the page reloads the offer. The mobile app, which does not send the price, behaves as before.
The release code and the offer composer
- Changed confirming a release with a two-factor code: the fifth wrong code within ten minutes now signs that session out, and codes are refused until the window has passed. Other devices stay signed in, and the sign-out is recorded in the account's security activity.
- Changed the offer composer to say as soon as a pair is chosen when it cannot be priced (no USD price for the "Priced in" currency, or no market rate for a track-the-market price), and to offer "Use a fixed price", instead of failing only when Publish is pressed.
- Changed the optional repair for older national-currency offers: on an
install with the backend source and its development tools it runs as
pnpm repair:p2p-price-wallet-type(report only) andpnpm repair:p2p-price-wallet-type:applyfrombackend/, and now lists offers still holding the maker's cash under the old escrow rule. It is not required: each such offer is repaired the next time it is saved.
Fixed
"Track the market" offers never followed the market
An offer set to "Track the market" was priced once, when published, and then kept that price for good — while its page told takers the price "follows the market rate, so it moves". Two editor defects made it worse.
- Fixed by the re-pricing job above. An offer that is resumed, approved or re-activated is now priced before it returns to the board, and the server prices an offer at publish instead of storing the price the client sent (a pair with no market rate is refused with "use a fixed price").
- Fixed a maker's save resetting the price to the market figure from the day of publishing and dropping the margin; the edit page now shows the real margin and a save prices the offer with it.
- Fixed an admin save turning a track-the-market offer into a fixed-price one, after which the maker's next save could publish the margin (say 3) as the price.
- Fixed changing a fixed price in the admin offer editor not changing the price the offer traded at.
Offers and moderation
- Fixed a maker putting their own pending offer on the board, with offer auto-approval off (the default), simply by saving it — the edit page sends "Active" on every save — or by pausing and resuming it. A pending offer now stays pending until a moderator approves it.
- Fixed per-trade limits on offers whose asset is a national currency (GBP priced in SOL, say). Trades always read them in that currency, but the composer and the publish check treated them as price-currency figures, so some offers could not be published, and the board filter, trade forms, guided matching, My Offers and trader profiles showed or compared them in the wrong unit.
- Fixed the minimum-trade "dust" check passing every national-currency offer: it looked the cash amount up in a table with no cash currencies. It now tests the coin that actually moves in escrow, so an offer below the coin's minimum is refused the next time it is published or saved.
- Fixed a refused Publish using up one of the maker's five offers per hour, and a new draft spending a publish slot. Drafts have their own 20 per hour, and the message says how long to wait.
- Fixed "Failed to create offer" being shown for an offer that had in fact been created; a maker who retried got a duplicate offer and a second escrow hold.
- Fixed admin approve and activate refusing an older national-currency offer priced in a coin with "it has no crypto leg for the platform to escrow".
- Fixed such an offer, which no taker could trade, telling its maker it was "taking trades". It now says "Not taking trades" and offers a one-click "Record it now".
Trades
- Fixed a national-currency trade being refused when the escrowing party held exactly the amount needed: the escrow (amount × price) was checked unrounded, so 50 EUR at 1.1 needed 55.00000000000001 USDT.
- Fixed the trades list showing national-currency trades the wrong way round — telling the wrong party it was their turn, and showing the fee taken off the wrong amount.
- Fixed a chat message, image, Support note or dispute update wiping a trade's stored history when that history was unreadable; it is now refused and nothing is written.
- Fixed the trade room telling every escrow holder after a cancel or expiry that their funds "stayed with your offer", which was false whenever they had gone back to the wallet. Admin resolution now records where a refunded escrow went, as the other settlement routes do.
- Fixed closing one trade's tab silencing live updates in the user's other open trade.
- Fixed a buy offer, or a national-currency sell offer, showing the maker's own payment instructions on the trade as if the other party had written them.
- Fixed a Support message written while updating a dispute being shown and notified before it was saved, so a failed save left traders with a message that no longer existed.
- Fixed the P2P dashboard leaving trades priced in ecosystem-only tokens (USDT, BTC on an ecosystem-only install) out of the volume total.
- Fixed wording that named the wrong party or money: amounts printed as "55.00000000000001 USDT" in notifications and on the Release button; the market page's escrow explainer saying "Your EUR is locked" on boards it could not classify; the admin case file's step ribbon on national-currency trades; a taker told about pausing "your offer"; and the payment details panel addressing the person being paid as if they were the payer.