There is no safe global constant called “the Polymarket fee.” Under CLOB V2, the protocol determines fees per market at match time. Makers are not charged a platform trading fee; takers pay only when the selected market is fee-enabled.
The reliable workflow is therefore:
- Read the selected market's current fee configuration.
- Apply the documented price-dependent fee curve.
- Add spread, slippage, and latency costs.
- Recheck the configuration before deploying or rerunning a backtest.
The source of truth is Polymarket's current Fees documentation, not a fee number copied from an older article.
The CLOB V2 Fee Formula
Polymarket documents the platform taker fee as:
fee_usdc = shares × fee_rate × price × (1 - price)
where price is between 0 and 1. The curve is symmetric around 50¢: the same number of shares traded at 30¢ and 70¢ incurs the same dollar fee. Fees are rounded to five decimal places, with the smallest nonzero charge 0.00001 USDC; smaller amounts round to zero.
The fee page labels its dollar tables in USDC; the current collateral and maker-rebate documentation specifies pUSD. Treat these as dollar-denominated examples, not instructions to fund an old USDC.e wallet.
The category's fee_rate is a coefficient in that formula. It is not a flat percentage of stake or winnings.
Rechecked on October 8, 2026, the official table lists a sports coefficient of 0.05, a maker fee rate of 0, and a 15% maker-rebate allocation. For 100 shares:
| Price | Trade value | Sports taker fee | Fee / trade value |
|---|---|---|---|
| 20¢ | $20.00 | $0.80 | 4.00% |
| 50¢ | $50.00 | $1.25 | 2.50% |
| 80¢ | $80.00 | $0.80 | 1.00% |
Those examples illustrate the checked category curve, not a promise that every future sports market uses it. The market-level configuration wins.
How to Check a Specific Market
The CLOB reference exposes market information by condition ID. This read-only example uses py-clob-client-v2 1.2.0; Polymarket recommends its unified Python SDK for new projects. SDK source was inspected; this fee lookup was not executed against every market:
from py_clob_client_v2 import ClobClient
client = ClobClient(
host="https://clob.polymarket.com",
chain_id=137,
)
info = client.get_clob_market_info("CONDITION_ID")
fee_details = info.get("fd", {})
print("fee details:", fee_details)
print("minimum order size:", info.get("mos"))
print("minimum tick size:", info.get("mts"))
The checked Gamma schema and public response expose feesEnabled and feeSchedule. Validate the actual response schema. Use the CLOB response for the parameters applied by the trading venue, and fail closed if a trading strategy cannot resolve the current fee configuration.
CLOB V2 removed feeRateBps from the signed order. Do not pass a fee guessed by your client: the operator sets the applicable fee at match time.
Maker Fees and Maker Rebates Are Different
A maker posts an order that rests on the book. A taker submits an order that immediately matches existing liquidity.
- Maker platform fee: currently zero in the official category table.
- Taker platform fee: charged on fee-enabled markets using the market's curve.
- Maker rebate: a daily pUSD distribution funded from a portion of eligible taker fees.
The maker-rebate percentage is not a guaranteed rebate on every order. Your payout depends on executed maker liquidity and the program's current rules; Polymarket also states that rebate percentages can change. Treat a rebate as separately measured revenue, not as a negative fee baked into a backtest.
Polymarket also documents a tiered taker-rebate program. As with maker rebates, book only the rebate actually credited to the account.
The Old NCAAB “2% of Winning Payout” Model Is Obsolete
An earlier version of this article described a February 2026 NCAAB fee as 2¢ per winning share. That is not the current CLOB V2 fee model and should not drive new code or backtests.
Current fees are applied to fee-enabled taker fills at match time using the per-market curve. Settlement is not where your client should invent or deduct a category-specific “winnings fee.” Historical analyses must use the fee regime that existed when each fill occurred; forward simulations should use the selected market's current V2 parameters.
What About Polygon Gas?
CLOB orders are signed off-chain and matched by Polymarket, so a trader is not asked to submit a new Polygon transaction and pay gas for every fill. That does not make the entire wallet lifecycle costless:
- An EOA wallet can still need POL for on-chain operations.
- Deposit-wallet and approval flows use Polymarket's relayer infrastructure.
- Bridges, exchanges, or payment providers may impose their own charges.
- Polymarket says it does not charge deposit or withdrawal fees, but intermediaries may.
For trade-level modeling, do not add a fictional gas charge to each CLOB fill. Track actual wallet, bridge, and relayer-related costs separately when they occur.
Fees vs Sportsbook Vig
Sportsbook vig is embedded in the two quoted sides. For example, two sides at -110 imply about 104.8% in total probability before devigging. A prediction-market order book has a spread, a price-dependent platform fee on eligible taker fills, and possible price impact.
That makes “0% maker fee” an incomplete comparison. A maker can still suffer adverse selection, and a taker can pay both the spread and the platform fee. On a thin book, those execution costs can exceed conventional sportsbook vig even when the nominal maker fee is zero.
Calculate Breakeven in Dollars, Then Convert to Edge
For a proposed order, estimate:
expected_cost_usd = platform_fee_usd
+ spread_and_slippage_usd
+ latency_or_adverse_selection_usd
- rebates_actually_expected_usd
Then divide by filled shares to express that cost in cents per share. The required model edge must exceed the full expected cost with a margin for estimation error.
Do not hardcode a flat two-cent fee. The platform fee changes with price and shares, while slippage changes with order-book depth. A good simulator walks the available book, applies the market's fee curve to the expected fill, and records maker/taker status from the actual execution.
Entry, Exit, and Settlement
Platform fees attach to eligible taker fills:
- Buy as a taker and hold to settlement: one taker fill fee.
- Buy as a maker and hold: no maker platform fee, with possible rebate eligibility.
- Buy as a taker and later sell as a taker: two fee-bearing fills.
- Resolve at $0 or $1: resolution itself is not a second CLOB trade.
Holding can reduce the number of fee-bearing executions, but it is not automatically the best strategy. The decision must also include information risk, opportunity cost, and the value of exiting a bad position.
Implementation Checklist
Before trusting a live strategy or backtest:
- Use a supported, pinned SDK for the selected market flow; new integrations should consult the unified SDK. Do not use archived V1 order examples.
- Query the market's current CLOB fee details.
- Apply
shares × fee_rate × price × (1 - price)only to eligible taker fills. - Keep maker rebates and taker rebates as realized credits, not assumptions.
- Model spread and depth separately from the platform fee.
- Store the fee regime and maker/taker role with every fill for historical reproducibility.
- Recheck the official fee page before deployment because category parameters can change.
The practical takeaway is simple: the fee displayed in a table is only one part of execution cost. For a trading bot, the defensible threshold is built from the exact market fee, expected fill price, book depth, latency, and observed adverse selection.
Related deeper reads: - The Complete Guide to Prediction Market APIs — fees in the broader API landscape. - Hold to Settlement, Never Sell — when reducing executions helps and when it does not. - Execution Quality in Prediction Markets — spread, queue position, and adverse selection.