P2P Trading 5.2.9
29 November 2025
P2P v5.2.9
Release Date: November 29, 2025 Tags: FEATURES, BUG FIXES, ADMIN DASHBOARD, NOTIFICATIONS, VALIDATION
Added
Counterparty Statistics
- Added real-time trading statistics for counterparties
- Total completed trades count for each user
- Completion rate percentage showing reliability
- Helps assess counterparty trustworthiness before trading
- Statistics calculated dynamically from actual trade history
- Displayed for both buyer and seller in trade details
Changed
Documentation
- Added clear integration points for P2P trade notifications, ready for an email service to be connected when needed.
Fixed
Admin Dashboard
-
Fixed the "No timeline events available" error when viewing a trade timeline
- Timeline now properly displays all trade lifecycle events
- Events shown chronologically with correct timestamps
- Proper formatting for event details and descriptions
-
Fixed the empty messages tab not showing user chat messages
- Chat messages now properly extracted from trade timeline
- Sender information (name, avatar) displayed correctly
- Visual distinction between admin and user messages
- Admin messages appear in user chats with admin badge
-
Changed the admin note system to support both notes and messages
- Added ability to send messages visible to users
- Internal notes remain private to admins only
- Both participants notified when admin sends a message
- Clear distinction between notes and messages in interface
-
Fixed all admin action buttons
- Cancel Trade button now works correctly
- Resolve for Buyer/Seller buttons function properly
- Flag for Review and Message Participants buttons operational
- All trade management actions now successful
-
Added trade note functionality
- Admin notes stored in trade timeline with admin name and timestamp
- Notes displayed in sidebar for quick reference
- Proper audit trail for admin activities
-
Removed hardcoded placeholder data from the admin interface
- Eliminated test trade IDs from the Related Trades section
-
Fixed the "Data truncated for column 'status'" error when disabling an offer
- Offer disable/delete functionality now works correctly
- Proper status transitions implemented
-
Added an admin offer note system
- Admins can add timestamped notes to offers
- View complete note history for each offer
- Admin activities tracked in activity log
- Notes include admin name and timestamp for audit trail
Trade Timeout & Expiry
-
Added automatic trade expiration
- Runs every 5 minutes to check for expired trades
- Trade status automatically updated to "EXPIRED"
- Escrowed funds released back to seller's wallet
- Amount restored to original offer if still active
- Timeline event added with expiry notification
- Both participants notified of expiration
-
Added a manual timeout trigger for admins
- Admins can manually trigger trade timeout when needed
- Requires proper P2P management permissions
-
Fixed the timeout system so it respects the offer's own payment window
- Trades now expire according to the offer creator's timeout setting rather than only the global default
- Respects custom timeout periods (e.g. 15 minutes)
Fee Calculation
-
Fixed incorrect fee assignment for trade initiators
- Trade initiators now correctly identified as "takers"
- Taker fee always applied to trade initiators
- Proper fee assignment regardless of buy/sell direction
-
Fixed maker and taker fee assignment throughout
- Maker = offer creator/owner (pays maker fee, typically 0.1%)
- Taker = trade initiator/responder (pays taker fee, typically 0.2%)
- Fees are no longer assigned based on buy/sell direction
-
Fixed the hardcoded USD fallback in fee calculations
- System now properly checks offer and price configuration currencies
- Correct currency display across all price currencies
- Accurate fee amounts shown in proper currency
Trade Amount Validation
-
Added enforcement of minimum trade amounts per currency
- Prevents crypto dust issues (e.g. BTC minimum: 0.00005)
- Minimums validated during offer creation, updates and trade initiation
- Helps avoid blockchain UTXO consolidation problems
-
Added enforcement of global trade limits
- Platform-wide minimum and maximum amounts validated
- Limits checked during offer creation and updates
- Trade amounts validated against platform settings
- Clear error messages showing violated limits and requirements
Offer Creation
-
Fixed the fee section appearing when platform fees are 0%
- Fee section only shown when there's an actual fee to display
- Cleaner interface when fees are disabled
-
Fixed the "Insufficient balance" error when creating SELL offers
- Can now create offer first and fund it later
- Balance only locked when someone initiates a trade
- More flexible offer creation workflow
-
Changed KYC verification to be disabled by default
- Can still enable KYC requirement if needed
- No longer need to manually disable it every time
- Faster offer creation process
Trade Dashboard & Details
-
Fixed currency symbols throughout the trade interface
- Escrow fee shows correct currency (e.g. "0.1 BTC (€100)" instead of "$100")
- Payment amounts use trade's actual currency
- Trade overview displays proper currency symbols
- All amounts match offer's pricing currency
-
Fixed the payment method showing an alphanumeric ID
- Now displays readable payment method name (e.g. "Bank Transfer")
- Better user experience with clear payment instructions
-
Fixed expired trades appearing in the active trades list
- Expired trades properly excluded from active dashboard
- Marked as final status (no actions possible)
- No longer prevent offer deletion
-
Fixed offers blocked from deletion due to expired trades
- Offers can now be deleted if all trades are in final states
- Final states: COMPLETED, CANCELLED, DISPUTED, or EXPIRED
Dispute System
-
Added a proper dispute dialog with reason selection
- Valid dispute reasons available: Payment Not Received, Incorrect Amount, Unresponsive Party, Fraudulent Activity, Terms Violation, Other
- Clear descriptions for each reason option
- Detailed explanation field (20-1000 characters)
- Important warnings about dispute process displayed
-
Fixed the "Invalid request body" error when opening disputes
- Proper uppercase reason values sent to backend
- Validation errors eliminated
Notifications
-
Fixed the "Invalid notification type" validation error
- Proper notification types used throughout P2P system
- Notifications now created successfully
-
Added admin message notifications
- Both buyer and seller receive notifications
- Clear notification title: "Message from Admin"
- Includes admin's message content
- Email notifications queued for both parties
-
Added admin security alerts for high-risk activities
- Admins notified of disputed trades and suspicious activity
- Security alerts for HIGH and CRITICAL risk events
- Automatic notifications to all admin users
- Notifications include risk level and direct links
-
Added offer event notifications
- OFFER_APPROVED: notifies when admin approves offer
- OFFER_REJECTED: notifies with rejection reason
- OFFER_EXPIRED: notifies when offer expires
- OFFER_LOW_BALANCE: warns about insufficient balance
- OFFER_TRADE_INITIATED: alerts when trade starts on offer
-
Added reputation event notifications
- REPUTATION_INCREASED/DECREASED: notifies of reputation changes
- MILESTONE_REACHED: celebrates trade count milestones
- POSITIVE_REVIEW/NEGATIVE_REVIEW: alerts for reviews
- TRUSTED_STATUS: congratulates on trusted trader achievement
- Different notification types based on event importance
Settings
- Fixed the Fees & Limits settings page
- Minimum trade amounts per currency can now be edited and saved
- Minimum trade amount and auto-release escrow settings now load correctly
Database Compatibility
- Fixed an SQL syntax error in the offer expiry handler on MariaDB, so offer amounts are validated correctly there
Images
- Fixed the missing FDUSD (First Digital USD) stablecoin image, which was producing a continuous stream of error logs