Fees (preview)

Post the wallet's signature or transaction hash for a settlement

Preview: available on staging (https://staging-execution.kairos.trade); not yet released in production, where trade plans — the only source of this fee debt — return 503.

Answers a settlement in awaiting_signature: a signature on Polymarket, a transactionHash on Predict.fun — never both. On success the settlement is submitted; poll GET /v3/fees/settlements/{id} until it is confirmed.

A Polymarket signature must be a plain 65-byte ECDSA signature from wallet (low-s); smart-account signatures are refused. It is accepted until 30 s before expiresAt. wallet must be the wallet that opened the settlement (walletRequest.request.params[0] on Polymarket).

post/v3/fees/settlements/{id}/answer

Request

  • Base URL
    https://execution.kairos.trade
  • Auth
    • API key in header X-Kairos-Partner-Id and API key in header Authorization
    • or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret and API key in header Authorization
    • or API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
    • or API key in header X-Kairos-Partner-Id and API key in header X-Client-Id and API key in header X-Api-Key and API key in header X-Api-Secret
    • or API key in header X-Kairos-Partner-Id and HTTP bearer

Path parameters

idstring uuid required

Settlement id.

Request body

walletstring required

EVM address, 0x + 40 hex.

signaturestring

Polymarket — 65-byte ECDSA signature of walletRequest, 0x-prefixed hex (v of 0, 1, 27 or 28; low-s).

transactionHashstring

Predict.fun — 0x + 64 hex hash of the payment transaction (not all zeros).

Example request

{
  "wallet": "0x8ba1f109551bd432803012645ac136ddd64dba72"
}

Response

The settlement, refreshed after the answer — usually submitted. If the payment transaction is already known and in a finalized block (a Predict.fun hash, or a batch the relayer reports mined), it may come back confirmed or failed.

idstring uuid required
venue'polymarket' | 'predictfun' required
status'awaiting_signature' | 'submitted' | 'confirmed' | 'failed' | 'expired' required

awaiting_signature → submitted → confirmed. Terminal: confirmed and failed. expired is final unless it is a Predict.fun settlement whose reported transaction lands within 7 days of expiring: GET /v3/fees or POST /v3/fees/settlements then credits it and it becomes confirmed (GET /v3/fees/settlements/{id} does not re-check an expired settlement).

holdingWalletstring required

Address the fee is paid from — Polymarket's trading wallet, or the wallet itself on Predict.fun.

assetKeystring required
chainIdstring required

Chain id as a decimal string (walletRequest.chainId is hex).

tokenstring required

Fee token (pUSD on Polygon, USDT on BNB Chain).

treasurystring required

The payee address.

decimalsinteger required

Token decimals (6 for pUSD, 18 for BNB Chain USDT).

amountRawstring required

Amount to pay, integer string in token base units.

transactionHashstring nullable required

The payment transaction, once known.

expiresAtstring date-time nullable required

Polymarket — sign before this (30 minutes after opening). null on Predict.fun.

failurestring nullable required

Why the settlement failed or expired. Kept when a late Predict.fun payment later confirms an expired settlement.

Example response

{
  "id": "4e1d2c3b-5a6f-4b7c-8d9e-0f1a2b3c4d5e",
  "venue": "polymarket",
  "status": "awaiting_signature",
  "holdingWallet": "0x2f9c4b8e1d7a6c5b4a3f2e1d0c9b8a7f6e5d4c3b",
  "assetKey": "evm:137:0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb",
  "chainId": "137",
  "token": "0xc011a7e12a19f7b1f670d46f03b03f3342e82dfb",
  "treasury": "0x3333333333333333333333333333333333333333",
  "decimals": 6,
  "amountRaw": "12500000",
  "transactionHash": null,
  "expiresAt": "2026-10-28T12:30:00Z",
  "failure": null,
  "walletRequest": {
    "kind": "signature",
    "chainId": "0x89",
    "request": {
      "method": "eth_signTypedData_v4",
      "params": [
        "0x8ba1f109551bd432803012645ac136ddd64dba72",
        "{\"types\":{\"EIP712Domain\":[…],\"Batch\":[{\"name\":\"wallet\",\"type\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"deadline\",\"type\":\"uint256\"},{\"name\":\"calls\",\"type\":\"Call[]\"}],\"Call\":[…]},\"domain\":{\"name\":\"DepositWallet\",\"version\":\"1\",\"chainId\":\"137\",\"verifyingContract\":\"0x2f9c…4c3b\"},\"primaryType\":\"Batch\",\"message\":{…}}"
      ]
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.