Exchange Pairs Manager

Create and manage trading pairs for the Binance-routed and internal MyExchange engines

What the Pairs Manager Is

Trading pairs in WPCrypto are stored as a custom WordPress post type called wpcrypto_pairs. Each pair post defines a symbol (for example BTCUSDT), the exchange that will execute the trade, the precision of the base and quote coins, the per-trade commission rate and the price/quantity filters Binance uses for that symbol. Once a pair exists, you can render its trade interface anywhere with the [wpcrypto_trade_interface] shortcode.

📋 Quick facts

  • Post type: wpcrypto_pairs
  • Default archive slug: trading-pairs (configurable in the pair list screen)
  • Two exchange targets: BINANCE (route to Binance Spot) and MYEXCHANGE (internal matching engine)
  • One commission rate per pair (no maker/taker split)
  • One shortcode: [wpcrypto_trade_interface]

Where to Find It

The pair list lives under WP Crypto → Exchange Pairs. This is the standard WordPress post list filtered to the wpcrypto_pairs post type, so you have all the familiar editor controls (search, status filters, bulk actions, trash, etc.).

Creating a Pair

  1. Open WP Crypto → Exchange Pairs and click Add New.
  2. Pick the base coin and quote coin from the dropdowns. The plugin restricts the quote to a known list (USDT, BUSD, BTC, ETH, BNB, USDC, etc.); the symbol is built automatically as BASE + QUOTE (for example SOLUSDT).
  3. Click "Fetch Symbol Info". The plugin asks the WPCrypto gateway for Binance's filter data (price tick size, quantity step, min/max price and quantity, notional limits). On success the form auto-fills these fields.
  4. Pick the exchange target:
    • BINANCE — orders submitted here are routed to Binance Spot via your gateway credentials.
    • MYEXCHANGE — orders stay inside your platform and are matched by the internal engine.
  5. Set the commission rate (a single percentage, 0–100). This is the per-trade fee your platform collects on every fill.
  6. (Optional) tweak precision and filters if you need to override the values Binance returned.
  7. Publish. The pair is now usable in [wpcrypto_trade_interface] shortcodes.

Pair Fields

Field Meaning
symbolConcatenated BASE + QUOTE, e.g. BTCUSDT
base_coinThe asset being bought or sold (BTC, ETH, SOL, etc.)
quote_coinThe asset used to price the pair (USDT, BUSD, BTC, ETH, BNB, USDC, …)
exchangeBINANCE or MYEXCHANGE (always uppercase)
commission_rateSingle percent value applied to every fill on this pair
base_asset_precisionDecimal places allowed for base-coin quantities
quote_asset_precisionDecimal places allowed for quote-coin prices
filters[PRICE_FILTER]minPrice / maxPrice / tickSize from Binance
filters[LOT_SIZE]minQty / maxQty / stepSize from Binance
filters[MIN_NOTIONAL] / filters[NOTIONAL]Minimum quote-currency value per order

The Trade Interface Shortcode

Drop the trade UI on any page with:

[wpcrypto_trade_interface symbol="BTCUSDT"]

The shortcode reads its settings from the pair post itself; you only need to pass symbol (and the renderer looks up everything else). The recognised attributes are:

Attribute Purpose
symbolThe pair symbol (matches the pair post)
exchangeOverride the pair's exchange (rare; almost never needed)
base_coin / quote_coinOverride the pair's base/quote (debug only)
base_asset_precision / quote_asset_precisionOverride precision (debug only)
commission_rateOverride the commission rate for this rendering

⚠️ Only one trade shortcode exists

Variants like [wpcrypto_trade_form], [wpcrypto_order_book], [wpcrypto_price_chart], [wpcrypto_exchange], [wpcrypto_pair] or [wpcrypto_trading_advanced] are not registered by the plugin. The single [wpcrypto_trade_interface] shortcode renders the full panel (order book + chart + buy/sell forms + conditional-order box).

BINANCE vs MYEXCHANGE

Aspect BINANCE MYEXCHANGE
Where orders executeSent to Binance Spot through your API credentialsMatched internally in your own order book
Liquidity sourceReal Binance liquidityYour users, plus any market-making bots you run (see Trading Bot Suite)
Conditional ordersSubmitted as Binance native STOP_LOSS / TAKE_PROFIT / OCOWatched in-house every 30 s and triggered by the conditional-order watcher
Risk policyEnforced before the order is sent to BinanceEnforced before the order reaches the internal matcher
Best forMature pairs with real volumeYour own tokens or pairs Binance does not list

You can mix both — for example route BTCUSDT/ETHUSDT to BINANCE while keeping a custom MYTOKEN/USDT on MYEXCHANGE.

Operational Notes

⚠️ Things to know

  • BUSD has been delisted on Binance. If you previously had BUSD pairs (BTCBUSD, ETHBUSD, BUSDUSDT), they no longer execute on BINANCE. Switch them to USDT or USDC.
  • Filters must match Binance. If you override tickSize/stepSize manually, Binance may reject your orders with PRICE_FILTER / LOT_SIZE errors. Prefer the "Fetch Symbol Info" button.
  • The slug is editable. The default archive slug (trading-pairs) can be changed in the pair list screen if you want a different URL pattern.
  • Changing the symbol after orders exist will orphan history. Past fills keep their original symbol; keep the symbol stable once trades start running.

Troubleshooting

"Fetch Symbol Info" returns an error

The symbol you built (BASE + QUOTE) does not exist on Binance. Double-check the base coin spelling, or pick a different quote (most coins trade against USDT).

Trade panel says "Pair not found"

The shortcode is referencing a symbol that has no published pair post. Confirm the pair exists and is in the Published state.

Orders rejected with PRICE_FILTER or LOT_SIZE

Your pair's tickSize / stepSize do not match Binance. Re-run "Fetch Symbol Info" to refresh the filters.

Commissions look wrong on the order receipt

Check the commission_rate on the pair. The plugin multiplies the fill total by this rate to compute the platform fee that appears on the order receipt.