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 both venues and how to set up monetization.

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. For example, 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.fun

Predict.fun charges an exchange fee that varies by market. This is applied automatically by Predict’s matching engine — you don’t need to account for it in your order parameters, and there’s no configurable partner fee for Predict.

Set Up a Partner Fee

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

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/polymarket",
    headers=HEADERS,
    json={
        "partnerFeeBps": 50,  # 0.5%
        "partnerTreasuryAddress": "0xAbCdEf...01"  # where fees are sent
    }
).json()

print(f"Total fee: {policy['totalFeeBps']} bps ({policy['totalFeeBps'] / 100}%)")
print(f"Treasury: {policy['partnerTreasuryAddress']}")
Partner fees have a minimum of 10 bps when enabled. The maximum total fee (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/polymarket",
    headers=HEADERS
).json()

print(f"Platform fee: {policy['platformFeeBps']} bps")
print(f"Partner fee: {policy['partnerFeeBps']} bps")
print(f"Total: {policy['totalFeeBps']} bps")
print(f"Treasury: {policy['partnerTreasuryAddress']}")
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 (since the fee is deducted upfront).

Remove Your Partner Fee

policy = requests.delete(
    "https://trade.predexon.com/api/fees/policy/polymarket",
    headers=HEADERS
).json()

print(f"Partner fee: {policy['partnerFeeBps']} bps")  # 0
This is idempotent — calling it when no partner fee exists just returns the current state.
If two requests update the policy at the same time, one will receive a 409 Conflict. Simply retry.

Fee Comparison

PolymarketPredict.fun
Platform fee0 bpsN/A
Partner fee10–500 bps (configurable)Not available
Exchange feePer Polymarket scheduleVaries by market
Fee APIGet / Set / RemoveN/A
Fee in responsefee object on ordersNot included

Next Steps