P2P Trading 6.2.7
12 August 2026
This release has upgrade notes. Read them before updating — they describe behaviour changes that need your attention.
P2P Trading v6.2.7
Release Date: August 12, 2026 Tags: ESCROW, FEES, TRADES, MESSAGING, NOTIFICATIONS, DISPUTES, ADMIN, AUDIT, BUG-FIXES
Overview
A fee and messaging release. The escrow fee was being waived for the wrong party: it is carved out of the buyer's proceeds, and the waiver that stops the platform charging itself was checking the seller. So every trade the platform sold charged nothing while still telling the buyer a fee had been deducted — the trade screen and the wallet disagreeing about the same trade.
The second half is chat. Only the first message in a trade ever produced a notification: every message shared one suppression key, and the claim is held for a day. A counterparty was told once and then never again, on a trade where the whole point is that they answer.
Nothing here changes your fee rate or any trade already settled. Read Upgrade Notes if you list offers from a platform-owned account. Requires Core v6.6.4.
Update Instructions
pnpm updatorRestart the backend afterwards. No database migration, no setting changes, and no ruling already made on the dispute desk is altered.
Upgrade Notes
Offers sold by a platform-owned account were charging no escrow fee
The escrow fee comes out of what the buyer receives. The seller escrows the full amount and gives up the full amount whatever the fee is — so the buyer is the party paying it, and the buyer is the party the "the house does not charge itself" rule has to be checked against. It was checking the seller.
Two things followed. A sell offer listed from your Super Admin account charged no fee at all, while every quoting surface still showed one: the fee is recorded on the trade when it opens and is never zero, so the buyer was shown "you receive X less the fee" and was then credited the gross. And the waiver disagreed with the step that actually banks the fee, which refuses to collect from the platform's own account — so a charge taken on one rule and declined on the other would have left the difference nowhere.
From this release the waiver follows the buyer, which is the only case where it is genuinely circular: the platform buying from itself.
- Fixed the escrow fee being waived on trades sold by a platform-owned account, where the buyer was quoted a deduction that was never taken.
- Changed the fee terms published on the offer page and the marketplace board to be resolved for the reader, so a Super Admin browsing as a buyer is quoted no fee rather than one they will not be charged.
- If you list offers from a Super Admin account, your fee income will now include them. Trades already settled are untouched.
Fixed
Only the first message in a trade ever notified the counterparty
Every notification the platform sends carries a key that stops the same event notifying twice, and it is held for 24 hours. For chat, that key named the trade and the recipient and nothing else — so it was the same key for every message. The first message notified. The second and every one after it was silently suppressed as a duplicate of it. Measured on a live trade: seven messages stored, one notification sent.
It is worst exactly where it matters most. A buyer who has sent fiat and is waiting for release, a seller asking for proof of payment, and an operator broadcasting into a dispute all sent messages that the other party was never told about — and the operator's case broadcast is the one a party is least likely to have a screen open for.
- Fixed trade chat notifying only on the first message of a trade. Every message now notifies, including image attachments and an operator's broadcast into a disputed trade.
The second person in a trade room saw nothing arrive
A trade room and its updates were recorded once per person, so a second connection from the same person replaced the first. Two browser tabs did it; so did opening the admin case file, which is the same connection as the trade room. An operator who was also a party to a trade lost the room by opening the case file, and a trader who navigated away in one tab cut the feed to the tab they were reading in another. The room stayed open, went on saying Live, and received nothing.
- Fixed a second connection to a trade taking the room away from the first.
- Fixed one tab leaving a trade removing the trader from the room while another of their tabs was still in it.
- Fixed the admin case file and the trade room competing for one connection, so an operator can now watch a live trade while adjudicating it.
The admin case file never showed messages that arrived while it was open
The case file reads the transcript once when it opens. Messages delivered live afterwards had nowhere to go and were discarded — so an operator adjudicating a live dispute could watch a message arrive on the trader's screen and never see it on their own, with no indication anything was missing.
- Fixed live messages being dropped by the admin case file. They are appended to the transcript as they arrive, and a message that is already in the transcript is not shown twice.
Cancelling after payment was sent gave the wrong reason
A party trying to cancel a trade the buyer had already marked paid was refused with a status name — "Cannot cancel trade from status: PAYMENT_SENT" — instead of being sent to the dispute, which is the only route out of that situation. The trade was protected either way; the message simply did not say what to do about it.
- Fixed the refusal message for cancelling a trade after payment was marked sent, which now names the dispute as the way forward.
An offer activation could be recorded before it had happened
Activating an offer from the admin panel tops up its escrow and changes its status together, so that either both happen or neither does. The audit entry was being written outside that arrangement: a top-up that failed afterwards left a trail entry for an activation that never took place.
- Fixed the admin activity trail recording an offer activation whose escrow top-up was rolled back.
Admin alerts reached every visitor on a demo install
Demo mode gives the Admin role to everybody who signs up, so "notify every admin" meant notify every user. One disputed trade on a demo install with four thousand signups sent four thousand emails and four thousand push notifications. Those alerts now go to Super Admin only while demo mode is on; on every other install nothing changes, and the alert row and the admin screens are written either way.
- Fixed P2P admin alerts fanning out to every registered user on a demo install.