Skip to main content
If you’re building an app on top of Predexon, you can add a partner fee to every Polymarket trade your users make. This guide explains how fees work across venues and how to set up monetization. The Fee Policy API is scoped to your API key — not to individual accounts. It applies to both the accounts path (/api/accounts/*) and the legacy path (/api/users/*).

How fees work

Polymarket

Polymarket orders have two fee components:
  • Platform fee — currently 0 bps (no platform fee)
  • Partner fee — configurable by you, from 10 to 500 bps (0.1% to 5%)
The total fee is platformFeeBps + partnerFeeBps. With no partner fee configured, trading is free. How fees are deducted depends on the order type:
  • Market BUY — the fee is deducted upfront. Your amount is reduced before execution. If you submit amount: "10" with a 50 bps fee, $9.95 is used for the order and $0.05 is deducted as the fee.
  • All other orders (market sell, limit buy, limit sell) — the full size is used for the order. The fee is calculated and settled after the order fills.

Predict and Opinion

Both charge an exchange fee applied automatically by their matching engines. You don’t need to account for it in order parameters. There’s no configurable partner fee for these venues.

Limitless

Limitless applies a server-side fee rate (feeRateBps, currently ~300 bps / 3%) to every order. The fee is set per profile by Limitless and isn’t configurable through the Predexon Fee Policy API.

Set up a partner fee

Partner fees are configured per API key and apply to all Polymarket orders placed by that key’s accounts.

Step 1: Set your fee policy

import requests

HEADERS = {"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"}

policy = requests.put(
    "https://trade.predexon.com/api/fees/policy",
    headers=HEADERS,
    json={
        "venue": "polymarket",
        "partnerFeeBps": 50,
        "partnerTreasuryAddress": "0xAbCdEf0123456789AbCdEf0123456789AbCdEf01",
    },
).json()

print(f"Total fee: {policy['totalFeeBps']} bps  treasury: {policy['partnerTreasuryAddress']}")
Partner fees have a minimum of 10 bps when enabled. The maximum total (platform + partner) is 500 bps (5%). Set partnerFeeBps to 0 to disable.

Step 2: Verify your policy

policy = requests.get(
    "https://trade.predexon.com/api/fees/policy",
    headers=HEADERS,
    params={"venue": "polymarket"},
).json()
If you’ve never configured a partner fee, this returns the default: partnerFeeBps: 0 and partnerTreasuryAddress: null.

Step 3: Confirm fees in order responses

Once your policy is active, every Polymarket order response includes a fee object:
{
  "orderId": "0xe692...",
  "status": "filled",
  "fee": {
    "policyApplied": true,
    "feeBps": 50,
    "platformFeeBps": 0,
    "partnerFeeBps": 50,
    "grossAmount": "10",
    "netOrderAmount": "9.95",
    "maxFeeReserved": "0.05"
  }
}
The grossAmount, netOrderAmount, and maxFeeReserved fields are only present on market BUY orders (where the fee is deducted upfront).

Remove your partner fee

policy = requests.delete(
    "https://trade.predexon.com/api/fees/policy",
    headers=HEADERS,
    params={"venue": "polymarket"},
).json()
Idempotent — calling it when no partner fee exists just returns the current state.
If two requests update the policy concurrently, one will receive a 409 Conflict. Simply retry.

Fee comparison

PolymarketPredictOpinionLimitless
Platform fee0 bpsN/AN/AN/A
Partner fee10–500 bps (configurable)Not availableNot availableNot available
Exchange feePer Polymarket scheduleVaries by marketVaries by market~300 bps (server-applied)
Fee APIGet / Set / RemoveN/AN/AN/A
fee in order responseYesNoNoNo

Next Steps

Placing Trades

Place your first trade

Funding & Withdrawals

Deposit and withdraw funds