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) andMYEXCHANGE(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
- Open WP Crypto → Exchange Pairs and click Add New.
- 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 exampleSOLUSDT). - 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.
- 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.
- Set the commission rate (a single percentage, 0–100). This is the per-trade fee your platform collects on every fill.
- (Optional) tweak precision and filters if you need to override the values Binance returned.
- Publish. The pair is now usable in
[wpcrypto_trade_interface]shortcodes.
Pair Fields
| Field | Meaning |
|---|---|
| symbol | Concatenated BASE + QUOTE, e.g. BTCUSDT |
| base_coin | The asset being bought or sold (BTC, ETH, SOL, etc.) |
| quote_coin | The asset used to price the pair (USDT, BUSD, BTC, ETH, BNB, USDC, …) |
| exchange | BINANCE or MYEXCHANGE (always uppercase) |
| commission_rate | Single percent value applied to every fill on this pair |
| base_asset_precision | Decimal places allowed for base-coin quantities |
| quote_asset_precision | Decimal 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 |
|---|---|
symbol | The pair symbol (matches the pair post) |
exchange | Override the pair's exchange (rare; almost never needed) |
base_coin / quote_coin | Override the pair's base/quote (debug only) |
base_asset_precision / quote_asset_precision | Override precision (debug only) |
commission_rate | Override 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 execute | Sent to Binance Spot through your API credentials | Matched internally in your own order book |
| Liquidity source | Real Binance liquidity | Your users, plus any market-making bots you run (see Trading Bot Suite) |
| Conditional orders | Submitted as Binance native STOP_LOSS / TAKE_PROFIT / OCO | Watched in-house every 30 s and triggered by the conditional-order watcher |
| Risk policy | Enforced before the order is sent to Binance | Enforced before the order reaches the internal matcher |
| Best for | Mature pairs with real volume | Your 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.