Skip to main content
Preview. Partner fees and fee settlement come with trade plans, which aren’t available in production yet and are still being validated on staging. Orders placed with /v3/actions carry no partner fee. Ask Kairos before you build on this.
A fill on a trade plan can carry three charges: The wallet signs the ceiling of every charge before anything trades. Kairos can charge less than the signed ceiling, never more.

Your fee schedule

Kairos sets up your schedule with you. There is no self-serve API: tell your Kairos contact what you want. A schedule is a list of bands. Each band gives a maker rate and a taker rate:

Rate shapes

A rate is in whole basis points, from 0 to 1000 (10%). Pick a shape per side:
The same rate at every price.
Price-shaped fees suit prediction markets: a share at 0.97 has little room left, so a flat percentage of notional takes a large bite of the possible profit.

Bands

A schedule has 1–16 bands. The first starts at 0 / 0. Each later band raises minNotionalUsd, minVolume30dUsd, or both, and never lowers either. For each trade, the highest band whose two thresholds the trade meets applies:
  • minNotionalUsd is compared with the trade’s notional (its collateral amount, in USD).
  • minVolume30dUsd is compared with the user’s rolling 30-day trading volume on Kairos.

Scope

You can have one schedule for every venue, plus one per venue (Polymarket, Predict.fun). Kairos can also give a single user their own schedule, optionally with an end date. The most specific active schedule wins: a user’s own over yours, and a venue’s over the all-venue one.

Limits

  • Combined ceiling: 10%. Kairos’s highest possible rate plus your highest possible rate must be 1000 bps or less. A plan over it is refused with 422 the combined Kairos and partner fee exceeds the 10% platform ceiling.
  • No per-order flat fees, minimum or maximum charges, or rebates.
  • Hyperliquid trades never carry a partner fee.
  • Changing your schedule affects new plans only. A prepared plan keeps the terms the wallet signed.

What the wallet signs

When you prepare a trade plan, the plan’s tradeBudget pins the fee terms. The planHash the wallet signs covers them. Illustrative values for a $52 Polymarket buy:
Show these to the user before the wallet signs. Amounts ending in Raw are integers in the token’s base units (decimals: 6 for pUSD and USDC, 18 for BNB Chain USDT).

How a fill is charged

For each fill:
  • Fees are on notional (what the shares cost), not on the number of shares.
  • If the wallet’s Kairos tier improves after signing, it pays less. If it gets worse, Kairos still charges no more than it signed for.
  • Each fill’s fee is rounded to $0.000001.
  • If a fill would go past the plan’s signed budget, the charge is clipped. Your share is cut first.
Example. A plan signed with maxPlatformFeeBps: 75, your flat taker rate of 25 bps, and Kairos’s current rate of 50 bps. A taker fill of 100 shares at 0.52 has a notional of $52. Kairos charges 50 bps ($0.26) and you charge 25 bps ($0.13), for $0.39 in total.

How fees are collected

Kairos never takes a fee out of an order, and holds no allowance on the wallet. Fees add up as a balance the wallet owes, per venue. When the balance reaches your settlement threshold (default $10, up to $10,000; ask Kairos to change it), the wallet must pay it before its next trade plan:
Resting orders and plans already prepared keep working. Only new plans wait. The balance is per wallet and venue, across every partner the wallet trades through. The threshold that applies is yours, as the partner preparing the plan.

With the SDK

Over HTTP

1

Read what the wallet owes

owedRaw can be negative: the wallet overpaid, and the credit counts against later fees.
2

Open a settlement

venue is polymarket or predictfun. The other calls below take the same headers.It freezes the whole current balance into amountRaw, and answers with what the wallet must do in walletRequest. If a settlement is already open for this wallet, you get that one back. 409 this wallet has no unpaid fees means there’s nothing to pay.
3

Sign or send

  • Polymarket (kind: "signature"): pass walletRequest.request to the wallet. The Batch holds one call: pUSD.transfer(treasury, amountRaw) from the trading wallet. Sign within 30 minutes (expiresAt).
  • Predict.fun (kind: "transaction"): the request is an eth_sendTransaction of USDT.transfer(treasury, amountRaw) on BNB Chain. Send it exactly as given, as its own transaction. There’s no deadline: expiresAt is null.
4

Answer

The settlement moves to submitted.
5

Poll until it's final

Reading the settlement is what checks the chain. Poll every few seconds until status is confirmed, failed or expired. Kairos credits a payment only once its block is final, which can take a few minutes. Until a read sees it confirmed, new trade plans still answer FEE_SETTLEMENT_REQUIRED.

Settlement states

A Predict.fun payment whose hash was reported but only lands after its settlement expired is still credited, if it lands within 7 days.
Pay exactly amountRaw, in one transfer, in its own transaction. A Predict.fun transaction that pays a different amount, pays twice, or moves other USDT out of the wallet fails the settlement. That money isn’t credited automatically, so contact Kairos if it happens.

Settlement errors

Reads (GET /v3/fees, GET …/settlements/{id}) need trade:read when you use an API key. Writes need trade:execute. With a partner id, send the wallet’s sign-in token.

Hyperliquid

Hyperliquid trades carry no partner fee and owe nothing through settlement. Where a Hyperliquid builder fee is configured, setup asks the wallet to approve it alongside the trading agent (ApproveBuilderFee, with the maximum rate shown as a percentage). The builder fee is at most 1%.

Reporting

GET /v3/fees shows a wallet’s balance and open settlement. For your partner earnings across wallets, ask Kairos for a statement: there is no partner reporting endpoint yet.