P2P Trading 5.2.9

29 November 2025

FEATURESBUG FIXESADMIN DASHBOARDNOTIFICATIONSVALIDATION

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