> ## Documentation Index
> Fetch the complete documentation index at: https://uncoded.ch/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Kraken — Setup and Operation

> One of the oldest crypto exchanges. Conservative listings, stricter KYC, idiosyncratic symbol naming, and a long track record of reliability.

<Info>
  **Kraken is one of the oldest crypto exchanges still operating** (since 2011). It has a strong reputation for reliability, conservative listing policy, and stricter KYC than the global tier-1 venues. Liquidity is solid on majors; symbol coverage is narrower than Binance. For operators who value trust-and-track-record above all, Kraken is a natural choice.
</Info>

## When Kraken makes sense

<CardGroup cols={2}>
  <Card title="You value long track record above feature breadth" icon="landmark">
    Kraken has been operating reliably since 2011 — through multiple crypto market cycles, bear markets, regulatory shifts. The track record itself is the value proposition.
  </Card>

  <Card title="You're a US operator wanting two regulated venues" icon="flag-usa">
    Kraken + Coinbase is a common dual-venue pattern for US residents wanting jurisdictional diversification within US-regulated venues.
  </Card>

  <Card title="You want curated listings rather than long-tail" icon="filter">
    Kraken is more conservative about listing new tokens. The available list is narrower but typically higher-quality. Fewer rugpulls and abandoned projects.
  </Card>

  <Card title="You're already a Kraken user" icon="user">
    Many operators who already trade manually on Kraken naturally extend to using Kraken with unCoded.
  </Card>
</CardGroup>

## Account creation

<Steps>
  <Step title="Sign up at Kraken">
    Standard signup. Kraken does not have a referral program comparable to Binance's.
  </Step>

  <Step title="Verify email and phone">
    Standard verification.
  </Step>

  <Step title="Complete KYC to 'Intermediate' tier">
    Kraken's KYC tiers are stricter than some venues:

    * **Starter**: minimal access. Not enough for unCoded.
    * **Intermediate**: sufficient for spot trading via API. **The right tier for unCoded operators.**
    * **Pro**: higher limits, additional features. Not needed for unCoded.

    Intermediate KYC typically requires government ID and proof of address. Plan for `1–3` business days for verification.
  </Step>

  <Step title="Enable 2FA — authenticator app strongly preferred">
    Kraken supports authenticator apps and security keys. Both are preferable to SMS.

    For maximum security, use a hardware security key (YubiKey or similar).
  </Step>
</Steps>

## API key creation

<Steps>
  <Step title="Navigate to API settings">
    Go to "Settings" → "API."
  </Step>

  <Step title="Click 'Add Key'">
    Standard key creation flow.
  </Step>

  <Step title="Configure key permissions (Kraken's permissions are more granular than other venues)">
    Kraken splits permissions into more specific operations than other venues. The right configuration:

    * ✅ **Query Funds** — enable.
    * ✅ **Query Open Orders & Trades** — enable.
    * ✅ **Query Closed Orders & Trades** — enable.
    * ✅ **Modify Orders** — enable.
    * ✅ **Cancel/Close Orders** — enable.
    * ❌ **Deposit Funds** — disable.
    * ❌ **Withdraw Funds** — **NEVER ENABLE**.

    The "Modify Orders" and "Cancel/Close Orders" permissions are equivalent to Binance's "Spot Trading" — enabling them lets the bot place, modify, and cancel orders.
  </Step>

  <Step title="Set key expiration (optional)">
    **Key expires on**: leave blank for indefinite operation, or set a specific date for forced rotation.

    For most operators, indefinite + quarterly rotation discipline is the right pattern.
  </Step>

  <Step title="Two-factor authentication challenge">
    2FA is required to create an API key on Kraken. This is a deliberate security policy.
  </Step>

  <Step title="Set IP allowlist">
    Kraken's allowlist is set in the same form as the key creation. Paste your VPS's static IP.

    Wait `30–60` seconds for propagation after saving.
  </Step>

  <Step title="Save the key and secret immediately">
    Save both to your password manager **before doing anything else**.
  </Step>
