Connecting Your Wallet
Link Polymarket & Kalshi to see real positions and trade
Predite reads your live positions, balances, and P&L directly from your trading accounts — and, on the right plan, can place orders for you. None of that works until you connect a wallet. This page explains exactly what a connection is, how to set one up for both Polymarket and Kalshi, the three Polymarket signature types, what a funder address is, and how we keep your keys safe.
## What "connecting a wallet" actually does
There are two distinct things you can grant Predite, and it's worth being precise about the difference because they have very different security profiles:
- **Read-only connection** — Predite can see your positions, open orders, fills, and balances. It cannot move funds or place trades. This is enough to power the **Portfolio** dashboard, your **Trade Journal**, real-money P&L tracking, and to let the **EV Scanner** flag opportunities against markets you already hold.
- •**Trading connection** — Predite can sign and submit orders on your behalf. This is what powers **Live Trading**, **TWAP Orders**, **Copy Trading**, and the automated **Bot**. A trading connection requires your private key (or an API credential, on Kalshi) so the app can sign transactions.
You decide which one you want per wallet. A read-only connection never asks for a private key. You can start read-only and upgrade to trading later, or downgrade at any time by disconnecting and reconnecting.
> **Plan gating:** Read-only connections and real-money portfolio tracking are available on **all plans (Starter $29, Pro $59, Bot $99)**. Manual **Live Trading** and **TWAP Orders** require **Pro or Bot**. Fully automated execution — the Bot running strategies and **Copy Trading** with auto-fill — requires the **Bot $99/mo** plan. If you connect a trading wallet on Starter, you'll still get full read-only data; the execute buttons simply stay disabled until you upgrade.
## Where to find it
Everything lives in **Settings → Trading API**. From any screen:
1. Open **Settings** from the left sidebar (or the gear icon, top right). 2. Select the **Trading API** tab. 3. You'll see two cards: **Polymarket** and **Kalshi**, each showing a status badge — `Not connected`, `Read-only`, or `Trading enabled`.
Each card expands into its own connection flow. You can connect one venue, both, or neither. Predite features degrade gracefully: connect only Kalshi and the Polymarket-specific tooling just won't show data.
## Connecting Polymarket
Polymarket runs on Polygon and settles through its CLOB (Central Limit Order Book). Because Polymarket accounts come in a few flavors, this is the more involved of the two connections. You'll provide three things: a **private key**, a **signature type**, and — for two of the three types — a **funder address**.
### Step by step
1. In **Settings → Trading API**, click **Connect** on the Polymarket card. 2. Choose **Read-only** or **Trading**. - For **Read-only**, paste only your **public wallet address** (the `0x…` address). Click **Verify** and you're done — skip to the verification note below. - For **Trading**, continue with the steps below. 3. **Select your signature type** (see the next section — this is the single most common source of connection errors). 4. **Paste your private key.** This is the key for the account that signs CLOB orders. It's a 64-character hex string, with or without the `0x` prefix. 5. **Enter your funder address** if your signature type requires one (types 1 and 2 — explained below). For an EOA (type 0), leave this blank. 6. Click **Test connection.** Predite derives the signer address from your key, queries the CLOB for your balance and any open positions, and shows you a confirmation summary: the signer it derived, the funder it will trade from, and your current USDC balance. 7. Confirm the summary matches what you expect, then click **Save & encrypt.** Your key is encrypted before it ever touches our database (details in the security section).
### The three signature types
Polymarket supports three account architectures, and the CLOB needs to know which one you're using so it builds the order signature correctly. Pick the wrong one and orders will be rejected with a signature-mismatch error even though your key is valid.
- **Type 0 — EOA (Externally Owned Account).** A plain wallet — the private key directly controls the funds and signs orders. The signer *is* the funder, so **no funder address is needed**. Use this if you funded Polymarket from a self-custodied wallet like MetaMask and never went through the Polymarket web onboarding.
- •**Type 1 — Email / Magic wallet.** This is the most common type for people who signed up on polymarket.com with an email address. Polymarket provisions a **Magic** wallet for you, and your funds sit in an associated proxy contract. The private key signs, but funds live at a **separate funder address**. You **must** provide that funder address — it's the deposit address Polymarket shows in your account, not the signer address.
- •**Type 2 — Browser wallet / Gnosis Safe proxy.** You connected an external browser wallet (e.g. MetaMask) through Polymarket's interface, and Polymarket deployed a **Gnosis Safe** proxy that actually holds your positions. Your browser wallet's key signs, but the Safe is the funder. Provide the **Safe address** as the funder.
A quick way to decide: if you log into Polymarket with an email, you're almost certainly **type 1**. If you log in by connecting a browser wallet, you're **type 2**. If you never used the Polymarket site and funded a raw wallet yourself, you're **type 0**.
### What a funder address is
The **funder address** is simply *the address that holds the USDC and the position tokens* — the account that actually gets debited when you buy and credited when you sell. In type 0, the signer and funder are the same address, so there's nothing to enter. In types 1 and 2, Polymarket separates the *signer* (the key that authorizes an order) from the *funder* (the contract that holds and moves the money). The CLOB matches orders to the funder, so if you omit it or paste the signer address by mistake, the exchange will report a zero balance or reject the order.
You can find your funder address in Polymarket under **your profile → deposit address**, or by copying the address shown on your Polymarket portfolio page. It will be different from the address derived from your private key — that's expected and correct for types 1 and 2.
### Common Polymarket gotchas
- **"Balance shows $0 but I have funds."** Almost always the wrong funder address or signature type. Re-check whether you're type 1 (Magic/email) vs type 2 (Safe/browser), and confirm the funder is the deposit address, not the signer.
- •**"Signature rejected on order."** Wrong signature type. The key is fine; the type is mismatched. Disconnect and reconnect with the correct type.
- •**Allowances.** For a trading connection, the funder must have approved USDC and conditional-token spending on the CLOB. If you've ever traded on Polymarket's site, this is already set. If the account is brand new and has never placed an order, place one small order on polymarket.com first to set allowances, then connect here.
- •**Use a dedicated trading wallet for the Bot.** If you plan to run automated strategies, consider funding a separate wallet with only your trading bankroll rather than connecting a key that controls your entire crypto net worth. Smaller blast radius, cleaner P&L.
## Connecting Kalshi
Kalshi is a regulated US exchange and doesn't use crypto wallets or private keys in the Polygon sense. Instead, you connect with a **Kalshi API key**.
1. In Kalshi, go to **Account → API Keys** and generate a key. Kalshi gives you a **Key ID** and a **private key** (an RSA key used to sign API requests). Download or copy both — Kalshi only shows the private key once. 2. In Predite, click **Connect** on the Kalshi card in **Settings → Trading API**. 3. Choose **Read-only** or **Trading**. (Kalshi's API key model means the same credential can do both; choose **Read-only** if you want Predite to ignore the trading permission and never place orders.) 4. Paste your **Key ID** and **private key**. 5. Click **Test connection.** Predite authenticates, pulls your balance and open positions, and shows a summary. 6. Click **Save & encrypt.**
Kalshi notes:
- Make sure the API key has the permissions you intend. A read-only key in Kalshi simply can't trade even if you later switch the toggle in Predite.
- •Kalshi enforces its own rate limits. Predite batches and throttles requests automatically, but if you run the Bot aggressively across many markets you may occasionally see brief data-refresh delays — this is Kalshi's limit, not a Predite bug.
## How we secure your key
This is the part that matters most, so we'll be specific.
- **Encryption at rest.** Your private key (or Kalshi RSA key) is encrypted with **AES-256-GCM** before it is written to the database. AES-256-GCM is an authenticated cipher: it both encrypts the data and detects any tampering. Each key is encrypted with a unique initialization vector, and the encryption key is held in a managed secrets store, never in the same place as the ciphertext.
- •**Decrypted only in memory, only to sign.** When you place a trade (or the Bot does), the key is decrypted in memory for the moment it takes to sign that single transaction, then discarded. It is never written back to disk in plaintext.
- •**We never log keys.** Private keys are excluded from every log, error report, crash dump, and analytics event. If something fails, our logs record the *event* ("order signing failed for wallet ending …a3f1") but never the secret itself. We also redact keys from any support session — our team cannot see your key, even if you ask.
- •**In transit.** All connections happen over TLS. Your key is encrypted on submission and never sent to any third party other than the exchange you're trading on.
- •**You stay in control.** Predite only ever signs the specific orders you authorize (manual trading) or that match the strategy/guardrails you configured (Bot, Copy Trading). It cannot withdraw funds to an external address — the trading APIs we use are scoped to placing and cancelling orders, not transfers.
If you'd rather not store a signing key at all, use a **read-only** connection. You'll lose execution features but keep full portfolio analytics, journaling, and EV alerts. For the complete threat model and our data-handling commitments, see the **Security** page.
## Disconnecting a wallet
You can revoke access at any time:
1. Go to **Settings → Trading API**. 2. On the relevant card, click **Disconnect.** 3. Confirm. We **permanently delete** the stored ciphertext of your key from our systems. Read-only public addresses are also removed.
Disconnecting immediately disables any feature that depends on that wallet — the Bot pauses, Copy Trading stops mirroring, and live execution buttons grey out. Your historical Trade Journal entries and P&L records are kept (they're your data, not your key), so disconnecting doesn't erase your performance history.
For maximum safety after disconnecting a *trading* wallet you no longer trust, rotate the underlying secret at the source: generate a new Kalshi API key, or for Polymarket move funds to a fresh wallet. Deleting it from Predite removes our copy, but only you can invalidate the key itself.
## Verifying it worked
After connecting, head to the **Portfolio** page. Within a few seconds you should see your live positions, cost basis, and unrealized P&L pulled straight from the exchange. If the **Trading API** card shows `Trading enabled` and Portfolio is populated, you're fully set up. From there:
- The **EV Scanner** and **AI Probability** model can compare your holdings against fair value.
- •**Live Trading** and **TWAP Orders** unlock (Pro/Bot) for manual execution with your connected wallet.
- •The **Bot** and **Copy Trading** can run automatically (Bot plan), within the guardrails you set.
If positions don't appear, revisit the signature-type and funder-address checks above — that resolves the large majority of Polymarket connection issues.
## Related Docs
- [Quickstart](/docs/quickstart)
- •[Live Trading](/docs/live-trading)
- •[Portfolio](/docs/portfolio)
- •[Security](/docs/security)