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

# Coinbase International Exchange API Migration

> Migration guide for International Exchange API and FIX integrations moving to Deribit: endpoints, keys, instruments, orders, and cutover checks.

This article is a migration guide for institutional Coinbase International Exchange clients who trade over **API or FIX**. It covers the integration changes you will need so your stack talks to Deribit after the cutover: new keys, endpoints, instrument names, order attributes, and the checks to run when trading resumes.

Coinbase International Exchange is consolidating into Deribit on **1 October 2026** (subject to change). From **22 September 2026** your Deribit account is provisioned in a **read-only** state for trading — you cannot place orders yet, but you can create keys, confirm portfolio mappings, and point clients at Deribit.

Dates, eligibility, legal, margin packages, and the rest of the cutover are in the knowledge base:

<Card title="Institutional Client Migration Guide" icon="book" href="https://support.deribit.com/hc/en-us/articles/39354139215389-Institutional-Client-Migration-Guide">
  Dates, eligibility, account mapping, and non-API cutover details.
</Card>

<Warning>
  International Exchange API keys do not work on Deribit. There is no parallel trading window. International Exchange trading endpoints stop accepting orders on migration day (about 30 minutes of downtime).
</Warning>

## Pre-migration

Read-only applies to trading, not setup. If you have *n* International Exchange portfolios, Deribit provisions **one main account** for the first portfolio and **n−1 subaccounts** for the rest. Create keys and run sessions on the account that will hold each migrated book. [`private/get_subaccounts`](/api-reference/account-management/private-get_subaccounts) returns the subaccount mapping.