</Steps>

## Connecting unCoded to Kraken

<Steps>
  <Step title="Open the unCoded Dashboard">
    Log in with admin credentials.
  </Step>

  <Step title="Add Kraken as an exchange">
    "Exchanges" → "Add Exchange" → "Kraken."
  </Step>

  <Step title="Paste credentials and test">
    Paste API key and secret. Toggle "Enabled" on. Click "Save," then "Test Connection."
  </Step>

  <Step title="Watch the logs">
    Open Logs panel for the first hour to confirm normal operation.
  </Step>
</Steps>

## Kraken-specific quirks

<AccordionGroup>
  <Accordion title="Idiosyncratic symbol naming" icon="font">
    Kraken uses idiosyncratic symbols for some assets:

    * **Bitcoin** is `XBT`, not `BTC` (a historical convention from when Bitcoin was experimental).
    * **Dogecoin** is `XDG`, not `DOGE` (similar history).
    * Some other assets have prefix `X` (e.g., `XETH` for Ethereum) due to legacy naming conventions.
    * The newer assets typically use the standard ticker (`SOL`, `MATIC`, etc.) directly.

    The unCoded exchange profile **normalizes these transparently** — you can specify symbols in either format and the bot handles translation. But: if you're cross-referencing manually against Kraken's UI, the naming may surprise you.
  </Accordion>

  <Accordion title="Nonce window for signed requests" icon="clock">
    Kraken signs requests with an incrementing nonce — each request must have a higher nonce than the previous one. The bot manages this internally.

    If you ever see `EGeneral:Invalid nonce` errors, the cause is usually:

    * Two bots sharing the same API key (don't do this).
    * Clock drift on the VPS (run NTP).
    * Concurrent calls racing the nonce counter (rare with the bot's design).

    Solution: keep one bot per API key, ensure NTP is running.
  </Accordion>

  <Accordion title="Rate limits use a rolling-window counter" icon="gauge">
    Kraken's rate limit model is different from Binance's burst-bucket. It's a rolling-window counter that accumulates over time.

    The exchange profile accounts for this — you don't need to think about it. The bot operates well below the published limits.

    If you ever see rate-limit errors, the cooldown-and-retry logic handles them automatically.
  </Accordion>

  <Accordion title="Trade volume tier discounts" icon="coins">
    Kraken's standard maker fee is `0.16%` and taker is `0.26%` — higher than Binance/Bybit. Volume tier discounts kick in at higher monthly trading volumes:

    * Tier 0 (`<$50K` monthly): `0.16% / 0.26%`.
    * Higher tiers: progressively lower.

    For most retail operators, you stay at Tier 0. The fees are higher than Binance, but Kraken's value proposition is reliability rather than fee competitiveness.
  </Accordion>

  <Accordion title="EUR markets" icon="circle-euro">
    Kraken offers EUR-quoted markets natively for major pairs (`BTC/EUR`, `ETH/EUR`, etc.). For EU operators wanting EUR exposure, Kraken is one of the few major-tier venues offering this directly.

    The pre-built modes work on EUR pairs the same way as on USDT pairs — capital sizing recommendations apply equivalently (in EUR amounts).
  </Accordion>

  <Accordion title="Withdrawal limits and KYC tier interactions" icon="vault">
    Kraken's withdrawal limits depend on KYC tier. Even though we're never enabling API withdrawals, the underlying account's withdrawal limits apply if you ever manually withdraw via the venue's UI.

    For most operators on Intermediate tier, the limits are sufficient. If you plan to withdraw substantial amounts, complete Pro tier KYC.
  </Accordion>
</AccordionGroup>

## Troubleshooting Kraken-specific

<AccordionGroup>
  <Accordion title="EAPI:Invalid key" icon="circle-exclamation">
    Kraken's equivalent to Binance's `-2015`. The key is wrong, IP doesn't match, or permissions are insufficient.

    **Steps**:

    1. Verify VPS IP matches Kraken's allowlist.
    2. Confirm "Modify Orders" and "Cancel/Close Orders" permissions are enabled.
    3. Wait `30–60` seconds for any recent allowlist change to propagate.
    4. Re-paste credentials carefully (watch for whitespace).
  </Accordion>

  <Accordion title="EGeneral:Invalid nonce" icon="clock">
    Nonce ordering issue.

    **Causes**:

    * Two processes sharing the same API key.
    * Clock drift on the VPS.
    * Concurrent racing.

    **Fix**:

    * Use one API key per TradingBot — never share keys across processes.
    * Verify NTP: `timedatectl status` should show synchronized.
    * If recurring without obvious cause, contact support.
  </Accordion>

  <Accordion title="Symbol not found" icon="font">
    Most often the symbol naming convention. `BTCUSD` may not work; try `XBTUSD` (Kraken's convention for Bitcoin).

    The unCoded profile normalizes most cases, but if you're seeing this error, switch to Kraken's native naming format.
  </Accordion>

  <Accordion title="Connection works but very slow responses" icon="hourglass">
    Kraken's API is occasionally slower than other venues, especially during high-activity periods.

    **Behavior**: not a problem in itself — the bot handles slow responses. But if you see frequent timeouts in logs, the VPS may need a different region or different connectivity.

    **Workaround**: check VPS network latency to Kraken's endpoints. If consistently high (`>500ms` or with jitter), consider a VPS in a different region.
  </Accordion>

  <Accordion title="Insufficient permissions for an operation" icon="filter">
    If a specific operation fails (e.g., cancel order works but modify fails), one of the granular permissions is missing.

    **Fix**: at Kraken, edit the API key and enable all of: Query Funds, Query Open Orders & Trades, Query Closed Orders & Trades, Modify Orders, Cancel/Close Orders.
  </Accordion>
</AccordionGroup>

## Best practices for Kraken operators

<Tip>
  * ✅ **Complete Intermediate KYC** — sufficient for unCoded, faster than Pro.
  * ✅ **Enable all 5 trading permissions** — Query Funds, Query Open/Closed Orders, Modify Orders, Cancel/Close Orders.
  * ✅ **NEVER enable Deposit Funds or Withdraw Funds permissions**.
  * ✅ **IP allowlist your API key**.
  * ✅ **Authenticator app or hardware key for 2FA** — never SMS.
  * ✅ **Use Kraken's idiosyncratic symbols when adding pairs** (`XBT` for Bitcoin, etc.) — or rely on the bot's normalization.
  * ✅ **Run NTP on your VPS** — Kraken's nonce ordering is sensitive to clock drift.
  * ✅ **One API key per TradingBot** — never share keys across processes (avoids nonce conflicts).
  * ✅ **Higher fees, accept the trade-off** — Kraken's value is reliability, not fee competitiveness.
  * ✅ **Quarterly rotation** — same cadence as other venues.
  * ✅ **For EU operators**: consider EUR-quoted Kraken pairs for native currency exposure.
</Tip>

## What's next

<CardGroup cols={2}>
  <Card title="API Key Security" icon="shield" href="/exchanges/api-key-security">
    Universal principles applicable to Kraken.
  </Card>

  <Card title="Coinbase Setup" icon="building-columns" href="/exchanges/coinbase">
    The other US-regulated major venue, often paired with Kraken.
  </Card>

  <Card title="Binance Setup" icon="building-columns" href="/exchanges/binance">
    The non-US recommended primary venue.
  </Card>

  <Card title="Other venues" icon="ellipsis" href="/exchanges/other-venues">
    The remaining production-ready venues including Bitfinex, the other long-history venue.
  </Card>

  <Card title="TradingBot" icon="robot" href="/modules/tradingbot">
    The execution engine that uses your Kraken credentials.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/troubleshooting/common-issues">
    Every Kraken error code and recovery procedure.
  </Card>
</CardGroup>
