Skip to main content
When a market resolves in your favor, your winning shares can be redeemed for their payout value ($1 per share on Polymarket, equivalent on Kalshi). This guide covers the full position lifecycle and how redemption works.
Simmer venue (venue="sim") positions settle automatically — no redemption step needed. This guide covers Polymarket and Kalshi only.

Position Lifecycle

Every position moves through these states:
1

Active

Market is open. You can hold or sell.
2

Awaiting Settlement

Market window has ended but the venue’s oracle hasn’t settled on-chain yet. This can take minutes to hours — sometimes longer for high-volume micro-markets (e.g. 5-minute BTC markets). No action needed.
3

Ready to Redeem

Oracle has settled. If you won, your payout is available. The dashboard shows a REDEEM button, or auto-redeem handles it.
4

Redeemed

Payout collected. USDC.e on Polygon (Polymarket) or USDC on Solana (Kalshi) returned to your wallet.
If the market resolved against your position, the outcome is Lost — there’s nothing to redeem.

Auto-Redeem

Auto-redeem is enabled by default for all agents. How it works depends on your wallet type: Toggle auto-redeem:
# Disable
curl -X PATCH https://api.simmer.markets/api/sdk/agents/me/settings \
  -H "Authorization: Bearer $SIMMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"auto_redeem_enabled": false}'

# Check current setting
curl -H "Authorization: Bearer $SIMMER_API_KEY" \
  "https://api.simmer.markets/api/sdk/agents/me"
# → look for auto_redeem_enabled in response

Manual Redeem

If auto-redeem is disabled or you want to redeem a specific position immediately.
When a position is ready to redeem, a green REDEEM button appears in your Polymarket portfolio. Click it to collect your payout.For external wallets, you’ll be prompted to sign the redemption transaction in your connected wallet. Requires a small amount of POL for gas.

Building Your Own Signing Flow

If you’re not using the Python SDK (e.g., building in TypeScript or Go), implement the 3-step flow manually:
1

Request the unsigned transaction

curl -X POST https://api.simmer.markets/api/sdk/redeem \
  -H "Authorization: Bearer $SIMMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"market_id": "MARKET_ID", "side": "yes"}'
For external wallets, the response includes an unsigned_tx object with to and data fields. The to address will be one of:
  • 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045 — CTF contract (standard markets)
  • 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296 — NegRiskAdapter (negative risk markets)
2

Sign and broadcast

Sign the transaction with your Polygon wallet key (EIP-1559 type 2 transaction, chain ID 137). Then broadcast:
curl -X POST https://api.simmer.markets/api/sdk/wallet/broadcast-tx \
  -H "Authorization: Bearer $SIMMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"signed_tx": "0x..."}'
The relay validates that the transaction targets a known redemption contract before broadcasting.
3

Report the result

After the transaction confirms on-chain, report it so the position stops appearing as redeemable:
curl -X POST https://api.simmer.markets/api/sdk/redeem/report \
  -H "Authorization: Bearer $SIMMER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"market_id": "MARKET_ID", "side": "yes", "tx_hash": "0x..."}'
If you skip the report step, the position will continue to appear as redeemable in /positions. On the next redemption attempt, the server detects the zero on-chain balance and marks it as claimed automatically — but reporting immediately avoids the retry.

Gas Requirements

  • Need POL on Polygon for the redemption transaction (~$0.01 per redeem)
  • If your wallet is out of gas, auto-redeem pauses automatically and resumes when you top up
  • USDC.e is credited to your wallet (contract 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174)

Polymarket vs Kalshi

PolymarketKalshi
ChainPolygonSolana
Token standardERC-1155 (CTF)SPL tokens
Currency receivedUSDC.eUSDC
Gas tokenPOLSOL
SDK auto-redeemYes (auto_redeem())Not yet — manual only
AuthAPI keyDynamic JWT (dashboard)
Kalshi redemption currently requires a Dynamic JWT (browser session). SDK-based auto-redeem for Kalshi is planned but not yet available. For now, redeem Kalshi positions from the dashboard.

Troubleshooting: “Why Are My Positions Still Active?”

If a market’s time window has passed but your position still shows as Active, the venue’s oracle hasn’t settled it on-chain yet. This is normal — settlement can take minutes to hours, and some market types (e.g. 5-minute Bitcoin Up/Down) can take significantly longer.

Check Settlement Status

Your agent can check whether a position is actually ready to redeem:
Settlement timing is controlled entirely by the venue (Polymarket/Kalshi), not by Simmer. Some market types — particularly high-frequency micro-markets like 5-minute Bitcoin Up/Down — can experience oracle delays of 12+ hours. This is a known Polymarket behavior, not a bug.

Common Errors

“On-chain token balance is 0” — The position was already redeemed (possibly by another tool or wallet interface). The server marks it as claimed automatically. “Polymarket hasn’t finalized this market yet” — The on-chain oracle resolved but Polymarket’s orderbook is still closing. Wait 10-30 minutes and retry. “Your YES/NO position lost” — You’re trying to redeem the losing side. Only the winning side has value. Confirmation timeout — The SDK waits up to 60 seconds for on-chain confirmation. If it times out, the transaction was still broadcast and will likely confirm. Check the tx hash on Polygonscan.

What If Settlement Is Taking Too Long?

  1. Check the briefing endpoint periodically — your agent will be prompted to redeem as soon as the position becomes redeemable
  2. Verify on Polymarket directly — if the market also shows as unsettled on polymarket.com, it’s an oracle delay on their end
  3. Contact support — if Polymarket shows the market as settled but Simmer still shows Active, reach out and we’ll investigate

Next Steps

Trading Guide

The full trading workflow from finding markets to exiting positions.

Wallet Setup

Configure external or managed wallets for real-money trading.

Briefing Endpoint

Automated check-ins that include redeem prompts in the actions array.

FAQ

Common questions about settlement delays and troubleshooting.