<Steps>
  <Step title="Create API keys">
    Create the first Deribit key in the UI on the target account (the main account for the first portfolio, or the matching subaccount for each of the others). Further keys can be created with [`private/create_api_key`](/api-reference/account-management/private-create_api_key). Set IP allowlists on the Deribit key; International Exchange allowlists do not copy across.

    Authenticate with [`public/auth`](/api-reference/authentication/public-auth). On WebSocket, send `access_token` in params; on HTTP, use `Authorization: Bearer`. A main-account session can switch to a subaccount with [`public/exchange_token`](/api-reference/authentication/public-exchange_token) and `subject_id`.

    <CardGroup cols={2}>
      <Card title="Creating an API key" icon="key" href="/articles/creating-api-key">
        UI and API key creation, scopes, IP allowlists
      </Card>

      <Card title="Authentication" icon="lock" href="/articles/authentication">
        `public/auth`, tokens, `exchange_token`
      </Card>
    </CardGroup>
  </Step>

  <Step title="Update endpoints">
    Point clients at Deribit before 1 October. Testnet (`test.deribit.com`) and production use **separate accounts and keys**. JSON-RPC uses named parameters only, and prices and sizes are JSON **numbers**, not decimal strings.

    | Interface          | Production                                | Testnet                                    |
    | ------------------ | ----------------------------------------- | ------------------------------------------ |
    | JSON-RPC WebSocket | `wss://www.deribit.com/ws/api/v2`         | `wss://test.deribit.com/ws/api/v2`         |
    | JSON-RPC HTTP      | `https://www.deribit.com/api/v2/{method}` | `https://test.deribit.com/api/v2/{method}` |
    | FIX TCP            | `fix.deribit.com:9881`                    | `fix-test.deribit.com:9881`                |
    | FIX SSL            | `fix.deribit.com:9883`                    | `fix-test.deribit.com:9883`                |

    On FIX, `Username`(`553`) is the Deribit Client ID and `Password`(`554`) is derived from the Client Secret. See [JSON-RPC](/articles/json-rpc-overview) and [FIX overview](/fix-api/production/overview). Starbase is a separate stack with separate keys; see [Starbase](/starbase/overview).
  </Step>

  <Step title="Map instruments">
    Symbols such as `BTC-PERP-INTX` become Deribit linear perpetuals such as `BTC_USDC-PERPETUAL`. Discover names at runtime rather than maintaining a static map:

    ```json theme={null}
    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "public/get_instruments",
      "params": {
        "currency": "USDC",
        "kind": "future"
      }
    }
    ```

    Perpetuals are `kind: "future"` with `settlement_period: "perpetual"`. International Exchange-style books are `instrument_type: "linear"`. On linear instruments, `amount` is in the **base coin**, not USD. Inverse instruments use USD `amount`. [`public/get_instruments`](/api-reference/market-data/public-get_instruments) is rate-limited (1 req/s); keep the cache current with [`instrument.state.{kind}.{currency}`](/subscriptions/market-data/instrumentstatekindcurrency).

    Read `price_index` from the instrument. Many linear perps use the Coinbase Index; BTC, ETH, SOL, XRP, HYPE, AVAX, and TRX names with listed Deribit options keep the Deribit index. Use [`public/get_index_price`](/api-reference/market-data/public-get_index_price) for a snapshot and [`deribit_price_index.{index_name}`](/subscriptions/market-data/deribit_price_indexindex_name) for the stream.
  </Step>

  <Step title="Adapt orders">
    Types and time-in-force are **lowercase**. Deribit has no timestamp GTT; `good_til_day` lasts until session end. Combined take profit / stop loss is not a single order — use linked OCO/OTO instead. A stop-limit has two ids (`trigger_order_id` after trigger). Iceberg size is `display_amount`; hidden quantity always takes.

    | International Exchange | Deribit                                                                                                                                                                                                                     |
    | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | Order types / TIF      | `limit`, `market`, `stop_limit`, `good_til_cancelled`, `good_til_day`, `immediate_or_cancel`, `fill_or_kill` on [`private/buy`](/api-reference/trading/private-buy) / [`private/sell`](/api-reference/trading/private-sell) |
    | Combined TPSL          | [`linked_order_type` / `otoco_config`](/articles/order-management-best-practices#linked-orders-oto-oco-otoco)                                                                                                               |
    | Client order id        | `label` (max 64)                                                                                                                                                                                                            |
    | Cancel on disconnect   | Optional via [`private/enable_cancel_on_disconnect`](/api-reference/session-management/private-enable_cancel_on_disconnect). Not available over HTTP.                                                                       |

    Open International Exchange orders are cancelled at the halt and do not migrate. Keep a snapshot of the working book so you can rebuild it on Deribit.
  </Step>

  <Step title="Wallet allowlists and rate limits">
    The deposit address is unchanged. Generate it with [`private/create_deposit_address`](/api-reference/wallet/private-create_deposit_address); Coinbase-custodied accounts also pass `network` ([Coinbase Wallet API](/articles/coinbase-wallet-api)). International Exchange withdrawal addresses are imported onto Deribit with **no waiting period**. Additional addresses can still be added with [`private/add_to_address_book`](/api-reference/wallet/private-add_to_address_book); those new entries follow Deribit's usual delay (default 3 days).

    Rate limits are a credit pool **per main account and per subaccount** and do not inherit from International Exchange. When credits are exhausted the API returns `too_many_requests` (`10028`) and **drops the WebSocket** (unlike a typical HTTP 429). If you need more throughput on day one, request it during pre-migration. See [Rate limits](/articles/rate-limits).

    International Exchange margin loans do not migrate, so they need to be closed before cutover. International Exchange trade, order, and fill history does not appear on Deribit; those historical APIs remain available for about 12 months.
  </Step>

  <Step title="Verify on testnet">
    Production trading stays blocked until cutover. Use testnet (separate account and keys) to confirm authentication, [`public/set_heartbeat`](/api-reference/session-management/public-set_heartbeat), a small order, and a cancel before the window.
  </Step>
</Steps>

## Migration day

[`public/status`](/api-reference/supporting/public-status) reflects the halt. You cannot trade or change positions for about 30 minutes.

Positions are settled at the International Exchange mark and recreated on Deribit as **block trades tagged `Migration`** at that price. They appear in Deribit trade history with `block_trade_id` set. They are a booking artifact, not new trading activity, and they incur no trading or settlement fees. Average entry on Deribit is the recreation price. Any gap versus the Deribit mark at reopen is unrealized PnL, not a fee.

You can list those trades with [`private/get_user_trades_by_currency`](/api-reference/trading/private-get_user_trades_by_currency) or [`private/get_transaction_log`](/api-reference/account-management/private-get_transaction_log) (`query`: `block_trade`).

## After trading resumes

<Steps>
  <Step title="Confirm balances and positions">
    On the main account and every mapped subaccount, use [`private/get_account_summary`](/api-reference/account-management/private-get_account_summary) and [`private/get_positions`](/api-reference/account-management/private-get_positions) (`currency: "USDC"` for linear books). If you already had a Deribit account, the INTX book lands on this **new main account and its subaccounts**, separate from any existing book.
  </Step>

  <Step title="Restore order flow">
    Confirm authentication, heartbeats, and a small order plus cancel before restoring size. Open orders from International Exchange are gone, so the book needs to be rebuilt. Configure MMP with [`private/set_mmp_config`](/api-reference/trading/private-set_mmp_config). Migrated accounts default to `cross_sm`; preview a change with [`private/change_margin_model`](/api-reference/account-management/private-change_margin_model) and `dry_run: true`.
  </Step>
</Steps>

<AccordionGroup>
  <Accordion title="Settlement, funding, and margin">
    Session PnL on open perps is realized **daily at 08:00 UTC**, not every 5 minutes. Funding accrues in RSPL and is cash-settled at that same settlement; the published rate is an **8-hour** rate. Use [`public/ticker`](/api-reference/market-data/public-ticker), [`public/get_funding_rate_value`](/api-reference/market-data/public-get_funding_rate_value), and [`private/get_settlement_history_by_currency`](/api-reference/trading/private-get_settlement_history_by_currency) for the current values. Margin models are `cross_sm`, `cross_pm`, `segregated_sm`, and `segregated_pm`.
  </Accordion>
</AccordionGroup>


## Related topics

- [Underlying Tiers](/starbase/underlying-tiers.md)
- [Starbase API Changelog](/changelogs/starbase.md)
- [Starbase API Overview](/starbase/overview.md)
- [Starbase Connectivity Quickstart](/starbase/quickstart.md)
- [Spot Trading: Deribit and Coinbase-Routed Instruments](/articles/spot-trading-venues.md)
